Press "Enter" to skip to content

总结下自己做过的深度召回模型

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

作者 | 雨下

 

整理 | NewBeeNLP

 

大家好,这里是NeeBeeNLP。今天分享学弟『雨下』的深度召回模型总结。他从毕业后, 一直在公司里做召回模 型的相关工作,尝试过 大量的召回模型,并进行了大量的线上AB实验验证了这些这些模型上线的效果。 感兴趣的同学可以文末下载论文了解具体的模型方法。

 

 

 

一、召回模型简述

 

推荐系统的架构一般大致分为召回和排序(包含粗排、精排)两个步骤,如图一所示。召回在英文中经常被写成“matching”或者“candidate generation“。

 

召回的主要任务是从大量的后续集中筛出一部分数据,然后输入到排序中。召回主要分为非模型召回和模型召回。非模型召回往往是非个性化的召回方法,比如热点召回等。模型召回现在大多数是深度学习的方法,因为引入了用户特征,因此是个性化的。

 

现在的推荐系统都采用多路召回,即包含多个召回方法。每个召回方法分别取出一定量的数据,合并后一起输入到排序中。采用多路召回的好处可以保证每种类型的数据都可以被推荐出来,比如热点、个性化、最近点击、关注等。召回中也可以包含多种深度召回模型。因为召回模型面对的是所有的候选集,计算量有限,因为模型能力也有限。多种不同类型的召回模型可以弥补彼此的缺陷,保证尽可能地取出用户感兴趣的数据。

 

图1:推荐流程

二、YoutubeDNN

 

论文《Deep Neural Networks for YouTube Recommendations》是谷歌团队发表的。论文提出了一种召回和一种排序模型。召回模型如图2所示。

 

模型的输入是用户的特征:看过的视频、搜索过的词条、年龄、性别等。通过神经网络产生用户向量。

 

Training阶段用向量去预测用户观看的视频,此时也会产生视频向量

 

Serving阶段用户的向量是实时产生的,视频向量是Training已经产生的

 

线上召回时,用approximate nearest neighbors(ANN)方法和用户向量,在所有的视频向量中检索出最近的N各相近向量。

 

图2: YoutubeDNN模型

三、经典双塔模型

 

另一类经典的召回模型是双塔模型,其论文见《Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations》,方法见图3。

 

双塔是指产生用户和item的向量的两个神经网络,这两个神经网没有交互。用户侧的神经网络输入用户特征,item侧的神经网络输出item的用量。产生的向量先L2 normalization再点积。计算损失函数时,用了一种batch内的交叉熵。对于一个batch的数据,一个样本中只有一个用户与对应一个item是正样本,其它item都与这个用户匹配成负样本。

 

Batch内的交叉熵的一个问题是:热门的item(点击次数较多的)当成正样本的概率较大,因为更容易被召回。但是热门的item往往不能反映用户的兴趣。

 

因此作者提出了一个矫正的方法。在计算用户和item的相似度时会减去log(item被点积的频率)。其实这样计算往往可以增大用户对冷门item的相似度,减小对热门item的相似度。我也曾试过不加频率矫正,发现线上和线下指标都有明显的下降。

 

双塔模型时召回中最常用的方法,后续也有很多对双塔改进的方法。双塔模型应该是现在召回模型中应用最广的模型了。现有也有公司将双塔模型用于粗排中。

 

图3: 双塔模型

四、多向量召回

 

之前的深度召回模型给每个用户学习一个向量。然而,一个向量很难反映用户的多个兴趣。最近,由很多公司提出给用户学习多个兴趣向量。每个兴趣向量对应于用户的一种兴趣。在线上召回时,每个兴趣向量独立取出相同数量的item。

 

一个比较流行的多向量模型时MIND,论文《Multi-Interest Network with Dynamic Routing for Recommendation at Tmall》。该方法时阿里巴巴团队提出来的。模型框架见图4。

 

