前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CIKM'21 「腾讯」对比学习+课程学习进行序列行为增广

CIKM'21 「腾讯」对比学习+课程学习进行序列行为增广

作者头像
秋枫学习笔记
发布2022-09-19 11:26:49
4490
发布2022-09-19 11:26:49
举报
文章被收录于专栏:秋枫学习笔记

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,利用预测到的商品填充被屏蔽商品从而得到新的序列数据。接着,得到一系列的增广数据后,这些数据有难有易,利用课程学习,将其划分为多个课程,从难到易对比学习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文和下文有类似之处,可以结合起来看
    • 3.1 Embedding层
      • 3.2 Transformer模块
        • 4.1 上下文感知的数据增广
          • 4.1.1 属性增强的数据生成器
          • 4.1.2 Mask-and-Fill 增强
        • 4.2 从易到难课程增广
          • 4.2.1 Difficulty Evaluator
          • 4.2.2 课程设计
        • 4.3 对比课程学习
          • 4.3.1 损失函数
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档