文章目录

  • 1. Motivation
  • 2. 模型
    • 2.1 Embedding Layer 嵌入层
    • 2.2 Embedding Propagation Layers
      • 2.2.1 First-order Propagation
      • 2.2.2 High-order Propagation
      • 2.2.3 矩阵形式的传播
    • 2.3 模型预测

1. Motivation

在过去的基于矩阵分解或者深度学习的方法,通常是利用user和item的embedding进行协同召回,存在的缺点:没有考虑user和item之间的collaborative signal

user-item interaction和high-order connectivity

上图左边就是CF里的user-item interaction(双圆圈表示需要预测的用户u1u_1u1)。我们把其展成树形结构,有以下几个理解:

  • u1←i2←u2u_{1} \leftarrow i_{2} \leftarrow u_{2}u1i2u2表示u1u_1u1u2u_2u2之间的相似性,因为他们都与i2i_2i2进行了交互;
  • 对于u1←i2←u2←i4u_{1} \leftarrow i_{2} \leftarrow u_{2} \leftarrow i_{4}u1i2u2i4暗示u1u_1u1可能会点击i4i_4i4,因为相似的u2u_2u2用户购买过i4i_4i4
  • l=3l=3l=3层,用户u1u_1u1会更倾向于i4i_4i4而不是i5i_5i5,因为有2条路径连接<i4,u1><i4,u1><i4,u1>,而只有1条连接<i5,u1><i5,u1><i5,u1>

所以如果能扩展成这样的路径连通性来解释用户的兴趣,就是高阶连通性(high-order connectivity)。

2. 模型

模型的主要组件(见下图):

(1)嵌入层:提供用户嵌入和项嵌入初始化;
(2)多嵌入传播层:通过注入高阶连通性关系来细化嵌入;
(3)预测层:该层聚合来自不同传播层的细化嵌入,输出用户-项目对的亲和度得分。

图2

2.1 Embedding Layer 嵌入层

初始的嵌入,同主流的推荐模型一样:
E=[eu1,⋯,euN⏟users embeddings ,ei1,⋯,eiM⏟item embeddings ](1)\mathrm{E}=[\underbrace{\mathbf{e}_{u_{1}}, \cdots, \mathbf{e}_{u_{N}}}_{\text {users embeddings }}, \underbrace{\mathbf{e}_{i_{1}}, \cdots, \mathbf{e}_{i_{M}}}_{\text {item embeddings }}] \tag{1} E=[users embeddings

eu1,,euN,item embeddings

ei1,,eiM
](1)
不同的地方是,在MF或者NCF等模型中,这些embedding被直接送入交互层实现预测得分。而在NGCF里,通过在用户-项目交互图中的传播优化embedding,由于优化步骤将协作信号显式注入到embedding中,因此可以为推荐提供更有效的embedding

2.2 Embedding Propagation Layers

我们先说明单层传播的设计,然后将其推广到多个连续层

2.2.1 First-order Propagation

直观上,与用户交互过的项目可以体现用户的偏好,类似的,与项交互过的用户也可以看作是项的特性,并且可以用于度量两个项目之间的协作相似性。我们以此为基础在连接的用户和项目之间执行embedding propogation,并通过两个主要操作来制定流程:消息构建和消息聚合。

Message Construction

对于一个user-item的连接pair(u,i)pair(u,i)pair(u,i),我们定义从iiiuuu的消息为:
mu←i=f(ei,eu,pui)(2)\mathbf{m}_{u \leftarrow i}=f\left(\mathbf{e}_{i}, \mathbf{e}_{u}, p_{u i}\right) \tag{2} mui=f(ei,eu,pui)(2)
其中,是 puip_{ui}pui是控制在边(u,i)(u,i)(u,i)上每次传播的衰减因子,f(⋅)f(\cdot)f()是message encoding函数,在这里定义为:
mu←i=1∣Nu∣∣Ni∣(W1ei+W2(ei⊙eu))(3)\mathbf{m}_{u \leftarrow i}=\frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|\left|\mathcal{N}_{i}\right|}}\left(\mathbf{W}_{1} \mathbf{e}_{i}+\mathbf{W}_{2}\left(\mathbf{e}_{i} \odot \mathbf{e}_{u}\right)\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是转换的大小(transformation size)。不同于GCN只考虑eie_iei,这里还考虑ei⊙eue_i\odot e_ueieu这使得消息依赖于二者之间的亲和力(如传递更多来自相似项的消息)

仿照GCN,把puip_{ui}pui设为 1∣Nu∣∣Ni∣\frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|\left|\mathcal{N}_{i}\right|}}NuNi

