查看原文
其他

【综述专栏】基于预训练的推荐系统知识迁移综述

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:知乎—Yuhwa Choong

地址:https://zhuanlan.zhihu.com/p/358313196

这篇笔记是对刘知远老师组综述《Knowledge Transfer via Pre-training for Recommendation: A Review and Prospect 》的精简版翻译。
https://www.frontiersin.org/articles/10.3389/fdata.2021.602071/full
近期预训练模型在知识迁移领域取得了较大成功,其对于减轻推荐系统领域的数据稀疏问题具有一定作用。文章分为三部分:1.回顾现行的推荐系统预训练;2.通过实验验证预训练对推荐系统的增益;3.讨论推荐系统预训练的可能方向。

01

Introduction
推荐系统的目的是通过用户与商品的历史操作记录来获取用户的商品偏好从而为用户推荐商品。
推荐系统在现实场景中经常面临数据稀疏问题,尤其在面对新商品或新用户时,其被称之为冷启动问题。当前针对冷启动问题比较有效的做法是从其他领域或任务迁移知识或集成异质外部知识。
在自然语言处理领域,预训练模型通过知识迁移已经在许多领域取得了巨大成功。预训练模型通常基于大规模莫无监督数据获取通用语言表征,然后基于下游任务进行微调以实现知识迁移。模型可以是浅层的上下文无关的词嵌入(Word2Vec)或深层的上下文语言表征(BERT)。这些预训练模型得到的语言表征不仅仅对不同NLP任务有效,同时也对小样本学习和领域迁移具有重要作用。
在推荐系统领域中,我们可以将使用预训练机制的方法分为两类:一类是基于特征的方法,使用预训练模型从侧信息(如item的描述、知识图谱等)中提取用户和item的特征;另一类是基于微调的方法,直接使用历史用户数据预训练一个大型的推荐系统,再根据下游任务进行微调。通常推荐系统的预训练具有两方面优势:一是预训练任务可以更好地挖掘用户-物品的交互数据以捕捉用户偏好;二是预训练可以将多种不同任务和数据的信息整合到一个通用的用户/物品表征空间,其适用于许多推荐系统的不同场景,如冷启动问题及跨领域迁移等。

02

基于特征的模型
基于特征的模型使用预训练模型对侧信息(如物品描述,知识图谱,社交网络等)直接提升用户/物品的表征。与协同过滤不同的是,协同过滤通常使用用户-物品的交互记录学习用户和物品的表征,而基于特征的模型更关注外部信息,基于外部信息得到鲁棒性高、可迁移性好的特征并嵌入到推荐系统框架中。基于特征的模型将丰富的侧信息与用户-物品交互信息结合起来可以解决数据稀疏问题。
基于特征的模型的目标是基于侧信息对于用户  和物品  分别得到外部特征向量  ,假定基于用户-物品交互记录得到用户和物品的特征向量  ,则模型使用某种聚合函数  将两种特征聚合起来用于后续推荐系统的推荐分值计算:

1. 基于物品内容的推荐

基于物品内容的推荐假设用户更喜欢与他们曾经交互过的物品相似的其他物品。因此模型的目标是将物品的内容表征为通用的低维连续向量。
Liang等基于音乐标签预测任务预训练了一个音乐表征网络。对于推荐系统中文本数据的处理,如评论、微博、新闻等,预训练的词嵌入或预训练的句编码器被广泛应用。有些工作简单使用词嵌入向量的平均来表征整个文档,有些工作则设计复杂的文档表征网络(如层级LSTM网络、R-GCN等)来表征整个文档。类似的,预训练机制也在推荐系统的图像特征提取中被广泛应用 。

2. 基于知识图谱的推荐

