zl程序教程

您现在的位置是:首页 >  后端

当前栏目

CIKM'21「品趣」序列推荐DT4SR:将序列建模为不确定性分布

序列建模 &# 推荐 21 x27 分布 不确定性
2023-06-13 09:12:48 时间

点击关注我们,提升学习效率

title:Modeling Sequences as Distributions with Uncertainty for Sequential Recommendation

link:https://dl.acm.org/doi/pdf/10.1145/3459637.3482145

from:CIKM 2021

1. 导读

本文主要针对序列推荐,在序列推荐中,用户的偏好的动态变化的,并且序列中的商品转换模式是不断波动的并且具有一定的随机性在里面,因此在序列表征中存在一些不确定性。作者对基于Transformer的序列推荐方法进行改进,提出了基于分布的Transformer,DT4SR。

note:本文比较有意思的地方时,作者采用的是分布的方式,而不是直接使用商品的embedding。

Wasserstein距离:https://zhuanlan.zhihu.com/p/58506295

2. 方法

如图所示,DT4SR主要包含如下几个模块:mean and covariance embeddings, distribution-based self-attention, distribution-based Feed-Forward Network (FFN), and a covariance output layer。

2.1 Embedding层

将每个商品表示为椭圆高斯分布,该分布由一个均值向量和一个对角协方差矩阵控制,即每个商品有两个embedding,均值

\mathbf{E}^{\mu} \in \mathbb{R}^{|\mathcal{V}| \times d}

和协方差

\mathbf{E}^{\Sigma} \in \mathbb{R}^{|\mathcal{V}| \times d}

\mathcal{V}

是商品的集合。为mean transformer和covariance transformer定义可学习位置embedding

\mathbf{P}^{\mu} \in \mathbb{R}^{n \times d}

\mathbf{P}^{\Sigma} \in \mathbb{R}^{n \times d}

,n是最大序列长度。对于超过n的序列就截取最近的n个,对于小于n个的就0填充,序列表示为

S=[v_1,...,v_n]

,将序列表示为均值和协方差表征后可得下式,

\begin{array}{l} \mathrm{E}_{\mathcal{S}}^{\mu}=\left[\mathrm{e}_{1}^{\mu}+\mathrm{p}_{1}^{\mu}, \mathrm{e}_{2}^{\mu}+\mathrm{p}_{2}^{\mu}, \ldots, \mathrm{e}_{n}^{\mu}+\mathrm{p}_{n}^{\mu}\right] \\ \mathrm{E}_{\mathcal{S}}^{\Sigma}=\left[\mathrm{e}_{1}^{\Sigma}+\mathrm{p}_{1}^{\Sigma}, \mathrm{e}_{2}^{\Sigma}+\mathrm{p}_{2}^{\Sigma}, \ldots, \mathrm{e}_{n}^{\Sigma}+\mathrm{p}_{n}^{\Sigma}\right] \end{array}

2.2 均值协方差自注意力

基于部分的自注意力来考虑数值的稳定性,自注意力中的Q,K,V分别为

E^*_SW^Q

,

E^*_SW^K

,

E^*_SW^V

,其中

E^*_S

为序列的均值或协方差表征。为了保证q,k,v数值稳定性,本文采用elu后再做点积,公式如下,其中σ为softmax。带入不同的E可得到mean transformer和covariance transformer。

\mathbf{D S A}=\sigma\left(\frac{\operatorname{elu}\left(\mathbf{E}_{\mathcal{S}}^{*} \mathbf{W}^{Q}\right)^{T} \operatorname{elu}\left(\mathbf{E}_{\mathcal{S}}^{*} \mathbf{W}^{K}\right)}{\sqrt{d}}\right) \operatorname{elu}\left(\mathbf{E}_{\mathcal{S}}^{*} \mathbf{W}^{V}\right)

2.3 均值协方差FFN

FFN层进行了相应的改动,公式如下,比较一目了然,就不赘述了。其他的Transformer结构保持不变,包括LN,残差连接等

\begin{array}{l} \mathbf{F F N}^{\mu}\left(\mathbf{D S A}_{i}^{\mu}\right)=\operatorname{elu}\left(\operatorname{elu}\left(\mathbf{D S A}_{i}^{\mu} W_{1}^{\mu}+b_{1}^{\mu}\right) W_{2}^{\mu}+b_{2}^{\mu}\right) \\ \mathbf{F F N}^{\Sigma}\left(\mathbf{D S A}_{i}^{\Sigma}\right)=\operatorname{elu}\left(\operatorname{elu}\left(\mathbf{D S A}_{i}^{\Sigma} W_{1}^{\Sigma}+b_{1}^{\Sigma}\right) W_{2}^{\Sigma}+b_{2}^{\Sigma}\right) \end{array}

2.4 输出层

然而,一个有效的分布需要协方差矩阵是正定的,而 FFN 层的输出不能保证这个属性。因此,在 ELU 激活后向输出协方差嵌入向量添加一个全为1的向量,其定义如下,其中

O^{(L)}_i

表示商品i在

DSA^{\Sigma}

FFN^{\Sigma}

的第L层的输出,

1 \in \mathbb{R}^d

\Sigma_i=diag(elu(O_i^{(L)})+1)

2.5 损失和优化

Transformers 输出均值和协方差分别推断序列中每个位置的下一个商品的均值和协方差嵌入。使用下一个商品作为序列中每个位置的真实标签。如,给定序列

S^u=[v_1^u,...,v_n^u]

,v_1需要预测的标签是v_2。

2.5.1 Wasserstein距离和损失

相比于KL散度,Wasserstein 距离能够测量两个分布没有重叠时的距离。作者使用2-Wasserstein距离来衡量不同分布之间的差异。给定两个商品i_1,i_2其分布分别为

N(\mu_{i_1},\Sigma_{i_1})

,

N(\mu_{i_2},\Sigma_{i_2})

。Wasserstein距离可以表示为下式,

d_{W_{2}}\left(i_{1}, i_{2}\right)=\left\|\mu_{i_{1}}-\mu_{i_{2}}\right\|_{2}^{2}+\operatorname{trace}\left(\Sigma_{i_{1}}+\Sigma_{i_{2}}-2\left(\Sigma_{i_{2}}^{1 / 2} \Sigma_{i_{1}} \Sigma_{i_{2}}^{1 / 2}\right)^{1 / 2}\right)

2.5.2 损失函数

使用BPR loss来衡量下一个商品是够准确,其中

\hat{t}

表示位置t预测的,

i_t

是真实值,

i_t'

表示没有交互过的负样本。

-\sum_{\mathcal{S}^{u} \in \mathcal{S}} \sum_{t \in\left[1,2, \ldots,\left|\mathcal{S}^{u}\right|\right]} \log \left(\sigma\left(d_{W_{2}}\left(i_{t}^{\prime}, \hat{t}\right)-d_{W_{2}}\left(i_{t}, \hat{t}\right)\right)\right)+\lambda\|\Theta\|_{2}^{2}

3. 实验结果