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