基于知识图谱的推荐引入外部知识图谱作为侧信息以提升用户和物品的表征。用户特征、物品属性 、跨域物品关系等信息都可以集成到知识图谱中,因而知识图谱可以辅助推荐系统抽取更通用的知识并为推荐结果提供一定程度上的可解释性。
在不同任务中构造知识图谱的方法各不相同。部分工作将物品和关联属性构造成知识图谱,部分工作将用户资料、用户行为、物品属性等构造成用户-物品知识图谱。通过用户-物品的异质图我们可以直接对用户-物品的潜在关系进行建模。
为了充分利用知识图谱的信息,部分方法使用知识图谱嵌入技术将图谱编码为低维预训练向量。实验结果表明知识图谱可以显著提高推荐系统的性能。

3. 基于社交网络的推荐

基于社交网络的推荐主要对用户之间的社交联系进行编码。Homophily (同性相吸)理论表明一个用户总会与他们的社交对象趋同。与基于知识图谱的推荐类似,许多社交推荐系统对社交网络进行 预训练嵌入,将嵌入向量集成到推荐系统中。


03

基于微调的模型
基于特征的模型重点在于通过对侧信息的利用来提升对用户和物品的表征,而基于微调的模型则重点在于对大规模的用户-物品交互信息进行充分的挖掘。基于微调的模型对大规模的用户-物品交互数据进行预训练,然后使用下游数据进行微调。基于微调的模型可以划分为两类:一是基于浅层神经网络的方法;二是基于深层残差网络的方法,其中又分为基于BERT的方法和基于参数有效的预训练卷积神经网络方法。

1. 基于浅层神经网络的模型

早期工作尝试使用浅层MLP或RNN作为基础模型完成知识迁移任务。在源领域中对用户和物品嵌入进行预训练,然后将其迁移到目标领域作为热启动表征。实验结果表明这种简单的方法也能显著提升推荐系统在数据稀疏情况下的效果。
DUPN模型通过多个推荐任务(CTR预测,消费偏好预测,价格偏好预测)进行预训练以得到统一的用户表征。其将用户交互数据作为序列输入,使用LSTM和Attention作为用户表征层。实验结果表明该方法不但提升了推荐系统的效果,而且提升了新任务下的收敛速度。

2. 基于BERT的模型

为了提取用户的动态偏好特征,部分研究尝试对用户的时序交互序列信息进行挖掘,也被称为session-based推荐。与NLP挖掘字词序列特征类似,session-based推荐任务将物品序列信息作为挖掘对象,将时间序列上的信息作为补充信息。由于BERT在NLP任务上取得了巨大的成功,部分研究者参考BERT的预训练思想将其引入到推荐系统预训练中。

2.1 Masked Item Prediction

与NLP任务中的MLM任务相同,对于一个用户的交互序列  ,其中表示用户在第i个时间步上的交互物品,每次对于序列中的元素依概率随机替换为[MASK],模型需要预测被遮罩覆盖的物品是哪一个。
与传统的从左至右的下一个物品预测(Next Item Prediction, NIP)任务不同的是,MIP任务是基于全局信息的,因此基于MIP任务进行预训练的模型更能充分挖掘上下文信息。

2.2 BERT在推荐系统中的结构

标准BERT的Transformer结构在此不再赘述,主要针对推荐系统中对BERT的改进加以阐述。
BERT4RS使用了两层Transformer的模型在MIP任务下进行预训练,其在session-based下一物品预测任务中取得了STOA的效果。BERT结构和MIP任务都显著提升了 性能,同时他们发现在更大规模数据集上堆叠更多的Transformer网络 可以进一步提升模型效果。Chen等使用基于内容的CTR预测任务对BERT4RS进行微调,取得了较好的效果。
部分下游推荐任务,如下一购物篮推荐(next basket recommendation)和列表级推荐(list-wise recommendation)等,需要模型在物品序列中抽取特征,因此其在预训练过程中加入了NBP(Next Basket Prediction)任务,其中的购物篮(basket)是指一个由多个物品组成的序列,NBP任务与标准BERT中的NSP(Next Sentence Prediction)相似,给定两个购物篮的情况下,模型预测第二个购物篮是否为第一个购物篮后面的一个,具体实现细节也与NSP任务设置相同。

