重磅整理!推荐系统之深度召回模型综述(PART II)

Posted NewBeeNLP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重磅整理!推荐系统之深度召回模型综述(PART II)相关的知识,希望对你有一定的参考价值。

NewBeeNLP原创出品

知乎 | 推荐系统小筑


前情提要

最近读完了李航、何向南的《Deep learning for matching in search and Recommendation》,文章思路清晰,总结详实到位,值得一再翻阅,就想借这篇文章结合自己最近一年多的推荐召回工作内容,总结一下推荐系统中的深度召回模型,论文因篇幅限制,很多模型并未详细介绍,因此本文补充了一些内容。

匹配(matching)是衡量用户对物品的兴趣的过程,也是推荐召回中的工作内容。机器学习中是以learning to match的方式根据输入表示和标记数据学习一个匹配函数。而深度学习在其发展过程中以强大的表示学习和泛化能力加上算力提升、数据规模暴涨都使得深度模型在推荐召回中大放异彩。

本系列文章的总结思路是将推荐中的深度召回模型根据学习内容分为两大类:「表示学习类」和「匹配函数学习类」。

  • 表示学习类召回模型中根据输入数据的形式和数据属性又可以分为无序交互行为类、序列化交互行为类、多模态内容类和连接图类。

重磅整理!推荐系统之深度召回模型综述(PART II)

  • 匹配函数学习类模型则包括双路匹配函数和多路匹配函数的学习。

重磅整理!推荐系统之深度召回模型综述(PART II)

由于篇幅限制,本系列将分成多篇文章分享,本文是第二篇,欢迎持续关注!重磅整理!推荐系统之深度召回模型综述(PART II)

1.2 序列行为上的表示学习

其次是序列行为上的表示学习,数据样本需要考虑用户历史行为的时间顺序。

RNN方法

GRU4Rec

2016年的GRU4Rec利用GRU对用户历史购买的序列行为建模,以用户在一个会话内点击的物品序列为输入,每个物品都以one-hot表示,输出会话内下一个点击的物品,其中会话中每个位置的状态可以是当前位置上物品的one-hot表示也可以是截止到该位置之前所有物品的加权和。

网络结构如下图所示,最终输出一个N维向量,表示下一次点击发生在每个物品上的概率。这里用到的损失函数有两种:

  • 对比正负样本的BPR损失

是采样的负样本数目, 是预测第i/j个物品被点击的概率,第i个物品是正样本,第j个物品是负样本;

  • 另一种是top1损失,正确排序的比例,

重磅整理!推荐系统之深度召回模型综述(PART II)为了解决session长短不一的问题,GRU4Rec使用batch内session并行的方式执行优化,如下图所示。负采样策略使用的基于流行度的采样。重磅整理!推荐系统之深度召回模型综述(PART II)

NARM (Neural Attentive Recommendation Machine )

RNN类方法包括上述的GRU4Rec都有一个问题,就是考虑当前会话内的全部交互行为作为用户短期兴趣建模,而用户行为中通常存在比较多的偶然性噪声,无法得到真正准确的用户兴趣。2017年山东大学在文章(Neural Attentive Session-based Recommendation)中,给RNN增加注意力解决了这个问题。

如下图所示,NARM采用了编码-解码结构,给定用户的点击序列,全局编码器用GRU扫描序列后用最后一个隐状态 表示用户的序列行为;局部编码器用另一个GRU扫描序列并以所有隐状态的加权和表示用户长期兴趣:

表示位置j和t之间的注意力分值, 。最终的序列表示: 和候选物品的embedding都被送入decoder中计算相似度: ,最后再通过一个softmax生成每个候选物品被点击的概率,并使用交叉熵损失优化:

重磅整理!推荐系统之深度召回模型综述(PART II)

RRN(Recurrent Recommender Network)

2017年的RRN模型主要是针对当时流行的推荐系统都认为用户偏好和电影属性都是静态的这一假设提出质疑,认为它们都是随时间变化的。RRN使用两个单独的LSTM对用户/电影状态随时间变化的过程建模,借鉴矩阵分解MF的思想,将某一时刻两者对位状态相乘作为用户对电影的评分。

