神经图协同过滤(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)所示。
四.结果