3. 基于参数有效(Parameter-efficient)的预训练模型

预训练机制可以使模型更好地从用户历史行为中提取用户偏好特征,实验结果也表明其能够显著提高推荐的效果。但对于大规模预训练模型的微调对算力和内存上有比较高的要求,其对于低资源设备不够友好。
如下图所示 ,Yuan等提出Peterrec,使用基于神经网络移植的模型修补(Model Patch)技术对预训练模型进行修改,在保持原始参数不变的情况下仅对插入的MP层参数进行训练,其训练参数量降低至原始预训练模型的10%,可以有效降低微调时的算力需求。

Peterrec结构示意


04

推荐系统预训练模型的实验

1. 数据集

文章使用MovieLens数据集进行测评。更具体地,文章使用MovieLens-1ms(ML-1m)数据集,其中每个用户-物品交互数据包含一个时间戳和一个取值范围1-5的评分值。实验对于数据集中少于5次的用户-物品对予以滤除,并对每个交互对序列选取最后五个物品作为验证集(每个用户两个)和测试集(每个用户三个)。
为了验证模型的跨域知识迁移能力,基于电影的风格类别将数据集划分成两部分:ML-1m-src和ML-1m-tgt,其中的目标域数据集ML-1m-tgt规模小于源域数据集ML-1m-src。为了进一步验证模型的冷启动性能,文章对目标域数据集中的序列交集予以剔除,使得每个用户的点击序列长度小于10。
在原始数据集外,使用了IMDB 5000电影数据集作为物品的侧信息,对每一部电影提供了其导演及前三名主演的信息。

2. 任务设置和基线模型

文章使用了两种任务对模型进行测试:下一物品预测(NIP)和评分预测。对于每一任务,模型都在ML-1m-src上进行预训练,并在ML-1m-tgt上进行微调和测试。
下一物品预测:
给定用户历史交互序列的情况下预测用户可能的下一交互物品。训练的负样本从训练数据中生成。由于电影评分行为不是严格的时序序列,所以文章认为测试集中的三个物品是完全等价的顺序。文章使用归一化折扣累计收益(NormalizedDiscountedCumulativeGain,NDCG@K)和召回率(Recall@K)作为测评指标。所有电影都使用IMDB 5000作为侧信息补充。
基线模型选择了Caser和BERT4Rec。Caser是一种浅层推荐模型,其结合横向和垂直向CNN对用户和物品进行特征抽取完成表征。BERT4Rec使用BERT结构完成session-based推荐任务,文章提高了BERT4Rec的模型深度以分析深层预训练模型的潜力。
评分预测:
给定用户信息、历史评分数据和电影信息,预测用户可能的评分。文章将评分预测任务构造成一个回归任务,使用RMSE和MAE作为测评指标。文章使用BERT4Rec和DACF作为基线模型。

3. 模型设计选择

为了分析不同模型设计上的选择对预训练推荐系统的性能影响,文章对知识迁移方法、预训练任务及是否使用额外知识进行了对照实验。

知识迁移方法

1. 只迁移模型的Embedding层,将其他层都随机初始化,并在目标域数据集上重新训练。这种方法可以看做仅迁移了用户和物品的表征知识。

2. 将模型整体迁移,在目标域数据上整体进行微调。这种方法可以看做在表征知识之外还迁移了用户与物品交互的知识。
预训练任务

1. 下一物品预测

2. Masked 物品预测

是否使用额外知识

实际对照中,仅将侧信息embedding与物品embedding直接concat起来。

4. 实现细节

模型超参数在验证集上使用网格搜索取得。

Caser模型使用作者的开源实现,batch size为512,隐层维度为100,使用Adam优化器,学习率为1e-3,权值衰减为1e-6。Masked物品预测任务中,物品mask概率为0.2,此外被mask的物品中80%的情况下替换为[MASK],10%的情况保持不变,10%的情况下随机替换为其他物品。

