论文链接:https://arxiv.org/abs/1905.08108
代码链接:https://github.com/xiangwang1223/neural_graph_collaborative_filtering
Abstract
现代推荐系统的核心是学习user、item向量的embeddings,从早期的矩阵分解到现在的深度学习都是利用user或item已有的特征来获取embeddings。但是,隐藏在user-item间的信息无法在embedding中体现。因此本文提出NGCF,可以学习user-item的高维表示,显式的将协同信号注入到嵌入过程中。
NGCF
整体模型架构包含三部分
- an embedding layer:提供初始的user、item的embeddings
- multiple embedding propagation layers:注入高阶连通性来细化嵌入
- the predict layer:聚合不同传播层的embedding信息,输出user-item pair score
Embedding Layer
其中$e_u\in R^d,e_i\in R^d,d$表示嵌入维度。传统的推荐系统如矩阵分解或者神经协同过滤,会直接将embedding送入交互层得到评分,但是在NGCF中,这只是为细化嵌入,为multiple embedding propagation layers做准备,这将得到更好的推荐嵌入。
Embedding Propagation Layers
首先考虑单层Embedding Propagation Layer
First-order Propagation
关联的items也表现了users的偏好,因此消费一件物品的user也可以作为item的特征,并用于计算两个items间的协同相似度。基于此,在相互连接的users和items之间可以执行embedding propagation,该流程主要包含两个主要操作,message construction和messgae aggregation。
Message Construction
$$ m_{u\leftarrow i}=f(e_i,e_u,p_{ui}) $$
对于相互连接的user-item对(u,i),i到u的message定义如上,f是编码函数,其输入为 user embedding、item embedding以及边(u,i)的衰减因子$p_{ui}$。
当前论文定义f如下
$W_1,W_2$是可训练的权重矩阵,维度是$d'\times d$,其中$d'$是变换大小。区别图卷积神经网络只考虑$e_i$的贡献,在此我们将ei和eu的信息交互编码,因此得到的信息会依赖于ei和eu之间的关系,例如从相似的items中会传递更多信息,这样不仅能提供模型的表示能力,还能提高推荐性能。$\frac{1}{\sqrt{|N_u||N_i|}}$就是衰减因子$p_{ui}$。其中$N_u,N_i$表示u,i第一跳邻居。$p_ui$传播的信息会随着路径长度增加而衰减。
Message Aggregation
user节点聚合了所有相邻item节点的message以及其自身的message,经过LeakyRelu得到user节点的第一层embedding。
High-order Propagation
通过扩充一阶传播,可以叠加更多的embedding propagation层得到高阶信息。高阶连通性对于编码协同信号来估计user,item间的关联评分至关重要。
l表示l层,层数增加后,传播的消息定义如下
Propagation Rule in Matrix Form
上述分析了单个节点的单阶和高阶传播,而一个graph的embedding就是所有节点的embedding组合的矩阵,表示如下
其中的归一化拉普拉斯矩阵表示如下,A为邻接矩阵
Predict Layer
通过L层的传播后,我们得到了L个关于user的向量表示,由于在不同层中的表示是通过不同连接传递的信息,其在反映用户偏好方面有不同的共享,因此将其连接,得到user的最终embedding。item也一样。
其中$||$是concatenation操作,除此之外,也可以采用其它的aggregators,如加权平均、LSTM。使用concatenation比较简单,且不需要额外训练参数。
最后,通过内积来估计user对目标item的偏好
Optimization
Model Size:模型需要训练的参数只有$2Ld_ld_{l-1}$个,相比MF方法少很多,一般L小于5,$d_l$是模型的embedding size,测试过程中设64。
Message and Node Dropout:为了防止过拟合,存在message dropout和node dropout。message dropout为p1概率drop$m_{u\leftarrow i}$传播的message。node dropout为在第i个propagation layer,随机drop拉普拉斯矩阵中$(M+N)p_2$个节点
Discussions
NGCF应用于SVD++:SVD++可以视为高阶传播层的NGCF的一个特例,即只有一层propagation layer,不用转换矩阵和激活函数后公式如下:
其中$p_{ui'}=\frac{1}{\sqrt{|N_u|}},p_{iu'}=0$
Experiments
DataSet
Gowalla,Yelp2018,Amazon-book,均采用10-core setting,即user、item间至少存在10次交互。80%作为训练集,其余测试集,并从训练集中选择10%作为验证集来调整超参。
BaseLines
MF、NeuMF、CMN、HOP-Rec、PinSage、GC-MC
Performance Comparison (RQ1)
- MF在三个数据集上效果较差,这表明普通矩阵相乘难以捕获更复杂的关系,NeuMF在所有情况下都优于MF,这表明了非线性建模的重要性。但是这两者都没有对嵌入学习过程中的连通性建模,这容易导致次优表示。
- 对比MF、NeuMF和GC-MC,证明了引入一阶邻居可以提高表示能力,但是在Yelp2018上GC-MC性能不如NeuMF,可能是GC-MC未能充分挖掘user、item间的非线性交互特征。
- 在大多数情况下,CMN的性能通常优于GC-MC。这可能与神经网络的注意力机制有关,它可以为每个相邻用户分配不同的权重,而不像GC-MC使用相同权重。
- 对比PinSage、CMN、HOP-Rec得到结论,对高阶连通性或者领域进行建模有积极作用。
- 在所有数据集上,NGCF都最好的效果,因为CMN和GC-MC是利用一阶领域来指导学习,而通过叠加embedding propagation layer,NGCF则能探索高阶连通性。
Study of NGCF (RQ2)
Layer层数的影响:
- 增加NGCF深度利于推荐性能。
- NGCF-4咋Yelp2018上过拟合。这可能是因为过深的网络会给表示学习带来噪声。同时说明3层足以捕获CF信号。
- 改变层数时NGCF性能始终好于其它方法,表明显式建模高阶连通性可以极大提供推荐性能。
Embedding Propagation Layer and Layer Aggregation Mechanism的影响:
dropout的影响:
Effect of High-order Connectivity (RQ3)
从gowalla数据集中选取了6个user,观察其表现如何影响NGCF深度,对比MF和NGCF-3,可以发现
- NGCF-3存在明显聚类
- 分析相同user,当叠加三个embedding propagation layer时,历史项的嵌入更加接近,这验证了NGCF的有效性。
总结
- 关于predict层采用concatenation操作,或者可以尝试其它操作。
- 关于predict层中,由于当前论文主要强调embedding函数的学习,因此只使用了简单的内积函数,可以考虑使用基于神经网络的交互函数。