attention机制_简析Attention机制—优缺点,实现,应用

什么是Attention机制?

Attention机制的本质来自于人类视觉注意力机制。人们在看东西的时候一般不会从到头看到尾全部都看,往往只会根据需求观察注意特定的一部分。

简单来说,就是一种权重参数的分配机制,目标是协助模型捕捉重要信息。具体一点就是,给定一组<key,value>,以及一个目标(查询)向量query,attention机制就是通过计算query与每一组key的相似性,得到每个key的权重系数,再通过对value加权求和,得到最终attention数值。

72501f53a2a5248d52af7ecaaf2f3d8f.png

a133933a909079afaa5115bd7d45b167.png

优缺点:

优点:

  1. 一步到位获取全局与局部的联系,不会像RNN网络那样对长期依赖的捕捉会收到序列长度的限制。
  2. 每步的结果不依赖于上一步,可以做成并行的模式
  3. 相比CNN与RNN,参数少,模型复杂度低。(根据attention实现方式不同,复杂度不一)

缺点:

  1. 没法捕捉位置信息,即没法学习序列中的顺序关系。这点可以通过加入位置信息,如通过位置向量来改善,具体可以参考最近大火的BERT模型。

应用领域:

在这主要介绍几篇论文或经典文档。

自然语言处理:

  1. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  2. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
  3. Generating Wikipedia by Summarizing Long Sequences
  4. Universal Transformers

计算机视觉:

  1. Image Transformer
  2. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

推荐系统:

  1. Deep Interest Network for Click-Through Rate Prediction
  2. Deep Interest Evolution Network for Click-Through Rate Prediction
  3. Learning Tree-based Deep Model for Recommender Systems

Attention常见实现方法

  1. 多层感知机:

88fd9744730f2526d6b09e4e3fd32373.png

该方法主要是将Q,K拼接,然后一起通过一个激活函数为tanh的全连接层,再跟权重矩阵做乘积,在数据量够大的情况下,该方法一般来说效果都不错。

2.Dot Product / scaled-dot Product:

c0a44578ce15d6f60ba4a025f2410577.png

该方法适用于query与key维度相同情景,通过q转置后与k点积。在权重值过大的情况下,可以将数据标准化,即scaled-dot Product。

3.Bilinear:

951f674f02117a02496bef686df0c8c5.png

通过一个权重矩阵直接建立query与key的关系,权重矩阵可以随机初始化也可以使用预设的。

4.cosine

49036c4fa18713e1081e517d5a9c123f.png

即计算两个向量的cosine相似度。

self-attention

该方法即Q,K,V都来自于同一个输入,其余计算过程,基本同上常用方法。

Multi-Head Attention

该方法可以理解成attention版本的ensemble,不同head学习不同的子空间语义。权值计算也同上常用方法。

ecfcf2b53c15bab366c18e72f4435a38.png

推荐系统中的attention机制

现在推荐系统的趋势基本是朝着海量数据+复杂模型的方向发展,相信将来会取代人工精细特征+简单模型的方式。

这里主要介绍阿里的din模型:

8c6ca514bdb426a490eff52f57ee2cfa.png

模型的主要思想在于用户的兴趣是无序的,比如在电商场景下,用户A的历史行为序列包含游泳用品,牛奶,女装。而当前展示的广告是女装,它便只能激活女装的这个兴趣,即在当前展示广告面前,用户的兴趣是多峰的。

基于此,通过target广告与用户行为序列key做attention,捕获当前最可能被激活的那个峰。

具体算法实现便是通过target与行为序列做attention,再将输出与其他特征拼接之后通过全连接层得到最终输出。

相似的应用场景还有TDM模型,DIEN模型等。

小弟在此抛砖引玉,希望各位看官多多指点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级程序员如何面对职场压力?(2)--受伤的总是我

版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。本文地址&#xff1a;http://tech.it168.com/a2008/0911/204/000000204752.shtml 课程上线消息&#xff1a;Leo讲的《初入公司…

pycharm Debug问题

pycharm Debug问题 参考链接:https://blog.csdn.net/weixin_43472408/article/details/85072640 Debug的调试方式如下所示&#xff1a; 1.show execution point (F10) 显示当前所有断点 2.step over(F8) 单步调试。 若函数A内存在子函数a时&#xff0c;不会进入子函数a内执…

vue表单的用法

你可以用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇&#xff0c;但 v-model 本质上不过是语法糖&#xff0c;它负责监听用户的输入事件以更新数据&#xff0c;并特别处理一些极端的例子。 v-model 会忽略所有…

php执行npm命令_npm系列之命令执行

当我想使用vue的脚手架来创建一个项目的时候&#xff0c;我应该怎么做&#xff1f;执行命令 npm install -g vue/cli 全局安装&#xff0c;之后就可以在控制台中使用vue create programName 来创建一个项目。为什么可以直接使用vue命令&#xff1f;这类支持命令的依赖会在项目中…

模拟产品展示 Flash无法展示的追踪过程

鼠标滑过小图时&#xff0c;左侧前四张大图可以&#xff0c;但是最后那张大图无法展示&#xff1a; falsh产品展示需要通过参数传递&#xff0c;把关联产品id的图片get出来&#xff0c;如&#xff1a; http://192.168.8.166:90/category/prod_img.aspx?prodid101 结果&#xf…

git提交 本地分支和远程分支断开连接

1级标题 当 git push origin branch_name时遇到报错如下&#xff1a; fatal:‘origin’ does not appear to be a git repository fatal:Could not read from remote repository 原因&#xff1a; 本地分支和远程分支断开连接 解决方法&#xff1a; cd 本地分支里 1、git…