模型结构图如下,用户/电影的状态定义为:

其中 是将状态映射到Embedding空间的转换矩阵, 是用户在t时刻对M个电影的打分向量或电影在t时刻被M个用户打分的分数向量, 表示用户/电影是新出现的,后面两个是t、t-1时刻的wallclock。

状态更新过程:

表示遗忘门、输入门和输出门。作者取最近的观测状态为输入,以最新的状态为基础,执行状态更新并对未来做预测。文中认为用户/电影状态由time-varing和静态的两部分组成,因此最后预测评分时增加额外的 表示状态中不变的部分,与RNN中得到用的用户/电影表示相加:

重磅整理!推荐系统之深度召回模型综述(PART II)RRN模型使用的是显式反馈数据,损失函数使用RMSE,训练方式采用的是subspace descent方法,即两个LSTM网络依次训练(固定一个网络,训练另一个网络)。

Latent Cross

2018年youtube针对用户行为的时序数据和情景特征,提出RNN推荐模型。文章首先指出在普通的前馈神经网络中将情景特征直接与其他特征共同进入模型的方式对于捕捉特征交叉效果(文中叫低秩关系)不够高效。文中用到的情景特征主要包括时间特征、视频观看设备、跳转来源页面。在RNN中引入情景特征的方式有两种:在输入门中提前融合(pre-fusion)和在输出门中concat(即post-fusion)。重磅整理!推荐系统之深度召回模型综述(PART II)上图是RNN推荐模型结构, 表示当前步和上一步的情景特征,模型将 作为RNN的输入以pre-fusion的方式来影响RNN的隐状态,将 与RNN的输出拼接以post-fusion的方式预测 。基准版模型中,RNN输出和情景特征concat形式的交叉并不高效,因此文章提出latent cross:单特征, ;多特征, ,多情景特征之间使用加法的原因是加法容易训练,乘积或拼接都会增加模型训练的难度,最终效果也不如加法。

CNN方法

将用户交互过的物品的embedding矩阵看做图片矩阵,应用二维卷积。但存在两个难点:这里矩阵长度t随用户不同而变化;这个矩阵可能并没有空间关联。

Caser (Convolutional Sequence Embedding)

2018年的Caser(Convolutional Sequence Embedding Recommendation Model)模型的作者们发现推荐系统中存在多种动态模式,如下图所示。而之前的基于MCs的方法都只能捕获point-level的动态模式,对union-level、union-level with skip的则无能为力,这些购买行为是作为一个整体影响后面的购买行为,不仅仅是马尔科夫链中一一对应的转移概率。重磅整理!推荐系统之深度召回模型综述(PART II)Caser的思路是对序列数据和label采用双滑动窗口采样,来对购买行为的skip特性建模。再将序列数据看作一张二维图像,引入能覆盖全部列的full-width过滤器和确保所有特征图大小相同的max-pooling操作,利用竖直和水平两个方向的卷积核分别捕获用户的序列行为特征,得到用户兴趣表示,然后和user向量合并进入全连接层,最终输入softmax层得到下一个物品被点击的概率,目标函数使用交叉熵。重磅整理!推荐系统之深度召回模型综述(PART II)由于用户行为序列长度长短不一,卷积操作得到的特征图长度也各不相同,因此对特征图使用max-pooling得到维度确定的卷积结果。不过实际上Caser是没有利用交互数据的序列特征的,只是将交互数据按时间顺序组成二维图像,并没有使用到序列中的positional Embedding。

NextItNet

Caser之后还有一些CNN类的模型,主要以提升长序列处理能力为目标,比如2019年腾讯提出的使用空洞卷积和以自回归方式处理序列的NextItNet模型。

腾讯的研究人员认为Caser模型有两个短板:

  1. max-pooling操作并不能分辨出某个重要特征是出现一次还是多次,而且忽视了位置信息,不利于长序列的学习;
  2. Caser中只有一层卷积的浅层网络结构不利于建模长程依赖及复杂关系。因此提出使用空洞卷积替代普通卷积,在不增加参数量的情况下增加感受域(receptive filed)大小;使用残差连接解决堆叠多层卷积核带来的梯度消失问题,进而移除池化层。