1Nu\mathcal{N}_{u}NuNi\mathcal{N}_{i}Ni表示uuuiii的第一跳邻居( first-hop neighbors)。所以从表征学习的角度看,puip_{ui}pui反映了历史item对用户偏好的贡献;从消息传播角度看,可以看作折扣因子,因为所传播的消息应该随路径长度而衰减

Message Aggregation

聚合uuu邻居传播的消息来改进uuu的表示:
eu(1)=LeakyReLU⁡(mu←u+∑i∈Numu←i)(4)\mathbf{e}_{u}^{(1)}=\operatorname{LeakyReLU}\left(\mathbf{m}_{u \leftarrow u}+\sum_{i \in \mathcal{N}_{u}} \mathbf{m}_{u \leftarrow i}\right) \tag{4} eu(1)=LeakyReLU(muu+iNumui)(4)
其中,eu(1)\mathbf{e}_{u}^{(1)}eu(1)表示在第一嵌入传播层之后用户uuu的表示,激活函数使用LeakyReLU(适合对positive和small negative 信号的编码)。除了对邻居Nu\mathcal{N}_{u}Nu的聚合,为保留原始的特征,还考虑自身的连接mu←u=W1eu\mathbf{m}_{u \leftarrow u}=\mathbf{W}_{1} \mathbf{e}_{u}muu=W1eu

对于ei(1)\mathbf{e}_{i}^{(1)}ei(1),使用了同样的方式进行聚合。

2.2.2 High-order Propagation

将多个Embedding Propagation Layers进行堆叠,就可以得到high order connectivity信息了。结合图2理解,堆叠lll层时,从lll-top邻居获得信息,公式与第1层类似:
eu(l)=LeakyReLU⁡(mu←u(l)+∑i∈Numu←i(l))(5)\mathbf{e}_{u}^{(l)}=\operatorname{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)

{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)\left\{\begin{array}{l} \mathbf{m}_{u \leftarrow i}^{(l)}=p_{u i}\left(\mathbf{W}_{1}^{(l)} \mathbf{e}_{i}^{(l-1)}+\mathbf{W}_{2}^{(l)}\left(\mathbf{e}_{i}^{(l-1)} \odot \mathbf{e}_{u}^{(l-1)}\right)\right) \\ \mathbf{m}_{u \leftarrow u}^{(l)}=\mathbf{W}_{1}^{(l)} \mathbf{e}_{u}^{(l-1)} \end{array}\right. \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−1\mathbf{W}_{1}^{(l)}, \mathbf{W}_{2}^{(l)} \in \mathbb{R}^{d_{l} \times d_{l-1}}W1(l),W2(l)Rdl×dl1

  • 这里的层数L是固定的,所以不会出现连续两层uuu无法训练的情况
  • 每一层的WWW都会不一样
  • puip_{ui}pui每一层一样吗?好像是都按照1-top计算的来的?

如图3所示,协作的信号像如u1←i2←u2←i4u_{1} \leftarrow i_{2} \leftarrow u_{2} \leftarrow i_{4}u1i2u2i4在嵌入传播的过程中就被捕获了, 多个嵌入传播层的叠加将协作信号无缝地注入到表示学习过程中

2.2.3 矩阵形式的传播

为了便于进行批量batch训练,写成分层传播规则的矩阵运算形式。如果不用矩阵进行运算,在训练过程中很难进行这么复杂的交互运算。
E(l)=LeakyReLU⁡((L+I)E(l−1)W1(l)+LE(l−1)⊙E(l−1)W2(l))\mathrm{E}^{(l)}=\operatorname{LeakyReLU}\left((\mathcal{L}+\mathrm{I}) \mathrm{E}^{(l-1)} \mathrm{W}_{1}^{(l)}+\mathcal{L} \mathrm{E}^{(l-1)} \odot \mathrm{E}^{(l-1)} \mathrm{W}_{2}^{(l)}\right) E(l)=LeakyReLU((L+I)E(l1)W1(l)+LE(l1)E(l1)W2(l))
其中,L\mathcal{L}L是user-item图上的拉普拉斯矩阵:
L=D−12AD−12and A=[0RR⊤0]\mathcal{L}=\mathrm{D}^{-\frac{1}{2}} \mathrm{AD}^{-\frac{1}{2}} \text { and } \mathrm{A}=\left[\begin{array}{cc} 0 & \mathrm{R} \\ \mathrm{R}^{\top} & 0 \end{array}\right] L=D21AD21andA=[0RR0]

R∈RN×MR \in \mathbb{R}^{N \times M}RRN×M是用户商品的交互矩阵,度矩阵中Dtt=NuD_{tt}=\mathcal{N}_{u}Dtt=Nu,这样的话,Lui=1∣Nu∣∣Ni∣\mathcal{L}_{ui}=\frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|\left|\mathcal{N}_{i}\right|}}Lui=NuNi

