CIKM'21「微软」增量图卷积用于协同过滤

2022-09-19 11:26:18 浏览数 (1)

title:Incremental Graph Convolutional Network for Collaborative Filtering link:https://dl.acm.org/doi/pdf/10.1145/3459637.3482354 from:CIKM 2021

1. 背景

用户会与商品进行持续交互,从而导致用户商品交互图是随着时间变化的,训练好的GNN很快就会过时。

  • 传统的解决方式是隔一段时间就重训练一次,但是会损失时序信息并且计算资源损耗严重。
  • 采用RNN的方式会存在灾难性遗忘问题,并且存在冷启动问题。

本文提出增量图卷积IGCN来解决上述问题。主要包含三个部分:

  • 历史特征生成层:基于MAML(元学习的一种)生成初始特征,并且能够快速适应
  • 时间特征学习层:首先聚合来自局部邻域的特征以通过图卷积更新每个子图中每个用户/商品的embedding,然后通过增量时间卷积网络(iTCN)融合来自最后一个子图和当前子图的用户/商品embedding
  • 偏好解码层:用于预测用户商品交互的可能性。

2. 方法

2.1 IGCN概览

在基于GNN的CF中,新的用户-商品交互可以被认为是一个子图,该子图只包含短时间(比如,一周,一个月)的商品,用户和交互的边。利用增量的方式在新的子图上使原有的推荐模型学得更好,如图所示主要包含三部分:历史特征生成层,时间特征学习层和预测层,具体功能可见“背景”。

IGCN具有以下优势

  • 增量训练。IGCN 只需要在最近交互形成的子图上训练一个时间特征提取模块,然后分别为用户和商品重新训练时间感知特征融合模块,以自动将新特征与上一段时间的特征融合。两个模块都只在新的用户-商品交互上执行,即 IGCN 的训练是增量的;
  • 时间感知和全局感知。在基于最近的交互进行训练后,时间感知特征融合模块可以通过扫描整个用户和商品特征轨迹(全局感知)来自动发现最重要的特征来预测时间用户行为和商品属性(时间感知)。因此,IGCN 可以解决模型再训练中的时间信息丢失问题和基于 RNN 的方法中的“灾难性遗忘”问题。

2.2 历史特征生成层

以序列的方式更新增量模型存在以下两个挑战:

  • 数据稀疏,这也是推荐系统中经常面临的问题。
  • 新用户和新商品,仅在测试时间出现的用户或项目无法合理初始化其嵌入,传统的随机或常量初始化往往导致性能不佳。

当遇到无法获得的embedding时,采用MAML来初始化历史表征,并且可以使模型快速适应。

  1. MAML将训练集中用户和他们的交互数据划分为支持集和查询集,分别用于计算支持损失和查询损失。
  2. 模型参数,即用户和商品的初始embedding随机初始化为
e_u,e_i

,之后就是不断更新他们。

  1. 然后从任务集合中采样出不同的任务,为每个任务生成用户历史表征
e_u

和商品历史表征

e_i

,然后重复

M'

N'

次得到