BERT4Rec模型使用其PyTorch实现,batch size为256,隐层维度为128,,使用Adam优化器,学习率为1e-3。用户embedding维度为32,BERT模型中的Transformer层数为6。Masked物品预测任务中,物品mask概率为0.15,其余策略与Caser模型中一致。

当使用额外知识时,Caser模型中侧信息被编码成维度为25的向量,BERT4Rec模型中侧信息被编码成维度为16的向量。

在测试中,负样本大小均为100。

对于评分预测任务,输入侧的评分值被认为是分类标签,评分值和用户-物品交互数据一起经过embedding层编码成维度为128的向量。输出侧是一个评分回归任务。

5. 实验结果

实验结果见下方两个表格。

测试结果1

测试结果2

从表格结果我们可以看出:

1. 预训练方法能够提升全部模型的性能。然而知识迁移方法的性能与模型容量相关。例如对于浅层模型如Caser,embedding迁移比模型整体迁移的效果更好,而模型整体迁移对深层模型如BERT4Rec则效果更好。文章假设用户-物品交互的通用知识可以被高容量模型学习到而提升迁移后的性能。

2. 对于预训练任务,MIP在基于BERT模型上取得更好的效果。一个可能的原因是电影评分行为并不是严格时许相关的序列,因此通过双向信息进行预测的MIP任务可以更好地表征整体信息。然而MIP的优势在Caser上并没有得到体现,这可能与MIP任务在预训练和微调阶段的差异过大有关,而浅层模型难以处理这样的差异。

3. 引入外部知识有效地提升了预训练BERT4Rec模型性能,而外部知识对于预训练Caser模型没有明显提升甚至有负面效果。一方面文章认为浅层模型不能很好地集成外部信息,另一方面外部知识简单的concate到embedding上不能很好的被利用。

4. 预训练同样提升了模型在评分预测任务中的性能。由于该任务并不依赖时序信息,因此DACF性能高于BERT4Rec,而大部分基于微调的模型都是针对时序数据设计的。


05

开放挑战与未来发展方向

尽管预训练模型在推荐系统中表现了其强大之处,但现在仍然存在许多挑战。

1. 冷启动问题。

除了引入侧信息外,部分方法使用小样本学习来减轻模型对数据量的依赖来解决冷启动问题。预训练语言模型可以有效地提升NLP领域中的小样本学习模型性能,类似地,推荐系统领域预训练模型也可能应用于小样本学习问题。

2. 知识提升的预训练问题。

知识图谱可以带来丰富的领域知识、世界知识和常识知识等,当前许多基于知识图谱的推荐系统提升方法还是引入知识图谱嵌入向量的方法,并没有将知识图谱直接引入预训练任务中。而在NLP领域,部分使用知识图谱构造语言模型预训练任务的方法取得了一定的成果,推荐系统领域也可以借鉴这样的思路。

3. 社交关系提升的预训练问题。

有社交联系的用户具有一定程度上的相似性,故社交关系可以被视为用户-物品交互序列中的额外关系,具有社交联系的不同用户的交互序列应当被表征得更加接近。基于这样的想法,可以设计成序列级的预训练任务加以预训练来获得更有表达能力的表征。

另一个可能的方向是使用用户社交关系来提升模型的冷启动能力。然而如果充分利用近邻用户的信息还具有一定挑战。

4. 预训练任务设计问题。

当前所有的基于微调的深度模型都依赖于MIP任务对模型进行预训练,一方面受算力和显存限制,用户交互历史只有最近的部分被用于抽取其偏好特征,另一方面MIP任务只能处理序列数据,而现实世界中异质信息通常最易获取。因此设计新的自监督预训练任务是当前充分利用大规模异质推荐数据的重要任务之一。

5. 模型结构与模型压缩问题。

当前预训练模型通常具有高计算复杂度和高内存消耗,一方面对算力需求大, 另一方面实时计算需求大,因此难以在现实场景中得到部署使用。因此改进模型结构或使用模型压缩算法降低内存占用和计算复杂度是预训练模型大规模应用的迫切需求。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存