【推荐算法论文阅读】Neural Graph Collaborative Filtering

一、背景

协同过滤学习模型从项目的丰富侧面信息中学习的深层表示来扩展MF嵌入功能;神经协同过滤模型则用非线性神经网络取代内积的MF交互函数。

以上的方法都是有效的,但是却无法为CF提供合适的嵌入,这是因为缺少一个协同信号(它潜伏在用户与项目之间的交互中,以揭示用户(或项目)之间的行为相似性。)更具体的是,现有的大多数方法只使用描述性的特性(例如id和属性)构建嵌入功能,而不考虑用户-项目的交互,这些功能只用于定义模型训练的目标函数。因此必须依赖交互功能弥补次优嵌入的不足。虽然直接地使用交互功能能弥补次优嵌入的不足,但是在实际开发中,交互的规模可以容易地达到数百万甚至更大,使得难以提取期望的协作信号。所以在这项工作中,我们解决了所有问题,通过利用来自用户项目交互的高阶连通性,在交互图形结构中对协作信号进行编码的方式。

请添加图片描述

图 1 说明了高阶连通性的概念。 图1左边所示的为协同过滤用户-项目交互的基本交互图,双圆圈表示需要预测的用户u1,右图为左图以用户u1为根节点扩展的树形结构,l为到达用户u1的路径长度(可以作为兴趣重要度的权重值)。高阶连通性表示从路径长度 l 大于 1 的任何节点到达 u1 的路径。这种高阶连通性包含了承载协同信号的丰富语义。 例如,路径 u1 ← i2 ← u2 表示 u1 和 u2 之间的行为相似性,因为两个用户都与 i2 进行了交互; 较长的路径 u1 ← i2 ← u2 ← i4 表明 u1 很可能采用 i4,因为之前类似的用户 u2 有消费过 i4。此外,从 l = 3 的整体来看,同路径长度为3的项目i4、i5中,明显用户对i4的兴趣度高于i5,这是因为<i4,u1>连接的路径有两条,分别为i4->u2->i2->u1、i4->u3->i3->u1,而<i5,u1>则只有一条,为i5->u2->i2->u1。

本文提出了嵌入函数中高阶连通性信息的建模方法.而不是将交互图扩展为一棵复杂的树。本论文设计了一种在图上递归传播的神经网络方法,受最近发展的图神经网络的启发,可以看作是在嵌入空间中构造信息流。
通过在神经网络中,插入一个嵌入传播层,它通过聚合交互项(或用户)的嵌入来细化用户(或项)的嵌入。叠加多重嵌入传播层,我们可以强制嵌入,以捕获协作信号的高阶连通性.

以图1为例,堆叠两层捕获u1←i2←u2的行为相似性,堆叠三层捕获u1←i2←u2←i4和潜在的信息流的强度(由层间的大小估计权重值)确定i4和i5的推荐优先级。

二、模型结构

请添加图片描述
模型结构如图2所示,模型由embedding层、embedding传播层和预测层组成:

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

2.1 embedding层

用嵌入向量 e u ∈ R d ( e i ∈ R d ) e_u∈R^d (e_i∈R^d) euRd(eiRd) 来描述用户 u (项目 i ),其中 d 表示嵌入大小。这可以看作是构建一个参数矩阵作为嵌入查找表:
E = [ e u 1 , ⋅ ⋅ ⋅ , e u N , e i 1 , ⋅ ⋅ ⋅ , e i M ] E = [e_{u1},···,e_{uN}, e_{i1},···,e_{iM}] E=[eu1euN,ei1eiM]

2.2 embedding传播层

直观上,与用户交互过的项目可以体现用户的偏好,类似的,与项目交互过的用户也可以看作是项目的特性,并且可以用于度量两个项目之间的协同相似性。在GNN消息传递体系结构的基础上,根据图的结构捕获CF信号和细化用户和项目的嵌入。

2.2.1 一阶传播

对于连接的用户-项目对 (u,i),我们将 i 到 u 的消息定义为:
m u ← i = f ( e i , e u , p u i ) \mathbf{m}_{u \leftarrow i}=f\left(\mathbf{e}_{i}, \mathbf{e}_{u}, p_{u i}\right) mui=f(ei,eu,pui)
其中 m u ← i m_{u←i} mui 是消息嵌入(即要传播的信息)。 f (·) 是消息编码函数,它以嵌入 e i e_i ei e u e_u eu 作为输入,并使用系数 p u i p_{ui} pui 来控制边 (u,i) 上每次传播的衰减因子。 m u ← i m_{u←i} mui由下式计算:
m u ← i = 1 ∣ N u ∣ ∣ N i ∣ ( W 1 e i + W 2 ( e i ⊙ e u ) ) \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) mui=NuNi 1(W1ei+W2(eieu))
W 1 , W 2 W_1,W_2 W1,W2是可训练的权重矩阵,用于提取有用的传播信息。