下图是普通卷积与空洞卷积的区别。重磅整理!推荐系统之深度召回模型综述(PART II)下图中的(a)和(b)是NextItNet用到的两种空洞残差模块,都是由normalization层、激活层(ReLU)、卷积层和短路连接组成。(a)类模块中包含3个卷积核:一个1*3的空洞卷积和2个常规卷积。(b)类模块中只有两个空洞卷积核。重磅整理!推荐系统之深度召回模型综述(PART II)

为了避免信息泄露,NextItNet对1维空洞卷积使用dropout-mask防止模型看到未来的item信息,即将序列中预测位置之后的物品项padding掉。NextItNet使用交叉熵损失,负采样策略尝试了sampled softmax和kernel-based采样两种,效果无明显差别。

GRec(Gap-filling based Recommender)

2020年上面NextItNet模型的研究人员认为,虽然用户行为是有序发生的,但其中的顺序依赖关系可能并不是很明确,也不一定要将用户会话建模为严格的序列,因此预测目标后面的未来数据也可以用于学习用户兴趣,而当前序列数据建模的两种常用方式,数据扩充和自回归训练都没有利用未来数据。

利用未来数据的一个极大风险就是数据泄露,腾讯的作者们提出基于填空的编码-解码器框架(GRec),解决了数据泄露问题。具体做法是,将用户会话序列中的一部分项通过其他符号(如“_”)隐藏掉,输入编码器学习到各个位置的表示,解码器以额外的Embedding并根据这些表示对隐藏掉的物品项做预测。重磅整理!推荐系统之深度召回模型综述(PART II)

如上图所示,GRec包括:Embedding层、编码器、投影层、解码器和最后的softmax层。

  • 其中,编码器受NextItNet启发使用一系列堆叠的一维空洞卷积,每两个空洞卷积层增加一个残差连接,和NextItNet不同的是,这里编码器的卷积没有因果关系,并以填空的方式让CNN关注到空白位的上下文信息;
  • 解码器中的CNN结构则和NextItNet中保持一致,只是不必预测整个序列,只需要预测被隐藏掉的物品项即可;
  • 为了使编码器和解码器之间的表示带宽最大化,作者在二者之间增加了一个投影网络,即一个倒瓶残差结构:上投影、激活函数、下投影,上下投影之间增加一个短路连接。

PeterRec

2020年腾讯看点的研究团队提出了一种通用用户表示学习架构,采用空洞卷积神经网络构建大型的预训练模型,通过设置一定空洞率的多层卷积网络实现可视域(receptive field)指数级增长,从而捕获和建模超长的用户点击行为,从而实现不需要图像和文本特征即可预测用户画像的目的,如下图所示。重磅整理!推荐系统之深度召回模型综述(PART II)其中,预训练模型中的空洞卷积网络设计和NextItNet中保持一致,每层空洞因子以 增加,因果卷积使用单向自回归和非因果卷积使用双向隐藏优化。微调阶段直接移除预训练的softmax层,添加新任务的分类层,而且在预训练的残差块中以串行或并行的方式插入model patch模块(即一个瓶颈结构的残差块),如下图所示,达到共享大部分参数,只需优化极少量参数就可实现相当甚至更好的模型效果的目的。重磅整理!推荐系统之深度召回模型综述(PART II)

Attention方法

在交互序列的表示学习中引入注意力机制。

NARM(Neural Attentive Session-based Recommendation)

两个GRU分别学习用户行为序列的全局和局部信息,局部信息使用注意力计算。前面RNN方法中已经介绍过,此处不再赘述。

SASRec(Self-attention based Sequential Recommender)

在此之前,序列数据的建模通常采用的是马尔科夫链、RNN或CNN,2018年的SASRec模型则是受Transformer启发,完全基于自注意力机制对用户行为建模。其模型结构如下图所示。输入Embedding由物品Embedding和位置Embedding相加,喂入一系列自注意力模块,每个都包括一个self-attention层和一个point-wise的FFN,即,

