RecSys'22|CARCA:交叉注意力感知上下文和属性进行推荐

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

关注我们,一起学习~

标题:CARCA: Context and Attribute-Aware Next-Item Recommendation via Cross-Attention 链接:https://arxiv.org/pdf/2204.06519.pdf 代码:https://github.com/ahmedrashed-ml/CARCA 会议:RecSys 2022

1. 导读

本文将用户的上下文信息和商品的属性结合起来考虑,提出上下文和属性感知推荐模型 (CARCA) ,该模型可以通过多头自注意力块将上下文特征和商品属性结合起来。现有的大部分序列推荐方法是采用序列中最近的商品表征和目标商品计算点击来计算评分,而CARCA利用交叉注意力记住计算所有序列商品和目标商品来预测他们的最终分数。利用交叉注意力,计算旧商品和最近商品之间的相关性以及它们对决定接下来推荐哪个项目的影响。

本文的创新点比较简单直接,采用类似Transformer的结构提取用户和交互序列的特征,并构建两个分支,将做分支的注意力机制提取的信息融入有分支,从而构建交叉注意力机制。

2. 问题定义

用户集合

mathcal{U}={1,...,U}

,商品集合

mathcal{I}={1,...,I}

,交互序列为

mathcal{D}=((u_1,i_1),...,(u_N,i_N))in (mathcal{U} times mathcal{I})

,目标是构建推荐模型

hat{p}:mathcal{U} rightarrow (mathbb{R}_0^ )^{mathcal{I}}

预估用户交互商品的概率,损失函数定义为下式,

mathbb{E}_{(u, i) sim p} mathcal{L}(i, hat{p}(u))

这里再考虑商品属性可以表示为

A^{IT} in mathbb{R}^{I times j}

,上下文信息中考虑交互的额外属性,表示为

mathcal{D} = ((u_1,i_1,c_1), ...,(u_N,i_N,c_N))

,常见的c可以是时间戳。则损失函数变为下式,

mathbb{E}_{(u, i, c) sim p} mathcal{L}(i, hat{p}(u,c))

每个用户的交互序列可以表示为

P_t^{u}={i_1^P,...,i_{|P_t^u|}^P}

,对应的属性为

A_t^u in mathbb{R}^{|P_t^u|times j}

,交互的上下文特征为

C_t^uin mathbb{R}^{|P_t^u| times l}

,系统的目标就是预测推荐的商品列表

{i_1^O,...,i_{|O_{t 1}|^u}^O}

3. 方法

为了捕捉不断变化的用户行为

P_t^u

,CARCA 模型利用了两个类似的基于多头自注意力的分支。左分支是一系列自注意力块,用于提取上下文信息和商品特征。右分支由一个多头交叉注意力块组成,该块捕获左分支的特征对目标商品

O_{t 1}^u

的影响,同时考虑目标商品的属性和上下文特征。第二个分支还负责为

O_{t 1}^u

中的每个目标商品生成排名分数。细节如图所示,

3.1 Embedding层

Embedding层提取初始商品的潜在特征,将one-hot转为稠密embedding送到自注意力块。使用了两个独立的embedding函数

phi

psi

。第一个函数

phi

用于提取商品的潜在特征

z_i in mathbb{R}^d

,

i in P_{t}^u cup O_{t 1}^u

。第二个函数

psi

从上下文特征c和商品属性a中提取潜在特征

q_i in mathbb{R}^g

。将它们拼接作为输入,公式如下,

begin{array}{l} z_i=phi(x_i)=x_iW^{phi} b^{phi}\ q_{i}=psileft(a_{i}, c_{i}right)=operatorname{concat}_{c o l}left(a_{i}, c_{i}right) W^{psi} b^{psi}, W^{psi} in mathbb{R}^{(j l) times g}, b^{psi} in mathbb{R}^{g}\ e_{i}=omegaleft(z_{i}, q_{i}right)=text { concat }_{c o l}left(z_{i}, q_{i}right) W^{omega} b^{omega}, W^{omega} in mathbb{R}^{(g d) times d}, b^{omega} in mathbb{R}^{d} end{array}

3.2 自注意力块

用户画像中的用户交互序列embedding为

E^P={e_1^P,...,e_{|P_t^u|}^P}

,目标商品embedding为

E^O={e_1^O,...,e_{|O_{t 1}|}^O}

3.2.1 用户画像级别的自注意力

为了提取用户画像级的特征,将

E^P

输入到一系列多头自注意力块中。首先是输入到自注意力块的第一部分,公式如下,

operatorname{Attention}(mathbf{Q}, mathbf{K}, mathbf{V})=operatorname{softmax}left(frac{mathbf{Q K ^ { T }}}{sqrt{frac{d}{H}}}right) mathbf{V}
begin{aligned} S^{P} &=mathrm{SA}left(mathbf{E}^{P}right) \ &=text { concat }_{c o l}left(operatorname{Attention}left(mathbf{E}^{P} mathbf{W}_{h}^{Q}, mathbf{E}^{P} mathbf{W}_{h}^{K}, mathbf{E}^{P} mathbf{W}_{h}^{V}right)right)_{h=1: H} end{aligned}

下一步是将自注意力层的输出送到第二部分,逐点的两层前馈网络,类似Transformer,公式如下,

begin{aligned} F^{P} &=operatorname{FFN}left(S^{P}right) \ &=text { concat }_{text {row }}left(text { Leaky_ReLU }^{2}left(S_{r}^{P} W^{(1)} b^{(1)}right) W^{(2)} b^{(2)}right)_{r=1:left|P_{t}^{u}right|} end{aligned}

最后,为了捕捉更具表现力的特征,堆叠一系列自注意力块,其中第b(

0 人点赞