与传统的图卷积网络只考虑 e i e_i ei 的贡献不同的是,本文额外将 e i e_i ei e u e_u eu 之间的交互编码为通过 e i ⊙ e u e_i ⊙ e_u eieu 传递的消息,其中 ⊙ 表示元素乘积。 这使得消息传播依赖于 e i e_i ei e u e_u eu 之间的相似度,例如,从相似的项目中传递更多的消息。

P u i P_{ui} Pui被定义为 1 / ∣ N u ∥ N i ∣ 1 / \sqrt{\left|\mathcal{N}_{u} \| \mathcal{N}_{i}\right|} 1/NuNi N u \mathcal{N}_{u} Nu N i \mathcal{N}_{i} Ni分别代表用户u和项目i第一跳的邻居。从表示学习的角度来看, p u i p_{ui} pui 反映了历史项目对用户偏好的贡献程度。 从消息传递的角度来看, p u i p_{ui} pui 可以解释为折扣因子,考虑到正在传播的消息应该随着路径长度而衰减。

消息聚合函数被定义为:
e u ( 1 ) = LeakyReLU ⁡ ( m u ← u + ∑ i ∈ N u m u ← i ) \mathbf{e}_{u}^{(1)}=\operatorname{LeakyReLU}\left(\mathbf{m}_{u \leftarrow u}+\sum_{i \in \mathcal{N}_{u}} \mathbf{m}_{u \leftarrow i}\right) eu(1)=LeakyReLU(muu+iNumui)
e u ( 1 ) e^{(1)}_u eu(1) 是用户 u 在一阶嵌入传播层获得的表示.
除了从邻居 Nu 传播的消息外,还考虑了 u 的自连接: m u ← u = W 1 e u m_{u←u} = W_1e_u muu=W1eu,保留了原始特征的信息。
类似地,我们可以通过从其连接的用户传播信息来获得项目 i 的表示形式 e i ( 1 ) e^{(1)}_i ei(1) W 1 W_1 W1 是与前一个式子中使用的权重矩阵共享的权重矩阵。

2.2.2 高阶传播

通过堆叠 l l l 个嵌入传播层,用户(和项目)能够接收从其 l 跳邻居传播的消息。 如图所示:
请添加图片描述

在第 l l l 步中,用户 u 的表示递归地表示为:
e u ( l ) = LeakyReLU ⁡ ( m u ← u ( l ) + ∑ i ∈ N u m u ← i ( l ) ) \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) eu(l)=LeakyReLU(muu(l)+iNumui(l))
其中正在传播的消息定义如下:
{ m u ← i ( l ) = p u i ( W 1 ( l ) e i ( l − 1 ) + W 2 ( l ) ( e i ( l − 1 ) ⊙ e u ( l − 1 ) ) ) , m u ← u ( l ) = W 1 ( l ) e u ( l − 1 ) \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. {mui(l)=pui(W1(l)ei(l1)+W2(l)(ei(l1)eu(l1))),muu(l)=W1(l)eu(l1)

2.2.3 矩阵形式的传播规则

为了提供嵌入传播的整体视图并促进批量实施,我们提供了逐层传播规则的矩阵形式:
请添加图片描述

2.3 预测层

由于在不同层获得的表示强调通过不同连接传递的消息,因此它们在反映用户偏好方面有不同的贡献。 因此,我们将它们连接起来构成用户的最终嵌入,即:
e u ∗ = e u ( 0 ) ∥ ⋯ ∥ e u ( L ) , e i ∗ = e i ( 0 ) ∥ ⋯ ∥ e i ( L ) \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)} eu=eu(0)eu(L),ei=ei(0)ei(L)

2.4 损失函数

为了学习模型参数,我们优化了pairwise BPR loss。 它考虑了观察到的和未观察到的用户-项目交互之间的相对顺序。 具体来说,BPR 假设观察到的交互更能反映用户的偏好,应该比未观察到的交互分配更高的预测值。 目标函数如下:
请添加图片描述

参考资料

  1. Neural Graph Collaborative Filtering–总结
  2. 论文笔记(Neural Graph Collaborative Filtering)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值