E_u in mathbb{R}^{M' times d}

E_i in mathbb{R}^{N' times d}

  1. 两个表征通过时间感知的特征融合模块进行训练,来学习到用户/商品在下一时刻的表征,并在支持集上计算损失来更新
e_u,e_i

  1. 然后同样通过上面的过程计算得到在查询集上的损失,然后通过梯度下降来更新用于初始化的表征
e_u,e_i

总体的流程和传统的MAML是一致的,伪代码如下图

这部分,历史表征生成层就是利用元学习MAML使得当遇到新的用户和商品时,可以结合历史信息更好得初始化他们的embedding。

2.3 时间特征学习层

时间特征学习层主要包含了三个模块,分别是:时间特征提取模块和两个时间感知的特征融合模块。时间特征提取模块用于从当前时间的用户商品交互数据中提取时间信息,时间感知的特征融合模块用于捕获用户和商品特征随时间变化的模式。

2.3.1 时间特征提取模块

对于每个一小段时间的子图,用GCN来学习用户和商品的时间信息。这部分GCN用于提取用户-商品的交互特征然后通过整合邻居节点的特征来丰富每个节点的保证。

通过MF得到t时间的子图中的每个节点的embedding,用户和商品对应矩阵

U^{(t)}in mathbb{R}^{M_ttimes d}

V^{(t)}in mathbb{R}^{N_ttimes d}

,用户和商品在t时间的交互数据为

G_t

的二分图。通过堆叠的多层图卷积层来进行信息传播和特征提取。公式如下,其中

l

为层数,先对用户u周围的邻居商品节点进行聚合,然后对聚合后的embedding与用户embedding进行逐元素相加,再经过全连接层。

begin{aligned} mathbf{u}_{N(i)}^{l} &=text { Aggregate }left(left{mathbf{v}_{j}^{l}, forall j in N(i)right}right) \ mathbf{u}_{i}^{l 1} &=sigmaleft(W^{l 1} cdotleft(mathbf{u}_{N(i)}^{l} oplus mathbf{u}_{i}^{l}right) b^{l 1}right) end{aligned}

其中aggregate聚合函数不是单纯的相加或均值,这里采用重要性感知的聚合函数。如下式,其中表示用户i对商品j的评分,为平均分,D表示商品和用户的度。直观想法是:评分越高表示关联却强;度越高,说明在关联越弱。

begin{aligned} mathbf{u}_{N(i)}^{l} &=sum_{j in N(i)} c_{i j} cdot mathbf{v}_{j}^{l} \ c_{i j} &=frac{mathbf{R}_{i j}^{*}}{sqrt{D(i) cdot D(j)}}, mathbf{R}_{i j}^{*}=mathbf{R}_{i j}-overline{mathbf{R}}_{i} end{aligned}

2.3.2 时间感知的特征融合模块

上述模块是学习到当前时刻的用户和商品的时间特征,这部分的特征融合模块是将不同时间段的这些时间特征融合得到更准确的表征。本节对传统的时间卷积TCN进行改进得到iTCN可用于增量和时间感知的特征融合。令膨胀为d,核大小为ks,则t时间第l层可以表示为下式,σ为ReLU激活函数,X为U或V

begin{aligned} mathbf{H}_{t}^{l} &=operatorname{Conv}left(text { concat }left(left{mathbf{X}_{t-d cdot i}^{l} mid i=0,1, cdots, k s-1right}right)right) \ mathbf{X}_{t}^{l 1} &=operatorname{Dropout}left(sigmaleft(mathbf{H}_{t}^{l}right)right) end{aligned}

经过多层iTCN后将特征进行融合,最后在采用残差连接来防止梯度消失,公式如下,

O_t=sigma(X_t^L X_t)

2.4 偏好解码层

用t-1时的表征来预测t时刻用户对商品可能的交互概率。公式如下,

hat{r}_{ij}=u_i^{(t-1)} cdot {v_j^{(t-1)}}^T

2.5 模型训练

对于显式反馈,比如评分,可以直接采用MSE:

L=frac{1}{N} sum_{t=1}^{T} sum_{i, j in O^{(t)}}left(hat{r}_{i j}^{(t)}-r_{i j}^{(t)}right)^{2}

对于隐式反馈,比如点击,可以采用交叉熵:

L=-frac{1}{N} sum_{t=1}^{T} sum_{i, j in O^{(t)}}left(r_{i j}^{(t)} log hat{r}_{i j}^{(t)} left(1-r_{i j}^{(t)}right) log left(1-hat{r}_{i j}^{(t)}right)right)

3. 结果

image.png

4. 总结

本文主要考虑了用户-商品行为动态变化,以及冷启动的问题。主要采用两个部分,第一部分历史特征生成部分是用元学习的方式,给未见过的用户或商品一个更好的初始embedding第二部分一方面图卷积的方式结合不同的重要性来聚合邻居节点的信息;另一方面,利用改进的时间卷积iTCN来对聚合后的表征进行特征融合,使得考虑到不同时间的信息。

0 人点赞