Neural Graph Collaborative Filtering【阅读笔记】
文章目录
- 1.文章为了解决什么问题?
- 2.文章提出了什么方法?
- 3.模型架构以及原理?
- 4.改进的效果如何以及比较的对象?
- 5. future work
- 参考链接
Xiang Wang, Xiangnan He, Meng Wang, Fuli Feng, and Tat-Seng Chua. 2019.
Neural Graph Collaborative Filtering. In SIGIR. 165–174.
这篇文章是何向南团队在2019发表在SIGIR上的,将神经网络融入到推荐系统里面。
1.文章为了解决什么问题?
学习向量表示(embeddings),用户和项目的嵌入是现代推荐系统的核心。从最初的矩阵分解到最近出现的基于深度学习的方法,都是从先前存在的特征来表示用户(物品)的嵌入。这些方法的一个固有缺点是协同信号(collaborative signal),它在用户和物品的交互中是隐藏的,在嵌入过程中没有被编码。这样,最后的嵌入可能不足够获取协同过滤效果。
u1u_1u1可能对i4i_4i4更感兴趣,相比于i5i_5i5,因为到i4i_4i4的路径有两条。
2.文章提出了什么方法?
把用户-物品交互作用整合进嵌入过程中。提出了一种新的推荐框架Neural Graph Collaborative Filtering(NGCF),它利用用户-物品的图结构来传播嵌入。这使得在用户项图中建立高阶连通性(high-order connectivity)的表达模型,有效地将协同信号以显式的方式注入到嵌入过程中。即采用GNN的Aggregate方法来处理传统CF中无法学习到collaborative signal的问题。
3.模型架构以及原理?
模型由三部分组成:
- 嵌入层提供用户和物品的嵌入
- 多个嵌入传播层通过高阶连通性改善嵌入表示
- 预测层聚合精炼后从不同的层传来的embeddings,最后给出得分
模型结构如下:
Embedding Layer
将每一个user和item编码为vector:eu∈Rd(ei∈Rd)e_u \in \mathbb{R}^d(e_i\in\mathbb{R}^d)eu∈Rd(ei∈Rd),ddd是embedding size。这里可以看成构建一个Embedding Look-up Table:
E=[eu1,⋯,euN⏟usersembeddings,ei1,⋯,eiM⏟itemembeddings].(1)\mathbf{E}=[\underbrace{e_{u_1}, \cdots, e_{u_N}}_{users\; embeddings},\underbrace{e_{i_1},\cdots,e_{i_M}}_{item\;embeddings}]. \tag{1} E=[usersembeddings
Embedding propagation Layer
- First-Order Propagation
传播有两个部分组成:消息构建和信息聚合(message construction and message aggregation)
消息构建:对于一个相连的user-item对(u,i)(u,i)(u,i)来说,定义一条从i→ui\rightarrow ui→u的message如下:
mu←i=f(ei,eu,pui),(2)\mathbf{m}_{u\leftarrow i}=f(\mathbf{e}_i, \mathbf{e}_u,p_{ui}), \tag{2} mu←i=f(ei,eu,pui),(2)
这里mu←i\mathbf{m}_{u\leftarrow i}mu←i为消息嵌入即将要被传播的消息,f(⋅)f(\cdot)f(⋅)为encoding function,puip_{ui}pui为权重系数,防止数值过大。本文中f(⋅)f(\cdot)f(⋅)实现为:
mu←i=1∣Nu∣∣Ni∣(W1ei+W2(ei⊙eu)),(3)m_{u\leftarrow i}=\frac{1}{\sqrt{\vert{\mathcal{N}_u}\vert|\mathcal{N}_i|}}\left( \mathbf{W}_1 e_i + \mathbf{W}_2(e_i \odot e_u) \right),\tag{3} mu←i=∣Nu∣∣Ni∣1(W1ei+W2(ei⊙eu)),(3)
这里W1,W2∈Rd′×dW_1,W_2\in \mathbb{R}^{d'\times d}W1,W2∈Rd′×d是可训练权重矩阵,用来在传播中提取有用的信息,d′d'd′是转换大小。 参考GCN,将puip_{ui}pui设置为1∣Nu∣∣Ni∣\frac{1}{\sqrt{|N_u||N_i|}}∣Nu∣∣Ni∣1。从表示学习的角度来看,puip_{ui}pui表示历史物品对用户喜好贡献的大小。从消息传递的角度来看,puip_{ui}pui表示消息随着消息传递路径的衰减程度。这样的结构既能够保证学习到eie_iei单独的contribution,同时也考虑到了user-item 之间的交互。
消息聚合:Aggregation的作用就是对单个user或item而言,利用message construction对与他们相关的item/user进行propagation,然后结合自身的表征,在做一些适当的变换来达到学习新的representation的目的。对于uuu,定义聚合函数如下:
eu(1)=LeakReLU(mu←u+∑i∈Numu←i),(4)e_u^{(1)}=\mathrm{LeakReLU}\left( \mathbf{m}_{u\leftarrow u} + \sum_{i\in \mathcal{N_u}} \mathbf{m}_{u\leftarrow i}\right), \tag{4} eu(1)=LeakReLU(mu←u+i∈Nu∑mu←i),(4)
这里mu←u=W1eum_{u\leftarrow u}=W_1e_umu←u=W1eu即只编码本身的信息。这里使用LeakyReLU的原因是这样可以保证message可以同时encode正数和较小的负数。 - High-order Propagation
如果堆叠lll层嵌入传播层,user/item能够得到lll阶邻居的信息,在第lll层,用户uuu的表示为:
eu(l)=LeakyReLU(mu←u(l)+∑i∈Numu←i(l)),(5)e_u^{(l)}=\mathrm{LeakyReLU}\left( \mathbf{m}_{u \leftarrow u}^{(l)} + \sum_{i\in\mathcal{N_u} } \mathbf{m}_{u \leftarrow i}^{(l)}\right), \tag{5} eu(l)=LeakyReLU(mu←u(l)+i∈Nu∑mu←i(l)),(5)
同样的,message construction定义如下:
{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)\begin{cases} \mathbf{m}_{u \leftarrow i}^{(l)}=p_{ui}\left( \mathbf{W}_1^{(l)}e_i^{(l-1)}+\mathbf{W}_2^{(l)}(e_i^{(l-1)}\odot e_u^{(l-1)}) \right),\\ \mathbf{m}_{u \leftarrow u}^{(l)} = \mathbf{W}_1^{(l)}e_u^{(l-1)}, \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)
这里,W1(l),W2(l)∈Rdl×dl−1W_1^{(l)},W_2^{(l)}\in \mathbb{R}^{d_l\times d_{l-1}}W1(l),W2(l)∈Rdl×dl−1。
矩阵形式的传播规则
由于训练是批处理,为了提升训练效率,矩阵形式的Prapagation是高效的:
E(l)=LeakyReLU((L+I)E(l−1)W1(l)+LE(l−1)⊙E(l−1)W2(l)),(7)E^{(l)}=\mathrm{LeakyReLU}\left( (\mathcal{L}+\mathbf{I})\mathbf{E}^{(l-1)}\mathbf{W}_1^{(l)}+ \mathcal{L} \mathbf{E}^{(l-1)} \odot \mathbf{E}^{(l-1)}\mathbf{W}_2^{(l)}\right), \tag{7} E(l)=LeakyReLU((L+I)E(l−1)W1(l)+LE(l−1)⊙E(l−1)W2(l)),(7)
这里,E(l)∈R(N+M)×dlE^{(l)}\in \mathbb{R}^{(N+M)\times d_l}E(l)∈R(N+M)×dl是lll层嵌入传播层之后的用户、物品的表示结果,E(0)=EE^{(0)}=EE(0)=E,L\mathcal{L}L表示用户-物品图的拉普拉斯矩阵:
L=D−12AD−12andA=[0RRT0],(8)\mathcal{L}=\mathbf{D}^{-\frac{1}{2}}\mathbf{A}\mathbf{D}^{-\frac{1}{2}} \mathrm{and} \mathbf{A} = \begin{bmatrix} 0 & \mathbf{R} \\ \mathbf{R}^T & 0 \end{bmatrix}, \tag{8} L=D−21AD−21andA=[0RTR0],(8)
这里,R∈RN×M\mathbf{R}\in \mathbb{R}^{N\times M}R∈RN×M为用户物品交互矩阵,D为对角度矩阵且Dtt=∣Nt∣D_{tt}=|\mathcal{N}_t|Dtt=∣Nt∣,根据拉普拉斯矩阵的性质Lui=1/∣Nu∣∣Ni∣\mathcal{L}_{ui}=1/\sqrt{|N_u||N_i|}Lui=1/∣Nu∣∣Ni∣
模型预测和优化
- 对于prediction的部分,作者将各层layer对于user/item的representation vector concate到了一起,这里也可以使用一些其他方法,如:池化、LSTM、Attention等等。
eu∗=eu(0)∥⋯∥eu(L),ei∗=ei(0)∥⋯∥ei(L),(9)e_u^*=e_u^{(0)}\Vert \cdots \Vert e_u^{(L)}, \quad e_i^*=e_i^{(0)}\Vert \cdots \Vert e_i^{(L)}, \tag{9} eu∗=eu(0)∥⋯∥eu(L),ei∗=ei(0)∥⋯∥ei(L),(9)
这里∣∣||∣∣表示连接运算,然后将user和item的vector直接做内积得到最终的预测值:
y^NGCF(u,i)=eu∗Tei∗(10)\widehat{y}_{\mathrm{NGCF}}(u,i)={e_u^*}^\mathrm{{T}}e_i^* \tag{10} yNGCF(u,i)=eu∗Tei∗(10) - 模型优化器部分,loss函数选择pairwise BPR loss:
Loss=∑(u,i,j)∈O−lnσ(y^ui−y^uj)+λ∥Θ∥22,(11)Loss = \sum_{(u,i,j)\in O}-\ln \sigma\left( \widehat{y}_{ui}- \widehat{y}_{uj} \right) + \lambda \Vert\Theta\Vert_2^2, \tag{11} Loss=(u,i,j)∈O∑−lnσ(yui−yuj)+λ∥Θ∥22,(11)
这里O={(u,i,j)∣(u,i)∈R+,(u,j)∈R−}O=\{ (u,i,j)|(u,i)\in\mathcal{R}^+, (u,j)\in \mathcal{R}^- \}O={(u,i,j)∣(u,i)∈R+,(u,j)∈R−}表示the pairwise
training data,R+\mathcal{R}^+R+表示观测到了交互,R−\mathcal{R}^-R−表示没有观测到交互,σ(⋅)\sigma(\cdot)σ(⋅)表示sigmoid函数,Θ={E,{W1(l),W2(l)}l=1L}\Theta=\{ \mathbf{E}, \{W_1^{(l)}, W_2^{(l)} \}_{l=1}^L \}Θ={E,{W1(l),W2(l)}l=1L}表示所有的训练参数,λ\lambdaλ控制L2正则化力度防止过拟合。
Dropout in NGCF
文中采用了两个Dropout:message dropout和node dropout
- message droupout: 对于每一层的输出,在activate之前以p1p_1p1的概率丢失节点
- node dropout: 每一层传播结束后,以p2p_2p2概率丢失Laplacian矩阵中的交互关系,丢失(N+M)∗p2(N+M)*p_2(N+M)∗p2个节点。
4.改进的效果如何以及比较的对象?
- Baseline: MF、NeuMF、CMN、HOP-Rec、PinSage、GC-MC
- Metrics: recall@K 和ndcg@K 来评估top-K推荐效果,默认K=20K=20K=20。
5. future work
在未来,希望把attention机制加入来学习邻居的不同重要程度,这将提高模型的泛化能力和可解释性。
参考链接
- NGCF参考博客:https://blog.csdn.net/weixin_44884854/article/details/109007813
- NGCF知乎: https://zhuanlan.zhihu.com/p/131274333
- 原文地址:https://arxiv.org/pdf/1905.08108v2.pdf
Neural Graph Collaborative Filtering【阅读笔记】相关推荐
- 知识图谱论文阅读(二十一)【SIGIR2019】NGCF: Neural Graph Collaborative Filtering
题目:Neural Graph Collaborative Filtering 代码: https://github.com/xiangwang1223/neural_graph_collaborat ...
- 论文笔记(Neural Graph Collaborative Filtering)
神经图协同过滤 论文链接:Neural Graph Collaborative Filtering, SIGIR'19 原理:在 user-item interaction graph 上使用 GNN ...
- 矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现
矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现 Neural Graph Collaborative Filtering (NGCF) is a ...
- NGCF,论文Neural Graph Collaborative Filtering的理解
现代推荐系统RS的核心是学习用户和物品的embeddings表示,随着图神经网络的火热以及图在现实生活中的广泛应用,作者提出将图神经网络和协同过滤算法结合以追求更好的性能. 先简单介绍一下文中两个最主 ...
- 【论文笔记】Neural Graph Collaborative Filtering
文章目录 1. Motivation 2. 模型 2.1 Embedding Layer 嵌入层 2.2 Embedding Propagation Layers 2.2.1 First-order ...
- 文献阅读总结(3)Neural Graph Collaborative Filtering
1.Introduction 左图u1,右图从左图的u1开始展开 图反应的信息: 1.从路径u1->i2->u2,可以反映出u1和u2的相似性: 2.u1和i4之间有两条路径,而u1和i5 ...
- 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
[论文阅读笔记]2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Lear ...
- 2019_SIGIR_Neural Graph Collaborative Filtering
[论文阅读笔记]2019_SIGIR_Neural Graph Collaborative Filtering 论文下载地址: https://doi.org/10.1145/3331184.3331 ...
- Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(个人笔记)
论文:利用邻域丰富的对比学习改进图协同过滤 (NCL) WWW22 文章链接:https://arxiv.org/abs/2202.06200v1https://arxiv.org/abs/2202. ...
- 【论文笔记】Disentangled Graph Collaborative Filtering --- SIGIR2020
本文提出了一种新的模型DGCF用来理解用户的意图.把嵌入拆成K部分,每一部分分别表示用户的意图.同时使用了独立模型模块来保证每一部分都具有独立性,使得意图不会纠缠在一起. 摘要 从历史交互数据中学习用 ...
最新文章
- DB2 创建数据库、缓冲池和表空间
- HDU 1241Oil Deposits---(dfs)
- 【前端学习日记】利用Vue实现跑马灯的效果
- vl02n 批次拆分
- UTF-8编码规则(转)
- BZOJ5249: [2018多省省队联测]IIIDX(线段树 贪心)
- 通过javascript在网页端生成zip压缩包并下载
- Lecture 5:无模型控制
- Java设计模式之十 ---- 访问者模式和中介者模式
- C# dataGridView限制某一行的单元格只输入数字的方法之一
- textarea输入框光标定位问题
- 使用PDman进行数据库设计
- android subscriber 自定义,自定义Subscriber
- 《算法帝国》第一章第二章读书笔记
- response.setHeader()的用法详解及实现文件下载过程中出现问题的分析
- Vue项目中的自定义指令
- 从多个Word文件中取值到Excel中,整理文件的神器,Word精灵V7.3
- JAVA毕业设计Web端校园报修系统计算机源码+lw文档+系统+调试部署+数据库
- 田野调查手记·浮山摩崖石刻(六)
- 10个需要警惕的BYOD常见陷阱