Attention机制在深度学习推荐算法中的应用(转载)
- AFM:Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks

模型入上图所示,其中sparse iput,embedding layer,pair-wise interaction layer都和FM一样,后面加入了一个attention net生成一个关于特征交叉项的权重,将FM原来的二次项累加变成加权累加。这里的attention net其实很简单,就是简单的线性变换求出权重之后再和原来的输入进行加权求和。

然后加权计算得到AFM的输出:

缺点:AFM只是在FM的基础上添加了attention的机制,但实际上只利用了加权的二次项,并没有加入更深的网络去学习更高阶的非线性交叉特征,所以它的上限和FFM很接近,没有完全发挥出dnn的优势。
2. 阿里DIN:Deep Interest Network for Click-Through Rate Prediction

用户的历史行为数据是有多个的,在计算新的候选商品的ctr时,可以将用户多个历史行为的embedding加个average pooling平均一下,但是这样没有办法建模出不同历史行为对目标预测的影响程度。DIN中加入了一种Attention机制来使得模型对用户相关的行为历史看重一些,对不相关的历史甚至可以忽略的效果。

上式中,是用户的embedding向量,
是候选广告商品的embedding向量,
是用户u的第i次行为的embedding向量,因为这里用户的行为就是浏览商品或店铺,所以行为的embedding的向量就是那次浏览的商品或店铺的embedding向量。
从过去
的加和变成了
的加权和,
的权重
就由
与
的关系决定,也就是上式中的
那么怎么计算g呢,传统的做法可以直接将用户embedding u和候选商品embedding v做点积或者uWv。DIN的做法是将u、v和两者之间的差值这三个向量合并起来作为输入,输入到mlp中得到权重。
3. 阿里DIEN:Deep Interest Evolution Network

DIEN先用GRU从用户的行为序列中去抽取兴趣,然后通过带attention的GRU单元来寻找与目标item相关的兴趣点。其中attention计算方式为:

其中表示一个目标item中不同field特征的embedding向量的concat,可以看到这里的attention是一种很传统的u*W*v的方式,然后将求得的attention权重结合GRU一起使用。
4. 阿里DSIN:Deep Session Interest Network for Click-Through Rate Prediction

有三处用到了attention的结构,首先在 Session Interest Extractor Layer中,使用了transformer来处理每个session,得到一个d维的向量。多个session的d维向量经过双向LSTM得到隐层状态ht。
另外两处用到attention的地方在Session Interest Activating Layer中,使用了和DIEN中一样的attention结构来刻画用户的会话兴趣与目标物品的相关性、LSTM得到隐层状态ht与目标物品的相关性。


最后把四部分向量:用户特征向量、待推荐物品向量、会话兴趣加权向量UI、带上下文信息的会话兴趣加权向量UH进行concat,输入到全连接层中,得到输出。
5. 阿里:Behavior Sequence Transformer for E-commerce Recommendation in Alibaba

将用户的行为序列先通过embedding层处理,然后经过了一个Transformer层。
6. 阿里:Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction

输入包括目标广告的信息、上下文广告信息、点击广告信息、曝光未点击广告信息,经过embedding层,然后有两种attention方式,第一种是self-attention方式:

其实就是比如上下文的embedding表示  输入到一个函数f中,得到标量输出 
 ,然后通过softmax将每个上下文item的权重归一化到0-1之间,随后基于权重进行加权求和。缺点就是没有考虑target ad的信息。
另外一种attention方式是交互式的,并且加入了目标广告的信息  :

7. ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation

分为原始特征空间(raw feature spaces)、行为嵌入空间(behavior embedding spaces)、隐语义空间(latent semantic spaces)、行为交互层(behavior interaction layers)、下游网络层(downstream application network)
模型中用到attention的地方在latent semantic spaces层后面,latent semantic spaces层的目的是将每个行为组中的向量通过线性变换到多个不同的语义空间,然后采用self-attention结构:

其中S是整个语义层拼接后的输出,Sk 是第 k 个语义空间上的投影。

经过 self-attention 后,第K个语义空间的向量表示为:

 是将S映射到第k个语义空间的另一个转换函数,文中用的一层的MLP。
总结:可以看出深度学习推荐模型中,使用的attention可以分为两大类,一类是self-attention(比如ATRank),一类是传统的soft attention(主要都是u*W*v形式,比如DIEN,DSIN等),u表示用户行为历史中一个item的embedding,v是待推荐的目标item。求出乘积,通过softmax函数就可以得到用户历史行为中每个item的权重。另外DIN的做法比较特殊,是将u、v和两者之间的差值这三个向量合并起来作为输入,输入到mlp中得到用户历史行为中每个item的权重。
参考文献:
参考文献: https://zhuanlan.zhihu.com/p/78015378
Attention机制在深度学习推荐算法中的应用(转载)的更多相关文章
- 【AI in 美团】深度学习在OCR中的应用
		AI(人工智能)技术已经广泛应用于美团的众多业务,从美团App到大众点评App,从外卖到打车出行,从旅游到婚庆亲子,美团数百名最优秀的算法工程师正致力于将AI技术应用于搜索.推荐.广告.风控.智能调度 ... 