编程高手箴言

本书是作者十余年编程生涯中的技术和经验的总结。内容涵盖了从认识CPU、Windows运行机理、 编程语言的运行机理&#xff0c;到代码的规范和风格、分析方法、调试方法和内核优化&#xff0c;内有作者对许多问题 的认知过程和透彻的分析&#xff0c;以及优秀和精彩的编程经验。…

nodejs里的module.exports和exports

引 在node.js中我们可以使用module.exports和exports导出模块&#xff0c;设置导出函数、数组、变量等等 为什么可以用这两个模块&#xff1f; 或者直接问&#xff0c;node.js的模块功能是怎么实现的。 这样得益于javascript是函数性的语言&#xff0c;并支持闭包。 js的闭包 直…

c语言贪吃蛇最简单代码_C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!...

点击上方“大鱼机器人”&#xff0c;选择“置顶/星标公众号”福利干货&#xff0c;第一时间送达&#xff01;指针对于C来说太重要。然而&#xff0c;想要全面理解指针&#xff0c;除了要对C语言有熟练的掌握外&#xff0c;还要有计算机硬件以及操作系统等方方面面的基本知识。所…

SpringSecurity深度解析与实践(3)

这里写自定义目录标题 引言SpringSecurity之授权授权介绍java权限集成 登录失败三次用户上锁 引言 SpringSecurity深度解析与实践&#xff08;2&#xff09;的网址 SpringSecurity之授权 授权介绍 Spring Security 中的授权分为两种类型&#xff1a; 基于角色的授权&#…

简单解释什么是 依赖注入 和 控制反转

简单解释什么是 依赖注入 和 控制反转2017-07-09 关于 依赖注入 与 控制反转 的概念有些人觉得很难理解&#xff0c;最近在给别人讲这个概念的时候梳理了一个比较好理解的解释&#xff0c;而且我认为非技术人员也应该能听的懂&#xff0c;因此分享给大家&#xff0c;希望下次你…

python pip install指定国内源镜像

有时候安装一些依赖包&#xff0c;网不好&#xff0c;直接超时&#xff0c;或者这个包就是死都下不下来的时候&#xff0c;可以指定国内源镜像。 pip install -i 国内镜像地址 包名 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http://mirr…

机器学习之单标签多分类及多标签多分类

单标签二分类算法 Logistic算法 单标签多分类算法 Softmax算法 One-Versus-One&#xff08;ovo&#xff09;&#xff1a;一对一 One-Versus-All / One-Versus-the-Rest&#xff08;ova/ovr&#xff09;&#xff1a; 一对多 ovo和ovr的区别 Error Correcting Output code…

ionic3 隐藏子页面tabs

看了几天ionic3 问题还挺多的&#xff0c;今天想把所有子页面tabs 给去掉&#xff0c;整了半天&#xff0c;发现app.Module 是可以配置的 修改 IonicModule.forRoot(MyApp&#xff09; imports: [BrowserModule,// IonicModule.forRoot(MyApp),HttpModule,IonicModule.forRoot(…

cas单点登录-jdbc认证(三)

前言 本节的内容为JDBC认证&#xff0c;查找数据库进行验证&#xff0c;其中包括&#xff1a; 密码加密策略&#xff08;无密码&#xff0c;简单加密&#xff0c;加盐处理&#xff09;认证策略&#xff08;jdbc&#xff09;一、业务需求 不同的公司&#xff0c;需求业务需求或者…

get clone 出现 fatal: the remote end hung up unexpectedly5 MiB | 892.00 KiB/s 报错信息

fatal: the remote end hung up unexpectedly5 MiB | 892.00 KiB/s 解决方案 &#xff08;亲测有效&#xff09; 解决方案如下&#xff1a; git clone时加上 --depth1&#xff0c;比如&#xff1a; git clone https://gitee.com/songyitian/tctm.git --depth 1depth用于指定…

mybatis foreach map_重学Mybatis(六)-------输入映射(含面试题)

博主将会针对Java面试题写一组文章&#xff0c;包括J2ee&#xff0c;SQL&#xff0c;主流Web框架&#xff0c;中间件等面试过程中面试官经常问的问题&#xff0c;欢迎大家关注。一起学习&#xff0c;一起成长&#xff0c;文章底部有面试题。入参映射关键字说明图中paramenterTy…

php输出多余的空格或者空行

1&#xff0c;文件是否有bom。可以通过脚步检测&#xff0c;或者利用notepa打开&#xff0c;查看编码格式。 2. <?php echo something; ?> 或许是你的php标签外&#xff0c;有空格或者空行。一般的项目都是用框架&#xff0c;包含很多的文件&#xff0c;如果一个个文…

执行git命令时出现fatal: ‘origin‘ does not appear to be a git repository错误

执行git命令时出现fatal: ‘origin’ does not appear to be a git repository错误 在执行git pull origin master时出现&#xff1a;   fatal: ‘origin’ does not appear to be a git repository   致命提示:“origin”看起来不是一个git存储库   fatal: Could not r…

蒋涛作序盛赞Leo新作为“程序员职场实用百科全书”——《程序员羊皮卷》连载(1)

《程序员羊皮卷》当当购买地址&#xff1a;http://product.dangdang.com/product.aspx?product_id20691986 互动购买地址&#xff1a;http://www.china-pub.com/196049 程序员行业从外面看起来有很多绚丽的光环&#xff0c;这里有无数以程序致富的天才&#xff0c;世界首富比…