其中 ,同时为了避免穿越问题,需要使用mask禁止 之间的所有连接。重磅整理!推荐系统之深度召回模型综述(PART II)为了解决自注意力模块的堆叠带来的问题:

  1. 模型容量增加导致过拟合;
  2. 由于梯度消失导致训练过程不稳定;
  3. 更多的参数需要更长的训练时间,SASRec模型在自注意力层和FFN层后都增加了LayerNorm&Dropout和残差连接,同时在预测层计算相关度: 时,物品的Embedding矩阵N与输入物品的Embedding矩阵共享参数。

通常序列化推荐中学习用户表示有两种方法:

  • 学习显式的用户Embedding表示兴趣,如MF、FPMC、Caser这些;
  • 考虑用户的历史行为,以交互过的物品Embedding学习隐式的用户Embedding。

SASRec采用的是第二种方式,同时也尝试了在最后一层加入显式用户Embedding,即 ,但实验发现增加显式用户Embedding并没有提升推荐效果。

作者在文章中也提到SASRec模型虽然在推荐效果和效率上相比MC、RNN、CNN类方法都有较多提升,但因注意力分值计算的复杂度无法扩展到很长的序列上,未来可以尝试通过限制注意力计算范围或将长序列切分为段等手段优化。

AttRec(Next Item Recommendation with attentive metric learning)

2018年的AttRec与上面的SASRec模型几乎同天发出,这个文章中的四个作者也是前一年《Deep Learning based Recommender System: A Survey and New Perspectives》的作者。文章作者使用自注意力计算item之间的依赖关系得到用户的短期意图,同时使用协同度量学习计算用户和item之间的欧氏距离作为用户的长期偏好,融合长短期兴趣预测下一个推荐物品。AttRec中的自注意力结构如下图所示。重磅整理!推荐系统之深度召回模型综述(PART II)我们主要跟SASRec中的自注意力模块对比二者的异同点,首先是不同的地方:

  • 「self-attention层数」:SASRec中使用多层自注意力模块堆叠的方式,对比实验中使用的都是2层;AttRec中只有一层自注意力模块。
  • 「位置Embedding类别」:SASRec中的实验表示learnable的位置Embedding比fixed位置Embedding表现好;而AttRec中使用的是和Transformer中一样的fixed位置Embedding:
  • 「位置Embedding作用范围」:SASRec中将位置Embedding加到用户历史交互物品的Embedding矩阵上,作用范围包括后面的Q、K、V矩阵;而AttRec中位置Embedding只是加到query和key上。
  • 「Query、Key和Value矩阵的转换」:SASRec中为了让模型更灵活,通过三个不同的矩阵 将输入Embedding映射成self-attention的输入Q、K、V矩阵;而AttRec中,初始的query、key、value矩阵都等于交互物品Embedding矩阵,query和key加上位置Embedding后经过相同的非线性转换层形成Q、K:
  • 「缩放因子取值」:SASRec中认为缩放因子 的作用是防止内积操作中出现过大值,使用的是d=50;而AttRec中认为缩放因子的作用是降低极小的梯度值影响,使用的是d=100.
  • 「mask内容」:SASRec中没有指明mask操作,只是说为了保证模型预测时的因果性避免穿越,会修改得到的注意力矩阵,禁止掉 的连接;而AttRec中的mask操作只隐藏了注意力矩阵的对角位置。
  • 「FFN使用」:SASRec中每个自注意力模块都有point-wise的FFN层;而AttRec的自注意力模块中没有这一网络。
  • 「dropout使用位置」:SASRec中在每个自注意力模块的attention层注意力矩阵计算完成后以及FFN层之后使用layerNorm&dropout;而AttRec是在attention层的非线性层之前使用dropout,即query和key的非线性转换层。
  • 「norm使用」:SASRec中是在attention层注意力矩阵计算完成后以及FFN层之后使用layerNorm&dropout, ;AttRec中是对X、U和V的L2范数做norm clip,
  • 「用户表示计算方式」:SASRec中将最后一个自注意力模块的输出作为隐式用户表示;AttRec中使用每个交互物品的attention表示的均值作为用户的短期兴趣表示。
  • 「待预测物品Embedding来源」:SASRec中为了防止过拟合,待预测的物品Embedding与attention的输入的物品Embedding相同;AttRec中则是使用另外一组Embedding表示。这一点严格来说不算是自注意力模块的不同之处,但也是这两个模型比较重要的不同点。

