神經圖協同過濾(Neural Graph Collaborative Filtering)
神經圖協同過濾(NGCF)
前言
Embedding是現代推薦系統的核心。 從早期的矩陣分解到最近的基於深度學習的方法,都是通過對映使用者(或物品)的已存在的特徵(例如ID)來獲得使用者(或物品即專案)的嵌入向量。 這種方法的一個固有缺陷是:使用者-物品互動中潛在的協作訊號沒有被編碼到嵌入向量中。 因此,所得到的嵌入可能不足以捕捉協同過濾的訊號
Neural Graph Collaborative Filtering,利用 使用者-物品圖 結構在框架上進行嵌入傳播。在使用者-物品圖中對行高階連通性進行建模,以顯式方式將協作訊號有效地整合到嵌入過程中。
論文連結:http://staff.ustc.edu.cn/~hexn/papers/sigir19-NGCF.pdf
原始碼連結:https://github.com/xiangwang1223/neural_graph_collaborative_filtering
一、簡介
CF、MF、Collaborative Deep Learning等模型的嵌入函式缺乏對關鍵協作訊號的精確編碼,而這種編碼揭示了隱藏在使用者-專案互動中的使用者(或物品)之間的行為相似性。更具體地說,大多數現有的方法只使用描述性特徵(例如ID和屬性)來構建嵌入函式,而不考慮使用者-物品的互動。因此,當嵌入不足以捕獲CF時,必須依賴互動作用函式來彌補次優嵌入的不足。
上圖說明了高階連線性的概念。給u1推薦其感興趣的物品,在使用者-物品互動圖(左子圖)中用雙圓圈標記。右子圖顯示了從u 1展開的樹結構。高階連通性表示長度大於1的任意節點到達u1的路徑。這種高階連線性包含了豐富的語義,可以攜帶協作訊號。例如,路徑u1←i2←u2表示u1和u2之間的行為相似性,因為兩個使用者都與i2互動;較長的路徑u1←i2←u2←i4表明u1很可能採用i4,因為她的相似使用者u2之前已經消費了i4。此外,從l=3的整體觀點來看,i4比i5更可能引起u1的興趣,因為有兩條路徑連線<i4,u1>,而只有一條路徑連線<i5,u1>
受到最近發展的圖神經網路的啟發,NGCF設計了一種神經網路方法來遞迴地在圖上傳播嵌入資訊,而不是將互動圖擴充套件成一棵樹來實現,可以在嵌入函式中對高階連通性資訊進行建模。具體來說,設計一個嵌入傳播層,它通過聚合互動項(或使用者)的嵌入來細化使用者(或專案)的嵌入。通過疊加多個嵌入傳播層,就可以增強嵌入以捕獲在高階連線中協作訊號。通過疊加多個嵌入傳播層,也可以在高階連線中加強嵌入以捕獲協作訊號。例如,疊加兩層獲取了u1←i2←u2的行為相似性,三層疊加捕獲了u1←i2←u2←i4的潛在推薦,資訊流的強度(由層間可訓練權重估計)決定了i的推薦優先順序i4和i5。
二、理論
1.模型圖
NGCF模型,其架構上圖所示。框架中包含三個元件:
- 一個嵌入層,提供並初始化使用者嵌入和專案嵌入;
- 多個嵌入傳播層,通過注入高階連通性關係來優化嵌入;
- 預測層,其聚合來自不同傳播層的精煉嵌入並輸出使用者-專案對的親和力得分。
2.嵌入層
嵌入向量
e
u
∈
R
d
(
e
i
∈
R
d
)
e_u \in \mathbb R^d(e_i \in \mathbb R^d)
eu∈Rd(ei∈Rd),其中d表示嵌入大小。 這可以看作是將引數矩陣構建為嵌入查詢表:
E
=
[
e
u
1
,
.
.
.
,
e
u
N
,
.
.
.
,
e
i
1
,
.
.
.
,
e
u
M
]
(1)
E=[e_{u_1},...,e_{u_N},...,e_{i_1},...,e_{u_M}]\tag{1}
E=[eu1,...,euN,...,ei1,...,euM](1)
值得注意的是,該嵌入表用作使用者嵌入和專案嵌入的初始狀態,並以端到端的方式進行優化。在傳統的推薦器模型(如MF和神經協作過濾)中,將這些ID嵌入直接饋送到互動層(或運算子)中以獲得預測分數。 相反,在NGCF框架中,通過在使用者-專案互動圖上傳播嵌入來優化嵌入。 由於嵌入優化步驟將協作訊號顯式注入到嵌入中,因此可以為推薦提供更有效的嵌入。
3.嵌入傳播層
接下來,在GNNs的訊息傳遞架構的基礎上,沿著圖結構捕獲CF訊號並改進使用者和專案的嵌入。首先說明單層傳播的設計,然後將其推廣到多個連續層。
3.1一階傳播
直觀地說,消費一個物品的使用者可以被視為該物品的特徵,並用來衡量兩個物品的相似度。在此基礎上,我們將在連線的使用者和物品之前執行嵌入傳播,該過程有兩個主要的操作:資訊構造和資訊聚合。
資訊構造: 對於已連線的使用者項對(u,i),我們將從i到u的訊息定義為:
m
u
←
i
=
f
(
e
i
,
e
u
,
p
u
i
)
(2)
m_{u \gets i} = f(e_i,e_u,p_{ui}) \tag{2}
mu←i=f(ei,eu,pui)(2)
其中
m
u
←
i
m_{u \gets i}
mu←i是訊息嵌入(即,要傳播的資訊),f(·)是資訊編碼函式,以嵌入的
e
i
e_i
ei和
e
u
e_u
eu為輸入,並使用係數
p
u
i
p_{ui}
pui來控制每個邊上傳播(u,i)上的衰減因子,其中f(·)為:
m
u
←
i
=
1
∣
N
u
∣
∣
N
i
∣
(
W
1
e
i
+
W
2
(
e
i
⨀
e
u
)
)
(3)
m_{u \gets i} = \cfrac{1}{\sqrt{|N_u||N_i|}} (W_1e_i+W_2(e_i\bigodot e_u)) \tag{3}
mu←i=∣Nu∣∣Ni∣1(W1ei+W2(ei⨀eu))(3)
其中 w 1 , w 2 ∈ R d ′ × d w_1,w_2 \in \mathbb R^{d^′×d} w1,w2∈Rd′×d是提取傳播有用資訊的可訓練權矩陣,d′是變換大小。與傳統的圖卷積網路不同的是,這裡我們將 e i e_i ei和 e u e_u eu之間的互動作用通過 e i e_i ei⊙ e u e_u eu編碼到傳遞的訊息中,其中⊙表示元素積。這使得訊息依賴於 e i e_i ei和 e u e_u eu之間的親和力。相似的物品傳遞更多的訊息。這不僅提高了模型表示能力,而且提高了推薦效能。
根據圖卷積網路,將 p u i p_{ui} pui設為圖的拉普拉斯範數 1 / ∣ N u ∣ ∣ N i ∣ 1/\sqrt{|N_u||N_i|} 1/∣Nu∣∣Ni∣, N u , N i N_u,N_i Nu,Ni表示使用者u和項i的第一跳鄰居。從表示學習的角度來看, p u i p_{ui} pui反映了歷史專案對使用者偏好的貢獻程度。從資訊傳遞的角度來看,考慮到正在傳播的資訊應該隨著路徑長度衰減, p u i p_{ui} pui可以解釋為一個折扣因子。
訊息聚合: 在這一階段,聚合從u的鄰域傳播的訊息,以優化u的表示。將聚合函式定義為:
e
u
(
1
)
=
L
e
a
k
y
R
e
L
U
(
m
u
←
i
+
∑
i
∈
N
u
m
←
i
)
(4)
e^{(1)}_u = LeakyReLU(m_{u \gets i} + \sum_{i \in N_u} m \gets i) \tag{4}
eu(1)=LeakyReLU(mu←i+i∈Nu∑m←i)(4)
其中 e u ( 1 ) e^{(1)}_u eu(1)表示在第一個嵌入傳播層之後獲得的使用者u的表示。LeakyReLU的啟用功能允許資訊同時編碼正訊號和小訊號,注意,除了從鄰居 N u N_u Nu傳播的資訊外,我們還考慮了u的自連線: m u ← u = W 1 e u m_{u \gets u}=W_1e_u mu←u=W1eu,以保留了原始特徵的資訊(w1是與等式(3)中使用的權重矩陣共享的權重矩陣),類似地,可以通過從連線的使用者傳播資訊來獲得專案i的表示 e i ( 1 ) e^{(1)}_i ei(1)。總而言之,嵌入傳播層的優點在於顯式地利用一階連線性資訊來關聯使用者和專案表示。
3.2高階傳播
通過一階連通性模型對錶示進行擴充,可以疊加更多的嵌入傳播層來挖掘高階連通性資訊。這種高階關聯性對於編碼協作訊號以估計使用者與專案之間的關聯度至關重要。
通過堆疊
l
l
l個嵌入傳播層,使用者(和專案)能夠接收從其
l
l
l階鄰居傳播的訊息。在第
l
l
l步中,使用者u的表示遞迴地表現為:
e
u
(
1
)
=
L
e
a
k
y
R
e
L
U
(
m
u
←
i
l
+
∑
i
∈
N
u
m
(
l
)
←
i
)
(5)
e^{(1)}_u = LeakyReLU(m^{l}_{u \gets i} + \sum_{i \in N_u} m^{(l)} \gets i) \tag{5}
eu(1)=LeakyReLU(mu←il+i∈Nu∑m(l)←i)(5)
其中,所傳播的訊息定義如下:,
{
m
u
←
i
(
l
)
=
p
u
i
(
W
1
(
l
)
e
i
(
l
−
1
)
+
W
2
(
l
)
(
e
i
(
l
−
1
)
⨀
e
u
(
l
−
1
)
)
m
u
←
u
(
l
)
=
W
1
(
l
)
e
u
(
l
−
1
)
(6)
\begin{cases} m^{(l)}_{u \gets i}=p_{ui}(W^{(l)}_1e^{(l-1)}_i+W^{(l)}_2(e^{(l-1)}_i\bigodot e^{(l-1)}_u) \\ m^{(l)}_{u \gets u}=W^{(l)}_1e^{(l-1)}_u \end{cases} \tag{6}
{mu←i(l)=pui(W1(l)ei(l−1)+W2(l)(ei(l−1)⨀eu(l−1))mu←u(l)=W1(l)eu(l−1)(6)
式中, W 1 ( l ) , W 2 ( l ) ∈ R d l × d l − 1 W^{(l)}_1,W^{(l)}_2 \in \mathbb R^{d_l×d_{l-1}} W1(l),W2(l)∈Rdl×dl−1是可訓練的變換矩陣, d l d_l dl是變換的大小; e u l − 1 e^{l-1}_u eul−1是由前面的資訊傳遞步驟生成的表示,用於記憶來自它的(l-1)跳鄰居的訊息。它進一步有助於使用者u在l層的表示。類似地,我們可以在層l獲得物品 i 的表示。
上圖圖所示,可以在嵌入傳播過程中捕獲像u1←i2←u2←i4這樣的協同訊號。
此外,來自i4的資訊被顯式地編碼在
e
u
1
(
3
)
e^{(3)}_{u_1}
eu1(3)中(用紅線表示)。因此,堆疊多個嵌入傳播層可以將協作訊號無縫地注入到表示學習過程中
矩陣形式的傳播規則:
為了能夠整體嵌入傳播並便於批處理實現,NGCF提供了分層傳播規則的矩陣形式(相當於等式(5)和(6)):
E
(
l
)
=
σ
(
(
L
+
I
)
E
(
l
−
1
)
W
1
(
l
)
+
L
E
(
l
−
1
)
⨀
E
(
l
−
1
)
W
2
(
l
)
)
(7)
E^{(l)}=\sigma((\mathcal{L}+I)E^{(l-1)}W^{(l)}_1+\mathcal{L}E^{(l-1)}\bigodot E^{(l-1)}W^{(l)}_2) \tag{7}
E(l)=σ((L+I)E(l−1)W1(l)+LE(l−1)⨀E(l−1)W2(l))(7)
其中
E
(
l
)
∈
R
(
N
+
M
)
×
d
l
E^{(l)} \in \mathbb R^{(N+M)×d_l}
E(l)∈R(N+M)×dl是嵌入傳播l步後得到的使用者和專案的表示,
E
(
0
)
E^{(0)}
E(0)在初始訊息傳遞迭代時設為E,即
e
u
(
0
)
=
e
u
e^{(0)}_u = e_u
eu(0)=eu和
e
i
(
0
)
=
e
i
e^{(0)}_i=e_i
ei(0)=ei;
I
I
I表示一個單位矩陣。
L
\mathcal{L}
L表示使用者項圖的拉普拉斯矩陣,公式如下:
L
=
D
−
1
2
A
D
−
1
2
a
n
d
A
=
[
0
R
R
T
0
]
(8)
\mathcal{L}=D^{- \frac{1}{2}}AD^{- \frac{1}{2}} and A=\begin{bmatrix} 0 & R \\ & \\ R^T & 0 \end{bmatrix} \tag{8}
L=D−21AD−21andA=⎣⎡0RTR0⎦⎤(8)
其中
R
∈
R
N
×
M
R \in \mathbb R^{N×M}
R∈RN×M為使用者-專案互動矩陣,0為全零矩陣;A為鄰接矩陣,D為對角度矩陣,其中第t個對角線元素
D
t
t
=
∣
N
t
∣
D_{tt}=|N_t|
Dtt=∣Nt∣;因此,非零非對角項
L
u
i
=
1
/
∣
N
u
∣
∣
N
i
∣
\mathcal{L}_{ui}=1/ \sqrt{|N_u||N_i|}
Lui=1/∣Nu∣∣Ni∣,等於方程式(3)中使用的
p
u
i
p_{ui}
pui。
通過實現矩陣形式傳播規則,可以以一種相當有效的方式同時更新所有使用者和專案的表示。
4.模型預測
經過L層傳播後,得到了使用者u的多個表示,即
{
e
u
(
1
)
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
e
u
(
L
)
}
\{e^{(1)}_u,.............,e^{(L)}_u\}
{eu(1),.............,eu(L)}。由於不同層中獲得的表示強調通過不同連線傳遞的訊息,因此它們在反映使用者偏好方面有不同的貢獻。故將它們串聯起來構成使用者的最終嵌入;對專案執行相同的操作,將不同層學習的專案表示連線起來
{
e
i
(
1
)
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
e
i
(
L
)
}
\{e^{(1)}_i,.............,e^{(L)}_i\}
{ei(1),.............,ei(L)},得到最終的專案嵌入:
e
u
∗
=
e
u
(
0
)
∣
∣
⋯
∣
∣
e
u
(
L
)
,
e
i
∗
=
e
i
(
0
)
∣
∣
⋯
∣
∣
e
i
(
L
)
(9)
e^*_u=e^{(0)}_u||\cdots||e^{(L)}_u,e^*_i=e^{(0)}_i||\cdots||e^{(L)}_i \tag{9}
eu∗=eu(0)∣∣⋯∣∣eu(L),ei∗=ei(0)∣∣⋯∣∣ei(L)(9)
其中∥是串聯操作。通過這樣做,不僅通過嵌入傳播層來豐富初始嵌入,而且允許通過調整L來控制傳播範圍。除了串聯,還可以應用其他聚合器,例如加權平均、最大池、LSTM等,這意味著在組合不同階的連線時需要不同的假設。使用串聯的優點在於它的簡單性,因為它不需要學習額外的引數
最後,進行內積來估計使用者對目標商品的偏好:
y
^
N
G
C
F
(
u
,
i
)
=
e
u
∗
T
e
i
∗
(10)
\hat{y}_{NGCF}(u,i)={e^*_u}^Te^*_i \tag{10}
y^NGCF(u,i)=eu∗Tei∗(10)
使用內積這種簡單的互動函式進行預測。
5.優化
為了學習模型引數,使用的BPR損失進行優化。它考慮觀察到的和未觀察到的使用者-專案互動之間的相對順序。具體地說,BPR假設所觀察到的互動作用更能反映使用者的偏好,應該比未觀察到的互動作用分配更高的預測值。目標函式如下:
L
o
s
s
=
∑
(
u
,
i
,
j
)
∈
O
−
l
n
(
s
i
g
m
o
i
d
(
y
^
u
i
−
y
^
u
j
)
)
+
λ
∣
∣
Θ
∣
∣
2
2
(11)
Loss = \sum_{(u,i,j) \in O} -ln(sigmoid(\hat{y}_{ui}-\hat{y}_{uj}))+ \lambda {||\Theta||}^2_2 \tag{11}
Loss=(u,i,j)∈O∑−ln(sigmoid(y^ui−y^uj))+λ∣∣Θ∣∣22(11)
其中 O = { ( u , i , j ) ∣ ( u , i ) ∈ R + , ( u , j ) ∈ R − } O=\{(u,i,j)|(u,i)\in R^+ ,(u,j)\in R^-\} O={(u,i,j)∣(u,i)∈R+,(u,j)∈R−}表示成對訓練資料,R+表示觀察到的互動,R−表示未觀測到的互動, Θ = { E , { W 1 ( l ) , W 2 ( l ) } l = 1 L } \Theta=\{E,{\{W^{(l)}_1,W^{(l)}_2\}}^L_{l=1}\} Θ={E,{W1(l),W2(l)}l=1L}表示所有可訓練模型引數,λ控制l2正則化強度以防止過度擬合。
實驗
1.資料集描述
在三個基準資料集上對NGCF進行了實驗:Gowalla、Yelp2018和amazonbook,這些資料集在域、大小和稀疏性方面都是不同的。上表1中總結了三個資料集的統計資料。
- Gowalla:這是從Gowalla獲得的check-in資料集,使用者通過簽入來共享他們的位置。為了確保資料集的質量,使用了10個核心設定,即保留至少有10個互動的使用者和專案
- Yelp2018:這個資料集來自於2018年版的Yelp挑戰。其中,餐飲、酒吧等地方性業態為專案。為了確保資料質量,使用相同的10核設定。
- 亞馬遜圖書:亞馬遜評論是一個廣泛使用的產品推薦資料集。從收藏中挑選亞馬遜圖書。類似地,我們使用10個核心設定來確保每個使用者和專案至少有10個互動。
對於每個資料集,隨機選取每個使用者80%的歷史互動作為訓練集,剩下的作為測試集。從訓練集中,我們隨機選取10%的互動作為驗證集來調整超引數。 對於每個觀察到的使用者-專案互動,將其視為一個正例項,然後執行負取樣策略,將其與一個使用者之前沒有消費的負專案配對。
2.實驗設定
對於測試集中的每個使用者,將該使用者未互動的所有項視為負項。然後每個方法輸出使用者對所有專案的偏好得分,除了訓練集中使用的正的專案。為了評價top-K推薦和偏好排序的有效性,採用了兩個廣泛使用的評價協議:recall@K和ndcg@K。預設情況下,設定K=20。
為了證明其有效性,我們將我們提出的NGCF與以下方法進行了比較:
- MF:這是基於貝葉斯個性化排序(BPR)損失優化的矩陣分解,它只將使用者項直接互動作為互動函式的目標值。
- NeuMF:該方法是一種最先進的神經CF模型,它在元素層次上使用多個隱藏層,並將使用者和專案嵌入串聯起來,以捕捉它們的非線性特徵互動作用。特別是,我們採用了兩層的平面結構,每個隱藏層的尺寸保持不變。
- CMN:這是一種基於記憶體的最先進模型,其中使用者表示通過儲存層將相鄰使用者的記憶體槽集中組合在一起。請注意,firstorder連線用於查詢與相同專案互動的相似使用者。
- HOP Rec:這是一種最先進的基於圖的模型,利用隨機遊動產生的高階鄰域來豐富使用者項互動資料。
- PinSage:PinSage設計用於在item item
- graph上使用GraphSAGE[8]。在本文中,我們將其應用於使用者-專案互動圖。特別地,我們採用了[40]中提出的兩個圖卷積層,並將隱藏維數設定為嵌入大小。
- GC-MC:該模型採用GCN[18]編碼器生成使用者和專案的表示,只考慮一階鄰居。因此,按照[28]中的建議,使用一個圖卷積層,其中隱藏維數被設定為嵌入大小。
為了公平比較,所有方法均優化BPR損失,如等式(11)所示。
四.結果
相關文章
- Graph Neural Network——圖神經網路神經網路
- 使用協同濾波(Collaborative Filtering)實現內容推薦系統Filter
- 基於專案的協同過濾推薦演算法(Item-Based Collaborative Filtering Recommendation Algorithms)演算法FilterGo
- Collaborative FilteringFilter
- 過濾FilteringFilter
- 協同過濾筆記筆記
- 協同過濾演算法演算法
- chapter2:協同過濾APT
- 微服務神經元(Neural)微服務
- 【Datawhale】推薦系統-協同過濾
- 推薦協同過濾演算法演算法
- 協同過濾演算法——入門演算法
- 協同過濾演算法簡介演算法
- 神經網路(neural networks)神經網路
- 圖神經網路論文閱讀(十六) GraLSP: Graph Neural Networks with Local Structural Patterns,AAAI 2020神經網路StructAI
- SimRank協同過濾推薦演算法演算法
- 協同過濾演算法概述與python 實現協同過濾演算法基於內容(usr-it演算法Python
- 協同過濾實現小型推薦系統
- 協同過濾推薦演算法總結演算法
- 基於物品的協同過濾演算法演算法
- chapter3:協同過濾-隱式評級及基於物品的過濾APT
- 推薦召回--基於物品的協同過濾:ItemCF
- 協同過濾的R語言實現及改進R語言
- 推薦系統與協同過濾、奇異值分解
- 協同過濾在推薦系統中的應用
- 協同過濾(CF)演算法詳解和實現演算法
- 基於使用者的協同過濾演算法演算法
- Slope One :簡單高效的協同過濾演算法演算法
- 基於矩陣分解的協同過濾演算法矩陣演算法
- 深度學習與圖神經網路學習分享:Graph Embedding 圖嵌入深度學習神經網路
- Python之協同過濾(尋找相近的使用者)Python
- 物品推薦(基於物品的協同過濾演算法)演算法
- 深入理解mahout基於hadoop的協同過濾流程Hadoop
- 迴圈神經網路(Recurrent Neural Network,RNN)神經網路RNN
- 機器學習神經網路——Sklearn.neural_network概要機器學習神經網路
- 4.5 RNN迴圈神經網路(recurrent neural network)RNN神經網路
- 【機器學習】李宏毅——Recurrent Neural Network(迴圈神經網路)機器學習神經網路
- Recurrent Neural Networks(RNN) 迴圈神經網路初探RNN神經網路