0.摘要
現有的一些算法存在的缺點是沒有對隱藏在用戶(user
)和樣本(item
)直接的交互信息進行學習編碼,沒有將其融入到嵌入向量的學習過程。文章中將這種交互信息稱爲collaborative signal
(而這個東西可以理解爲用戶-樣本交互圖的拓撲結構,在GCN和GraphSAGE等算法中都是有所體現的)。
本文的將用戶-樣本的交互信息加入到嵌入表達的學習過程中,可以將用戶-樣本之間的交互信息看做一個二分圖。提出一個新的推薦系統框架NGCF(Neural Graph Collaborative Filtering)
,通過在圖結構上傳播嵌入表達對拓撲結構進行學習,有效的對高階連接信息進行建模。該算法在3個公開數據集上測試,比HOPRec
和CMN
算法有很好的提升。
1.介紹
協同過濾(CF
)通過假設行爲相似的用戶會對物品表現出相似的偏好來解決個性化推薦問題。爲了實現這個假設,一種常見的方法是對用戶和項進行參數化,從而重建歷史交互信息,並根據參數預測用戶偏好。
一般來說,在可學習的CF模型中有兩個關鍵的部分,第一個是嵌入表達,也就是將用戶和樣本都進行向量化表示,第二個就是交互信息建模。例如,矩陣分解(MF)將用戶/樣本的ID直接嵌入到嵌入向量中,並通過內積運算對用戶-樣本交互進行建模。協同深度學習對MF算法進行拓展,從樣本的邊信息中提取更深層的表達信息。神經協同過濾模型用非線性神經網絡代替了MF算法中用於計算交互信息的內積過程。
本文通過利用用戶-樣本之間的高階連接信息(如上圖所示)來對交互信息進行編碼。如圖中右圖所示,比如u1-i2-u2,用戶1和2都連接到i2,從而得到了相同的偏好信息,進一步可以看出u1對i4和i5具有偏好,而這就是通過高階連接進行信息傳遞。
2.方法
如上圖所示,NGCF算法有三個組成部分:
(1)Embeddings
用於用戶和樣本嵌入的初始化過程;
(2)Embedding Propagation Layers
通過利用高階連接信息來細化嵌入向量(相當於學習不同跳數距離的連接信息)
(3)Prediction Layer
將傳播層的細化的多個嵌入向量進行聚合,並得到這一對用戶-樣本的關聯分數( the affinity score
)。
2.1 嵌入層Embedding Layer
將用戶u和樣本i通過一個d維的向量進行表示,把所有的用戶樣本的向量拼在一起得到一個參數矩陣,可以看做是一個嵌入向量的查找表,如下:
此處的查找表只是一個初始化值,然後通過之後的網絡結構進行一個端到端的學習過程。在傳統的推薦模型如MF算法和神經協同過濾算法中,用戶樣本的ID嵌入被直接輸入一個交互層(或操作符)來獲得預測分數。而本算法在Graph
進行Embedding
的傳播,從而可以將協同信息(圖結構)記錄在Embedding
中。
2.2 嵌入傳播層
利用CNN的信息傳遞機制進行構建,從而捕獲圖結構中的CF信號,並且對初始化後的用戶樣本的嵌入向量進行調節。首先給出單層傳播過程的設計方案,然後推廣到多層連續的層結構中。
2.2.1 一階傳播
直觀上看,被交互的樣本(item
)直接表現出來用戶的偏好信息,類似的,與一個樣本進行交互的用戶(也就是與一個item有連接的user)可以看做是該樣本的屬性值,從而用於度量兩個樣本之間的協作相似度。在此基礎上進行用戶和項之間的嵌入傳播,主要有以下兩個操作過程:
(1)信息構造(Message construction
)
對於圖中一個存在連接的用戶-樣本節點對(u,i)
,定義從i到u的信息爲(從樣本到用戶的方向傳遞):
其中m
是一個表示信息的嵌入向量(message embedding
),f()
是一個信息編碼函數,輸入爲這個節點對中的用戶u
和樣本i
的嵌入向量,以及相關係數p
,相關係數p
用於控制在邊(u,i)上傳播時的衰減因子。本文中函數f()
爲:
其中W1
和W2
爲可訓練的權重矩陣,矩陣維度爲d'*d
,d'
爲轉換後的維度,與傳統GCN不同的是,此處僅僅考慮嵌入向量ei
的貢獻,並添加ei
和eu
之間的交互信息,添加方式爲兩個嵌入向量的哈達瑪積(Hadamard product,文中描述的是逐元素乘積element-wise product
)。這使得信息依賴於ei和eu之間的密切程度,比如在相似的樣本之間傳遞更多的信息。根據GCN原理,將相關係數p
設置爲圖的拉普拉斯範數:
其中兩個N分別表示用戶u和樣本i的一階鄰居數量。從表示學習的角度看,該係數表示樣本對用戶偏好程度的貢獻量;從信息傳遞角度看,該係數可以看做是一個衰減係數,受到節點連接的邊長度的影響。
(2)信息聚合(message aggregation
)
通過對用戶u
的鄰居節點傳播來信息進行聚合,來調節u
的嵌入表達。聚合函數如下:
等式左邊表示用戶u在第一次嵌入傳播層結束後得到的嵌入向量,爲了保證獲取到用戶u的原始特徵,在對鄰居信息聚合的過程中,增加自環,其自環信息爲:
W1
與前文中所述的W1
爲同一參數矩陣。同理,樣本i的嵌入向量的推理方式與上述類似。
2.2.2 高階傳播
通過堆疊多層嵌入傳播層來利用更高階的連接信息,這種高階的連接信息對於評估用戶和樣本之間的聯繫至關重要。通過堆疊l
層嵌入傳播層,用戶(或者樣本)就會接收到自身l-階
的鄰居的信息。因此當在第l
層時,傳播形式可以推廣爲:
其中各個字母爲:
如下圖所示,展示了一個最初節點的嵌入向量是如何傳播到高階鄰居中的。
傳播過程的矩陣形式
上述過程只是針對單個節點進行算法上的描述,爲了能夠對一批節點進行計算,給出了逐層的傳播規則:
等式左邊爲所有用戶節點和樣本節點在第l層得到嵌入向量(此時爲一個矩陣形式),其中I
爲單位矩陣,L
爲拉普拉斯矩陣,定義爲:
其中R是一個交互矩陣,A是一個鄰接矩陣,D矩陣爲對角矩陣,具體取值見論文。同時更新用戶和樣本的節點信息可以進行高效的計算,並且不進行在GCN在大規模圖中採用的節點採樣策略。
2.3 模型預測
經過L層傳播之後,得到了用戶u的多個嵌入表達,定義爲:
將所有的嵌入表達進行連接:
其中||
表示拼接運算。通過調節L的值,就可以控制圖中信息的傳播範圍。除了拼接方式,還可以通過其他聚合方式,比如加權平均,最大池化,LSTM等。選擇拼接方式的原因是該方式比較簡單,並且沒有額外的參數加入,並且最近的工作中證明了其有效性。
最後通過內積運算得到用戶對目標item的偏好:
2.4 優化
爲了模型參數的學習,利用pairwise BPR
損失進行優化,該損失方式考慮了觀測到的交互和未觀測到的交互的順序,被觀測的交互對用戶偏好影響更大,優化目標如下:
其中O爲數據集合,每一個數據都是一個三元組,(u,i)
表示已經觀測的到交互,(u,j)
表示未觀測到的交互(相當於常用的正負樣本混合形式)。ln
右邊的爲sigmoid
函數,最右側的一項爲L2正則化項,防止過擬合,採用mini-batch
+adam優化器
進行參數訓練,每一個batch從O中進行隨機採樣。
2.4.1 模型大小
雖然NGCF算法每一層都有一個嵌入矩陣,但是每一層只引入了兩個權重矩陣,與最精簡基於嵌入的推薦系統模型–MF算法相比,本算法只引入參數:
其中L一般取值小於5。具體數值分析略(論文中舉了一個具體數據集算了一下)。
2.4.2信息和節點Dropout
爲了解決過擬合問題,常常採用Dropout策略,在GCN的工作基礎上,本文提出兩種Dropout
策略,分別爲message dropout
和node dropout
。第一種隨機捨棄傳送出的信息,如下圖公式,按照概率p1
隨機丟棄公式中計算出的信息,不會匯聚給用戶的嵌入向量。也就是隻有部分信息會用於給當前節點進行嵌入向量的調節。
第二種,隨機凍結一些特定節點,使其不進行信息的向外傳播,對於第l層而言,隨機丟棄拉普拉斯矩陣中的(M+N)p2
個節點,其中p2爲Dropout率。需要注意的是,只在訓練時啓用Dropout。