归纳迁移学习对计算机视觉和 NLP 领域产生了重大影响,但尚未用于推荐系统领域。虽然已经有大量基于建模user-item交互序列做推荐任务的研究,但很少有人尝试表征和迁移这些模型到仅存在有限数据的下游任务。本文深入研究了如何有效地学习单个用户表征,并将该表征应用于各种任务,从跨域推荐到用户属性预测。微调大型预训练网络并使其适应下游任务是解决此类任务的有效方法。但是考虑到每个新任务都需要重新训练整个模型,微调的参数效率很低。为了克服这个问题,论文提出了一种参数有效的迁移学习架构,称为 PeterRec,它可以动态配置到各种下游任务。具体来说,PeterRec 通过注入一系列重新学习的神经网络,允许预训练的参数在微调期间保持不变,这些神经网络虽小但与学习整个网络一样具有表现力。论文通过一系列消融实验展示了用户表征在五个下游任务中的有效性。此外,作者证明了 PeterRec在多个领域迁移学习的有效性,与微调整个模型参数相比,PeterRec实现了相当或更好的性能。代码和数据集可在 https://github.com/fajieyuan/sigir2020_peterrec 获得。

1 介绍

在过去10年的工作中,社交平台产生了各种各样丰富的item序列,然而大部分工作集中在同平台/领域的序列推荐任务,很少有工作利用这些数据学习用户的通用表征,用于其它下游任务,例如不同推荐平台的用户冷启动和用户属性预测等。

作者希望通过学习用户的通用表征用于下游各种任务。具体地,作者尝试使用神经网络,从具有丰富user-item交互序列的源域出发,以无监督(自监督)的方式进行预训练得到用户的embedding,用于目标域的各种任务(目标域的用户是新/冷的)。为此需要解决以下问题:

  • 构造一个高效通用的预训练模型,可以在无监督情况下建模非常长的user-item交互序列;
  • 开发一个微调架构,可以将预训练的用户表征用于下游任务;
  • 引入一种自适应方法,使得微调架构在所有下游任务中共享大部分参数。目的是在昂贵的计算代价和效果之间做折中。

为了解决第三个问题,两种迁移技术被广泛使用:

  1. 微调额外的输出层将知识从源于迁移到目标域;
  2. 微调最后一个或几个隐藏层和输出层

事实上,仅对输出层进行微调通常在推荐场景中效果不佳,适当微调最后几层有时效果会更好,但是这需要大量手动工作,因为要调整的层数取决于预训练和模型和目标任务。在实践中,层数的选择往往依赖于低效的超参数搜索,另外这也并没有实现共享预训练模型大多数参数的目标。

为了实现前两个目标,作者提出了两阶段的训练过程。

  • 基于顺序神经网络nextItnet对用户的点击序列做序列推荐任务(next item);
  • 使用监督目标让预训练模型适应下游任务。

为了实现第三个目标,即实现微调模型在不同域之间的高度参数共享,作者借鉴了learn-to-learn方法(参考文献【Learning feed-forward one-shot learners】),learn-to-learn的思想是神经网络的参数可以从另一个神经网络预测得到。此外,【Predicting parameters in deep learning】证明了给定神经网络一个层中5%的参数,剩下95%的参数可以预测得到。作者将这个思路用到了推荐系统的迁移学习任务。具体地,作者提出了一个嫁接神经网络(也被叫做模型补丁),使预训练模型中每个卷积层的参数适应目标任务。每个模型补丁由原始卷积层不到10%的参数组成。通过将这些模型补丁插入到预训练模型中,微调网络不需要改变预训练参数,就可以成功应用到下游任务而不降低性能。作者将提出的模型命名为PeterRec。

本文的主要贡献如下:

  • 提出了一种通用的用户表征架构,自称是第一个将得到的用户表征用于用户基础信息的预测(性别年龄等);
  • 提出了一个简单但有效的嫁接网络,允许微调网络不改变预训练参数就可以应用于下游任务;
  • 提出了两种将模型补丁嵌入到预训练模型中的方法:串行插入和并行插入。
  • 微调时对五中不同任务做了广泛的消融分析;
  • 发布了用于迁移学习的高质量数据集。这是第一个用于迁移和多领域学习的大规模推荐数据集。

2 相关工作

2.1 序列推荐模型