1相当于前面的系数puip_{ui}pui

2.3 模型预测

经过LLL层传播,把每一层的表示连接起来,作为最终的表示:
eu∗=eu(0)∥⋯∥eu(L),ei∗=ei(0)∥⋯∥ei(L)(9)\mathbf{e}_{u}^{*}=\mathbf{e}_{u}^{(0)}\|\cdots\| \mathbf{e}_{u}^{(L)}, \quad \mathbf{e}_{i}^{*}=\mathbf{e}_{i}^{(0)}\|\cdots\| \mathbf{e}_{i}^{(L)} \tag{9} eu=eu(0)eu(L),ei=ei(0)ei(L)(9)
这样不仅可以用嵌入传播层来丰富初始嵌入,还可以通过调节L来控制传播范围

使用连接的优点在于它的简单性,因为它不需要学习额外的参数。除了连接之外,在组合不同阶数的连通性时,还可用其他聚合器,如加权平均、最大池化、LSTM等。

最后,用内积来估计用户对目标物品的偏好
y^NGCF(u,i)=eu∗⊤ei∗(10)\hat{y}_{\mathrm{NGCF}}(u, i)=\mathbf{e}_{u}^{* \top} \mathbf{e}_{i}^{*} \tag{10} y^NGCF(u,i)=euei(10)
在此工作中,我们强调嵌入函数的学习,因此只使用简单的内积交互函数。其他更复杂的选择有待于在未来的工作中探索。

【论文笔记】Neural Graph Collaborative Filtering相关推荐

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

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

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

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

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

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

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

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

  5. 论文笔记《Item-based Collaborative Filtering Recommendation Algorithms》基于物品的协同过滤算法

    这是一篇很经典的论文,2001年发表的.如果你已经很熟悉基于item的CF,那么这篇论文看起来就很舒适,很简单. 读完这篇论文还是能收获很多实验设计上知识,实验严谨性和论证.值得一读.

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

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

  7. 2019_SIGIR_Neural Graph Collaborative Filtering

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

  8. 论文笔记:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

    1 简介 论文:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning 发表:2 ...

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

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

最新文章

  1. 番外:Spring MVC环境搭建和Mybatis配置避坑篇
  2. py2 HTMLTestRunner报告
  3. Zookeeper知识点详解
  4. 在MFC里面实现线程的实例
  5. 在ASP.NET Core 2.0中使用MemoryCache
  6. apache域名本地映射
  7. RK平台HDMI、喇叭音频同时输出
  8. 小米笔记本pro版bios经常找不到硬盘
  9. 个人开发者上架Android应用市场感受
  10. 网站内部优化-怎么做好网站内部SEO优化-网站内部SEO优化方案
  11. kerberos开启kdc的debug日志
  12. 已知xyz yzz 532Java_已知 xyz+yzz=532 ,其中 x 、 y 、 z 为数字,编程求出 x 、 y 、 z 的值。_学小易找答案...
  13. php虚拟主机的配置
  14. 迅捷路由器服务器未响应,迅捷(FAST)路由器无法登陆falogin.cn解决办法 | 192.168.1.1登陆页面...
  15. 港联证券|TMT板块全线退潮,这些个股获主力逆市抢筹
  16. html5文字跳动特效,jQuery网页文字跳动动画特效
  17. Elasticsearch入门教程(五):Elasticsearch查询(一)
  18. 【随笔】3.内马尔 登贝莱 姆巴佩
  19. Linux后台开发系列之「10.Autoconf 打包软件」
  20. ifv播放器android 版,DVR\IFV监控录象播放器(DVRPlayer)

热门文章

  1. C++ 多态性之虚函数抽象类纯虚函数
  2. live writer 中注册博客园需要的设置
  3. android studio 安装apk失败,AndroidStudio安装apk时失败时提示INSTALL_PARSE_FAILED_NO_CERTIFICATES...
  4. 一款可以安利的MarkDown编辑器
  5. hive的row_number()函数
  6. STL——配接器(adapters)
  7. 设置韩澳大利亚sinox弄winxp清除字体和界面美观
  8. 微信读书App来了 小伙伴们快去占榜吧
  9. Poj 1936,3302 Subsequence(LCS)
  10. SqlServer标识列