論文:

論文題目:《Neural Graph Collaborative Filtering》
論文地址:https://arxiv.org/pdf/1905.08108.pdf
本論文是關(guān)于圖結(jié)構(gòu)的協(xié)同過(guò)濾算法,在原始的矩陣分解和基于深度學(xué)習(xí)的方法中,通常是通過(guò)映射描述用戶(或物品)的現(xiàn)有特征(例如ID和屬性)來(lái)獲得用戶(或物品)的嵌入。從而利用user和item的embedding進(jìn)行協(xié)同召回。但是作者認(rèn)為這種方法的固有缺點(diǎn)是:在user與item的interaction數(shù)據(jù)中潛伏的協(xié)作信號(hào)(collaborative signal)未在嵌入過(guò)程中進(jìn)行編碼。這樣,所得的嵌入可能不足以捕獲協(xié)同過(guò)濾效果。
讓我們一起來(lái)看一下本論文是怎么利用數(shù)據(jù)中潛伏的協(xié)作信號(hào)的吧。
一 、背景
推薦算法被廣泛的運(yùn)用在各個(gè)領(lǐng)域中,在電商領(lǐng)域,社交媒體,廣告等領(lǐng)域都發(fā)揮著至關(guān)重要的作用。推薦系統(tǒng)的核心內(nèi)容就是根據(jù)用戶以前的購(gòu)買和點(diǎn)擊行為來(lái)評(píng)估用戶對(duì)一個(gè)物品的喜愛(ài)程度,從而針對(duì)每個(gè)用戶進(jìn)行個(gè)性化推薦。協(xié)同過(guò)濾算法認(rèn)為歷史行為相似的用戶之間的興趣是相同的,所以給用戶推薦的是同類型用戶的愛(ài)好,也就是UserCF,而ItemCF給用戶推薦的是跟歷史行為相近的物品。
傳統(tǒng)的協(xié)同過(guò)濾方法要么是基于矩陣分解,要么是基于深度學(xué)習(xí)的,這兩種方法都忽略了一個(gè)非常關(guān)鍵的信息---user和item交互的協(xié)作信號(hào),該信號(hào)隱藏在user和item的交互過(guò)程中。原始的協(xié)同過(guò)濾方法忽略了這種信息,所以在進(jìn)行user 和 item representation時(shí)就不足以較好的進(jìn)行embedding。
本論文通過(guò)將用戶項(xiàng)交互(更具體地說(shuō)是二分圖結(jié)構(gòu))集成到embedding過(guò)程中,開(kāi)發(fā)了一個(gè)新的推薦框架神經(jīng)圖協(xié)同過(guò)濾(NGCF),該框架通過(guò)在其上傳播embedding來(lái)利用user-item圖結(jié)構(gòu)。這種方法在用戶項(xiàng)目圖中進(jìn)行高階連通性的表達(dá)建模,從而以顯式方式將協(xié)作信號(hào)有效地注入到embedding過(guò)程中。
二 、模型
在介紹模型之前先來(lái)講解一下什么是useritem?interaction以及什么是高階的useritem?interaction。

我們先看左邊的圖,這個(gè)圖就是useritem interaction,u1是我們待推薦的用戶,用雙圓圈表示,他交互過(guò)的物品有i1,i2,i3。在看右邊這個(gè)樹(shù)形結(jié)構(gòu)的圖,這個(gè)圖是u1的高階interaction圖,注意只有l(wèi) > 1的才是u1的高階連接。觀察到,這么一條路徑,u1 ← i2 ← u2,指示u1和u2之間的行為相似性,因?yàn)閮蓚€(gè)用戶都已與i2進(jìn)行了交互。而另一條更長(zhǎng)的路徑,u1←i2←u2←i4暗示u1可能會(huì)點(diǎn)擊i4,因?yàn)樗南嗨朴脩魎2之前已經(jīng)購(gòu)買過(guò)i4。另一方面,用戶u1在l = 3這一層會(huì)更傾向于i4而不是i5,理由是i4到u1有兩條路徑而i5只有一條。
當(dāng)然這種樹(shù)結(jié)構(gòu)是不可能通過(guò)構(gòu)建真正的樹(shù)節(jié)點(diǎn)來(lái)表示的,因?yàn)闃?shù)模型比較復(fù)雜,而且結(jié)構(gòu)很大,沒(méi)法對(duì)每個(gè)用戶構(gòu)建一個(gè)樹(shù),這樣工作量太大了。那么怎么設(shè)計(jì)模型結(jié)構(gòu)可以達(dá)到跟這個(gè)high-order connectivity的效果呢,這個(gè)就要運(yùn)用到神經(jīng)網(wǎng)絡(luò)了。通過(guò)設(shè)計(jì)一個(gè)embedding propagation layer來(lái)表示這種embedding 在每個(gè)層之間的傳遞。
還是拿上面那張圖舉例子,堆疊兩層可捕獲u1←i2←u2的行為相似性,堆疊三層可捕獲u1←i2←u2←i4的潛在推薦以及信息流的強(qiáng)度(由層之間的可訓(xùn)練權(quán)重來(lái)評(píng)估),并確定i4和i5的推薦優(yōu)先級(jí)。

2.1?Embedding Layer

