title:Contrastive Curriculum Learning for Sequential User Behavior Modeling via Data Augmentation
link:https://dl.acm.org/doi/pdf/10.1145/3459637.3481905
from:CIKM 2021
本文和下文有类似之处,可以结合起来看 SIGIR'21 因果推断+推荐系统:利用反事实理论增强用户行为序列数据
1. 背景
将对比学习应用于序列推荐任务中时,会存在两大问题:
增广后的序列数据的数据质量会影响模型性能。现有的数据扩充方法主要采用启发式策略,难以保证数据质量。 在表征空间中,增广的实例不是在整个语义空间中均匀生成的。 本文作者提出的Contrastive Curriculum Learning(CCL)方法,主要包含两方面,分别解决上述问题:
data quality:设计基于模型的数据生成器来生成更可控的样本,根据用户属性信息扩充序列。 sample ordering:使用课程学习策略,从易到难学习。
2. 定义
用户集为
U ,商品集为
I ,以时间顺序排序的用户交互序列为
s_u=i_1 \rightarrow ... \rightarrow i_t \rightarrow ... \rightarrow i_n ,其中n表示序列长度,
i_t 表示时间t时用户u交互的商品。用户属性表示为
\mathcal{A}_u=\{a_1,...,a_k\} 。原始交互序列s增广后得到多个增广后的序列的集合,表示为
Z_u=\{z_1,...,z_j,...,z_m\} ,
z_j 表示第j个增广后的序列。
3. 基模型
本文采用的基模型为Transformer结构的基模型。
3.1 Embedding层 将用户属性
\mathcal{A}_u 中的每个属性转换为embedding,然后用平均池化得到属性表征
a_u \in \mathbb{R}^{d} ,然后重复n次得到
A \in \mathbb{R}^{n\times d} 用于后续和交互的n个商品做计算。将交互信息,用户属性和位置信息 结合,如下式,其中
I \in \mathbb{R}^{n \times d} 表示交互的商品embedding矩阵,P为位置embedding矩阵。
E_I=I+P+A
3.2 Transformer模块 利用上述得到的embedding矩阵,利用Transformer结构得到用户表征。主要是利用多头自注意力机制和逐点FFN,公式如下,其中
F^l 表示第
l 层的输入
\begin{aligned}
\operatorname{MHA}\left(\mathbf{F}^{l}\right) &=\left[\text { head }_{1}, \text { head }_{2}, \ldots, \text { head }_{h}\right] \mathbf{W}^{O}, \\
\text { head }_{i} &=\operatorname{Attention}\left(\mathbf{F}^{l} \mathbf{W}_{i}^{Q}, \mathrm{~F}^{l} \mathbf{W}_{i}^{K}, \mathrm{~F}^{l} \mathbf{W}_{i}^{V}\right),
\end{aligned} \begin{aligned}
\mathrm{F}^{l} &=\left[\mathrm{FFN}\left(\mathrm{F}_{1}^{l}\right)^{\top} ; \cdots ; \mathrm{FFN}\left(\mathrm{F}_{n}^{l}\right)^{\top}\right] \\
\mathrm{FFN}(x) &=\left(\operatorname{ReLU}\left(x \mathrm{~W}_{1}+\mathrm{b}_{1}\right)\right) \mathrm{W}_{2}+\mathrm{b}_{2}
\end{aligned}
4. 方法
如图所示为模型的总体框架图,首先,利用目标用户的属性训练上下文感知的数据生成器,并用生成器生成增广后的序列;然后,利用课程学习衡量增广序列的难度来安排他们;最后,设计对比学习,以从易到难的学习方式,促进用户表征。
4.1 上下文感知的数据增广 4.1.1 属性增强的数据生成器 与其他数据增强任务不同的是,本文希望通过用户行为序列来增强用户表征,因此作者将用户属性考虑在内。训练一个基于3.2中transformer结构的数据生成器,用于生成保留用户属性语义的增广序列。基模型中已经将用户属性信息融入embedding中,作者进一步利用预训练策略融合属性信息和序列语义。给定用户交互序列
s_u 和属性
\mathcal{A}_u ,随机屏蔽序列中的一部分商品,然后通过基于上下文信息恢复原始序列来训练增强模型。例如,替换
i_k 为一个特殊的符号[mask],则表示为
s_{u,\neg k}=\left\{i_{1}, \cdots,[\text { mask }], \cdots, i_{n}\right\} 。屏蔽了商品
i_k 后,利用上下文信息预测商品
i_k 的原始id,这里的信息指
s_{u,\neg k} 和用户属性,根据BERT原理,作者采用双向的上下文信息来预测,如下式,其中
f_k 表示3.2节中FFN得到的
F^l 中的第k个向量,
e_k 表示商品
i_k 的embedding,σ为sigmoid函数。
P(i_k|s_{u,\neg k},\mathcal{A}_u)=\sigma(f^T_kW_1e_k)
上述策略是屏蔽一个商品,可以直接扩展为屏蔽一部分商品。通过这种方式,基础模型能够学习屏蔽商品与上下文信息(即,序列和用户属性)之间的相关性,从而可以使用它来生成与用户的原始属性信息一致的实例。
4.1.2 Mask-and-Fill 增强 mask-and-fill策略用于生成保留用户属性语义信息的高质量序列。对于每一个交互序列s,随机屏蔽
\gamma 部分的商品,令M表示所有被屏蔽的商品的下标,屏蔽操作如下式,
s'=g_{mask}(s_u)=[i_1',...,i_n']
i'_t=\left\{\begin{array}{cc}
i_t \in s_u & t \notin M \\
[mask] & t \in M \\
\end{array}\right. 对于在M里的下标对应的商品,采用特殊符号[mask]替换。然后将增广后的内容填充屏蔽的部分,如下式,这里的P是利用4.1.1中预训练好的模型进行预测生成。
z=g_{fill}(s')=[i_1',...,i_n']
i'_t=\left\{\begin{array}{cc}
i_t \in s & t \notin M \\
i \sim P(\cdot|s_{u,\neg k},\mathcal{A}_u) & t \in M \\
\end{array}\right. 4.2 从易到难课程增广 在对比学习中,语义相近的序列学习起来会更容易,不同难度的任务会直接影响模型的表现,因此本节作者设计了从易到难的训练方式。
4.2.1 Difficulty Evaluator 将增广后的序列z编码后得到d维的embedding
v_z ,然后利用该embedding对用户属性进行预测,如下式,其中
\phi_z \in \mathbb{R}^{|\mathcal{A}|} ,表示对每个属性的置信度,反映用户属性的分布,如果一个增广后的序列预测得到的属性能够很好的覆盖原用户真实属性,则说明该序列是较容易的。
\phi_z=Pr(\mathcal{A}_u|z)=softmax(W^T_2\cdot v_z)
用户属性原始属性用one-hot表示,其分布表示为
\theta_u ,利用JS散度来衡量预测的属性分布和真实属性分布之间的差异,d的值越大说明难度越大,反映修改的语义信息越多。
d(z, u)=\frac{1}{2} K L\left(\theta_{u} \| \frac{\phi_{z}+\theta_{u}}{2}\right)+\frac{1}{2} K L\left(\phi_{z} \| \frac{\phi_{z}+\theta_{u}}{2}\right)
4.2.2 课程设计 利用困难程度的评分,将增广后的数据划分为不同的课程集合。首先,对所有增广后的数据利用difficulty evaluator计算困难程度评分;然后按照评分排序;然后按照等大小划分为N个桶。在每个桶内进行随机打乱,一个桶认为是一个课程。随着课程的学习,不断增加学习难度。
4.3 对比课程学习 4.3.1 损失函数 对于上面分好桶的课程,模型逐个从中进行对比学习,最小化增广序列和原序列表征的相似性,相似性用余弦相似度来计算。将在当前序列中修改的增广序列作为正样本,在同一batch中的其他增广序列作为负样本。
sim(v_u,v_z)=\frac{v_u^Tv_z}{||v_u||||v_z||}
\mathcal{L}=-\lambda * \log \frac{\exp \left(\operatorname{sim}\left(\boldsymbol{v}_{u} \cdot \boldsymbol{v}_{z^{+}}\right) / \tau\right)}{\exp \left(\operatorname{sim}\left(\boldsymbol{v}_{u} \cdot \boldsymbol{v}_{z^{+}}\right) / \tau\right)+\sum_{z^{-} \in \mathcal{N}} \exp \left(\operatorname{sim}\left(\boldsymbol{v}_{u} \cdot \boldsymbol{v}_{z^{-}}\right) / \tau\right)}
5. 实验结果
image.png
6. 总结
本文是针对对比学习用于用户行为序列增广提出的方法,首先 ,该方法通过将真实序列中的一个商品用特殊符号屏蔽,然后结合序列的上下文信息和用户自带属性来预测被屏蔽的商品。然后 ,预训练好上述模型后,通过mask-and-fill,利用预测到的商品填充被屏蔽商品从而得到新的序列数据。接着 ,得到一系列的增广数据后,这些数据有难有易,利用课程学习,将其划分为多个课程,从难到易对比学习。