题目:Neural Graph Collaborative Filtering
代码: https://github.com/xiangwang1223/neural_graph_collaborative_filtering
本文参考了博文
想法
(1)其实是很有缺点,在消息传播中,只是使用了邻居与目标的点击加一个矩阵,并没有考虑权重的问题!
(2)但是在传播中的衰减函数还是值的借鉴的!
创新
Propagation Rule in Matrix Form
摘要
难点:
原有的基于推荐系统的方法(早期是矩阵分解,现在是深度学习)都是根据ID和属性等存在的特征来获得一个用户或者是item的表示,我们认为现在方法的缺点就是没有考虑collaborative signal,这是潜伏在用户-物品交互中,没有编码的嵌入过程。
我们:
提出了一个新的推荐框架Neural Graph Collaborative Filtering (NGCF) ,它可以在图结构中学习嵌入表示,让模型可以表达高维特征,显示地将协同过滤信号放入到嵌入过程中。
Introduction
难点详解:
虽然直观上把用户-物品交互整合到嵌入功能中很有用,但做好这一点并非易事。特别是,在实际应用中,交互的规模很容易达到数百万甚至更大,这使得提取所需的协作信号变得困难。
Running Example.
上面的目的是给用户 u 1 u_1 u1推荐商品。 左图是将user-item的interacttion标记为双圆。 右边则是将交互图改为了tree结构! high-order连通性表示从路径长度大于1的任何节点到达 u 1 u_1 u1的路径(是从下往上的)。这种高阶连接包含了携带协作信号的丰富语义。 比如: u 1 ← i 2 ← u 2 u_1\leftarrow i_2 \leftarrow u_2 u1←i2←u2 表明了用户2和用户1的相似性; u 1 ← i 2 ← u 2 ← i 4 u_1\leftarrow i_2 \leftarrow u_2 \leftarrow i_4 u1←i2←u2←i4 表明了用户1可能会喜欢item 4,因为两者相似。
Present Work.
不是将交互图作为难以实现的图,而是设计一种在图上递归的传播嵌入的网络,这可以被看做在嵌入空间中创建信息流。 具体而言,我们设计了一种embedding propagation 层,该层可以通过aggregating其交互的items来增强用户或者item的嵌入。
u
1
←
i
2
←
u
2
u_1\leftarrow i_2 \leftarrow u_2
u1←i2←u2需要两个层,
u
1
←
i
2
←
u
2
←
i
4
u_1\leftarrow i_2 \leftarrow u_2 \leftarrow i_4
u1←i2←u2←i4需要三个层,并且信息流的长度决定了
i
5
i_5
i5和
i
4
i_4
i4的推荐优先度。
最近,HOP-rec也加入了高阶连通性,但是它只是用来丰富训练数据集,而且它本质上还是MF,只是优化了损失函数,这个损失是用高阶连接增强的。
而我们则是将高阶连通性集成到预训练模型中。
- 我们强调在基于模型的CF方法的嵌入函数中明确利用协作信号的关键重要性。
- 我们提出了一种新的基于图神经网络的推荐框架NGCF,该框架通过嵌入传播将协作信号以高阶连通性的形式显式编码。
2 METHODOLOGY
三个部分: (1)嵌入层(2)多层嵌入传播层(3)预测层
2.1 Embedding Layer
我们描述一个user u或者是 item i用一个嵌入向量
e
u
∈
R
d
e_u \in \mathbb{R}^d
eu∈Rd(
e
i
∈
R
d
e_i \in \mathbb{R}^d
ei∈Rd),这可以看做是建立一个参数矩阵作为嵌入查找表:
传统的推荐模块比如MF和神经协同过滤中,这些ID嵌入被直接喂入了交互层来实现预测分数。 相反,我们的NGCF架构中,我们会refine这个Embedding通过将他们在user-item 交互图上传播。
2.2 Embedding Propagation Layers
我们首先说明单层传播的设计,然后将其推广到多个连续层。
2.2.1First-order Propagation
Message Construction
user-item pair(u, i),我们定义从i到u的信息为:
其中
m
u
←
i
m_{u\leftarrow i}
mu←i是信息嵌入(要传播的信息),
f
(
⋅
)
f(·)
f(⋅)是信息嵌入函数,它使用一个协同因素
p
u
i
p_{ui}
pui来控制在每个边
(
u
,
i
)
(u,i)
(u,i)上传播的衰减因子。
f
(
⋅
)
f(·)
f(⋅)被定义为:
其中
W
1
,
W
2
∈
R
d
′
×
d
W_1,W_2 \in \mathbb{R} ^{d'\times d}
W1,W2∈Rd′×d是可以训练的权重矩阵;其中
d
′
d'
d′是维度;
N
u
N_u
Nu和
N
i
N_i
Ni是用户u和item i的一阶邻居节点。
1
/
(
∣
N
u
∣
∣
N
i
∣
)
1/\sqrt{(|N_u||N_i|)}
1/(∣Nu∣∣Ni∣)就是系数是拉普拉斯标准化,反映了历史项目对用户偏好的贡献程度。从消息传递的角度来看,可以解释为折扣因子,因为所传播的消息应该随着路径长度而衰减。就是衰减因子
p
u
i
p_{ui}
pui。
与传统的图卷积不同只考虑 e i e_i ei的贡献,我们额外的encode了 e i e_i ei和 e u e_u eu的交互消息。 通过 e i ⊙ e u e_i \odot e_u ei⊙eu实现。 例如,从相似的项传递更多的消息。
Message Aggregation:
在此阶段,我们整合从 u 的邻域传播的消息,以改进 u 的表示:
其中
e
u
(
1
)
e_u^{(1)}
eu(1)是用户u在一阶嵌入传播层获得的表示。
除了从邻居
N
u
N_u
Nu传播的消息外,还考虑了u的自连接:
m
u
←
u
=
W
1
e
u
m_{u \leftarrow u} = W_1e_u
mu←u=W1eu ,保留了原始特征的信息.
类似地,我们可以通过从其连接的用户传播信息来获得项目 i 的表示形式
e
i
(
1
)
e^{(1)}_i
ei(1)。
2.2.2 high-order propagetion
第二层用到的还是与该用户有交集的物品的集合,但是第二层用到的物品的表示(item embedding)和第一层用到的已经不一样了,注意图示中表示的上标 l
通过堆叠 l l l嵌入传播层,用户(和item)能够接收从其 l l l-hop 邻居传播的消息。在第 l l l 步中,用户 u 的表示递归式为:
Propagation Rule in Matrix Form :
为了提供嵌入传播的整体视图,方便批量实现,提供了分层传播规则的矩阵形式:
E
(
l
)
∈
R
(
N
+
M
)
×
d
l
\mathbf{E}^{(l)} \in \mathbb{R}^{(N+M) \times d_{l}}
E(l)∈R(N+M)×dl是user和item经过
l
l
l步嵌入传播后得到的表示;
I表示了一个单位矩阵;
L是user-item图的拉普拉斯矩阵。
R
∈
R
N
+
M
\mathrm{R} \in R^{N+M}
R∈RN+M是user-item交互矩阵,
并且
0
0
0是all-zero 矩阵;
A是邻接矩阵,D为对角次数矩阵,其中
D
t
t
=
∣
N
t
∣
D_{tt} = \left | \mathcal{N}_t \right |
Dtt=∣Nt∣;
因此,非零的非对角项
L
u
i
=
1
/
∣
N
u
∥
N
i
∣
\mathcal{L}_{u i}=1 / \sqrt{\left|\mathcal{N}_{u} \| \mathcal{N}_{i}\right|}
Lui=1/∣Nu∥Ni∣,这和公式(3)中的
p
u
i
p_{ui}
pui是相等的。
2.3 Model Prediction
由于在不同层中获得的表示强调通过不同连接传递的消息,所以它们在反映用户偏好方面有不同的贡献。
因此,将它们串联起来,构成用户的最终嵌入;对 item 也做同样的操作。
其中||为串联操作。除了连接,其他聚合器也可以应用,如加权平均、最大池、LSTM。使用串联在于它的简单性,不需要学习额外的参数,而且已经被非常有效地证明了。
最后,我们进行内积来估计用户对目标物品的偏好:
2.4 Optimization
optimize the pairwise BPR loss:
它考虑观察到的和未观察到的用户-项目交互之间的相对顺序。具体地说,BPR 假设用户引用的已观察到的交互作用应该比未观察到的交互作用具有更高的预测值。目标函数如下:
2.4.1Model Size
它只引入了很少的参数大小,两个
d
l
×
d
l
−
1
d_l \times d_{l-1}
dl×dl−1大小的权重矩阵。
比起MF(最简洁的基于推荐模型的嵌入),我们的NGCF仅仅用了多了
2
L
d
l
d
l
−
1
2Ld_ld_{l-1}
2Ldldl−1的参数。这种模型参数的额外成本几乎可以忽略不计。
L
L
L是一个小于5的数,
d
l
d_l
dl是嵌入大小。
2.4.2 Message and Node Dropout
为了防止过拟合,我们采用了两种方法: Message Dropout和Node Dropout。
其中 Message Dropout表示以一定概率的删除式子(6)中传播的信息;
我们还执行node dropout,随机阻塞某个特定节点,丢弃其所有传出消息。
注意,dropout只在训练中使用,必须在测试中禁用。Message Dropout是面对的users和items的交互的丢弃; 而Node Dropout则是致力于减少特殊的items和users。