当胶囊网络遇到序列推荐

2022-09-19 10:22:04 浏览数 (1)

关注我们,一起学习~

title:When Multi-Level Meets Multi-Interest: A Multi-Grained Neural Model for Sequential Recommendation link:https://arxiv.org/pdf/2205.01286.pdf code:https://github.com/WHUIR/MGNM from:SIGIR 2022

预备知识:胶囊网络https://zhuanlan.zhihu.com/p/264910554

1. 导读

在序列推荐中,最近比较热门的改进方向是:多兴趣学习和图卷积聚合。一些方法通过历史商品聚类来提取不同的兴趣,另一些方法基于历史商品之间的多级相关性细化用户偏好。本文同时考虑这两方面,用这两个方法来互相补充。本文通过结合多兴趣学习和图卷积聚合提出了一个统一的多粒度神经模型(MGNM)。

  • MGNM首先为用户学习历史商品的图结构和信息聚合路径。
  • 然后执行图卷积以迭代方式导出商品表征,其中可以很好地捕获不同级别的复杂偏好。
  • 随后,利用设计的序列胶囊网络,将序列模式注入多兴趣提取过程,从而以多粒度方式实现更精确的兴趣学习。

2. 方法

如图所示,MGNM 由两部分组成:用户感知图卷积和序列胶囊网络。

2.1 问题定义

mathcal{V}={x_1,...,x_M}

表示商品集合,

mathcal{U}={u_1,...,u_N}

表示用户集合,

{b_u}_M^N

是N个用户和M个商品之间的行为序列集,对于每个用户u,序列

b_u={x_1,...,x_m}

,建模的目标就是预测

x_{m 1}

2.2 用户感知图卷积

为了从用户点击序列中提取复杂和高阶的兴趣,考虑图结构和图中不同距离的目标节点的邻居信息的聚合。作者将离散的历史行为转换为完全连接的商品-商品图,与现有方法相比,没有人为地使用共现、同一用户的点击等关系来增强图,因为这种方法经常会引入噪声。在 MGNM 中,节点和用户embedding通过CapsNet的神经聚合进行更新,然后生成自适应图结构。

2.2.1 embedding层

用户embedding表为

U in R^{Ntimes d}

,商品embedding表为

V in R^{M times d}

,有了这两个后,就可以得到交互序列的embedding了,因为序列中的都是商品,用户和对应的序列分别表示为

mathbf{x_u}

mathbf{[x_1,...,x_m]}

2.2.2 图构建

给定用户u的历史行为序列

b_u=[x_1,...,x_m]

,首先将每个商品

x_i

作为一个节点根据点击顺序关系构建图

mathcal{G}_u

。不压缩序列中重复的商品(即多次点击的商品),因为同一个商品的多次点击可以传达更多的用户偏好。然后引入

A in R^{mtimes m}

来表示相应的邻接矩阵,

A_{i,j}

表示从用户u的角度来看商品xi和商品xj之间的相关性。不利用行为模式来推导矩阵 A,而是选择基于它们的隐藏特征来学习这种相关性,如下所示,xu体现了用户感知的概念,使得不同用户对应的相同两个商品的相关性不同但是这样的矩阵是稠密的,为了使其稀疏,增强表达能力,作者在邻接矩阵A上添加L1正则化来逼近一定的稀疏度

A_{i,j}=sigmoid((mathbf{x_iodot x_j)cdot x_u})

2.2.3 图卷积

图卷积部分采用最常见的GCN,公式如下,δ()表示leakyReLU。

begin{aligned} mathbf{H}^{(l 1)} &=deltaleft(tilde{mathbf{D}}^{-frac{1}{2}} tilde{mathbf{A}} tilde{mathbf{D}}^{-frac{1}{2}} mathbf{H}^{(l)} mathbf{W}right), \ tilde{mathbf{D}}^{-frac{1}{2}} &=mathbf{I} mathbf{D}^{-frac{1}{2}} mathbf{A D}^{-frac{1}{2}}, \ mathbf{H}^{(0)} &=left[mathbf{x}_{1}, mathbf{x}_{2}, cdots, mathbf{x}_{m}right], end{aligned}

2.3 序列胶囊网络

