zl程序教程

您现在的位置是:首页 >  其他

当前栏目

CIKM'22「清华+华为」DualRec:考虑过去和未来信息的双网络序列推荐模型

2023-02-26 09:46:45 时间

关注我们,一起学习~

标题:Disentangling Past-Future Modeling in Sequential Recommendation via Dual Networks 地址:https://arxiv.org/pdf/2210.14577.pdf 会议:CIKM 2022 公司,学校:清华,华为

1. 导读

序列推荐(SR)在个性化推荐系统中发挥着重要作用,因为它从用户的实时增长行为中捕获动态和多样的偏好。与标准的自回归训练策略不同,未来数据(在训练期间也可用)已用于促进模型训练,因为它提供了关于用户当前兴趣的更丰富的信号,并可用于提高推荐质量。然而,这些方法存在严重的训练推理差距,即,在训练时,过去和未来的上下文都由同一编码器建模,而在推理过程中只有历史行为可用这种差异可能导致性能下降。为了缓解训练推理的差距,本文提出了一种新的框架DualRec,该框架通过一个新的双网络实现了过去-未来的解耦和过去-未来相互增强。具体而言,利用双重网络结构分别对过去和未来的环境进行建模。双向知识迁移机制增强了双网络学习的知识。

2. 方法

2.1 问题定义

用户集合为

\mathcal{U}=\{u_1,...,u_{|\mathcal{U}|}\}

,商品集合为

\mathcal{I}=\{i_1,...,i_{|I|}\}

,序列为

S^{(u)}=\{i_1^{(u)},...,i_{|T_u|}^{(u)}\}

,序列推荐的任务就是基于上述序列,预测用户

T_u+1

时可能交互的商品

i_{T_u+1}^{(u)}

,可以表示为下式,

p(i_{T_u+1}^{(u)}=i^{(c)}|S^{(u)})=SeqRecModel(S^{(u)},i^{(c)})

2.2 基编码器

2.2.1 Embedding层

将输入的用户行为序列

S^{(u)}

转换为固定长度的序列

s=\{i_i,...,i_n\}

,多的裁剪,少的补充。商品 embedding,对于所有的商品构建一个商品的embedding矩阵,

E^{I}\in \mathbb{R}^{|I| \times d}

,那么用户序列可以编码为下式,

X^{(0)}=(e_1,...,e_n),e_k=LookUp(i_k,E^I)

位置embedding,和常用的Transformer一样,需要考虑位置embedding,本文考虑的是相对位置关系,公式如下,

p(i,j)=LookUp(Dist(i,j),E^{P})

Dist(i,j)\in [-n+1,n-1]

表示两个商品之间的相对距离,

E^{P} \in \mathbb{R}^{(2h-1) \times h}

表示位置embedding,h为多头自注意力机制中的头的数量。

2.2.2 Transformer层

经过embedding层之后,将

X\in \mathbb{R}^{n \times d}

输入到多头自注意力层捕获行为之间的关系。每个头的计算方式如下,

\operatorname{head}_{i}=\operatorname{softmax}\left(\frac{\left(\mathbf{X W}_{i}^{Q}\right) \cdot\left(\mathbf{X W}_{i}^{K}\right)^{\top}}{\sqrt{d / h}}\right)\left(\mathbf{X W}_{i}^{V}\right)

将每个头拼接后,经过线性映射,

\operatorname{MSA}(\mathbf{X})=\text { Concat }\left(\text { head }_{i}, \text { head }_{2}, \ldots, \text { head }_{h}\right) \mathbf{W}^{o},

最后经过非线性层前馈神经网络以及layernorm,总体过程和常见的Transformer是一致的,

\operatorname{PFF}(\mathbf{X})=\mathrm{FC}(\sigma(\mathrm{FC}(\mathbf{X}))), \mathrm{FC}(\mathbf{X})=\mathbf{X W}+\mathbf{b}
\begin{array}{l} \mathbf{H}^{(l)}=\operatorname{LayerNorm}\left(\mathbf{X}^{(l-1)}+\operatorname{MSA}\left(\mathbf{X}^{(l-1)}\right)\right), \\ \mathbf{X}^{(l)}=\operatorname{LayerNorm}\left(\mathrm{H}^{(l)}+\operatorname{PFF}\left(\mathrm{H}^{(l)}\right)\right) \end{array}

2.3 Dual Network

为了利用未来的信息,同时缓解潜在的训练和推理的差距,提出了如图2(b)所示的双网络。在双网络模型中,两个编码器(分别表示为过去的编码器和未来的编码器)使用基础编码器实例化,通过基础编码器,过去和未来的建模被明确地分离。对于目标商品,两个编码器执行双重任务,即,过去的编码器执行下一个商品预测,而未来的编码器执行前一个商品的预测。通过这种方式,未来数据以单独的方式建模,而不会明显干扰历史交互数据的建模。

两个编码的embedding层是共享的,从而提高embedding学习的有效性。双重自注意力,在双任务设置中,每个编码器都是一个单向自回归模型,其中过去的编码器学习过去到未来的自回归函数,而未来的编码器学习相反的未来到过去的自回归功能。本文使用因果注意掩码来确保因果关系。如图2(a)所示,对于过去的编码器,禁用