该方法首先提取出N个用户点击过的item,每个item都带有ID和一些附属特征。特征通过embedding后,再通过pool用一个单维的向量表示一个item。N个item的向量经过胶囊网络变为少量的兴趣向量。兴趣向量与个性化向量(other features经过embedding层)串联,再经由几层神经网络输入少量的用户多兴趣向量。

 

胶囊网络可以视为一个聚类的过程,将N个item向量聚成少量几个向量。在训练时,会用target item的向量与兴趣向量做attention,然后再将多个兴趣向量加权聚合成一个兴趣向量,之后再计算sampled softmax loss。

 

图4: MIND模型

另一个多兴趣向量召回模型是comirec(Controllable Multi-Interest Framework for Recommendati),其方法如图5所示。在计算用户的多兴趣向量时,该算法提出了两种方法:一种是胶囊网络。MIND的胶囊网络的投影矩阵在多个胶囊体中是公用的,而comirec是不共用的。另一个是self-attention方法,通过attention计算每个item向量到特定兴趣向量的权重,然后加权聚合item。在召回时,作者还提出了一种增强多样性的平衡函数,即统计item的不同类别数量。

 

我从线上实验的指标看,comirec与MIND并无太大区别。

 

图5: comirec模型

另一个最新的多向量召回模型是微软团队提出的Octopus(Octopus: Comprehensive and Elastic User Representation for the Generation of Recommendation Candidates),该方法可以为不同用户学习不同数量的兴趣向量。图6是该模型的框架图。

 

该方法首先会初始化多个channel向量。为了让每个兴趣向量召回的item差异大,Octopus会在训练时保证channel向量之间的正交性。Octopus会计算user history中的每个item与channel向量的attention权重,并将item放入到权重最大的channel里面,该channel视为被激活了。在每个被激活的channel里面,通过attention权重聚合item的向量。模型只输出聚合后的item向量。channel激活的个数就是用户兴趣向量的个数。Octopus还提出了两种方法让每个兴趣向量召回不同的item数量。

 

线上实验时,Octopus的点击率和召回的多样性高于MIND,但是曝光量低于MIND。

 

图6:Octopus模型

SINE(Sparse-Interest Network for Sequential Recommendation)也是最近被提出的多向量召回模型。与Octopus相似,SINE会先初始化多个channel向量(论文中叫做conceptual prototypes),在训练时也保证了channel向量的正交性。不同的是,SINE会通过self-attention选出最大的K个向量,因此每个用户的输出的兴向量个数是相同的。线下实验时,SINE结果没有Octopus好,因此最终没有上线该模型。

 

五、Transformer召回

 

最近开始探索如何用transformer结构做序列化召回模型。SASRec(Self-Attentive Sequential Recommendation )是一个比较早的应用transformer结构做推荐的,结构如图7所示。

 

用户的点击item会按照时间顺序排列,从左往右。序列化的item经过embedding层后输入到self-attention层。每个item只会与时间在前面的item计算注意力权重。经过transformer结构,也就是多个block,每个item的输出向量用于预测下一个点击的item。最后一个item的item向量用于预测target item。线上召回时也是用最后一次点击的item向量。

 

线上实验时,SASRec有不错的曝光量和高的点击率。

 

图7: SASRec模型

Bert4Rec(BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer)将self-attention的计算由从左到右变为双向的顺序,并且用了bert中mask的训练方法。线上时我也尝试使用了双向的self-attention计算,但没有取得显着的效果。

一起交流

想和你一起学习进步!『 NewBeeNLP』 目前已经建立了多个不同方向交流群( 机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 /  等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要 备注信息 才能通过)

 

 

参考文献

 

Deep Neural Networks for YouTube Recommendations

 

Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

 

Multi-Interest Network with Dynamic Routing for Recommendation at Tmall

 

Multi-Interest Framework for Recommendation

 

Octopus: Comprehensive and Elastic User Representation for the Generation of Recommendation Candidates

 

Sparse-Interest Network for Sequential Recommendation

 

Self-Attentive Sequential Recommendation

 

BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注