序列推荐(SR)模型是将用户对物品的交互序列作为输入,预测用户喜欢的下一个物品。在对用户的序列动作建模时,相比于传统的基于内容的推荐方法,SR被证明有明显的准确率提升;SR的另一个优点是不需要用户的基础信息。对于SR问题,研究人员主要关注三个方面的工作:

  • 基于RNN的建模。训练过程中严重依赖于顺序,无法充分利用并行计算架构GPU,而基于CNN和基于attention的推荐方法在训练过程中可以观察到整个序列,所以不存在这个问题。
  • 基于CNN的建模。kernel较小导致感受野有限,无法成为强序列模型。膨胀卷积解决了这个问题,可以在kernel大小不变的情况下指数级增加感受野大小。
  • 基于attention机制的建模。可能存在时间复杂度和内存问题,其随序列长度呈现二次方增长。

综上,作者选择了基于CNN(膨胀卷积)的方式建模。具体地,选择了因果卷积(nextItNet)和非因果卷积(GRec的双向编码器)构建预训练模型。

2.2 迁移学习和域适应

迁移学习(TL)是从源域中获取知识,去解决不同但相关的目标域问题,而目标域中只有少量的标记数据(监督信号)。和早期专注于浅层分类器的工作不同(例如矩阵分解),现在的TL研究转向DNN作为分类器,这产生了更好的准确率。然而也带来了一些挑战:

  • 如何在有限的资源下进行高效的迁移学习;
  • 在目标域的监督信号稀疏情况下,如何避免过拟合问题。

上述研究尚未进行有效探索,甚至不确定是否可以仅通过用户的行为来学习到有效的用户表征,以及是否可以迁移这些表征以改进下游任务。最近的一个相关工作是代表深度用户感知网络的 DUPN 模型。 DUPN 通过多任务学习用户的通用表征,这造成一个局限,就是需要依靠许多附加特征进行预训练;另外对于迁移学习问题,DUPN只考虑了微调所有预训练参数和最终分类层,成本较高。相比之下,PeterRec 通过单loss进行预训练用于下游多个任务,且PeterRec只微调了一小部分注入参数,但与微调所有参数相比,获得了相当或更好的结果。。为此,我们将本文中的任务定义为多域学习问题,这与 DUPN 中的多任务学习不同。CoNet [16] 是另一个使用神经网络作为基础模型的跨域推荐模型。为了实现知识迁移,CoNet联合训练了两个目标函数,其中一个代表源网络,另一个代表目标网络。 CoNet 的作者得出的一个有趣结论是,根据经验观察,他们论文中的预训练和微调范式效果不佳。事实上,CoNet 和 DUPN 都没有提供证据表明使用预训练网络进行微调比从头开始微调效果更好,这无疑是推荐系统中 TL 的基本假设。本文证明了PeterRec相对于从头开始训练并对预训练模型微调的方式,显着提高了下游推荐任务的准确性。

3 PeterRec

3.1 定义

  • 源域:$S$,由用户id和用户交互的序列$x^u=\lbrace x^u_1,…,x^u_n \rbrace$组成;

  • 目标域:$T$,由用户id和监督标签y组成。

    下面介绍下peterRec的模型设计。如下图所示,左边是预训练模型,右边是微调模型。在预训练模型中,$\tilde{\Theta}$包括embedding和卷积层的参数,$H(\tilde{\Theta})$是预训练网络,$w(\hat{\Theta})$是是预训练网络的分类层。$\tilde{H}(\tilde{\Theta}; \vartheta)$是微调网络,微调网络中的$\tilde{\Theta}$指的是预训练好的embedding和卷积层的参数,$\vartheta$是模型补丁。$H(\tilde{\Theta})$和$\tilde{H}(\tilde{\Theta}; \vartheta)$共享相同的预训练网络参数,但模型补丁的参数不共享。[TCL]是一个特殊的token作为分类标记,具体可以参考下文介绍的nextItNet网络结构。

3.2 预训练的用户表征

1 预训练目标

和NextItNet类似,peterRec的预训练目标是根据用户的交互序列预测下一个用户感兴趣的item。其概率表示如下:

$\Theta$是预训练模型参数,包括预训练网络参数和分类层参数。如公式所示,相比于DUPN简单将用户交互序列当做特征,这种方式更能充分建模用户的交互序列。论文提到,PeterRec是推荐系统领域的第一个基于无监督自回归的迁移学习模型。

另外,有研究表明,用户的交互序列在表达用户兴趣偏好时并不需要是严格有序的,例如用户点击序列a,b,c和c,a,b其实表达的信息量是等同的。为了缓解严格有序的问题,作者随机mask掉的一些item。

论文没有提出一种新的预训练目标函数,而是介绍了用户表征领域的一些预训练目标函数。

2 预训练网络架构

预训练网络架构是由空洞卷积(DC)层堆叠而成的。每两个DC层由残差模块组成,而每个DC层后面有一个LN层和非线性激活层ReLU(如图3a所示)。

另外,预训练网络通过因果CNN和非因果CNN两种方式被构建,公式如下:

下面是预训练方式。

3.3 用户表征迁移

PeterRec迁移架构包括三部分:

  • 预训练模型(分类层除外)
  • 作用于下游任务的分类层
  • 模型补丁

1 微调架构

首先介绍下预训练模型的架构。以因果CNN为例(图2a)。对于每个样本(X,Y),增加一个[TCL]标识到序列X的末尾,即$x^u=\lbrace x_1^u,..,x_n^u,[TCL] \rbrace$,然后对$x^u$做一系列卷积操作,得到token对应的embedding矩阵,然后在[TCL]对应的embedding $h_n$后面增加一个分类层,得到各个label的score。

非因果CNN也类似,区别在于非因果CNN是在$x^u$的首尾都增加了[TCL]标识。

另外值得一提的是,论文对不同的下游任务使用了不同的loss。对于topN推荐任务使用了BPR损失,对于用户属性预测任务使用了交叉熵损失。

2 模型补丁

模型补丁其实也是一个神经网络,其目的是使预训练的DC残差块适应下游任务。最近一个learn-to-learn的研究表明,可以根据模型5%的参数预测剩下95%的参数。作者希望不微调所有参数,二是通过微调部分参数在下游任务中实现更好的性能。模型补丁的结构如图3f所示,由两个卷积层(kernel 1×1,维度k,通道d),一个Relu激活层和一个残差结构组成。这里使用其它的模型补丁也是可以的。

3 插入方法

作者介绍了两种插入方法,串行和并行,如图3bcde所示。

  • 对于串行插入,插入位置非常灵活,因此可以在层标准化之前或之后注入嫁接补丁,如(b)和(c)所示。
  • 对于串行插入,每个 DC 残差块的补丁数量非常灵活,可以注入一个或两个补丁。 如果 (c) 中的 k 是 (b) 中的 k 的两倍,它会给出几乎相同的结果。
  • 对于平行插入,PeterRec 对插入位置很敏感,如 (d) 和 (e) 所示。 具体来说,在层归一化之前注入的模型补丁(即(d))比层归一化和激活函数之间的模型补丁表现更好,后者的性能大大优于激活函数之后的模型补丁(即(e))。
  • 对于并行插入,在 DC 块中插入两个补丁的 PeterRec 通常比只插入一个补丁的效果略好

最终需要微调的参数减少到1.7%。

4 实验

实验环节,作者重点论述了四个问题:

  • 自监督学习用户表示真的对下游任务有帮助吗? 作为推荐系统领域迁移学习的基础研究问题,这在以前从未得到验证。
  • 与微调最后一层和整个模型相比,PeterRec 提出的模型补丁的效果如何?
  • PeterRec 可以估计哪些用户属性? 当用户在目标域中是冷的或新用户时,PeterRec 是否能正常工作。
  • 是否能通过 PeterRec 的消融分析得出其它有趣的结论?

以上问题的回答可以看下论文。

4.1 数据集

数据集来自腾讯业务,源域数据是QQ浏览器的新闻推荐数据,目标域数据是QQ看点的新闻交互数据。源域数据比较丰富,人均50个标签;目标域数据比较稀疏,大概人均5个标签。

4.2 评估

为了评估 PeterRec 在下游任务中的性能,作者将目标数据集随机分为训练集(70%)、验证集(3%)和测试集(27%),使用两个流行的 top-5 指标(MRR@5和 HR@5),用于冷启动推荐数据集(即 ColdRecs);准确率指标用于其它三个数据集。