深入理解推荐系统:推荐系统中的 attention 机制
作者专栏: https://www.zhihu.com/people/wang-he-13-93
【推荐系统】专栏历史文章:
深入理解推荐系统:Fairness、Bias 和 Debias
深入理解推荐系统:召回
深入理解 YouTube 推荐系统算法
深入理解推荐系统:排序
作为【推荐系统】系列文章的第五篇,将以推荐系统中的“attention机制”作为今天的主角,会从三个方面进行介绍,什么是attention机制、在推荐模型中的应用(会介绍相关模型,AFM/DIN/DIEN/DST)和参考文献。
一、Attenation机制
Attention在著名论文《Attention is all you need》中大放异彩,Attention 机制最早是在计算机视觉里应用的,随后在 NLP领域也开始应用了,真正发扬光大是在 NLP 领域,因为 2018 年 BERT和 GPT 的效果出奇的好,进而走红。而 Transformer和 Attention 这些核心开始被大家重点关注。
那么应用到推荐领域又该如何理解呢?
1、attention主体思想
通常对不同的item感兴趣程度、注意力分布不同,考虑对不同的item施加不同的权重,即求当前query关于不同key下的注意力分布及当前query的注意力分数。某些特征就会主导某一次的预测,就好像模型对某些特征更加专注。
2、attention机制 pipeline图示
3、Attention的计算步骤
Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,在计算attention时主要分为三步,
- 第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
- 第二步一般是使用一个softmax函数对这些权重进行归一化;
- 第三步将权重和相应的键值value进行加权求和得到最后的attention。
目前在NLP研究中,key和value常常都是同一个,即key=value(即self-attention)。
4、attention与self-attention的区别与联系
query来自于解码层,key和value来自于编码层时叫vanilla attention,即最基本的attention。query,key和value都来自编码层的叫self-attention。
以Encoder-Decoder框架为例,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention发生在Target的元素Query和Source中的所有元素之间。
Self Attention,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的Attention。
两者具体计算过程是一样的,只是计算对象发生了变化而已。
二、AFM
AFM是较早期的将attention加入至推荐系统的工作,它和NFM类似,也是属于对FM的改进,不同之处在于AFM在不同的交叉特征上应用了attention。模型结构如下图所示:
AFM基于的假设
不同的交叉特征对于结果的影响是不同的。例如:性别男&历史购买过鼠标这个交叉特征比性别男&用户年龄=30这个交叉特征更重要,因此模型需要投入更多的注意力在前者交叉特征上。从结构图可以看出,attention层加在特征交叉层和最终的输出层之间,通过attention net对每一个交叉特征打分再加权求和。
Attention层公式
最终预测结果
可以看出,这种attention单纯的根据自身交叉特征来计算一个分数,没有任何特征之间的交互。
AFM模型总结
- 主体思想:FM+Attention 考虑不同交叉特征的重要程度不同,使用attention机制对每个交叉特征的重要性进行打分,作为交叉特征的权重。
- 优点:缓解了FM存在的问题(并不是所有二阶交叉特征都是有效的,会有一些垃圾特征交叉的存在,需要施以不同的权重),利用目前比较流行的attention的概念,对每个特征交叉分配不同的attention,使没用的交叉特征权重降低,有用的交叉特征权重提高,加强模型预测能力。
- 缺点:由于这种attention的方式对训练数据的拟合表达更充分,但也更容易过拟合,因此作者除了在loss中加入正则项之外,在attention部分加入了dropout
三、DIN
DIN提出了一种attention的机制,用于将用户历史记录里的商品embedding与当前候选商品的embedding做attention,然后用得到的分数对历史商品embedding进行加权求和。在原来的基础模型中,通常是将用户历史行为商品经过简单的平均池化操作,这样没有和当前候选广告之间的相似性进行比较。但事实上用户历史浏览记录和当前是否点击候选广告是有较大关联的,即历史记录中的商品与当前商品之间的相似性应该对最终的结果有不同影响。
Base Model结构
在base model中,用户特征经过简单的平均池化后就直接送入下一层,没有区分用户特征的重要程度,也没有用户特征与广告特征之间的交互过程(实际上是有关联的),这其中会损失很多有价值得信息。
Deep Interest Model结构
在DIN中,对广告特征和用户特征计算一个权重,代表了注意力的强弱。具体得,通过将用户历史商品与当前候选广告商品同时输入至attention模块,由几层fc层学习得到分数并利用该分数对用户历史商品特征加权求和。
具体公式
值得注意的是,文章中特意提到关于attention分数是否进行归一化的讨论,即是否使用softmax进行normalization:文中提到,他们没有使用softmax对最终的score进行归一化,因为归一化会损失上式中输出vu的scale尺度的分辨率,例如,用户历史点击的80%都是服装,而当前候选广告也是服装,那么输出的结果vu的数值应该会比较大,而做了归一化后则没有这种表现。另一方面,在另一篇论文Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction中提到使用softmat的另一个缺点,当当前用户历史点击的商品都与候选商品无关时,经过了归一化后的分数都会较大,这也会影响后续的结果。
DIN模型总结
- DIN主体思想:(1)对不同item,DIN采用local activation机制(attention)计算用户兴趣分布,使兴趣计算更adaptive。DIN可以充分表达一个用户兴趣的多样性。(2)提出了训练大规模稀疏特征网络的优化trick:mini-batch aware regularization和data adaptive activation function。
- 应用场景:电子商务领域(e-commerce industry)的CTR预估,重点在于充分利用/挖掘用户历史行为数据中的信息。
- 优点:使用了attention机制,提出了抑制过拟合效果较好的adaptive regularization,针对feature id出现的频率,来自适应调整他们的正则化强度。
- 缺点:无法捕捉用户兴趣的动态变化,深度模型非常复杂,输入非常稀疏且维度高,参数量很多,容易过拟合,需要特殊的抑制过拟合操作。
四、DIEN
用户的历史行为是一个随时间排序的序列,存在或深或浅的前后依赖关系,AFM和DIN模型引入注意力机制仅是对不同行为重要性进行打分,这样的得分是与时间无关的,同时也是序列无关的(用户的兴趣迁移非常快,上周行为序列都会集中在篮球鞋这个品类商品上,购买完成后,本周的购物兴趣可能变成买一个机械键盘)
构建兴趣进化网络
行为序列层(把原始的id类行为转换成embedding行为序列)、兴趣抽取层(通过模拟用户兴趣兴趣迁移过程,抽取用户兴趣)、兴趣进化层(在兴趣抽取层基础上加入注意力机制,模拟与当前广告相关的兴趣进化过程)
1、兴趣抽取层(Interest Extractor Layer)
兴趣抽取层的主要目标是从embedding数据中提取出兴趣。但一个用户在某一时间的兴趣不仅与当前的行为有关,也与之前的行为相关,所以作者使用GRU单元来提取兴趣。
**基本结构:**GRU相对与传统序列模型RNN与LSTM,GRU解决了RNN梯度消失的问题,与LSTM相比,GRU的参数数量更少,训练收敛速度更快(GRU和LSTM它们能够保存长期序列中的信息,且不会随时间而清除或因为与预测不相关而移除)。
GRU结构:
2、兴趣进化层(Interest Evolving Layer)
相对于兴趣抽取层最大的特点是加入了注意力机制(AUGRU, GRU with Attentional Upgate gate),得分生成过程与DIN完全一致,都是当前状态向量和目标广告向量进行相互作用的结果,在模拟兴趣进化的过程中,需要考虑与目标广告的相关性(用户可能同时购买多类商品)。接下来看下AUGRU部分:
DIEN模型总结
- DEIN主体思想:GRU+AUGRU(即Attention+GRU), 使得模型不仅对用户的历史行为时间、序列相关,还能利用attention机制来对不同用户行为的施加不同重要性的权重,解决了DIN无法动态捕捉用户兴趣的动态变化。
- 应用场景:与DIN应用场景一致。
- 优点:用序列模型模拟了用户兴趣的进化过程。
- 缺点:序列模型比较高的训练复杂度,以及在线上推断过程中的串行判断,使其在服务过程中延迟较大,无疑增大了其上线的难度,需要在工程上着重优化。实验结果难以复现。
五、DSTN
这篇文章提出,除了使用当前曝光的广告信息,还利用更多的附加广告信息,文中利用了三类附加广告,上下文广告(与当前广告一同曝光在当前页面的其他广告)、用户历史点击的广告和用户历史未点击的广告。并利用attention机制,将当前曝光广告和这三类广告进行aggregation。引入空间和时间相关广告来辅助目标广告的CTR预估。
本文展示的三种利用附加广告信息的三种模型如下图所示,(a)是不使用附加信息,(b)是简单的pooling(DSTN-Pooling Model),(c)是本文提出的交互式方法(DSTN- Self-Attention Model和DSTN - Interactive Attention Model)。
其中,交互式的方法包括两个:(1)self-attention,即每个附加广告通过神经网络学习到一个attention分数,利用这个分数进行对附加广告的加权求和,这里得self-attention和我们所熟知的self attention完全不同,只是由于其分数的学习只通过附加广告自身学习得到,所以叫self-attention,但是这种方式显然没有考虑到当前曝光的广告信息,没有动态适应的功能。另一方面,本文也指出了这种用softmax函数归一化的缺点:1、即使所有附加广告得到的分数都很小,经过归一化之后依然会较大。2、归一化后的分数进行加权求和后损失了scale上的尺度变化。(这个理由和Deep Interest Network for Click-Through Rate Prediction)里一样。
第二种交互方式:(2)将曝光广告和附加广告同时输入到attention学习网络学习到分数,公式如下,可以看出,其根据当前曝光广告和附加广告一起输入attention网络来学习分数,并且最后没有用softmax进行归一化,而是用exp将分数转化为零到正无穷的分数。
DSTN模型总结
- DSTN主体思想:除了使用当前曝光的广告信息,还利用更多的附加广告信息(这是大多数模型无法考虑到的),文中利用了三类附加广告:上下文广告(与当前广告一同曝光在当前页面的其他广告)、用户历史点击的广告和用户历史未点击的广告。并利用attention机制,将当前曝光广告和这三类广告进行aggregation。
- 应用场景:需要考虑更多广告相互制约。
- 优点:引入辅助广告特征帮助更好的刻画CTR数据的分布,同时Attention机制的引入也能更好的提炼出辅助广告特征中对于目标广告更有用的信息、消除噪声对于模型学习的影响。
六、参考文献
1. Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks (AFM)——IJCAI2017
2. Deep Interest Network for Click-Through Rate Prediction(DIN)——KDD2018
3. Deep Interest Evolution Network for Click-Through Rate Prediction(DIEN)——AAAI 2019
4. Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction(DSTN)——KDD2019