该论文是人大和阿里合作的一个序列表征相关的工作,发表于KDD2022。目前大多数序列表征工作基于itemid建模,导致其无法很好地迁移到其它场景中。该论文提出了一种通用的序列表征学习方法(UniSRec,Universal Sequence representation learning approach for Recommendation, named as UniSRec),首先通过item的描述文本学习到跨域的item表征,然后基于跨域的item表征学习到通用的序列表征。具体地,其提出了一种基于参数白化和混合专家增强适配器的item编码架构。为了使得学习到的序列表征更通用,论文通过多域负采样构造了两个对比学习任务。论文在使用Amazon数据集和英国在线零售平台的数据集进行了评测,并且开源了代码

1 背景

在推荐系统中,序列推荐是一项广泛研究的任务,旨在根据用户的历史交互记录向用户推荐合适的项目。已经提出了各种方法来提高顺序推荐的性能,从早期的矩阵分解(例如,FPMC [18])到最近的序列神经网络(例如,GRU4Rec、Caser和 Transformer),这些方法在很大程度上提高了顺序推荐的性能标准。但是现有的工作多基于itemid,这导致其很难迁移到新场景。论文提出了一种叫UniSRec的编码架构,给定用户在多个域的历史行为序列,学习到item和序列的universal表征,并将其用于新场景中。

2 方法

首先给出uniSRec框架的示意图:

简单来说,论文以一种预训练的方式(uniSRec)学习universal表征,然后将其用于其它业务场景中。uniSRec将用户的交互序列作为input。论文中对input做了形式化说明(关于序列推荐问题的形式化问题论文中没有提及,这里也不累述了。)。

给定一个用户序列$s={i_1,i_2,…,i_n}$,$i$表示item i(item i关联了itemid和描述文本),item i的描述文本$t_i={w_1,…,w_c}$,$w_j$表示来自共享词典中的一个词,c是截断阈值。

论文认为,不同域的用户序列存在较大的语义gap,所以对于同一个用户在不同域的序列,将其当做不同序列。另外需要强调的一点是,input提到的itemid仅仅用于形式化说明,论文核心是基于item文本生成和itemid无关的序列表征

为了学习到跨域的序列表征,论文抽象了两个关键问题,分别学习item和序列的universal表征(因为item和序列是基本的数据格式)。

  • 对于学习item表征,论文提出了一种基于参数白化和混合专家增强适配器的域融合机制;
  • 对于学习序列表征,论文提出了两个对比学习任务,即基于多域负采样的序列-item对比任务和序列-序列的对比任务,用于更好地融合不同域的语义信息。

基于上述介绍,UniSRec主要分为三部分:

  • Universal Textual Item Representation
  • Universal Sequence Representation
  • Parameter-Efficient Fine-tuning(介绍如何迁移到下游任务)

2.1 Universal Textual Item Representation

序列表征建模的第一步是将不同域的item表征映射到统一的语义空间。借鉴NLP中的一些工作,这里引入预训练语言模型学习item文本的embedding。

2.1.1 基于预训练的item文本编码

简单来说就是将item的文本送入bert,得到item的embedding表征。

2.1.2 基于参数白化的语义迁移

通过bert可以得到多个域的item表征,但是如果将其简单融合的话会存在较大的语义鸿沟,一些研究表明bert为普通文本引入了非平滑的各向异性语义空间(出自On the Sentence Embeddings from Pre-trained Language Models. In EMNLP2020)。为了解决上述问题,这里引入了参数白化,构造了一个简单的线性变换对bert得到的item表征进行变换。和别的预设均值和方差的白化方法不同,这里的参数白化引入了可学习的参数增强其泛化能力。

2.1.3 基于混合专家增强适配器的域融合机制

通过参数白化可以学习到向同性的item表征,接下来要考虑的是如何融合多个域的item表征,因为在不同域之间存在较大的语义鸿沟。一种简单的做法是,将不同域的item映射到相同的共享语义空间,但是这样做会限制其表达能力,无法捕获不同域的差异。这里作者使用了MoE结构融合多个域的item表征。

2.2 Universal Sequence Representation

因为不同域反映了用户不同的行为模式,所以简单融合多个域的序列是不可取的,这可能会导致跷跷板现象。所以引入了两个对比学习任务,进一步强化不同域item表征的融合。

2.2.1 自注意力序列编码

作者希望基于item通用语义编码,构造一个序列模式。这里使用了transformer机制,将学习到的文本表征(等式3)和位置编码作为输入,输入和更新机制如下:

最终得到序列的初始表征$F^{l+1}$。

2.2.2 多域序列表征

为了获取统一语义空间的序列编码,并在预训练阶段捕捉不同域的语义相关性,作者构造了两个对比学习任务。

1 Sequence-item对比任务

这样做的目的是捕获上下文序列和next item的相关性。和之前next item的预测任务不同,这里使用可跨域的item作为负样本,这样做有助于不同域的语义融合,学到更通用的表征。

2 Sequence-sequence对比任务

sequence-sequence对比任务和sequence-item非常类似,这里不再累述。值得注意的是,这里使用了drop(item drop和word drop)方式增强泛化能力。

3 多任务融合

就是融合连个对比学习任务的loss。

2.3 下游任务微调

分为归纳式和直推式两种。

3 实验

2.1 数据集

论文使用的数据集分为三部分,预训练数据集(Amazon),跨域数据集(Amazon),跨平台数据集(英国在线零售平台)。

2.2 评估

4 个人总结

总的来说,工作是围绕着建设通用化序列表征开展的,idea也比较好。去年我们团队也尝试过类似的思路,用于广告业务,但是效果不是特别明显。当然这其中的原因很多,某些域的数据非常稀疏,这可能最主要的原因。我个人认为这个思路还是值得尝试的,但是在工程中可能需要做必要的简化以应对庞大的数据(个人感觉6个月及以上的数据是必要的,不然数据太稀疏了)。