馮興杰,張 賀
(中國民航大學 計算機科學與技術(shù)學院,天津 300300)
現(xiàn)有的對話推薦方法大多僅從對話數(shù)據(jù)中學習用戶的有效偏好表示,無法充分利用用戶的歷史交互數(shù)據(jù),進而導致推薦結(jié)果缺乏個性化。例如,在給用戶實時推薦感興趣的項目時,如果僅僅按照用戶當前對于項目屬性的拒絕或接受來選擇下一步的交互策略,很容易因為過于注重用戶目前的偏好信息,使得對話推薦系統(tǒng)的推薦結(jié)果與用戶采用搜索方式得到的結(jié)果并無較大差異,缺乏推薦系統(tǒng)應有的個性化。
為了解決以上問題,本文提出了一種結(jié)合用戶長短期偏好的對話路徑推理方法(conversational path reasoning with long-term and short-term preferences,LSCPR)。在交互式路徑推理的基礎(chǔ)上,采用注意力機制將用戶的歷史偏好作為選取當前項目候選集的影響因子,從而能夠在更少的對話回合中推薦盡可能準確的項目。本文的主要貢獻可總結(jié)如下:
(1)LSCPR將歷史交互數(shù)據(jù)單獨充分利用到對話推薦系統(tǒng)中,在對話推薦中融合用戶歷史交互的時序動態(tài)信息,使得路徑推理過程中選取的項目候選集更能符合用戶個性化的實時偏好。
(2)LSCPR采用注意力機制從歷史交互數(shù)據(jù)的上下文中計算注意力權(quán)重,并根據(jù)用戶最近的興趣增強相應的注意力權(quán)重。
(3)在兩個真實數(shù)據(jù)集上進行大量實驗,實驗結(jié)果表明,LSCPR方法能夠在保證平均對話回合數(shù)的同時,提供更為精確的推薦結(jié)果。
已有的對話推薦研究,大多聚焦于設(shè)計算法去輸出最佳交互策略,以快速降低用戶興趣偏好的不確定性,并實現(xiàn)對當前用戶的成功推薦。早期研究中利用基于人工設(shè)計的規(guī)則和邏輯來刪除屬性不滿足的項目來減少候選集的大小[1]。文獻[2]將協(xié)同過濾的推薦算法思想引入到對話推薦系統(tǒng),以提升對話推薦結(jié)果的準確率,同時協(xié)同過濾算法[3]中存在的冷啟動、可解釋性較差的缺陷也可以通過對話推薦的多輪交互特征有效彌補。近期神經(jīng)網(wǎng)絡(luò)已經(jīng)被廣泛應用于對話推薦方法中,除了常見的CNN和RNN被用來建模具有時序性的對話數(shù)據(jù)[4],GNN也可以用來建模圖類型數(shù)據(jù),從而學習對話交互信息中的復雜關(guān)系[5,6]。與此同時,為了解決動態(tài)交互環(huán)境下復雜的長期規(guī)劃問題,深度強化學習被引入到對話推薦算法的設(shè)計中,一方面基于知識增強的強化對話推薦算法[7]可以應用開源的知識庫DBpedia來增強項目和屬性的向量表示,學習到推薦項目和交互屬性之間更多的語義信息,提高推薦效果;另一方面基于圖推理的強化對話推薦算法[8]將用戶的交互過程建模為無向圖中路徑推理的過程,通過強化學習來判斷每行走一步所應采取的動作(詢問或者推薦),最終到達用戶的目標項目。然而以上各種方式的對話推薦方法很少甚至沒有考慮用戶的歷史交互信息,這就導致了建模過程中缺少了用戶的一般偏好信息,而且諸多的對話推薦系統(tǒng)以減少系統(tǒng)與用戶的交互回合為目標,可能會遺漏一些有用的屬性選項。此外僅利用基于屬性的偏好不足以篩選項目候選集,所以需要更加充分地利用用戶的歷史交互信息,從而在對話系統(tǒng)的效率和推薦結(jié)果的質(zhì)量上達到更優(yōu)。
推薦系統(tǒng)的實際應用中,采用所有的數(shù)據(jù)信息來訓練模型學習可以表示用戶興趣偏好的嵌入,但同時用戶的序列行為信息也是尤為重要的,它代表著用戶偏好的變化狀態(tài),所以序列推薦的出現(xiàn)可以顯式地建模用戶的序列行為,提升推薦系統(tǒng)的效果。常見的序列建模方法有Pooling、RNN、CNN[9]、Attention、Transformer[10]等,其中transformer中自注意力機制的應用可以在用戶的交互序列中評估每個項目的相關(guān)權(quán)重[11],以便更好地學習用戶的興趣偏好表示以及捕獲用戶偏好的時序性,提高目前對話推薦系統(tǒng)的推薦質(zhì)量。
對話推薦系統(tǒng)(下文中稱CRS)可以定義為:通過使用自然語言或槽定義的方式與用戶進行實時多回合交互,引出用戶動態(tài)偏好并根據(jù)用戶當前需求采取相應的行動。目標則是在最少的對話回合內(nèi)向用戶推薦準確的項目。圖1是多回合對話推薦場景的流程圖,可以將整個流程劃分為3個模塊,分別是用戶界面、推薦模塊和對話策略模塊。其中用戶界面可以對系統(tǒng)的詢問進行反饋以及對系統(tǒng)推薦的項目進行接受或拒絕;推薦模塊用來學習和建模用戶對項目和項目屬性的偏好,是得出詢問用戶的屬性信息和提供推薦結(jié)果的基礎(chǔ);對話策略模塊是整個流程的核心模塊,通過決定詢問能夠消除項目不確定性的屬性來輔助用戶得到精確的推薦結(jié)果。
圖1 多回合對話推薦場景的流程
如圖1所示,對話推薦系統(tǒng)的詳細描述為:每一個對話session從用戶側(cè)開始,用戶側(cè)有一個初始的屬性p0,CRS會詢問用戶對于某一個屬性的偏好(從屬性候選集Pcand中選取)或者直接推薦項目(從項目候選集Vcand中選取)。此時用戶會有以下幾種可能:①如果給出的是項目,且用戶接受了該項目,session結(jié)束;②如果給出的是項目,且用戶拒絕了該項目,則CRS把這個項目從Vcand中移除;③如果給出的是屬性,且用戶接受了該屬性,則把這個屬性放進用戶已選擇的屬性集Pu中,并把其從Pcand中除去,更新Vcand=Vcand∩Vp; ④如果給出的是屬性,且用戶拒絕了該屬性,則CRS把這個屬性從Pcand中移除。直到用戶接受了CRS推薦的項目或者達到最大交互回合數(shù),則整個session結(jié)束。表1給出了本文常用的符號及其含義。
表1 常見符號及其含義
給定3個分別包含用戶歷史交互數(shù)據(jù)、用戶偏好信息、項目屬性信息的數(shù)據(jù)集,其中用戶歷史交互數(shù)據(jù)集中每個樣本(u,Vu)表示用戶u和與之交互過的項目集Vu;用戶偏好信息數(shù)據(jù)集中每個樣本(u,F(xiàn)u,Lu)表示用戶u、與其具有雙向好友關(guān)系的用戶集Fu,以及用戶u喜好的項目屬性集Lu;項目屬性信息數(shù)據(jù)集中每個樣本(i,Pi)表示項目i和其所屬屬性集Pi。任務(wù)則是利用上述3個數(shù)據(jù)集中的信息構(gòu)建包含用戶、項目和屬性3個實體的無向圖,從用戶節(jié)點開始,通過對話交互確定下一個要移動的節(jié)點,目標是到達用戶接受推薦的項目節(jié)點。由此將與用戶的實時交互反饋過程結(jié)合用戶歷史偏好信息體現(xiàn)在無向圖的路徑推理中,能夠在最少的對話回合下給出準確的推薦項目,同時推薦的可解釋性也可以通過推理路徑得以體現(xiàn)。
圖2是一個對話推薦系統(tǒng)的過程示例。右圖中的頂點表示用戶、項目和項目的屬性,兩個頂點之間的邊表示它們之間的關(guān)系,例如,用戶與項目之間的邊表示用戶已與該項目進行交互,用戶與屬性節(jié)點之間的邊則表示用戶已在對話中確認該屬性,項目與屬性節(jié)點之間的邊表示項目擁有該屬性等。圖中首先從帶有初始屬性“唱跳”的用戶“李明”開始進入對話,所以回合1為從“李明”移動到“唱跳”節(jié)點?;睾?系統(tǒng)進行鄰接屬性的搜索,選擇詢問用戶屬性節(jié)點“搖滾”,用戶接受該屬性,則路徑移動至“搖滾”節(jié)點。回合3與回合2相似,路徑移動至“流行”屬性節(jié)點?;睾?中系統(tǒng)已經(jīng)掌握足夠的用戶偏好信息,搜索同時擁有“唱跳”、“搖滾”、“流行”屬性的項目,選擇“邁克爾”項目節(jié)點進行推薦,用戶接受推薦,該對話結(jié)束。但需要注意的是,如果用戶拒絕詢問的屬性或推薦的項目,系統(tǒng)將停留在原節(jié)點,搜索其它符合用戶偏好的屬性重新進行詢問,多次重復該循環(huán),直至用戶接受推薦的項目或者達到最大交互回合,對話自動結(jié)束。
圖2 對話推薦系統(tǒng)過程示例
2.2.1 實體無向圖的構(gòu)建
LSCPR旨在通過圖的路徑推理來實現(xiàn)為用戶的成功推薦,并為用戶長短期偏好的結(jié)合提供先決條件。將數(shù)據(jù)集中用戶、項目和屬性實體構(gòu)建成為無向圖的過程見下述算法1。
算法1:實體無向圖構(gòu)建
Input:用戶歷史交互數(shù)據(jù)字典user_item,用戶信息數(shù)據(jù)字典user_dict,項目信息數(shù)據(jù)字典item_dict,屬性信息數(shù)據(jù)字典attribute_dict。
Output:實體-關(guān)系-實體無向圖Grec
(1) entities=load_entities(user_dict, item_dict, attri-bute_dict)#獲取用戶、 項目、 屬性實體
(2) relations=load_relations(user_dict, item_dict, user_item, attribute_dict)#獲取實體間相應關(guān)系
(3) for relation r in relations do
(4) for entity e1in entities do
(5) set=get_entity(r, e1)#獲取頭實體e1的r關(guān)系的所有尾實體集
(6) for entity e2in set do
(7) Grec[e1][r].append(e2)#添加實體間的關(guān)系邊
(8) end for
(9) end for
(10)end for
(11)clean(Grec)#刪除重復的邊
(12)return Grec
根據(jù)用戶、項目、屬性和歷史交互的數(shù)據(jù)提取相應的實體和關(guān)系,將Grec無向圖的表示定義為包含頭實體、關(guān)系、尾實體的嵌套字典。
2.2.2 模擬對話交互訓練數(shù)據(jù)的構(gòu)建
對話推薦是一個動態(tài)的過程,并且現(xiàn)階段沒有成熟的數(shù)據(jù)集可以利用,所以遵循EAR[12]方法和CPR[8]方法中用戶模擬器的設(shè)定來構(gòu)建對話交互訓練數(shù)據(jù),完成對話推薦系統(tǒng)的訓練和評估。正如前文中所提到的,采用真實的用戶項目的交互數(shù)據(jù)來實現(xiàn)這種模擬。根據(jù)模型訓練的需要,生成(user_id,item_id,neg_item,cand_neg_item,prefer_attributes)結(jié)構(gòu)的數(shù)據(jù)元組。詳細來說,給定一個用戶u和擁有屬性集Pv的項目v,不妨假設(shè)Pv={p0,p1,p2,p3,p4}, 當前時刻用戶確認的屬性集為Pu={p0,p1,p2}, 那么項目候選集Vcand為滿足Pu中所有屬性的項目集合。因此,元組中元素user_id和item_id分別為u和v,第三個元素neg_item可以直接從用戶u的非交互項目集中隨機抽取,第四個元素cand_neg_item則是從項目候選集Vcand未與用戶交互的項目中隨機抽取,第5個元素為當前回合中用戶的偏好屬性Pu,即 [p0,p1,p2]。
本文模型是一種結(jié)合用戶的長短期偏好的圖推理路徑模型,其中用戶的短期偏好可以在實時與用戶交互過程中進行獲取,而長期偏好可以根據(jù)對話之前的用戶歷史交互數(shù)據(jù)進行提取,從而輔助對話過程中的項目候選集的更新與選取,最終為用戶提供符合其長短期偏好的項目。LSCPR模型結(jié)構(gòu)如圖3所示。首先提取用戶、項目和屬性相關(guān)數(shù)據(jù)集的實體和關(guān)系構(gòu)建實體無向圖,詳細過程見章節(jié)2.2.1。然后通過用戶與系統(tǒng)之間的實時交互進行圖上路徑的推理,根據(jù)用戶的反饋信息,更新相應的項目和屬性候選集,同時策略模塊判斷系統(tǒng)下一步動作是詢問屬性還是推薦項目,如果動作為詢問屬性,則選取屬性預測模塊中得分最高的屬性進行詢問;如果動作為推薦項目,則選取項目預測模塊中前10個項目進行推薦。以此循環(huán),直至推中用戶心儀的項目或是達到最大交互回合數(shù),對話結(jié)束。為更好地解釋LSCPR模型的路徑推理過程,現(xiàn)假設(shè)當前推理路徑為P=p0,p1,…,pt, 系統(tǒng)保持在pt節(jié)點位置,并嘗試尋找下一個屬性或項目節(jié)點的位置。該過程可以通過預測、決策、更新3個階段完成,分為以下4個模塊實現(xiàn)。
圖3 LSCPR模型結(jié)構(gòu)
該階段是一個回合的開始,當一個屬性被用戶預定義或者確認時執(zhí)行,需要通過預測用戶最可能接受的項目和屬性來為決策階段提供相應的選擇空間。另外由于屬性和項目的預測是相互依賴的,所以可以采用交替優(yōu)化策略來使其產(chǎn)生更好的預測結(jié)果。
3.1.1 項目預測模塊
當前時刻用戶u的屬性偏好集Pu由此時推理路徑P中的所有屬性節(jié)點組成,即Pu={p0,p1,…,pt}, 所以項目候選集的選取是滿足當前屬性偏好集中各屬性的項目集合。圖3中無向圖和交互部分為t=1時的簡要對應展示,用戶的首選屬性為p0,那么Pu={p0}, 所以項目候選集即需要進行預測的項目集為 {v0,v1,v2}。 但隨著推理路徑變長,相應的項目候選集也會變大,導致計算效率降低,CPR模型直接選取所得項目候選集的前1000個項目進行后續(xù)預測[8],為減少該設(shè)置方法的隨機性,本文遂采用基于注意力機制的序列推薦方法對未交互的項目進行排序,再選取其排序完成后的前1000個項目作為項目候選集。該處理邏輯可以充分利用用戶的歷史交互數(shù)據(jù),將其與現(xiàn)階段的屬性偏好信息相結(jié)合,得到更具個性化的項目候選集合。
將X={x1,x2,…,xt} 表示歷史交互項目序列的嵌入向量,其中xt表示最近的交互項目的嵌入,ms表示用戶當前的一般興趣,可以由平均歷史交互項目的嵌入而得到,表示如下
(1)
用戶的長期偏好通過注意力機制獲取,采用前饋神經(jīng)網(wǎng)絡(luò)生成每個交互項目嵌入向量的注意力權(quán)值ai,表示當前項目交互序列中各嵌入向量的注意力系數(shù),注意力系數(shù)向量a=(a1,a2,…,at) 定義如下
ai=W0σ(W1xi+W2xt+W3ms+ba),i∈[1,t]
(2)
其中,xi表示第i個項目的嵌入向量,W0是一個加權(quán)向量,W1,W2,W3是相應的加權(quán)矩陣,ba為偏置部分。在得到注意力系數(shù)向量a之后,基于注意力的用戶長期偏好表示如下
(3)
同時mt=xt, 將ma與mt分別通過相應的多層感知機結(jié)構(gòu)得到hs與ht,因此可以通過余弦相似度計算未交互項目集中各個項目vi的得分,從而經(jīng)過得分排序獲得相應的項目候選集。項目評分過程函數(shù)可以表示為
(4)
其中,σ(·) 表示sigmoid函數(shù),為方便〈·〉的表述,將變量hs、ht、vi替換為維度為d的a、b、c這3個向量,通過以下公式進行計算
(5)
其中,⊙表示哈達瑪積,即向量b和c之間的元素乘積。
然后,在當前對話狀態(tài)下用戶u對給定項目候選集中某項目v的喜歡程度可以通過FM[13]來進行預測,用戶-項目對交互的可能性如下
(6)
其中,Pu是當前推理路徑中所有屬性節(jié)點的合集,u、v和pi分別表示用戶、項目和屬性的嵌入,第一項建模了從用戶到項目的信息,第二項建模了從用戶的偏好屬性到項目的信息。
3.1.2 屬性預測模塊
首先,根據(jù)圖結(jié)構(gòu)的自然約束性,僅將當前用戶所有偏好屬性的鄰接屬性節(jié)點作為屬性候選集,其中鄰接屬性節(jié)點的定義為:如果圖中屬性pt和屬性pa之間的最短路徑不包含任何其它屬性,那么屬性pa就是屬性pt的鄰接屬性。例如,在圖3中,p1為p0的鄰接屬性。因此,當前時刻的屬性候選集為刪掉用戶接受或拒絕的屬性的pt鄰接屬性集。需要注意的是,屬性預測模塊的作用不同于項目預測模塊,需要根據(jù)當前系統(tǒng)狀態(tài)來決定哪些屬性是值得詢問的,期望找到一個可以更好地消除項目不確定性的屬性。所以采用了可以有效評估不確定性的信息熵的方法,屬性的不確定性越大,對應的信息熵越大,信息熵計算表示如下
h(u,p,Vcand,Pu)=-p(p)·log2(p(p))
(7)
(8)
其中,σ(·) 是sigmoid歸一化函數(shù),Vcand表示項目候選集,Vp表示包含屬性p的項目集,f(u,v,Pu) 為章節(jié)3.1.1中介紹的項目預測公式。
3.1.3 模型學習
(9)
(10)
(11)
完成項目和屬性預測之后便進入決策階段,該階段的目的是決定下一步動作為詢問屬性aask還是推薦項目arec,使用戶在最少的對話回合內(nèi)獲得準確的推薦。具體實現(xiàn)過程遵循文獻[8],將其作為一個強化學習問題來處理,強化學習的策略函數(shù)基于全局對話狀態(tài)來進行決策,其中可以包括對話歷史、候選項目信息等。策略函數(shù)根據(jù)相應的輸出回報設(shè)置得到包含aask和arec兩個操作空間選擇的輸出結(jié)果。若結(jié)果為aask,則通過屬性預測模塊選取屬性候選集中得分最高的屬性進行下一步詢問操作;若結(jié)果為arec,則將項目預測模塊中得到的top-k項目向用戶進行推薦。
更新模塊將在用戶確認請求的屬性之后被觸發(fā)。如章節(jié)2.1中所描述的,將確認的屬性添加到用戶偏好屬性集Pu中,初始項目候選集被更新為Pcand=AAt(Pu∪Prej)。 需要注意的是,假設(shè)一個屬性被用戶拒絕,只需要將它從屬性候選集中刪除,而不需要進行其它操作。在更新階段之后,對話推薦系統(tǒng)進入到下一個對話回合。
因為本文的研究側(cè)重于對話策略的研究而并非語義的理解,所以選用的數(shù)據(jù)集為推薦系統(tǒng)通用的交互數(shù)據(jù)集。為了更好地對比,本文選用與EAR模型[12]、CPR模型[8]一致的LastFM(https://grouplens.org/datasets/hetrec-2011/)和Yelp(https://www.yelp.com/dataset/)數(shù)據(jù)集進行實驗。LastFM是2011年HetRec會議發(fā)布的音樂推薦數(shù)據(jù)集,來源于英國的音樂社Last.fm,包含用戶的聽歌記錄、用戶屬性等,其中存在1801個用戶、27 675個項目和76 693個交互;Yelp數(shù)據(jù)集是由美國點評網(wǎng)站Yelp公開的內(nèi)部數(shù)據(jù)集,現(xiàn)已成為通用數(shù)據(jù)集,包含用戶點評數(shù)據(jù)、商家屬性等,同時用戶可以在該平臺上交流購物體驗,其中存在27 675個用戶、70 311個項目和1 368 606個交互?;镜臄?shù)據(jù)統(tǒng)計信息見表2。對于兩個數(shù)據(jù)集,刪除少于擁有10個相關(guān)項目的屬性。
表2 基本數(shù)據(jù)統(tǒng)計信息
其中關(guān)系的詳細數(shù)據(jù)見表3。
表3 關(guān)系的詳細數(shù)據(jù)
對話推薦系統(tǒng)的評價指標分為兩個級別[14]。第一個級別是對推薦結(jié)果的評價,其中值得評價的是推薦結(jié)果的質(zhì)量或性能,主要采用推薦算法中常用的召回或排序的指標,如MSE、RMSE、Precision、Recall、MRR、NDCG、HR等。第二個是對話級別的評價,其中一類值得評價的是自然語言生成的質(zhì)量,指標包括 BLEU 與 ROUGE等;另一類評價針對對話推薦系統(tǒng)的效率,主要關(guān)心的是對話的平均回合數(shù)(average turns,AT),在對話推薦任務(wù)中,越早推中用戶喜歡的項目越好,故對話的回合數(shù)越小越好。另外一個指標是對話在固定最大回合數(shù)的情況下推薦成功的概率(Success Rate att-th turn,SR@t)。
因為本文主要研究的對話推薦策略的改進,所以不考慮自然語言的生成,針對對話推薦的結(jié)果本文采用MRR和HR評價指標。MRR為平均倒數(shù)排名,其強調(diào)在成功推薦的對話回合,是否將用戶的真實訪問項目置于推薦項目列表中更靠前的位置,定義為
(12)
其中,M表示用戶的個數(shù),pi是對于第i個用戶,用戶的真實訪問項目在推薦列表的位置。HR為命中率,反映在推薦項目列表中是否存在用戶的真實訪問項目,定義為
(13)
其中,N表示推薦的次數(shù),即用戶的對話回合數(shù)。hit(i) 表示是否命中用戶的真實訪問項目,即用戶選擇的項目是否在推薦列表中,若存在,hit(i) 值為1,否則為0。針對對話系統(tǒng)效率的評價指標為AT和SR@t。AT定義為
(14)
成功率指標SR@t定義為在t個交互回合內(nèi)推薦成功的概率,計算公式如下所示,其中#表示事件發(fā)生的次數(shù)
(15)
為了評估LSCPR模型的性能,將LSCPR與以下代表性基線方法進行對比實驗,各方法的具體區(qū)別見表4。
表4 對比模型比較
(1)Max Entropy。這個方法遵循在章節(jié)2.2.2中介紹的用來構(gòu)建對話歷史記錄的規(guī)則,每個對話回合都會對候選屬性項中熵最大的屬性進行詢問。
(2)Abs Greedy[15]。這個方法在每個回合都會推薦項目,而不會詢問任何問題。一旦推薦被拒絕,它會通過將被拒絕的項目作為負面樣本來更新模型。根據(jù)文獻[15]實驗結(jié)果,該方法與常用的線性bandits算法(Thompson采樣[16]和UCB-based算法[17])相比具有同等或者更好的性能。
(3)CRM[18]。這個模型最初是為單輪次對話推薦而設(shè)計的,即進行推薦行為之后不論是否推薦成功都會結(jié)束對話。它將表示對話當前狀態(tài)和用戶偏好的潛在向量空間輸入深度策略網(wǎng)絡(luò),來決定下一步是進行推薦還是詢問,同時根據(jù)策略梯度算法調(diào)整對話策略和更新潛在向量空間。
(4)EAR[12]。這是首個著重體現(xiàn)推薦模塊與對話模塊深度交互的模型,提出使用交叉熵信息、用戶反饋信息、對話回合信息構(gòu)造狀態(tài)向量,作為策略網(wǎng)絡(luò)的輸入,使策略模型能夠更好適應動態(tài)環(huán)境,學習到更加靈活的對話策略。
(5)CPR[8]。該模型將圖推理與對話推薦結(jié)合起來,將用戶和項目信息構(gòu)建成無向異構(gòu)圖,將用戶實時交互的過程建模成圖上的路徑游走的過程,通過在圖上游走和推理的方式選擇具體的屬性節(jié)點和項目節(jié)點,而策略網(wǎng)絡(luò)只需要輸出詢問與推薦兩個動作,使得策略網(wǎng)絡(luò)的訓練變得更加容易。
(6)SASRec[19]。通過自注意力機制對用戶的歷史交互信息進行抽象,將抽象得到的用戶信息與所有項目的嵌入做內(nèi)積交互,得到用戶與每個項目的相關(guān)性概率。
(7)AttRec[20]。采用自注意力機制對用戶的歷史交互項目之間的關(guān)系進行捕獲,得到用戶的短期偏好表示;采用協(xié)同度量學習建模用戶的長期偏好,結(jié)合后加權(quán)得到用戶對候選項目的交互概率。
本文使用pytorch對所提模型進行實現(xiàn),并使用GPU(GTX 1080Ti)對訓練進行加速。設(shè)置top-k的值為10,最大的對話回合數(shù)T為15。在項目和屬性預測訓練模塊根據(jù)經(jīng)驗設(shè)置如下:FM的嵌入維度大小設(shè)置為64,項目和屬性預測任務(wù)的學習率分別設(shè)置為0.01和0.001,使用了L2正則化系數(shù)為0.001的SGD優(yōu)化器;在基于RL的策略模塊中,訓練獎勵為:rrec_suc=1,rrec_fail=-0.1,rask_suc=0.01,rask_fail=-0.1,rquit=-0.3。 DQN的參數(shù)設(shè)置為:經(jīng)驗回放內(nèi)存大小為50 000,折扣因子Y被設(shè)置為0.999。
4.5.1 對話推薦質(zhì)量
由于該部分主要對所提出對話推薦方法的推薦結(jié)果的質(zhì)量進行討論,所以不采用Abs Greedy和Max Entropy作為對比方法。本文提出的LSCPR方法與其它對比模型在推薦質(zhì)量方面的性能比較見表5。
表5 不同模型對話推薦性能比較(質(zhì)量)
分析實驗結(jié)果可以得出:本文提出的LSCPR模型在兩個數(shù)據(jù)集中的每個評價指標都優(yōu)于其它對比模型。觀察其它模型發(fā)現(xiàn),在數(shù)據(jù)量較大的Yelp數(shù)據(jù)集上對話推薦方法(CRM、EAR、CPR)的整體性能會比傳統(tǒng)序列推薦方法(SASRec、AttRec)更優(yōu);在數(shù)據(jù)量較小的LastFM數(shù)據(jù)集上結(jié)果則相反。本文認為當中的原因在于在數(shù)據(jù)量較大的候選集上,單單利用用戶的歷史交互信息進行用戶興趣偏好的表示過于片面,并且可能會與用戶的當前偏好信息產(chǎn)生偏差,所以通過對話交互的方式獲取的用戶實時偏好信息能夠產(chǎn)生更好的效果。
4.5.2 對話系統(tǒng)效率
該部分主要對對話推薦方法的推薦效果和交互效率進行討論,所以對比模型為涉及對話推薦思想的方法。本文提出的LSCPR和其它對比模型的評價指標實驗結(jié)果見表6,其中為更直觀地看出在數(shù)據(jù)量較大的Yelp數(shù)據(jù)集上各模型之間的性能對比。
表6 不同模型對話推薦性能比較(效率)
首先,本文模型LSCPR在兩個數(shù)據(jù)集上的評價指標(推薦成功率和平均對話回合數(shù))都優(yōu)于其它對比模型。具體來說,與最優(yōu)基線模型相比,LSCPR在LastFM數(shù)據(jù)集上分別提高了SR@15和AT的1.8%和0.75回合。同時,在Yelp數(shù)據(jù)集上的性能提升比LastFM數(shù)據(jù)集顯著,分別提高了SR@15和AT的2.6%和1.06回合。這說明在數(shù)據(jù)量較大時,歷史交互數(shù)據(jù)的充分利用反而能夠顯示出更大的優(yōu)勢。圖4為各模型與最優(yōu)對比模型CPR在每個對話回合中成功率差值的情況??梢钥闯鯨SCPR模型處于平穩(wěn)且優(yōu)于最優(yōu)模型的趨勢。
圖4 Yelp上不同回合數(shù)的SR*對比
其次,對話推薦模型(CRM、EAR、CPR、LSCPR)的整體性能大體上比傳統(tǒng)意義上對話推薦方法(Abs Greedy、Max Entropy)更優(yōu)。本文認為原因在于對話推薦模型采用基于強化學習的策略模塊對對話環(huán)境充分建模,更新用戶的實時交互反饋信息,能夠及時調(diào)整相應的項目和屬性候選集。其中Abs Greedy雖然性能較差,但是從圖4可以看出它在前幾個回合能夠達到最佳效果,之后性能下降,推斷原因在于它是一種嘗試推薦項目的方法,而其它方法可以得到用戶對項目和屬性的明確反饋,從而減少候選項目空間,以此實現(xiàn)長期回報。另外,CRM模型性能略差的原因考慮在于其是單輪次推薦,不管推薦成功與否,自動結(jié)束對話。
最后,在對話推薦模型中,使用圖的路徑推理(CPR、LSCPR)比不使用(CRM、EAR)更優(yōu)。原因在于圖節(jié)點關(guān)系的約束有助于消除許多不相關(guān)的屬性,尤其是屬性數(shù)量較大時。同時,候選空間限制在鄰接屬性或者項目使得對話流暢性提升。所以,本文基于圖的路徑推理來改進推薦方法,將用戶歷史交互信息采用注意力機制獲取有價值的用戶偏好表示,將其對項目候選集做進一步限定,從而得到更好的推薦效果。
實驗評估了用戶長期偏好與短期偏好相結(jié)合給對話推薦系統(tǒng)性能帶來的影響,為進一步驗證用戶長短期偏好結(jié)合的重要性以及注意力機制在用戶長短期偏好信息融合方面所起到的作用,本文構(gòu)建了以下LSCPR變體。
(1)LSCPR-AM:忽略項目候選集預測模塊中對注意力機制的應用,僅采用平均值的方法來代替LSCPR中利用注意力機制捕獲用戶歷史交互數(shù)據(jù)中融合長短期偏好的表示。
(2)LSCPR-ST:忽略項目候選集預測模塊中對用戶短期歷史交互數(shù)據(jù)的應用,即不再單獨考慮歷史交互序列中最近的交互項目對于實時對話交互路徑選取的影響。
(3)LSCPR-LS:忽略項目候選集預測模塊中對用戶歷史交互數(shù)據(jù)的應用,即僅采用實時對話交互信息來進行推薦,改變后的模型近似于CPR模型。
本文使用SR@15和AT評價指標來評估相應模塊設(shè)定在LastFM數(shù)據(jù)集和Yelp數(shù)據(jù)集上的有效性。消融實驗結(jié)果如圖5所示。首先,LSCPR模型的性能優(yōu)于其它3個變體,驗證了歷史交互數(shù)據(jù)與用戶實時對話交互信息相融合的必要性,這兩類信息相輔相成,互相提供有效信息,歷史交互數(shù)據(jù)為項目候選集的選取增添用戶個性化限制,同時通過實時交互獲取的鄰接項目節(jié)點為項目候選集的生成劃定了相應的范圍。此外,對歷史交互數(shù)據(jù)的應用也應考慮長短期偏好的劃分,LSCPR-ST變體的實驗驗證了用戶最近時間的歷史交互項目對之后項目選取具有重要作用。LSCPR-AM變體則驗證了注意力機制在長短期興趣偏好融合表示的積極貢獻。
圖5 歷史交互數(shù)據(jù)應用對模型的影響
本文提出了一種結(jié)合用戶長短期偏好信息的對話推薦方法LSCPR,該方法首先利用注意力機制將用戶歷史交互數(shù)據(jù)中的一般偏好與短期偏好進行加權(quán)表示,再與通過用戶、項目、屬性三元無向圖的路徑推理得到的實時更新的未交互項目集進行線性融合,最終求得項目集中每個項目的預測評分,得到最終的項目候選集,為用戶提供更具個性化與實時性的推薦結(jié)果。最后,基于兩個真實數(shù)據(jù)集進行相應實驗,驗證了對用戶歷史交互數(shù)據(jù)進行充分利用的必要性,同時采用基于路徑推理的對話推薦方法更好地實現(xiàn)了推薦結(jié)果的可解釋性。