然后是相同的地方:

  • 「注意力矩阵计算」:二者注意力计算公式是相同的:

上面是从论文内容中对比的结果,目前尚未从源码和实际实验角度分析验证,可能有理解不当之处,之后再补充这部分内容。重磅整理!推荐系统之深度召回模型综述(PART II)AttRec中还有用户长期兴趣的学习,使用U和V表示用户和物品的latent factor矩阵,并计算他们的欧氏距离,距离越小则用户对物品的兴趣越大。度量学习(metric learning)适用于处理稀疏的数据和未观测到的数据,能够避免dot-product违背不等式性质导致次优解的缺点。最终对每个物品的打分计算为:

是控制因子。

SHAN(Sequential Recommender System based on Hierarchical Attention Networks)

2018年7月IJCAI,浙江大学认为用户的长期兴趣是随时间而变化的,不同的item对下一次购买行为的影响是不一样的,且对于不同用户相同item对下一次购买也有不同的影响,因此提出分层注意力网络在序列推荐领域建模用户的长期兴趣和短期兴趣。模型图如下:重磅整理!推荐系统之深度召回模型综述(PART II)

  • 「Embedding Layer」:将用户id、物品id映射成低维稠密表示
  • 「Long-term Attention-based Pooling Layer」:使用注意力机制根据用户到时间t-1为止的所有交互集合学习用户的长期偏好表示, ,最后长期用户兴趣表示
  • 「Long- and Short-term Attention-based Pooling Layer」: 短期兴趣是基于用户在时间t交互的物品集合上学习出来的, ,
  • 「混合后的用户表示」: ,最后打分计算和隐因子模型保持一致:

为了避免对未观测数据产生歧义性,SHAN模型使用BPR loss优化:

其中 是用户和物品的Embedding矩阵, 是注意力网络的权重矩阵。

STAMP(STAMP: short-term attention/memory priority model for session-based recommendation)

2018年8月KDD上,中国电子科技大学针对session-based推荐问题提出根据session上下文计算权重的注意力机制,以达到同时捕获用户长短期兴趣的目的。作者们先提出一个STMP模型,如下图所示,当前会话中的所有的物品Embedding: 为session中各个物品Embedding的平均值, 为最后一次点击的物品Embedding,分别经过两个相同结构的MLP后,,与待预测物品Embedding 三者乘积得到分值 ,再用softmax转换成点击概率, 重磅整理!推荐系统之深度召回模型综述(PART II)

为了提升效果,作者在STMP的基础上增加了注意力机制,即STAMP模型,如下图所示, 仍为session中各个物品Embedding的平均值, 是最后一次点击的物品Embedding, 是待预测的物品集合,这里的注意力权重计算和常规的注意力计算有所不同:

最终注意力网络输出的: ,其他操作与STMP保持一致。模型使用交叉熵损失函数优化:

重磅整理!推荐系统之深度召回模型综述(PART II)

DIEN (Deep Interest Evolution Network)

2018年11月的DIEN与同年9月的DIN是同一作者提出,DIEN是在DIN的基础上做的改进,相比DIN中考虑用户兴趣的多样性,使用注意力机制建模待预测物品和用户交互历史的相对关系,DIEN则认为直接将用户行为看做用户兴趣的方式不够高效准确,且用户兴趣是随时间动态变化的,因此需要从用户行为历史中单独抽象出用户兴趣并对兴趣的动态变化建模。重磅整理!推荐系统之深度召回模型综述(PART II)DIEN的模型结构如上图所示,阿里的在线广告系统中用到了四类特征:用户画像、用户行为、目标广告物品特征、上下文环境特征。所有特征均接入Embedding层,其中用户行为特征是是一个one-hot序列,经过Embedding层之后得到一个长度为T的Embedding矩阵,常规操作是将这些Embedding执行Pooling操作后和其他三类特征的Embedding拼接起来送入MLP,再通过交叉熵损失

