【十】推荐系统遇到知识图谱RippleNet
RippleNet: Propagating User Preferences on the Knowledge
Graph for Recommender Systems
代碼: https://github.com/hwwang55/RippleNet
心得
(1)你需要知道Kg是如何起到作用的! KG的形式是什么!
(2)Ripple中的o是什么? 怎么起到一圈一圈的作用的!
(3)Ripple的獲得是通過上一層,但是Ripple是如何減弱的呢? 代碼呢? 怎么控制h-hop?怎么控制興趣范圍,防止太大?
(4)多個漣漪疊加?
核心創(chuàng)新點
其實就是利用了波紋的逐漸遞減的原理,對應(yīng)于相關(guān)性的逐漸遞減,也就是權(quán)重! 將嵌入和路徑結(jié)合,也就是路徑上的統(tǒng)一作為嵌入! 經(jīng)過函數(shù)后得到最后的結(jié)果
摘要
- 方法要解決的問題
本文將知識圖作為邊信息的來源,結(jié)合基于嵌入和基于路徑的知識圖感知方法,我們提出了RippleNet。 - 具體點:
與在水面上傳播的實際波紋類似,RippleNet通過自動迭代地沿著知識圖中的鏈接擴展用戶的潛在興趣來刺激用戶偏好在知識實體集合上的傳播。將用戶歷史點擊物品激活的多個“漣漪”疊加,形成用戶對候選物品的偏好分布,用于預(yù)測最終的點擊概率。
引入
推薦策略:
協(xié)同過濾方法: 協(xié)同過濾(CF)考慮用戶的歷史交互,根據(jù)用戶潛在的共同偏好進行推薦; 但是基于CF的方法會受到用戶-項目交互稀疏和冷啟動問題的困擾! 為了解決這些問題,研究人員建議在CF中加入邊信息,如社交網(wǎng)絡(luò)、用戶/物品屬性,圖片和上下文等! 而其中知識圖譜通常包含項目的事實和聯(lián)系!
KG加入策略: (1)KG引入了items之間的語義關(guān)聯(lián),有助于發(fā)現(xiàn)項目之間的潛在聯(lián)系,提高推薦項目的精度;(2)KG包含了各種類型的關(guān)系,有利于合理擴展用戶興趣,增加推薦條目的多樣性; (3)KG將用戶的歷史記錄與推薦記錄連接起來,從而為推薦系統(tǒng)帶來了可解釋性。
推薦策略之KG嵌入
KG現(xiàn)有方法 一般來說,現(xiàn)有的kg-aware的推薦可分為兩類:
第一類
第一類是基于嵌入的方法[32,33,43],該方法使用知識圖嵌入(KGE)[35]算法對KG進行預(yù)處理,并將學(xué)習(xí)到的實體嵌入到推薦框架中。
方法:
優(yōu)缺點:
基于嵌入的方法在利用KG輔助推薦系統(tǒng)方面表現(xiàn)出了很高的靈活性,但是這些方法采用的KGE算法通常更適合于圖內(nèi)應(yīng)用,如鏈接預(yù)測,而不是推薦(也就是只是圖中自己過家家,預(yù)測圖內(nèi)是不是有關(guān)系! )
第二類
第二種方法是基于路徑的方法,這個探索了在KG中items之間不同關(guān)系的連接來給推薦系統(tǒng)一些不一樣的引導(dǎo)。
方法:
優(yōu)缺點:
基于路徑的方法以一種更加自然、更直觀的方式使用KG, 但是它們嚴(yán)重依賴于手工設(shè)計的元路徑,在實踐中很難進行優(yōu)化。 另一種問題是,在實體和關(guān)系不在同一個域中的特定場景(例如,新聞推薦)中,不可能設(shè)計手工制作的元路徑!
第三類: 我們的方法
RippleNet用于預(yù)測點擊率(CTR),以user-item對作為輸入,輸出用戶參與(如點擊、瀏覽)該物品的概率! 這個方法最重要的idea是更關(guān)注到傳播: 對于每個用戶,RippleNet將其歷史興趣視為KG中的種子集,然后沿著KG鏈接迭代地擴展用戶的興趣,以發(fā)現(xiàn)其相對于候選item的分層潛在興趣。
優(yōu)缺點:
(1)RippleNet通過偏好傳播將KGE方法自然融入到推薦中; (2) RippleNet可以自動發(fā)現(xiàn)從用戶歷史中的物品到候選物品的可能路徑,而無需任何手工設(shè)計。
綜上所述,本文的貢獻如下:
- 據(jù)我們所知,這是第一次在kg感知推薦中結(jié)合基于嵌入和基于路徑的方法。
- 我們提出了RippleNet,這是一個端到端的框架,利用KG來幫助推薦系統(tǒng)。RippleNet通過在KG中迭代傳播用戶偏好,自動發(fā)現(xiàn)用戶的層次潛在興趣。
2. 問題公式化
推薦系統(tǒng)中,U=u1,u2,...U = {u_1, u_2, ...}U=u1?,u2?,...和V=v1.v1,...V = {v_1. v_1,...}V=v1?.v1?,...分別表示users和items,user-item交互矩陣Y={yuv∣u∈U,v∈V}\mathrm{Y}=\left\{y_{u v} \mid u \in \mathcal{U}, v \in \mathcal{V}\right\}Y={yuv?∣u∈U,v∈V}是根據(jù)用戶的隱性反饋來定義的,其中
其中1表示有隱式交互,比如點擊、觀看、瀏覽等行為; 除了交互矩陣Y,我們還有一個可用的知識圖G,其中包含了大量的三元組(h,r,t)(h, r, t)(h,r,t), 其中h∈Eh \in{\mathcal{E} }h∈E, r∈Rr \in{\mathcal{R} }r∈R和t∈Et \in{\mathcal{E} }t∈E表明了在KG中的頭、關(guān)系和三元組的尾部! E\mathcal{E}E和R\mathcal{R}R表明了KG中的實體和關(guān)系的集合! 而且一個實體可能和多個實體由不同的關(guān)系!
也就是user、items、Y、G(h、r、t輸入E\mathcal{E}E、 R\mathcal{R}R)處理!
3 RIPPLENET
3.1框架
綜述方法:
輸入: RIPPLENET將用戶u和物品v作為輸入
輸出: 輸出用戶u點擊物品v的概率。
對于輸入用戶u, 他的歷史興趣集VuV_uVu?被作為KG的種子,之后擴展成不同的ripple setsSuk(k=1,2,...,H)S_u^{k}(k = 1,2,...,H)Suk?(k=1,2,...,H),一個ripple setSukS_u^{k}Suk?是遠離種子集VuV_uVu?的k-hop(s)的知識三元組! 這些ripple set用于與item embedding(黃色塊)進行迭代交互,獲取useru對item v(綠色塊)的響應(yīng),然后將這些響應(yīng)組合成最終的user embedding(灰色塊)。
3.2 第一步: 獲取Ripple Set
我們知道,如果我們喜歡一部電影是因為什么? 電影類型? 電影主演? 電影導(dǎo)演? 這些都是知識圖譜中和電影相連接的關(guān)系!
定義1(相關(guān)實體) :給定交互矩陣Y和知識圖G,定義user u的k-hop相關(guān)實體集合為
其中Eu0=Vu={v∣yuv=1}\mathcal{E}_{u}^{0}=\mathcal{V}_{u}=\left\{v \mid y_{u v}=1\right\}Eu0?=Vu?={v∣yuv?=1}是用戶過去點擊過的物品集,可以看作是user u在KG中的種子集。
而相關(guān)實體視為用戶歷史興趣相對于KG的自然擴展。根據(jù)相關(guān)實體的定義,定義user u的k-hop ripple集如下:
定義2(紋波集) :user u的第k hop ripple set定義為從Eu(k?1)\mathcal{E}^{(k-1)}_{u}Eu(k?1)?開始的知識圖譜三元集合:
“ripple”一詞有兩層含義:(1)用戶對實體的潛在興趣是由其歷史偏好激活的,然后沿著KG中的鏈接逐層傳播,從近到遠。我們可以通過圖3中所示的同心圓來進行類比。(2)用戶在紋波集中的潛在偏好強度隨著跳數(shù)k的增加而減弱,相關(guān)性也在減弱。
其中hop的k是需要我們留意的!
(1)在真實KG中大部分的實體都是sink entities,這意味著它們只有傳入鏈接而沒有傳出鏈接,比如“2004”和“PG-13”
(2)在特定的推薦場景(如電影或書籍推薦)中,可以將關(guān)系限制在場景相關(guān)的類別中,以減少漣波集的大小并提高實體之間的相關(guān)性。例如,在圖3中,所有關(guān)系都與電影相關(guān),并且在它們的名稱中包含單詞“film”。
(3)在實踐中,最大量的hop H的數(shù)量通常不會太大,因為與用戶歷史距離太遠的實體可能帶來更多的干擾,而不是積極的信號。我們將在實驗部分討論H的選擇。
(4)在RippleNet中,我們可以對一個固定大小的鄰居集進行抽樣,而不是使用一個完整的ripple集來進一步減少計算開銷。這類采樣器的設(shè)計是未來工作的重要方向,尤其是非均勻采樣器的設(shè)計,以更好地捕捉用戶的層次潛在興趣。
3.3偏好傳播
第一步: 首先是item的Embedding:
傳統(tǒng)的基于CF的方法和他們的變體學(xué)習(xí)用戶和物品之間的潛在的關(guān)系,然后使用一個評分函數(shù)!
在RippleNet中,則是探索用戶對其Ripple集的潛在興趣!以一種更加細粒度的方式對用戶和items之間的交互建模(什么叫做細粒度????),我們提出了一種偏好傳播技術(shù)!什么叫細粒度,就是
在圖表2中,每個物品vvv和一個物品嵌入v∈Rdv\in\ \mathbb{R}^dv∈?Rd鏈接,其中d是維度; 根據(jù)應(yīng)用場景物品Embedding可以包含one-hot ID、屬性、bag-of-words(BOW詞袋)或者是上下文信息!這就是細粒度!
第二步: 波紋集合和其概率:
同時我們利用該Embedding vvv, 得到該用戶u的1-hop波紋集Su1S_u^1Su1?,而在該Su1S_u^1Su1?中的每個三元組(hi,ri,tih_i, r_i, t_ihi?,ri?,ti?)都會被分配一個相關(guān)概率,通過比較物品vvv和頭部hih_ihi?和關(guān)系rir_iri?:
其中Ri∈Rd×dR_i\in\ \mathbb{R}^{d\timesze8trgl8bvbq}Ri?∈?Rd×d和hi∈Rdh_i\in\ \mathbb{R}^dhi?∈?Rd是頭部hih_ihi?和關(guān)系rir_iri?的Embedding! 而pip_ipi?可以被看做是物品v和兩者的相似性!
在得到相關(guān)概率后,我們?nèi)?span id="ze8trgl8bvbq" class="katex--inline">Su1S_u^1Su1?關(guān)聯(lián)概率的權(quán)重的和! 然后這個向量ou1o_u^1ou1?被返回:
其中ti∈Rdt_i \in \mathbb{R}^ze8trgl8bvbqti?∈Rd是tailtit_iti?的嵌入! 向量ou1o_u^1ou1?可以被看做用戶u的關(guān)于物品vvv的點擊歷史VuV_uVu?的一階反應(yīng)! 這類似于基于item的CF方法,但是,用戶由他的相關(guān)項而不是獨立的特征向量來表示,以減少參數(shù)的大小。
用戶的興趣是從它的歷史記錄VuV_uVu?中轉(zhuǎn)移過來的! 這就是preference propagation!
通過用ou1o_u^1ou1?代替公式4中的vvv可以重復(fù)傳播,最后可以得到ou2o_u^2ou2?;
最后item可以被計算通過融合所有的:
最后,結(jié)合用戶嵌入和物品嵌入,預(yù)測點擊概率:
其中是激活函數(shù)是
3.4學(xué)習(xí)算法
在RippleNet中,我們希望最大化模型參數(shù)的后驗概率
通過觀察知識圖譜和隱式反饋矩陣
其中包括所有實體、關(guān)系和項目的嵌入。這等價于最大化
根據(jù)貝葉斯定理。在式(9)中,第一項p(Θ)度量模型參數(shù)Θ的先驗概率。根據(jù)[43],設(shè)p(Θ)為零均值高斯分布,對角協(xié)方差矩陣:
在式子9中的第二個item是被觀察的知識圖譜
的似然函數(shù)。最近,研究員提出了許多知識圖譜嵌入方法,包含translational distance models和semantic matching models! 而在RippleNet中,我們使用三種方式的張量分解方法來定義KGE的似然函數(shù):
其中會等于1在下,否則會等于0; 基于(11)中的定義,在KGE中的實體-實體對和在preference propagation中的item-entity對可以在同一計算模型下被統(tǒng)一,Eq.(9)中的最后一項是已知Θ的隱式反饋與KG的似然函數(shù),定義為伯努利分布的乘積
對Eq.(9)取負對數(shù),則RippleNet的損失函數(shù)為:
其中V和E是所有items和實體的嵌入矩陣,IrI_rIr?是在KG中的張量指標(biāo)III的切片在關(guān)系r中,和R是關(guān)系R的嵌入矩陣。Eq(13)中,第一個term是交叉熵矩陣,預(yù)測值和真實值Y之間的差異; 第二項term測量KG IrI_rIr?和重構(gòu)指標(biāo)矩陣之間的平方誤差! 第三個term是防止過擬合!
解決上面的目標(biāo)函數(shù)是很難的,因此我們采用了SGD來迭代的更新loss! 為了更有效,我們會根據(jù)消極取樣策略進行隨機取樣(從Y中取樣的positive/negtive交互和從知識圖譜G中取樣的true/false三元組)
3.5 Discussion
3.5.1 Knowledge Graph Embedding.(KGE)
KGE方法主要有兩種:https://blog.csdn.net/qq_27590277/article/details/106263407
原文: https://ieeexplore.ieee.org/document/8047276/metrics#metrics
平移距離模型和語義匹配模型。前者使用基于距離的評分函數(shù),后者使用基于相似度的評分函數(shù)。
仔細看看上面的解釋!
解釋為什么用知識圖譜,以及圖譜怎么嵌入!
但是上面的方法更加適合圖內(nèi)應(yīng)用,如鏈接預(yù)測或者三重分類! 從這個角度來看,RippleNet可以看做專門設(shè)計的KGE方法!
3.5.2 Memory Network
記憶網(wǎng)絡(luò)是一個recurrent attention模型,他們使用了一個外在記憶模塊! 這個在外在內(nèi)存上進行迭代讀入操作使得記憶網(wǎng)絡(luò)能夠提取長距離的依賴!
原來作品專注于入門級或者句子級別,但是我們的工作在KG中處理實體級別的連接,這在執(zhí)行多跳迭代時更加精細和直觀!
3.5.3 注意力機制
在RippleNet中,tails會根據(jù)相似性來平均權(quán)重! 在他們聯(lián)系的頭、尾巴和某些item!
3.5.4 Ripple Superposition
我們會發(fā)現(xiàn)一個用戶歷史點擊的不同items最終會經(jīng)過不同的路徑(關(guān)系)牽引到同一個entity! 這種重疊實體就是用戶最大的興趣!
4. Experiment
三個數(shù)據(jù)集: Movies、Books、Bing-News
由于MovieLens-1M和Book-Crossing是顯式反饋數(shù)據(jù),我們將它們轉(zhuǎn)換為隱式反饋,其中每個條目都被標(biāo)記為1,表示用戶已經(jīng)對項目進行了評分(MovieLens-1M的評分閾值為4,而Book-Crossing由于其稀疏性沒有設(shè)置閾值),并對每個用戶標(biāo)記為0的未觀看集進行采樣,該集與被評級的集大小相同。
我們使用Microsoft Satori來為每個數(shù)據(jù)集創(chuàng)建知識圖譜(從中選擇知識圖譜)。 首先,對于MovieLens-1M和book - crossing,我們首先從整個KG中選擇關(guān)系名稱包含“movie”或“book”且置信度大于0.9的三元組子集。給定sub-KG,我們收集所有valid 電影/書籍的id,通過匹配它們的名字和三元組的尾部,為簡單起見,沒有匹配或多個匹配實體的item被排除! 然后我們將id與所有KG三元組的頭和尾進行匹配,從sub-KG中選擇所有匹配良好的三元組,并迭代地將實體集擴展到four hops。
在總數(shù)據(jù)集中選擇不同的hop后,多個數(shù)據(jù)集是不是有共同的raters(也就是實體交集)
不同hop
總結(jié)
以上是生活随笔為你收集整理的【十】推荐系统遇到知识图谱RippleNet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一阶电路暂态响应的结果分析。_阻尼比测试
- 下一篇: 机器学习方法_机器学习模型应用方法综述