王寶亮,潘文采
1.天津大學(xué) 信息與網(wǎng)絡(luò)中心,天津 300072
2.天津大學(xué) 電氣自動(dòng)化與信息工程學(xué)院,天津 300072
當(dāng)今社會(huì),隨著網(wǎng)絡(luò)的興起,用戶的選擇信息越來越多,為了解決用戶的個(gè)性化推薦問題,推薦系統(tǒng)應(yīng)運(yùn)而生。其中,協(xié)同過濾算法通過分析相似用戶的行為進(jìn)行推薦,取得了較大的成功。然而,傳統(tǒng)的協(xié)同過濾算法存在冷啟動(dòng)和用戶交互信息稀疏的問題,因此研究者通過加入輔助信息例如社交網(wǎng)絡(luò)、物品的屬性信息等來緩解該問題。由于知識(shí)圖譜包含豐富的物品信息,也被應(yīng)用于推薦算法中。
將知識(shí)圖譜應(yīng)用于推薦算法已成為一個(gè)熱點(diǎn),例如文獻(xiàn)[7]將知識(shí)圖譜應(yīng)用于新聞推薦系統(tǒng),將上下文嵌入、知識(shí)圖譜實(shí)體嵌入和語句嵌入送入CNN網(wǎng)絡(luò),從而在語義層次和知識(shí)圖譜層次學(xué)習(xí)嵌入表示。文獻(xiàn)[8-9]將知識(shí)圖譜網(wǎng)絡(luò)中與用戶交互的物品的鄰居信息聚合到用戶上,生成信息豐富的嵌入表示。文獻(xiàn)[10-11]將物品的鄰居信息聚合到物品上生成物品嵌入表示。
受上述算法啟發(fā),本文提出基于知識(shí)圖譜的用戶物品鄰居信息融合推薦算法,即將用戶鄰居和物品鄰居信息分別融合,從而產(chǎn)生用戶和物品信息均豐富的嵌入表示。在聚合用戶信息時(shí),首先根據(jù)用戶的點(diǎn)擊記錄得到與用戶交互的物品,如圖1 所示的左邊菱形節(jié)點(diǎn)。然后根據(jù)物品在知識(shí)圖譜網(wǎng)絡(luò)的位置得到一階鄰居。同理,向外傳播,得到高階鄰居。然后利用節(jié)點(diǎn)和節(jié)點(diǎn)之間的關(guān)系豐富用戶的向量表示。在聚合物品信息時(shí),由于物品通常是知識(shí)圖譜的某個(gè)實(shí)體節(jié)點(diǎn),如圖1 所示右邊的菱形節(jié)點(diǎn),直接得到物品的一階和高階鄰居,根據(jù)KGCN(knowledge graph convolutional networks)模型(一種利用圖卷機(jī)神經(jīng)網(wǎng)絡(luò)和知識(shí)圖譜的推薦模型)聚合信息生成豐富的物品嵌入表示。最后將得到的用戶和物品的向量嵌入表示送入預(yù)測(cè)環(huán)節(jié),得到用戶和物品的交互概率。在公開的兩個(gè)數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),驗(yàn)證了本文算法的有效性。
圖1 總體框架Fig.1 Overall framework
本文的總體思路如圖1 所示,其中,正方形節(jié)點(diǎn)表示用戶節(jié)點(diǎn),圓形和菱形節(jié)點(diǎn)表示知識(shí)圖譜中的實(shí)體節(jié)點(diǎn),左邊的菱形節(jié)點(diǎn)表示與用戶有交互關(guān)系的物品節(jié)點(diǎn)。
給定用戶物品交互矩陣和知識(shí)圖譜用戶的跳實(shí)體集合定義如下:
用戶的跳的鄰居集合如下:
隨著跳數(shù)的增加,鄰居集合的數(shù)量會(huì)變得十分龐大,因而不會(huì)選得很大,當(dāng)很大時(shí),帶來的噪音會(huì)比有效信息更多。同時(shí),為了降低集合的數(shù)量,每一跳采樣固定數(shù)量大小的鄰居。
其中,R∈R,h∈R,分別表示關(guān)系R和實(shí)體head h的嵌入表示,考慮到用戶的點(diǎn)擊歷史是用戶的直接興趣表達(dá),因而將加入權(quán)重表達(dá)式。
p可以表示在R空間下用戶對(duì)于h和關(guān)系R的喜好程度,也可以表征每個(gè)鄰居節(jié)點(diǎn)和用戶的點(diǎn)擊歷史物品的相似度。
其中,t∈R,是tail t的嵌入向量的表示。
最終的用戶的向量表示為:
然而,對(duì)于[],隨著的增長,離用戶的交互歷史越來越遠(yuǎn),包含的噪音信息會(huì)更多,因此不同的路徑對(duì)模型的影響是不同的,式(5)無法解決該問題,選擇文獻(xiàn)[12]提出的累加操作,如式(6)所示。
圖2 用戶節(jié)點(diǎn)信息融合Fig.2 User node information aggregation
其中,是參數(shù),用來控制每一跳輸出的權(quán)重。該操作能夠區(qū)分不同跳輸出的重要性,其偏導(dǎo)如式(7)所示。
通過控制的大小可以調(diào)整每一跳輸出的比重。
物品鄰居節(jié)點(diǎn)的聚合采用KGCN模型,其基本框架如圖3 所示。
圖3 KGCN 模型Fig.3 KGCN model
KGCN 模型在知識(shí)圖譜中聚合實(shí)體特征,從而發(fā)掘物品的潛在關(guān)聯(lián)。涉及的概念如下:
()的規(guī)模很大,選擇隨機(jī)采樣固定數(shù)量鄰居的方式降低計(jì)算復(fù)雜度。
其中,表示采樣的數(shù)目。
根據(jù)文獻(xiàn)[10]實(shí)驗(yàn)結(jié)果,式(12)的聚合效果在三種聚合方式最好,本文根據(jù)文獻(xiàn)[13]提出的聚合方式,如式(15)所示。
其中,⊙表示element-wise 操作。
根據(jù)式(9)~(11)、(15)~(17),如圖3 所示,不斷從外向內(nèi)聚合,將節(jié)點(diǎn)的信息聚合到物品節(jié)點(diǎn)。最終形成物品節(jié)點(diǎn)的向量表示v。
通過1.2 和1.3 節(jié),得到了用戶和物品的最終向量表示和v,其中用戶向量包含了用戶的歷史記錄信息和其在知識(shí)圖譜中的鄰居信息。物品向量v包含了物品本身和其在知識(shí)圖譜的鄰居信息以及用戶對(duì)鄰居信息的喜好程度。預(yù)測(cè)函數(shù)如式(18)所示。
為了比較對(duì)向量的不同操作對(duì)最終結(jié)果的影響,預(yù)測(cè)函數(shù)公式可替換為式(19)。
其中,∈R。
損失函數(shù)如式(20)所示。
雙端鄰居信息融合
本文采用的數(shù)據(jù)集是Book-Crossing(http://www2.informatik.uni-freiburg.de/~cziegler/BX/)和Last.FM(https://grouplens.org/datasets/hetrec-2011/)。其中Book-Crossing數(shù)據(jù)集來自Book-Crossing 市場(chǎng),包含100 萬個(gè)書籍評(píng)分信息。Last.FM 數(shù)據(jù)集來自Last.FM 在線音樂系統(tǒng),包含2 000 個(gè)用戶的評(píng)分信息。對(duì)應(yīng)于數(shù)據(jù)集的知識(shí)圖譜數(shù)據(jù)從KGCN公開的預(yù)處理知識(shí)圖譜獲得(https://github.com/hwwang55/KGCN),該知識(shí)圖譜信息來自Microsoft Satori。兩個(gè)數(shù)據(jù)集經(jīng)過預(yù)處理后的統(tǒng)計(jì)數(shù)據(jù)如表1 所示。
表1 兩個(gè)數(shù)據(jù)集的統(tǒng)計(jì)數(shù)據(jù)Table 1 Statistics for two datasets
本文算法將與經(jīng)典的推薦算法LibFM、Wide&Deep和基于知識(shí)圖譜的推薦算法RippleNet、KGCN、KGNN-LS進(jìn)行比較。通過評(píng)價(jià)指標(biāo)ACC(accuracy)和AUC(area under curve)來比較各個(gè)算法的性能,它們反映了算法在CTR(click-through rate)預(yù)測(cè)時(shí)的性能。
本實(shí)驗(yàn)在Windows10 環(huán)境下使用python-3.6.5 進(jìn)行開發(fā),使用的第三方庫及版本:tensorFlow-1.12.0、numpy-1.15.4、sklearn-0.20.0。對(duì)于每個(gè)數(shù)據(jù)集,按照6∶2∶2 的比例隨機(jī)構(gòu)成訓(xùn)練集、驗(yàn)證集和測(cè)試集。其他相關(guān)的參數(shù)如表2 所示。
表2 參數(shù)的設(shè)置Table 2 Parameter setting
表2 中,-表示用戶端,-表示物品端。表示鄰居采樣數(shù)量,表示跳數(shù),表示嵌入向量的維度,表示正則化參數(shù),表示訓(xùn)練速率,表示式(6)中的參數(shù),調(diào)整每一跳的比重。
KGCN(https://github.com/hwwang55/KGCN)、KGNN-LS(https://github.com/hwwang55/KGNN-LS)的參數(shù)設(shè)置按照文獻(xiàn)[10-11]的設(shè)定進(jìn)行設(shè)置。對(duì)于RippleNet(https://github.com/hwwang55/RippleNet),其在Last.FM數(shù)據(jù)集上的設(shè)置為=16,=3,=10,=0.02,=0.005;在Book-Crossing 數(shù)據(jù)集的設(shè)置為=4,=3,=10,=0.01,=0.001。
各個(gè)模型的CTR 預(yù)測(cè)結(jié)果如表3 所示。
表3 CTR 預(yù)測(cè)中AUC 和ACC 的結(jié)果Table 3 Results of AUC and ACC in CTR prediction
從表3 的結(jié)果可以看出,相較于經(jīng)典的推薦算法LibFM、Wide&Deep 以及在知識(shí)圖譜中僅聚合用戶鄰居信息的RippleNet算法和僅聚合物品鄰居的KGCN、KGNN-LS 算法,本文算法在兩個(gè)數(shù)據(jù)集的性能都有所提升。在Book-Crossing 數(shù)據(jù)集上,相較于最優(yōu)基線,AUC和ACC提升1.72%和4.24%;在Last.FM 數(shù)據(jù)集上,AUC和ACC提升1.07%和1.14%。其中模型-表示本文算法僅聚合用戶鄰居信息的結(jié)果,模型-表示本文算法僅聚合物品鄰居信息的結(jié)果。通過對(duì)比可以看出聚合兩者的鄰居信息能夠提升算法的有效性。同時(shí)可以發(fā)現(xiàn),模型-的算法性能下降較為明顯,主要原因是本文的物品鄰居采樣數(shù)太少且向外聚合的深度也僅為1 跳,因此得到的信息非常少,從而導(dǎo)致性能效果下降更多,這也從側(cè)面說明鄰居信息對(duì)算法的性能有較大的影響。
表3 最后一行表示用式(19)作為預(yù)測(cè)函數(shù)的結(jié)果??梢钥闯?,式(19)引入額外的無關(guān)參數(shù)會(huì)導(dǎo)致大部分結(jié)果變差,因此需要恰當(dāng)選擇合適的預(yù)測(cè)函數(shù),才能提升模型性能。
在聚合用戶鄰居信息時(shí),得到每一跳的結(jié)果后,通過值來調(diào)整每一跳累和時(shí)的比重,當(dāng)值趨于0時(shí),會(huì)選擇最重要的一跳信息作為最終用戶向量表示,當(dāng)值趨于無窮時(shí),累和方式類似于對(duì)多跳輸出取平均值作為最終用戶向量表示。由表4 結(jié)果可以看出,對(duì)于Book-Crossing 數(shù)據(jù)集和Last.FM 數(shù)據(jù)集,值取小值時(shí),效果要好于大值。這是由于取小值時(shí),會(huì)更傾向于取重要一跳的信息作為最終用戶向量表示。表4 中最后一行表示直接累加所有跳的輸出的結(jié)果,可以看出,利用值調(diào)整能夠提升算法的有效性。
表4 參數(shù)γ 對(duì)AUC 值的影響Table 4 Influence of parameter γ on AUC value
表5 和表6 表示采樣鄰居數(shù)目對(duì)算法的影響??梢钥闯?,當(dāng)值取過低和過高時(shí),模型的性能都會(huì)受到影響。過高時(shí),會(huì)帶來更多的噪音,過低時(shí)無法聚合更多有效的信息。
表5 用戶端每跳采樣值K-u 對(duì)AUC 值的影響Table 5 Impact of K-u sampled value per hop on AUC value at user end
表6 物品端每跳采樣值K-i 對(duì)ACC 值的影響Table 6 Impact of K-i sampled value per hop on ACC value at item end
表7和表8 表示聚合深度對(duì)算法的影響??梢钥闯霰疚乃惴▽?duì)聚合深度的敏感性更強(qiáng),特別是對(duì)于的性能急劇惡化,說明當(dāng)跳數(shù)增加時(shí),會(huì)引入更多的不必要信息,這也符合現(xiàn)實(shí)情況。知識(shí)圖譜中的1 跳鄰居信息是對(duì)實(shí)體的更為直接的描述,有很強(qiáng)的相關(guān)性,當(dāng)跳數(shù)增加時(shí),其有效的描述信息會(huì)少很多。
表7 用戶端聚合跳數(shù)H-u 對(duì)AUC 值的影響Table 7 Impact of user end aggregation hops H-u on AUC value
表8 物品端聚合跳數(shù)H-i 對(duì)ACC 值的影響Table 8 Impact of item end aggregation hops H-i on ACC value
表9 表示向量維度對(duì)算法性能的影響。合適的向量維度能夠編碼有效的信息而不會(huì)引入更多的噪音,也能緩解算法的過擬合現(xiàn)象,同時(shí)也會(huì)減小算法的訓(xùn)練時(shí)間。
表9 向量維度值d 對(duì)AUC 值的影響Table 9 Influence of vector dimension value d on AUC value
針對(duì)推薦系統(tǒng)存在的冷啟動(dòng)問題,本文提出了一種基于知識(shí)圖譜的融合用戶鄰居信息和物品鄰居信息的推薦算法。該算法將知識(shí)圖譜作為輔助信息,算法首先聚合用戶的鄰居信息,生成有個(gè)性化信息的用戶向量,然后將用戶向量送入KGCN 模型聚合物品的鄰居信息,生成有個(gè)性化的物品向量。最后將向量送入預(yù)測(cè)階段。在數(shù)據(jù)集Book-Crossing 和Last.FM 上的實(shí)驗(yàn)結(jié)果證明了本文算法的有效性,提高了推薦結(jié)果的準(zhǔn)確性,同時(shí)增加了推薦算法的可解釋性。下一步將針對(duì)知識(shí)圖譜中存在的不相關(guān)實(shí)體問題做進(jìn)一步探究。