- NVIDIA GPUs上深度学习推荐模型的优化
		NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ... 
- 【腾讯Bugly干货分享】深度学习在OCR中的应用
		本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5809bb47cc5e52161640c5c8 Dev Club 是一个交流移动 ... 
- 从 SGD 到 Adam —— 深度学习优化算法概览(一)  重点
		https://zhuanlan.zhihu.com/p/32626442 骆梁宸 paper插画师:poster设计师:oral slides制作人 445 人赞同了该文章 楔子 前些日在写计算数学 ... 
- 【深度学习】CNN 中 1x1 卷积核的作用
		[深度学习]CNN 中 1x1 卷积核的作用 最近研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,起初的时候,对这个做法很是迷惑,这是因为之前 ... 
- 深度学习训练过程中的学习率衰减策略及pytorch实现
		学习率是深度学习中的一个重要超参数,选择合适的学习率能够帮助模型更好地收敛. 本文主要介绍深度学习训练过程中的6种学习率衰减策略以及相应的Pytorch实现. 1. StepLR 按固定的训练epoc ... 
- ui2code中的深度学习+传统算法应用
		背景 在之前的文章中,我们已经提到过团队在UI自动化这方面的尝试,我们的目标是实现基于 单一图片到代码 的转换,在这个过程不可避免会遇到一个问题,就是为了从单一图片中提取出足够的有意义的结构信息,我们 ... 
- 深度学习在 CTR 中应用
		欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:高航 一. Wide&&Deep 模型 首先给出Wide && Deep [1] 网络结构: 本质上 ... 
- 转载:深度学习在NLP中的应用
		之前研究的CRF算法,在中文分词,词性标注,语义分析中应用非常广泛.但是分词技术只是NLP的一个基础部分,在人机对话,机器翻译中,深度学习将大显身手.这篇文章,将展示深度学习的强大之处,区别于之前用符 ... 
随机推荐
- PAT Basic 1082 射击比赛 (20 分)
			本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我们假设靶心在原点(0,0). 输入 ... 
- RocketMQ原理分析 文章 精选【收集】
			一. 推荐文章 1.以下来自OSChina的 mingxungu https://itzones.cn/ RocketMQ运维监控 RocketMQ刷盘策略 RocketMQ消息重试 RocketMQ ... 
- HTML中dl元素的高度问题
			dl元素通常用来创建一个描述列表,但是在我使用的过程中发现了一个小问题. 定义及用法 在MDN中 <dl> 元素的定义是:一个包含术语定义以及描述的列表,通常用于展示词汇表或者元数据 (键 ... 
- 简单的理解 StringBuffer/StringBuilder/String 的区别
			StringBuffer/StringBuilder/String 的区别 这个三类之间主要的区别:运行速度,线程安全两个方面. 速度方面(快到慢): StringBuilder > Strin ... 
- 洛谷P4689 [Ynoi2016]这是我自己的发明(树上莫队+树链剖分)
			题目描述 您正在打galgame,然后突然家长进来了,于是您假装在写数据结构题: 给一个树,n 个点,有点权,初始根是 1. m 个操作,每次操作: 1.将树根换为 x. 2.给出两个点 x,y,从 ... 
- 菜鸟刷面试题(五、Java容器篇)
			目录: java 容器都有哪些? Collection 和 Collections 有什么区别? List.Set.Map 之间的区别是什么? HashMap 和 Hashtable 有什么区别? 如 ... 
- 诊断和修复Web测试记录器(Web Test Recorder)问题
			http://www.cnblogs.com/oscarxie/articles/1045430.html Database LoadTest2010 script C:\Program Files ... 
- 【CUDA 基础】6.0 流和并发
			title: [CUDA 基础]6.0 流和并发 categories: - CUDA - Freshman tags: - 流 - 事件 - 网格级并行 - 同步机制 - NVVP toc: tru ... 
- python-解决pip安装速度慢的问题--豆瓣镜像
			https://www.cnblogs.com/ZhangRuoXu/p/6370107.html https://blog.csdn.net/tianguiyuyu/article/details/ ... 
- 数据结构实验之链表九:双向链表(SDUT 2054)
			#include <bits/stdc++.h> using namespace std; typedef struct node { int data; struct node *nex ... 