Q_i

K_j

(j>i)的连接。同样,对于未来编码器,禁用

Q_i

K_j

(j<i)的连接。

2.4 双向信息迁移

上述双网络独立地计算具有过去和未来信息的商品的表征,这忽略了两个编码器之间的交互。然而,过去和未来编码器捕捉到的用户偏好是密切相关和互补的。因此,过去和未来行为的建模可以相互增强。此外,在实践中,用户兴趣是多尺度的,因为通常既有稳定的长期兴趣,也有动态的短期兴趣。

2.4.1 多尺度兴趣提取

用户的兴趣可以分为局部兴趣、全局兴趣和其他尺度的兴趣。现有方法只考虑过去行为中的短期和长期兴趣。这里,考虑了用户对历史和未来行为的多尺度兴趣。本文提出了一种多尺度方案,该方案在不同的时间尺度上提取用户的兴趣表征。多尺度方案可以通过在不同头部添加多尺度掩码来与多头自注意机制协作,从而聚合具有不同感受野的信息。具体来说,根据头的id为每个头分配窗口大小i和序列长度n,其中WS(i)为第i个头的窗口大小,h/2前后的头采用不同的尺度扩展方式。

W S(i)=\left\{\begin{array}{ll} i+1 & \text { if } i \leq \frac{h}{2} \\ \frac{h}{2}+\left[\frac{\exp \left(i-\frac{h}{2}\right)}{\exp \frac{h}{2}} \cdot\left(n-\frac{h}{2}\right)\right] & \text { if } i>\frac{h}{2} \end{array} \quad i=1 \cdots h\right.

对于窗口大小为σ, 重写多头自注意机制以适应多尺度方案,其中

head_{i,j}

表示在第j个位置的第i个注意力头,

X_j

表示交互序列矩阵X中的第j个向量,

\sigma > 0

表示过去编码器,反之是未来编码器。

\begin{aligned} \operatorname{head}_{i, j}(\mathrm{X}, \sigma) &=\operatorname{softmax}\left(\frac{\left(\mathrm{XW}_{i}^{Q}\right)_{j} \cdot S_{j}\left(\mathrm{XW}_{i}^{K}, \sigma\right)^{\top}}{\sqrt{d / h}}\right) \cdot S_{j}\left(\mathrm{XW}_{i}^{V}, \sigma\right), \\ S_{j}(\mathrm{X}, \sigma) &=\left[\mathrm{X}_{j-\sigma}, \cdots, \mathrm{X}_{j}\right], \end{aligned}

2.4.2 兴趣级别的知识迁移

在从过去和未来行为中提取用户的多尺度兴趣之后,执行过去-未来知识转移,以使两个编码器相互增强。借用知识蒸馏的思想,并引入正则化项,该项鼓励两个编码器的表征分布彼此一致。通过这种方式,增强了两个编码器捕获的相关和互补用户兴趣。

目标是通过最小化过去和未来编码器在多尺度上的输出分布之间的双向KL散度来正则化模型(图3)。正则化损失计算如下,其中

head^p_{i}

,

head_i^f

分别表示两个编码器中第i个头的输出,KL散度计算方式为

D_{KL}(p||q)=\sum_{i}{p_ilog(\frac{p_i}{q_i})}

\mathcal{L}_{\text {reg }}=\sum_{i=1}^{h} \frac{1}{2}\left(D_{K L}\left(\text { head }_{i}^{p} \| \mathbf{h e a d}_{i}^{f}\right)+D_{K L}\left(\text { head }_{i}^{f} \| \text { head }_{i}^{p}\right)\right) \text {, }

2.5 训练和推理

2.5.1 训练

两个编码器分别提取过去兴趣和未来兴趣,对于第t时的行为,他的过去和未来的输出分别为

o_{t-1}^p

o_{t+1}^f

,通过内积来预测打分,公式如下,

s_t^p=o_{t-1}^p \cdot {E^I} ^{\top},s_t^f=o_{t+1}^f \cdot {E^I}^{\top}

然后通过通过softmax来得到输出的分布,

\hat{y}_t^p=softmax(s_t^p),\hat{y}_f=softmax(s_t^f)

通过交叉熵损失函数构建预估损失,总的损失函数如下,

\begin{aligned} \mathcal{L} &=\alpha \mathcal{L}_{\text {past }}+(1-\alpha) \mathcal{L}_{\text {future }}+\beta \mathcal{L}_{\text {reg }} \\ &=-\alpha \sum_{t=2}^{n-1} \operatorname{OneHot}\left(i_{t}^{\star}\right) \log \hat{\mathbf{y}}_{t}^{p}-(1-\alpha) \sum_{t=2}^{n-1} \operatorname{OneHot}\left(i_{t}^{\star}\right) \log \hat{\mathbf{y}}_{t}^{f}+\beta \mathcal{L}_{\text {reg }} \end{aligned}

2.5.2 推理

推理阶段只有过去编码器起作用,基于历史交互数据来进行预估。

3. 结果