本篇博客重点关注Attention在推荐系统中的常见几类用法。Attention 这里就不多做介绍了,可以参考之前的博客。
为什么推荐系统需要Attention?Attention在推荐系统中怎么用呢?
纵观排序模型的发展历程,有两个主要的演进方向:
1、特征组合自动化;
2、用户行为序特征的挖掘。
像华为很喜欢做各种特征交叉模型,典型代表如deepFM;而阿里很喜欢去挖掘用户行为序特征,典型模型如DIN、BST等。
在推荐系统中 Attention 最常见用法就是对用户行为序列进行建模。我们先来介绍其中最具代表性的模型——DIN。
DIN
论文:Deep Interest Network for Click-Through Rate Prediction
地址:https://arxiv.org/abs/1706.06978
论文中指出,用户兴趣具有以下两个特点:
1、多样性(Diversity): 即用户在线上购物时往往同时表现出多种兴趣。
2、局部聚焦(Local Activation): 即用户是否会点击推荐给他的某一件商品,往往是基于他之前的部分兴趣,而非所有兴趣。
在DIN提出之前,使用了行为序特征的深度学习模型多采用上图所示的Base Model模型结构。模型可以划分成三层:

而后面提出的DIEN模型,可以看作是升级版的DIN,主要针对DIN的两个缺点:
1、用户兴趣应该是不断进化的,DIN无法捕获到兴趣的这种进化性;
2、DIN无法保证通过用户的显式的行为得到的兴趣是有效的。
详细参考论文 https://arxiv.org/abs/1809.03672
BST
论文:Behavior Sequence Transformer for E-commerce Recommendation in Alibaba
地址:https://arxiv.org/abs/1905.06874
Transformer 大火,使其成为NLP中最受欢迎的特征提取器(Transformer参考 ),把Attention升级成Transformer也很简单粗暴。模型结构如下:
在NLP问题中,self-attention帮助我们编码句子中的某个词语时,关注句子中其他词对当前词的重要度,并将其他词的部分信息编码到当前词语中。简单理解就是可以更好地编码当前词语。
Transformer在推荐系统中的主要作用,则是为了更好地学习用户行为序中商品的Embedding表示。
在BST中,行为序中各商品的Embedding是concat起来的,然后再和其他特征的Embedding一起concat成一个长向量,作为后面全连接层的输入。DIN则是对用户行为序中商品的Embedding做sum pooling,最终得到的行为序特征的Embedding和单个商品的 Embedding 长度相同。所以在这一层上,BST的参数量要大于DIN。
美团Transformer
在美团2020技术干货中,介绍了Transformer在美团APP搜索排序中的应用。迭代了以下三个版本,我们一一来看。
第一版
模型结构如上图所示。
模型核心点有以下三个:
(1)用户行为分成了短期行为序和长期行为序,用来捕捉用户的短期和长期特征;
(2)使用 Transformer 对行为序中的item学习更好的 Embedding 表示;
(3)对行为序中各商品的 Embedding 做sum pooling操作,得到行为序特征的 embedding 表示。
方法简单直接,不需再过多介绍。不过该方法主要的问题是,对候选商品打分时,对于所有商品,行为序的 embedding 都是一样的。即对于目标商品,并没有对行为序中的item pay attention,Transformer只是用来更好的学习行为序中item的Embedding。
第二版
针对第一版存在的问题,并参考 BST 模型,在第一个版本的基础上引入 Target-item, 这样可以学习行为序列内部的 item 与 Target-item 的相关性,这样在对不同的 item 打分时,用户的 Embedding 表示是不一样的网络结构如下:
第三版
从模型结构图容易看出,第三版其实是 DIN + Transformer。基础架构还是DIN,和DIN相比,改进的地方有两个:
(1)使用 Transformer 对行为序中的item学习更好的 Embedding 表示;
(2)短期行为序和长期行为序,用来捕捉用户的短期和长期特征。
文章开头简单介绍过,在推荐系统中 Attention 最常见用法就是对用户行为序列进行建模。
还有一种用法是在进行特征组合时,对不同的特征pay attention。代表模型有AFM模型和AutoInt模型。
AFM
论文:Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks∗
地址:https://www.ijcai.org/Proceedings/2017/0435.pdf
FM与DNN结合有两种主流方法:
先简单回顾下FM模型。
FM的函数形式如下

AutoInt
模型使用multi-head self-attention机制来进行自动特征交叉学习来提升CTR预测的效果。论文中的multi-head self-attention与Transformer中的多头注意力机制类似。
模型有两个亮点:
(1)将类别特征和连续特征都嵌入到低维空间中,因此模型允许不同类型的特征通过矢量算法相互交互;
(2)通过多头注意力机制捕捉有意义的高阶特征组合,多头机制在不同的子空间中可以捕获不同的特征交互模式,并且可以通过层的叠加捕获更高阶的交互模式。
模型结构如下
输入层和嵌入层
1、类别特征,通过embedding映射成低维稠密向量;
2、连续特征,赋予其一个embedding向量,用归一化后的特征值与embedding向量的乘积作为其最终表示。
对于连续特征,也可以将其离散化后作为类别特征处理,孰优孰劣要在实际场景中测试。
交互层(Interacting Layer)
相信熟悉self-attention和Transformer的各位看图就明白了AutoInt的原理。
最后的输出层即经典神经网络。