【GNN】NGCF:捕捉协同信号的 GNN

今天学习的是新加坡国立大学和中国科技大学同学合作的论文《Neural Graph Collaborative Filtering》,发表于 2019 年 ACM SIGIR 会议。

Embedding 向量是现代推荐系统的核心,但是目前的方法无法捕捉到 user-item 交互中潜在的协作信号。因此,由此产生的 Embedding 向量可能不足以捕获到协同过滤的内容。

为此,作者提出神经网络协同过滤(Neural Graph Collaborative Filtering,NGCF),旨在将 user-item 的交互信息集成到 Embedding 中,从而在完成二部图的高阶连通性的表达建模。

1.Introduction

一般而言,有两种可学习的协同过滤模型:

  1. Embedding:将 user 和 item 转换成向量表示。比如说矩阵分解得到 Embedding,并建模了 user 和 item 之间的交互信息;
  2. 交互建模:基于 Embedding 重建历史交互。比如说利用非线性神经网络代替 MF 中的内积或者利用欧几里得作为交互函数;

但这些方法还不足以产生非常好的效果,关键原因在于缺少关键的协作信号(collaborative signal)显示的编码到 Emedding 中,这种信号可以揭示 user(或 item)之间的行为相似性。

虽然这个交互信息很有用,但是想做到这一点绝非易事,特别是在实际应用中,交互规模通常会达到千百万甚至上亿的数据量,从而很难提取所需的协作信号。

本文中,作者通过从 user-item 的交互中探索高阶连接性(high-order connectivity)来解决以上问题。下图阐述了 user-item 的二部图和高阶连接性的概念:

作者设计了一个 Embedding Propagation Layer 通过聚合 user(或 item)的 Embedding 来完善 Embedding 的表达。通过堆叠多个 Embedding Propagation Layer 可以强制 Embedding 捕获到 高阶连通性中的 协同信号。以上图右侧为例,堆叠两层可以捕获 u 1 ← i 2 ← u 2 u_1\leftarrow i_2 \leftarrow u_2 u1i2u2 的行为相似性,堆叠三层可以捕获 u 1 ← i 2 ← u 2 ← i 4 u_1\leftarrow i_2 \leftarrow u_2 \leftarrow i_4 u1i2u2i4 的潜在推荐,同时也可以捕捉到信息的强度(确定 i 4 , i 5 i_4,i_5 i4,i5 的推荐优先级)。

2.NGCF

我们来看下 NGCF 具体内容。

NGCF 总共有三个部分:Embedding Layer、Embedding Propagation Layers 和 Prediction Layer。

2.1 Embedding Layer

Embedding Layer 提供初始化的 user Embedding 和 item Embedding,可以被认为是构建了一个参数矩阵作为 Embedding look-up 表:
E = [ e u 1 , … , e u N ⏟ users embedding , e i 1 , … , e i M ⏟ item embedding ] \mathbf{E}=[\underbrace{\mathbf{e}_{u_1},…,\mathbf{e}_{u_N}}_{\text{users embedding}} , \underbrace{\mathbf{e}_{i_1},…,\mathbf{e}_{i_M}}_{\text{item embedding}}] \\ E=[users embedding eu1,,euN,item embedding ei1,,eiM]
该 look-up 表将作为 NGCF 的一部分参与到端到端的优化中,通过多层 Embedding 传播层的优化,可以将协作信号显示注入到 Embedding 中,从而可以产生更加有效的 Embedding 向量。

2.2 Embedding Propagation Layers

接下来我们介绍下消息传递架构,首先考虑单层。

2.2.1 First-order Propagation

交互信息会提供用户偏好的直接证据,类似的,消费了 item 的 user 也可以将该 user 视为该 item 的特征,从而用来衡量两个 item 的协同相似性。在此基础上作者制定了两个操作流程:消息构建(message construction)和消息聚合(message aggregation)。

Message construction

考虑 user-item pair,定义从 i 到 u 的消息传播:
m u ← i = f ( e i , e u , p u i ) \mathbf{m}_{u\leftarrow i} = f(\mathbf{e}_i,\mathbf{e}_u,p_{ui}) \\ mui=f(ei,eu,pui)
其中, f ( ⋅ ) f(\cdot) f() 为消息编码函数, e i \mathbf{e}_i ei e u \mathbf{e}_u eu 为 Embedding 向量, p u i p_{ui}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值