优化整个模型。而DIEN中是将Pooling操作替换成兴趣提取层和兴趣变化层:

  • 「interest Extractor层」:使用GRU对用户行为之间的依赖进行建模,输入是用户行为的Embedding矩阵。隐状态 只能学习行为之间的依赖,并不能有效表示用户兴趣。而 中只包含了预测最终兴趣的监督信息,对序列中间的历史状态 的学习是没有监督信息的,实际上每一步的兴趣状态都能直接决定下一个行为,所以作者们引入辅助loss,使用行为 监督兴趣状态 的学习,实际序列中的下一个item作为正样本,负样本从item set中随机抽取。辅助loss为:


最终的全局loss是:

引入辅助loss的好处有三个:1.使GRU的隐状态更好地表示用户兴趣 2.辅助loss降低了GRU在建模长程序列时梯度反向传播的难度 3.帮助embedding层学习到更多的语义信息。同时,辅助loss会增加训练成本,但不会增加线上inference耗时。

  • 「interest Evolving层」:用户的多种兴趣会随着外部环境和自身认知的改变而变化,用户对不同商品的偏好受到不同兴趣的影响。兴趣变化层结合了注意力机制中的局部激活能力和GRU的序列学习能力,使用带注意力更新门的GRU即AUGRU,以上一层的隐状态序列为输入, ,输出的最后一个状态 作为最终输出和其他各类特征拼接后一起送入MLP层。attention分值计算:



    ,其中 是不同field特征拼接后的Embedding。关于将attention机制和GRU结合起来的三种办法:
    • AIGRU(GRU with attention input):将attention权重与输入Embedding相乘,
    • AGRU(Attention based GRU):使用attention权重替换GRU的更新门,直接对隐状态更新,
    • AUGRU(GRU with attentional update gate):注意力权重( )是个标量,更新门( )原本是个向量,直接替换导致所有维度无区别更新,因此可以将注意力权重乘到更新门上,即attentional update gate,

自从注意力机制被提出之后,很多模型通常以RNN不能并行为理由拒绝使用GRU/LSTM,而这篇文章中为了支持线上高并发场景,降低响应延时,提高吞吐,提出了三个重要优化点:

  1. GRU元素并行和核融合
  2. 连续的用户请求被合并到一个batch中以高效利用GPU
  3. 使用Rocket Launching进行模型压缩,训练一个更小但表现相当的轻网络,可以将GRU隐状态的维度从108降到32.

DSIN (Deep Session Interest Network)

2019年的DSIN受序列化推荐中的session启发,在ctr任务中将用户行为划分为多个session,虽然是ctr任务,但对召回也有一定的启发意义。作者首先是从用户行为数据中发现按照时间差大于等于30min划分的session中交互的物品种类高度同构,而不同session之间交互的物品种类多是异构的。因此DSIN提出在每个session中提取用户的session兴趣,再学习session兴趣之间的序列依赖关系。重磅整理!推荐系统之深度召回模型综述(PART II)DSIN的模型结构如上图所示,与DIN、DIEN同样都是从base model上优化而来,输入特征包括三类:用户画像类、用户行为、物品画像,高维稀疏转低维Embedding后拼接送入MLP,损失函数使用交叉熵:

DSIN主要是替换掉base model中用户行为学习的部分:

  • 「session Division层」:根据30分钟的间隔规则将用户行为sequence划分成多个session
  • 「session interests Extractor层」:对同一个session中多个行为的关系建模,降低不相关行为的影响,提取session interest。DSIN使用的是Transformer中的multi-head self-attention模块提取用户session兴趣,以每个session中的Embedding序列为输入,改进了position encoding为bias encoding,

分别为session的bias向量,behavior的bias向量,unit的bias向量。attention分值计算:

每一个行为的兴趣表示,最终session的兴趣表示是每个行为表示的均值:

  • 「session interest Interacting层」:使用Bi-LSTM捕获不同session之间的兴趣依赖关系,每个时刻的隐状态是前向后向隐状态拼接而成。
  • 「session interest activating层」:根据session兴趣向量和目标物品的关系分配session interest的权重 

同样的对Bi-LSTM的隐状态序列:

最后将 和用户画像特征、物品画像特征拼接后送入MLP层。