這個(gè)跟傳統(tǒng)的embedding是一樣的,都是對(duì)原始的userID和itemID做embedding,跟傳統(tǒng)embedding不同的地方是,在我們的NGCF框架中,我們通過(guò)在用戶-項(xiàng)目交互圖上傳播embedding來(lái)優(yōu)化embedding。 由于embedding優(yōu)化步驟將協(xié)作信號(hào)顯式注入到embedding中,因此可以為推薦提供更有效的embedding。
2.2 Embedding Propagation Layers
這一層是本文的核心內(nèi)容,下面我們來(lái)進(jìn)行詳細(xì)的解讀。
2.2.1 First-order Propagation.?
從直觀上來(lái)看,用戶交互過(guò)的item會(huì)給用戶的偏好帶來(lái)最直接的依據(jù)。類似地,交互過(guò)某個(gè)item的用戶可以視為該item的特征,并可以用來(lái)衡量?jī)蓚€(gè)item的協(xié)同相似性。 我們以此為基礎(chǔ)在連接的用戶和項(xiàng)目之間執(zhí)行embedding propogation,并通過(guò)兩個(gè)主要操作來(lái)制定流程:消息構(gòu)建和消息聚合。
Message Construction(消息構(gòu)建)
對(duì)于連接的user-item對(duì)(u,i),我們定義從i到u的消息為:

其中ei是i的embedding,eu是u的embedding,pui是用于控制每次傳播的衰減因子,函數(shù)f是消息構(gòu)建函數(shù),f的定義為:

其中W1和W2用來(lái)提取有用的embedding信息,可以看到W2控制的i和u直接的交互性,這使得消息取決于ei和eu之間的親和力,比如,傳遞更多來(lái)自相似項(xiàng)的消息。
另一個(gè)重要的地方是Nu和Ni,pui = 1/ 。Nu和Ni表示用戶u和item i的第一跳鄰居。 從表示學(xué)習(xí)的角度來(lái)看,pui反映了歷史item對(duì)用戶偏好的貢獻(xiàn)程度。 從消息傳遞的角度來(lái)看,考慮到正在傳播的消息應(yīng)隨路徑長(zhǎng)度衰減,因此pui可以解釋為折扣因子。
Message Aggregation
聚合方法如下:

其中表示在第一嵌入傳播層之后獲得的用戶u的表示。激活函數(shù)采用的是leakyrelu,這個(gè)函數(shù)適合對(duì)pos和neg信號(hào)進(jìn)行編碼。
另一個(gè)重要的信息是,它的定義如下:

這個(gè)信息的主要作用是保留原始的特征信息。
至此,我們得到了,同樣的方法,我們也能獲得
,這個(gè)都是first order connectivoty的信息。
2.2.2 High-order Propagation
根據(jù)前面的計(jì)算方式,我們?nèi)绻麑⒍鄠€(gè)Embedding Propagation Layers進(jìn)行堆疊,我們就可以得到high order connectivity信息了:

計(jì)算方式如下:


當(dāng)我看到這里的時(shí)候,我的腦子里產(chǎn)生了一個(gè)大大的疑惑,我們?cè)谟?jì)算第l層的eu和ei時(shí)都需要第l-1層的信息,那么我們?cè)趺粗纄i和eu在第l層是否存在呢?也就是說(shuō)出現(xiàn)u側(cè)的總層數(shù)l大于i側(cè)總層數(shù)的時(shí)候,我們?nèi)绾胃鶕?jù)第l-1層的ei來(lái)計(jì)算第l層的e呢?經(jīng)過(guò)思考,我感覺(jué)應(yīng)該是這樣的,訓(xùn)練樣本應(yīng)該是一條path,也就是這個(gè)例子是u1 ← i2 ← u2 ← i4這條path,所以可以保證u1跟i4的層數(shù)l是一樣的,所以不存在上面那個(gè)層數(shù)不匹配的問(wèn)題。
ps:看到后面的實(shí)驗(yàn)結(jié)果才知道L是固定的所以每一層都不會(huì)缺失。
還有一個(gè)就是,不同層之間的W是不一樣的,每一層都有著自己的參數(shù),這個(gè)看公式就知道,理由就是我們?cè)谔崛〔煌瑢有畔⒌臅r(shí)候需要不同的W進(jìn)行信息提取。
另一個(gè)疑惑是pui到底是不是每一個(gè)l層都一樣?這里看公式好像就是指的是第一跳的Nu和Ni進(jìn)行就計(jì)算的結(jié)果。

這部分內(nèi)容是為了在進(jìn)行batch訓(xùn)練的時(shí)候進(jìn)行矩陣運(yùn)算所推導(dǎo)的數(shù)學(xué)過(guò)程,其實(shí)跟之前我們講的那個(gè)過(guò)程在數(shù)學(xué)上的計(jì)算是完全一樣的,你想象一下,如果不用矩陣進(jìn)行運(yùn)算,在訓(xùn)練過(guò)程中要如何進(jìn)行這么復(fù)雜的交互運(yùn)算。
2.3 Model Prediction
當(dāng)進(jìn)行了l層的embedding propagation后,我們就擁有了l個(gè)eu和l個(gè)ei,我們將他們進(jìn)行concate操作:

這樣,我們不僅可以通過(guò)嵌入傳播層豐富初始嵌入,還可以通過(guò)調(diào)整L來(lái)控制傳播范圍。
最后,我們進(jìn)行內(nèi)積計(jì)算,以評(píng)估用戶對(duì)目標(biāo)商品的偏好:

2.4 Optimization
采用的是pair-wise方式中的bpr loss:

三 、實(shí)驗(yàn)結(jié)果

