文章目录

  • 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.模型架构以及原理?

模型由三部分组成:

  1. 嵌入层提供用户和物品的嵌入
  2. 多个嵌入传播层通过高阶连通性改善嵌入表示
  3. 预测层聚合精炼后从不同的层传来的embeddings,最后给出得分
    模型结构如下:

Embedding Layer

将每一个user和item编码为vector:eu∈Rd(ei∈Rd)e_u \in \mathbb{R}^d(e_i\in\mathbb{R}^d)euRd(eiRd)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

eu1,,euN,itemembeddings

ei1,,eiM
].(1)

Embedding propagation Layer

  • First-Order Propagation
    传播有两个部分组成:消息构建和信息聚合(message construction and message aggregation)
    消息构建:对于一个相连的user-item对(u,i)(u,i)(u,i)来说,定义一条从i→ui\rightarrow uiu的message如下:
    mu←i=f(ei,eu,pui),(2)\mathbf{m}_{u\leftarrow i}=f(\mathbf{e}_i, \mathbf{e}_u,p_{ui}), \tag{2} mui=f(ei,eu,pui),(2)
    这里mu←i\mathbf{m}_{u\leftarrow i}mui为消息嵌入即将要被传播的消息,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} mui=NuNi

    1
    (W1ei+W2(eieu)),
    (3)

    这里W1,W2∈Rd′×dW_1,W_2\in \mathbb{R}^{d'\times d}W1,W2Rd×d是可训练权重矩阵,用来在传播中提取有用的信息,d′d'd是转换大小。 参考GCN,将puip_{ui}pui设置为1∣Nu∣∣Ni∣\frac{1}{\sqrt{|N_u||N_i|}}NuNi

    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(muu+iNumui),(4)
    这里mu←u=W1eum_{u\leftarrow u}=W_1e_umuu=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(muu(l)+iNumui(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} {mui(l)=pui(W1(l)ei(l1)+W2(l)(ei(l1)eu(l1))),muu(l)=W1(l)eu(l1),(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×dl1

矩阵形式的传播规则

由于训练是批处理,为了提升训练效率,矩阵形式的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(l1)W1(l)+LE(l1)E(l1)W2(l)),(7)
这里,E(l)∈R(N+M)×dlE^{(l)}\in \mathbb{R}^{(N+M)\times d_l}E(l)R(N+M)×dllll层嵌入传播层之后的用户、物品的表示结果,E(0)=EE^{(0)}=EE(0)=EL\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=D21AD21andA=[0RTR0],(8)
这里,R∈RN×M\mathbf{R}\in \mathbb{R}^{N\times M}RRN×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/NuNi

,它等于等式(3)里面的puip_{ui}pui

模型预测和优化

  • 对于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} y

    NGCF
    (u,i)=
    euTei(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)Olnσ(y

    ui
    y

    uj
    )
    +
    λΘ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机制加入来学习邻居的不同重要程度,这将提高模型的泛化能力和可解释性。

参考链接

  1. NGCF参考博客:https://blog.csdn.net/weixin_44884854/article/details/109007813
  2. NGCF知乎: https://zhuanlan.zhihu.com/p/131274333
  3. 原文地址:https://arxiv.org/pdf/1905.08108v2.pdf

Neural Graph Collaborative Filtering【阅读笔记】相关推荐

  1. 知识图谱论文阅读(二十一)【SIGIR2019】NGCF: Neural Graph Collaborative Filtering

    题目:Neural Graph Collaborative Filtering 代码: https://github.com/xiangwang1223/neural_graph_collaborat ...

  2. 论文笔记(Neural Graph Collaborative Filtering)

    神经图协同过滤 论文链接:Neural Graph Collaborative Filtering, SIGIR'19 原理:在 user-item interaction graph 上使用 GNN ...

  3. 矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现

    矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现 Neural Graph Collaborative Filtering (NGCF) is a ...

  4. NGCF,论文Neural Graph Collaborative Filtering的理解

    现代推荐系统RS的核心是学习用户和物品的embeddings表示,随着图神经网络的火热以及图在现实生活中的广泛应用,作者提出将图神经网络和协同过滤算法结合以追求更好的性能. 先简单介绍一下文中两个最主 ...

  5. 【论文笔记】Neural Graph Collaborative Filtering

    文章目录 1. Motivation 2. 模型 2.1 Embedding Layer 嵌入层 2.2 Embedding Propagation Layers 2.2.1 First-order ...

  6. 文献阅读总结(3)Neural Graph Collaborative Filtering

    1.Introduction 左图u1,右图从左图的u1开始展开 图反应的信息: 1.从路径u1->i2->u2,可以反映出u1和u2的相似性: 2.u1和i4之间有两条路径,而u1和i5 ...

  7. 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

    [论文阅读笔记]2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Lear ...

  8. 2019_SIGIR_Neural Graph Collaborative Filtering

    [论文阅读笔记]2019_SIGIR_Neural Graph Collaborative Filtering 论文下载地址: https://doi.org/10.1145/3331184.3331 ...

  9. Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(个人笔记)

    论文:利用邻域丰富的对比学习改进图协同过滤 (NCL) WWW22 文章链接:https://arxiv.org/abs/2202.06200v1https://arxiv.org/abs/2202. ...

  10. 【论文笔记】Disentangled Graph Collaborative Filtering --- SIGIR2020

    本文提出了一种新的模型DGCF用来理解用户的意图.把嵌入拆成K部分,每一部分分别表示用户的意图.同时使用了独立模型模块来保证每一部分都具有独立性,使得意图不会纠缠在一起. 摘要 从历史交互数据中学习用 ...

最新文章

  1. DB2 创建数据库、缓冲池和表空间
  2. HDU 1241Oil Deposits---(dfs)
  3. 【前端学习日记】利用Vue实现跑马灯的效果
  4. vl02n 批次拆分
  5. UTF-8编码规则(转)
  6. BZOJ5249: [2018多省省队联测]IIIDX(线段树 贪心)
  7. 通过javascript在网页端生成zip压缩包并下载
  8. Lecture 5:无模型控制
  9. Java设计模式之十 ---- 访问者模式和中介者模式
  10. C# dataGridView限制某一行的单元格只输入数字的方法之一
  11. textarea输入框光标定位问题
  12. 使用PDman进行数据库设计
  13. android subscriber 自定义,自定义Subscriber
  14. 《算法帝国》第一章第二章读书笔记
  15. response.setHeader()的用法详解及实现文件下载过程中出现问题的分析
  16. Vue项目中的自定义指令
  17. 从多个Word文件中取值到Excel中,整理文件的神器,Word精灵V7.3
  18. JAVA毕业设计Web端校园报修系统计算机源码+lw文档+系统+调试部署+数据库
  19. 田野调查手记·浮山摩崖石刻(六)
  20. 10个需要警惕的BYOD常见陷阱

热门文章

  1. css页面点击文字出现蓝色背景去掉方法
  2. shopEx数据库错误,无法连接
  3. 《微观经济学》第一章
  4. K线形态识别—三K线之买入型三日K线组合
  5. 机器学习之【蒙特卡罗法】
  6. Workface通用核算项目的实现
  7. PumpkinRaising靶机渗透
  8. 无法获得 VMCI 驱动程序的版本: 句柄无效解决
  9. 【Verilog基础】常见的加法器电路总结(面试常考)(半加器、全加器、行波进位加法器RCA、超前进位加法器CLA)
  10. 连接linux服务器安卓模拟器,云服务器怎么运行安卓模拟器