通过GCN提取多级商品表征

{H^{(0)},...,H^{(L)}}

后,其中

H^{(l)}=[h^{(l)}_1,...,h^{(l)}_m]

这里就是第

l

层得到的每个节点的embedding。利用CapsNet为每个级别生成用户的多个兴趣。现有的基于多兴趣的推荐工作是利用 CapsNet 通过内置的动态路由机制来组合每个兴趣表征。每个胶囊的输出相当于特定的用户兴趣,但是以往的工作缺乏的时间序列信息的考虑。

作者为CapsNet引入序列编码层来修复这个缺陷。给定

l

级的商品表征,第i个胶囊首先在

H^{(l)}

上执行线性投影,如下所示,

Z_i=H^{(l)}W_i

然后,通过截断的正态分布初始化

g=[g_1,...,g_m]

,其中

g_i

是表示商品xi与胶囊相关性的一致性分数。然后通过softmax函数导出相应动态路由机制的耦合系数

c in R^d

,公式如下,

c=softmax(g)

通过胶囊网络的非线性激活函数得到输出,公式如下,其中

c_j

是上面求得的c中的第j个元素。

begin{aligned} mathbf{o}_{i} &=frac{left|mathbf{v}_{i}right|^{2}}{left|mathbf{v}_{i}right|^{2} 1} frac{mathbf{v}_{i}}{left|mathbf{v}_{i}right|} \ mathbf{v}_{i} &=sum_{j=1}^{m} c_{j} mathbf{z}_{j}^{(l)} end{aligned}

然后使用得到的输出来更新g,

g_i=g_i o_i^{top}z_i

在第一次迭代之后,利用BiLSTM(当然也可以GRU,Transformer等)对序列模式进行编码并通过残差结构更新Zi:

Z_i=Z_i BiLSTM(Z_i)

重复上述过程,对每个胶囊执行总共

tau

次迭代。最后一次迭代中的输出

o_i

被送入全连接层,从而得到第

l

级的第i个兴趣表征

q^{(l)}_i

,如下所示,

mathbf{q}_{i}^{(l)}=operatorname{ReLU}left(mathbf{o}_{i} mathbf{W}_{i}^{prime}right)

假设有K中兴趣,则每一层GCN得到的表征可以得到K个兴趣表征

[q_1^{(l)},...,q_K^{(l)}]

,GCN进过L层,包括第0层,则可以得到(L 1)K个兴趣表征。

2.4 预测和优化

2.4.1 预测

给定一个候选商品

x_t

,首先利用注意力机制推导出第

l

层的用户偏好向量

p^{(l)}_u

,如下所示,其中

alpha_j

为第j个兴趣的权重。然后计算偏好分数

hat{y}_{u, i}^{(l)}=mathbf{p}_{u}^{(l) top} mathbf{x}_{t}

,这个是从第

l

级算出的分数。

begin{aligned} mathbf{p}_{u}^{(l)} &=sum_{j=1}^{K} a_{j} mathbf{q}_{j}^{(l)} \ a_{j} &=frac{exp left(mathbf{q}_{j}^{(l) top} mathbf{x}_{t}right)}{sum_{k=1}^{K} exp left(mathbf{q}_{k}^{(l) top} mathbf{x}_{t}right)} end{aligned}

通过最大池化,即从所有层的预测分数中选取最大的分数作为预测

hat{y}_{u,i}=max(hat{y}_{u,i}^(0),...,hat{y}_{u,i}^{(l)})

2.4.2 优化

begin{aligned} mathcal{L}_{a l l} &=sum_{l=0}^{L} mathcal{L}_{l} theta_{1} mathcal{L}_{1} theta_{2} mathcal{L}_{2}, \ mathcal{L}_{l} &=-sum_{u, i}left[y_{u, i} ln left(hat{y}_{u, i}^{(l)}right) left(1-y_{u, i}right) ln left(1-hat{y}_{u, i}^{(l)}right)right], end{aligned}

如上所示为总体的损失函数,第一项为交叉熵损失函数,第二项为L1正则约束邻接矩阵的稀疏性,第三项为L2正则,约束所有训练参数。

3. 结果

0 人点赞