深入理解推荐系统:推荐系统中的attention机制

2020 年 9 月 23 日 AINLP

写在前面
【推荐系统】专栏历史文章:
深入理解YouTube推荐系统算法
深入理解推荐系统:召回
深入理解推荐系统:排序
深入理解推荐系统:Fairness、Bias和Debias
作为【推荐系统】系列文章的第五篇,将以推荐系统中的“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模型总结

1、主体思想:FM+Attention 考虑不同交叉特征的重要程度不同,使用attention机制对每个交叉特征的重要性进行打分,作为交叉特征的权重。

2、优点:缓解了FM存在的问题(并不是所有二阶交叉特征都是有效的,会有一些垃圾特征交叉的存在,需要施以不同的权重),利用目前比较流行的attention的概念,对每个特征交叉分配不同的attention,使没用的交叉特征权重降低,有用的交叉特征权重提高,加强模型预测能力。

3、缺点:由于这种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模型总结

1、DIN主体思想:(1)对不同item,DIN采用local activation机制(attention)计算用户兴趣分布,使兴趣计算更adaptive。DIN可以充分表达一个用户兴趣的多样性。(2)提出了训练大规模稀疏特征网络的优化trick:mini-batch aware regularization和data adaptive activation function。

2、应用场景:电子商务领域(e-commerce industry)的CTR预估,重点在于充分利用/挖掘用户历史行为数据中的信息。

3、优点:使用了attention机制,提出了抑制过拟合效果较好的adaptive regularization,针对feature id出现的频率,来自适应调整他们的正则化强度。

4、缺点:无法捕捉用户兴趣的动态变化,深度模型非常复杂,输入非常稀疏且维度高,参数量很多,容易过拟合,需要特殊的抑制过拟合操作。     


四、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模型总结

1、DEIN主体思想:GRU+AUGRU(即Attention+GRU), 使得模型不仅对用户的历史行为时间、序列相关,还能利用attention机制来对不同用户行为的施加不同重要性的权重,解决了DIN无法动态捕捉用户兴趣的动态变化。

2、应用场景:与DIN应用场景一致。

3、优点:用序列模型模拟了用户兴趣的进化过程。

4、缺点:序列模型比较高的训练复杂度,以及在线上推断过程中的串行判断,使其在服务过程中延迟较大,无疑增大了其上线的难度,需要在工程上着重优化。实验结果难以复现。


五、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模型总结

1、DSTN主体思想:除了使用当前曝光的广告信息,还利用更多的附加广告信息(这是大多数模型无法考虑到的),文中利用了三类附加广告:上下文广告(与当前广告一同曝光在当前页面的其他广告)、用户历史点击的广告和用户历史未点击的广告。并利用attention机制,将当前曝光广告和这三类广告进行aggregation。

2、应用场景:需要考虑更多广告相互制约。

3、优点:引入辅助广告特征帮助更好的刻画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




说个正事哈



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

(1)点击页面最上方"AINLP",进入公众号主页。

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

感谢支持,比心


欢迎加入推荐系统交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注推荐系统

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
1

相关内容

Attention机制最早是在视觉图像领域提出来的,但是真正火起来应该算是google mind团队的这篇论文《Recurrent Models of Visual Attention》[14],他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是是第一个提出attention机制应用到NLP领域中。接着类似的基于attention机制的RNN模型扩展开始应用到各种NLP任务中。最近,如何在CNN中使用attention机制也成为了大家的研究热点。下图表示了attention研究进展的大概趋势。
【CIKM2020】推荐系统的神经模板解释生成
专知会员服务
33+阅读 · 2020年9月9日
个性化推荐系统技术进展
专知会员服务
65+阅读 · 2020年8月15日
基于知识图谱的推荐系统研究综述
专知会员服务
321+阅读 · 2020年8月10日
【SIGIR 2020】 基于协同注意力机制的知识增强推荐模型
专知会员服务
88+阅读 · 2020年7月23日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
专知会员服务
85+阅读 · 2020年1月20日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
86+阅读 · 2019年10月21日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
最全推荐系统Embedding召回算法总结
凡人机器学习
30+阅读 · 2020年7月5日
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
赛尔笔记 | Attention!注意力机制可解释吗?
哈工大SCIR
22+阅读 · 2019年9月27日
注意力机制(Attention)最新综述论文及相关源码
人工智能学家
30+阅读 · 2018年11月17日
【干货】注意力机制(Attention)最新综述论文及相关源码
GAN生成式对抗网络
11+阅读 · 2018年11月16日
从Seq2seq到Attention模型到Self Attention(二)
量化投资与机器学习
22+阅读 · 2018年10月9日
干货 | NLP中的self-attention【自-注意力】机制
机器学习算法与Python学习
12+阅读 · 2018年4月11日
TensorFlow seq2seq中的Attention机制(续)
深度学习每日摘要
15+阅读 · 2017年11月16日
论文共读 | Attention is All You Need
黑龙江大学自然语言处理实验室
14+阅读 · 2017年9月7日
Attention is All You Need | 每周一起读
PaperWeekly
10+阅读 · 2017年6月28日
Arxiv
0+阅读 · 2020年12月3日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Arxiv
4+阅读 · 2018年10月31日
Next Item Recommendation with Self-Attention
Arxiv
5+阅读 · 2018年8月25日
Arxiv
7+阅读 · 2018年1月31日
VIP会员
相关VIP内容
【CIKM2020】推荐系统的神经模板解释生成
专知会员服务
33+阅读 · 2020年9月9日
个性化推荐系统技术进展
专知会员服务
65+阅读 · 2020年8月15日
基于知识图谱的推荐系统研究综述
专知会员服务
321+阅读 · 2020年8月10日
【SIGIR 2020】 基于协同注意力机制的知识增强推荐模型
专知会员服务
88+阅读 · 2020年7月23日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
专知会员服务
85+阅读 · 2020年1月20日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
86+阅读 · 2019年10月21日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
相关资讯
最全推荐系统Embedding召回算法总结
凡人机器学习
30+阅读 · 2020年7月5日
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
赛尔笔记 | Attention!注意力机制可解释吗?
哈工大SCIR
22+阅读 · 2019年9月27日
注意力机制(Attention)最新综述论文及相关源码
人工智能学家
30+阅读 · 2018年11月17日
【干货】注意力机制(Attention)最新综述论文及相关源码
GAN生成式对抗网络
11+阅读 · 2018年11月16日
从Seq2seq到Attention模型到Self Attention(二)
量化投资与机器学习
22+阅读 · 2018年10月9日
干货 | NLP中的self-attention【自-注意力】机制
机器学习算法与Python学习
12+阅读 · 2018年4月11日
TensorFlow seq2seq中的Attention机制(续)
深度学习每日摘要
15+阅读 · 2017年11月16日
论文共读 | Attention is All You Need
黑龙江大学自然语言处理实验室
14+阅读 · 2017年9月7日
Attention is All You Need | 每周一起读
PaperWeekly
10+阅读 · 2017年6月28日
相关论文
Arxiv
0+阅读 · 2020年12月3日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Arxiv
4+阅读 · 2018年10月31日
Next Item Recommendation with Self-Attention
Arxiv
5+阅读 · 2018年8月25日
Arxiv
7+阅读 · 2018年1月31日
Top
微信扫码咨询专知VIP会员