BST (Behavior Sequence Transformer)

2019年的BST模型使用Transformer中的encoder结构在用户行为序列上学习物品表示,模型结构如下图所示,同前几个阿里的模型一样,BST的base model仍然是高维稀疏特征Embedding后拼接送入MLP,损失函数使用交叉熵。BST优化的是对用户交互行为序列的学习部分,这里用户序列包含了交互物品的item_id、category_id和物品在序列中的位置特征: ,即商品的点击时间与当前待预测物品 的推荐时间之间的gap,相比于原论文中的sin/cos,作者发现在阿里推荐的场景中前者表现更好。Transformer层即原论文中的encoder层,虽然叠加多层能更好地学习序列间的复杂关系,但作者的实验证明一层encoder的效果优于叠加2、3层的效果。个中细节,与Transformer保持一致,此处不再赘述。重磅整理!推荐系统之深度召回模型综述(PART II)

NPA(Neural News Recommendation with Personalized Attention)

2019年清华大学在IJCAI和KDD上提出NPA模型,认为在新闻推荐中,用户对不同文章的关注点不同,不同用户对同一篇文章的关注点也不同,NPA通过一个新闻表示模型和一个用户表示模型,都使用个性化的注意力机制学习不同的文章关注点和用户兴趣。重磅整理!推荐系统之深度召回模型综述(PART II)模型结构如上图所示,NPA模型包含三个部分:

  • 「news encoder」:文章标题经过embedding层之后得到单词的embedding矩阵,使用CNN获取local contexts学习单词的上下文表示: 表示从位置(i-k)到位置(i+k)的单词embedding拼接,CNN输出的是序列中每个单词的上下文表示 。之后进入一个个性化注意力网络(如下图所示)根据用户的兴趣计算文章标题中各单词的重要度。首先把userID做embedding,经过一个dense层得到 ,以此作为query计算标题中单词的注意力权重: ,最终的新闻文章表示:
  • 「user encoder」:学习到每个文章的表示后,根据用户的点击文章历史学习用户的兴趣表示,同样使用个性化注意力网络(如下图所示),userID的embedding经过另外一个dense层得到 ,以此作为query计算历史序列中每个文章的注意力权重: ,最终的用户表示:
  • 「click predictor」:随机选取K条负样本,和正样本一起计算点击概率: 重磅整理!推荐系统之深度召回模型综述(PART II)

BERT4Rec

2019年的BERT4Rec在SASRec的基础上使用双向自注意力机制处理序列,可以同时利用左右两边过去未来的行为。从两个地方改进了SASRec:移除了自注意力中对 的0限制;受BERT启发,使用完形填空的训练模式,为了避免信息泄露,训练过程中随机隐藏掉序列中的一些物品并基于左右两侧的行为预测被隐藏的物品,预测的时候在序列的最后插入一个“MASK”,然后用 “MASK”增强后的embedding预测用户接下来会观看哪个item。重磅整理!推荐系统之深度召回模型综述(PART II)模型结构如上图所示:

  • 「Transformer层」:给定一个长度为t的输入序列,在每一层l的每个position i上同时使用transformer layer来迭代式地计算隐表示 并stack起来形成一个矩阵
  • 「embedding层」:位置embedding使用可学习的embedding代替sinusoid
  • 「output层」:经过L层Transformer堆叠后,进入两层GELU激活的FFN得到目标物品的点击概率:

一个小通知

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的文章,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:


2. 点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。


感谢每一份支持,比心重磅整理!推荐系统之深度召回模型综述(PART II)



- END -

重磅整理!推荐系统之深度召回模型综述(PART II)

重磅整理!推荐系统之深度召回模型综述(PART II)





重磅整理!推荐系统之深度召回模型综述(PART II)

记得把NewBeeNLP设为星标哦




等你在看

以上是关于重磅整理!推荐系统之深度召回模型综述(PART II)的主要内容,如果未能解决你的问题,请参考以下文章

推荐系统召回算法之——图模型(Personal Rank)

个性化推荐系统--- 机器学习深度学习召回集扩量

推荐系统主流召回方法综述

推荐系统-综述

推荐系统-综述

推荐系统中召回策略