推荐系统论文——NGCF理解

一、背景

传统的推荐系统在设计嵌入层(Embeddings)时,要么是基于用户设计,要么是基于物品设计。具体来说,就是关联规则1在协同过滤(collaborative filtering)中的应用。在向某个特定的用户A推荐物品时,都会找寻和A喜好度差不多的用户B(相似度高),通过用户B是否喜欢某个A未见过的物品来判定是否向A推荐此物品,这就是面向用户的协同过滤模型。面向物品的协同过滤模型同理。这里放一个解释比较详细的链接: 推荐系统之协同过滤算法

二、NGCF介绍

通过对背景的描述,相信很多人已经看出来了问题来源,在设计嵌入层时,我们通常都会将用户和物品分开处理,这就忽略了本质上用户-物品之间的联系,嵌入层显然不包含这一联系。NGCF的提出,正是解决了用户和物品交互信息的传播信号(collaborative signal in user-item interactions)无法在嵌入层中表现这一问题。

三、高阶连通性(high-order connectivity)在NGCF中的作用

高阶连通性
问题:在日常生活中,用户和项目的交互通常是非常庞大的,这就使得提取协作信号变得非常复杂。高阶连通性作为一种在交互图结构中编码协作信号的自然方式非常适合表现这种关系。这也是NGCF中较为关键的思想。在后面还会有所提及。

四、原理

4.1 图像化解释

在这里插入图片描述
首先从图像上看出以 u 1 u_1 u1 i 4 i_4 i4为例,NGCF分为三层,第一层就是由用户和物品共同组成的嵌入层记为 e u 1 ( 0 ) e_{u_1}^{(0)} eu1(0) e i 4 ( 0 ) e_{i_4}^{(0)} ei4(0),随后进入嵌入传播层(Embedding Propagation Layers)。嵌入传播层作为NGCF的核心,它的核心思想就是借助高阶连通性将用户和项目进行关联,并用GCN的思想提取每一层中的有用信息。最后一层为预测层,它用于给出最后预测结果。也就是将 u 1 u_1 u1 i 4 i_4 i4每一层的预测结果整合得到 e u 1 ∗ e_{u_1}^{*} eu1 e i 4 ∗ e_{i_4}^{*} ei4

4.2 激活函数和损失函数

4.2.1 消息构建和消息整合

在嵌入传播层中,对于原始数据 e u 1 ( 0 ) e_{u_1}^{(0)} eu1(0) e i 4 ( 0 ) e_{i_4}^{(0)} ei4(0),我们需要进行消息构建(Message Construction):对于每一对 u − > i u->i u>i 来说,定义从 u u u i i i的消息为:
m u ← i = f ( e i , e u , p u i ) m_{u\leftarrow i} = f(e_i,e_u,p_{ui}) mui=f(ei,eu,pui)
这里 P u i P_{ui} Pui为消息衰减因子,用于控制距离对消息的影响。在NGCF中 f ( e i , e u , p u i ) f(e_i,e_u,p_{ui}) f(ei,eu,pui)
m u ← i = 1 ∣ N u ∣ ∣ N i ∣ ( W 1 e i + W 2 ( e i ⊙ e u ) ) m_{u\leftarrow i} =\frac{1}{\sqrt{|N_u||N_i|}}(W_1e_i+W_2(e_i\odot e_u)) mui=NuNi 1(W1ei+W2(eieu))
W 1 W_1 W1 W 2 W_2 W2是可训练的矩阵,用于提取嵌入层中的有用信息而 p u i p_{ui} pui被设置为了图拉普拉斯范数(graph Laplacian norm).其中 ∣ N i ∣ |N_i| Ni ∣ N u ∣ |N_u| Nu分别为i和u的子树个数
在对消息构建之后,需要进行消息聚合(Message Aggregation):
这里设置对于第一层 u u u i i i的消息来说,其激活函数为:
e u ( 1 ) = L e a k y R e L U ( m u ← u + ∑ i ∈ N u m u ← i ) e_u^{(1)}=LeakyReLU(m_{u\leftarrow u}+\sum_{i\in N_u}^{}m_{u\leftarrow i}) eu(1)=LeakyReLU(muu+iNumui)
对于其他层来说,激活函数相似:
e u ( l ) = L e a k y R e L U ( m u ← u ( l ) + ∑ i ∈ N u m u ← i ( l ) ) e_u^{(l)}=LeakyReLU(m_{u\leftarrow u}^{(l)}+\sum_{i\in N_u}^{}m_{u\leftarrow i}^{(l)}) eu(l)=LeakyReLU(muu(l)+iNumui(l))
这样行成了迭代的关系,层数越高,用户和项目交互所得的信息就越密集,包含之前层的信息。对于 m u ← u m_{u\leftarrow u} muu自连接来说
m u ← u = W 1 e u m_{u\leftarrow u}=W_1e_u muu=W1eu
而对于高阶传播中有
{ 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),
转化为矩阵形式就是
E ( l ) = LeakyReLU ⁡ ( ( L + I ) E ( l − 1 ) W 1 ( l ) + L E ( l − 1 ) ⊙ E ( l − 1 ) W 2 ( l ) ) \mathbf{E}^{(l)}=\operatorname{LeakyReLU}\left((\mathcal{L}+\mathrm{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) E(l)=LeakyReLU((L+I)E(l1)W1(l)+LE(l1)E(l1)W2(l))
其中
L = D − 1 2 A D − 1 2  and  A = [ 0 R R ⊤ 0 ] \mathcal{L}=\mathbf{D}^{-\frac{1}{2}} \mathrm{AD}^{-\frac{1}{2}} \text { and } \mathbf{A}=\left[\begin{array}{cc} \mathbf{0} & \mathbf{R} \\ \mathbf{R}^{\top} & \mathbf{0} \end{array}\right] L=D21AD21 and A=[0RR0]
L \mathcal{L} L表示拉普拉斯矩阵

4.2.2 损失函数

在NGCF这篇文章中,采取推荐系统中最为常见的BRP loss函数:
 Loss  = ∑ ( u , i , j ) ∈ O − ln ⁡ σ ( y ^ u i − y ^ u j ) + λ ∥ Θ ∥ 2 2 \text { Loss }=\sum_{(u, i, j) \in O}-\ln \sigma\left(\hat{y}_{u i}-\hat{y}_{u j}\right)+\lambda\|\Theta\|_{2}^{2}  Loss =(u,i,j)Olnσ(y^uiy^uj)+λΘ22

五、对照

在这里插入图片描述
论文中分别采用Gowalla、Yelp2018和Amazon-book三个数据,结果显示NGCF取得了不错的效果。


  1. 关联规则:规则 X ⇒ Y X\Rightarrow Y XY被称为最小支持度s和最小置信度c下的关联,如果下述两个条件被同时满足:
    1. X ∪ Y X\cup Y XY的支持度不小于s;
    2. X ⇒ Y X\Rightarrow Y XY的置信度不小于c ↩︎

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值