1.传统的encode-decode模型

输入序列:

输出序列:

中间语义变量

所以对于,也就是

这就表明输入序列的每一个元素对于输出序列的每一个元素的作用是等价的,这显然是不合理的。比如机器翻译中,中文“我爱你”,对应英语中“I love you”。其中“我”对于“I”和“love”的翻译作用力显然不同。为了解决这个问题,我们希望每一个输出序列的元素具有“个性化”地中间语义向量C,也就是对于输出序列中的每个元素,输入序列的每个元素作用力度不同。因此,针对输出序列中的任意元素yi的个性化中间语义向量Ci的计算为,这就是注意力机制。

2.注意力机制

Google给出注意力机制的定义为,给定一个Query和一系列的key-value对一起映射出一个输出。

  • 将Query与key进行相似性度量(类似于上述的权重wij)
  • 将求得的相似性度量进行缩放标准化
  • 将权重与value进行加权

self-attention

attention机制通常用在encode与decode之间,但是self-attention则是输入序列与输出序列相同,寻找序列内部元素的关系即 K=V=Q。l例如《Attention Is All You Need》在编码器中使用self-attention,利用上一步的input值计算当前该位置input的值。如下图:

3.《Attention Is All You Need》

  • 在“编码-解码器注意”层中,query来自之前的的解码器层,而key和value来自编码器的输出。这使得decode中的每个位置都可以处理输入序列中所有位置。这模拟了seq2seq模型中典型的encode-decode注意机制
  • encode包含self-attention。在一个self-attention中,所有的value、key和query都来自encode中前一层的输出。encode中的每个位置都可以处理encode的前一层中的所有位置。
  • 类似地,解码器中的self-attention允许解码器中的当前位置之前的所有位置。我们需要防止解码器中的左向信息流动,以保护自动回归特性(阻止利用当前位置后面的信息)

其中, MultiHead attention 是将Q,K,V进行h次线性变换,然后进行attention,并将h次得到的结果进行拼接,进行一个线性变换。

由于编码器中用到的self-attention,没有考虑到输入序列中各元素的位置关系,因此需要将位置信息输入到模型中,因此加入了position encoding。文章采用的是如下方式。文章假设它可以让模型很容易地通过相对位置来学习,因为对于任何固定的偏置k,PEpos+k都可以表示成一个线性函数PE pos。

4.《Self-Attention with Relative Position Representations》

在《Attention Is All You Need》基础上,对position encodeing进行了优化。在《Attention Is All You Need》中采用的position encoding的方式,没有考虑到词与词之间的距离。因此本文提出一个位置向量表示,分别表示输入序列第i个元素与第j个元素的Key和Value对应的位置向量。因此,输出元素zi的计算为:

对于现行序列,本文边可以捕获输入元素之间相对位置的差异性。因为本文假设一定距离之外精确的相对位置信息在是无用的,所以只考虑最大相对位置为k的情况。这种使用j-i的形式,可以处理在训练集中没有见过的序列长度。(之前的方法应该存在这个问题,不能处理比训练数据更长的数据)

而 的计算如下:

参考文献:

  1. 《Attention Is All You Need》---> https://arxiv.org/abs/1706.03762
  2. 《Self-Attention with Relative Position Representations》--->https://arxiv.org/abs/1803.02155
  3. https://www.sohu.com/a/226596189_500659

Attention机制的小理解相关推荐

  1. 第22章:针对Cloze Tests基于Attention机制的的MRC领域开山之作:Teaching Machines to Read and Comprehend架构设计及完整源码实现

    1,对Text提供精细化的语言理解能力和推理能力的MRC为何需要Neural Networks和Attention机制的支持? 2,基于大规模训练数据集的集特征工程和分类于一体的深度学习MRC 3,数 ...

  2. 第22章针对Cloze Tests基于Attention机制的的MRC

    第22章:揭秘针对Cloze Tests基于Attention机制的的MRC领域开山之作:Teaching Machines to Read and Comprehend架构设计及完整源码实现 1,对 ...

  3. 干货|理解attention机制本质及self-attention

    点击上方"小白学视觉",选择加"星标"或"置顶"重磅干货,第一时间送达 上一篇,我们讲述了attention的知识,这篇接上篇,更加深入的理 ...

  4. 系统学习NLP(二十三)--浅谈Attention机制的理解

    转自:https://zhuanlan.zhihu.com/p/35571412 Attentin机制的发家史 Attention机制最早是应用于图像领域的,九几年就被提出来的思想.随着谷歌大佬的一波 ...

  5. 引读attention机制--个人理解

    文章目录 1. 意会--大脑注意到某物 2. 言传--分解注意过程 2.1 言传的准则 2.2 数据形式 和 大脑潜意识动作 2.3 观察分解例子 2.4 注意过程言传化 3. 公式化--注意机制 3 ...

  6. 深入理解CV中的Attention机制之SE模块

    CV中的Attention机制汇总(一):SE模块 Squeeze-and-Excitation Networks 论文链接:Squeeze-and-Excitation Networks 1. 摘要 ...

  7. 深入理解attention机制

    深入理解attention机制 1. 前言 2. attention机制的产生 3. attention机制的发展 4. attention机制的原理 5. attention的应用 参考文献 1. ...

  8. 理解LSTM/RNN中的Attention机制

    转自:http://www.jeyzhang.com/understand-attention-in-rnn.html,感谢分享! 导读 目前采用编码器-解码器 (Encode-Decode) 结构的 ...

  9. Attention机制理解笔记(空间注意力+通道注意力+CBAM+BAM)

    Attention机制理解笔记 声明 Attention分类(主要SA和CA) spitial attention channel attention SA + CA(spitial attentio ...

  10. 【论文阅读】深入理解Attention机制

    1. 什么是Attention机制? 其实我没有找到attention的具体定义,但在计算机视觉的相关应用中大概可以分为两种: 1)学习权重分布:输入数据或特征图上的不同部分对应的专注度不同,对此Ja ...

最新文章

  1. 统计学 计算机论文,统计学专业论文范文
  2. crontab、chkconfig、systemd、unit、targ
  3. mysql将一个字符转换成多个字符_将分隔的字符串转换为mysql中的多个值
  4. R中rep函数的使用
  5. 用中文传话游戏理解 RNN
  6. java保存base64图片_java保存base64位的图片,并且用时间文件夹分割
  7. FileNotFoundError: Could not find module xxx\Library\bin\geos_c.dl paddle安装采坑
  8. 智慧、智能图书馆管理平台系统+web端业务数据管理平台+Axure通用web端高保真交互业务数据管理平台+铭牌管理+设备监控+系统管理+内容管理+机构列表管理+用户权限管理+专题管理+服务包管理
  9. html给table加外边框,如何给table添加边框
  10. 提高Entity Framework性能的一些建议
  11. PyTorch:数据读取2 - Dataloader
  12. sql 查找重复数据,并且重复数据有子集
  13. 20200201每日一句
  14. SQL 当前时间加/减一天/时/分/秒
  15. BLE相关:低功耗蓝牙原理
  16. 计算LED分压电阻时?需要注意哪些事情?
  17. 2021ICPC网络预选赛 M题
  18. 木瓜移动再度荣获2022“Google优秀合作伙伴”
  19. [Java大厂必备面试题] 点滴促就辉煌, 每日三题【Day14】: 数据库8
  20. 如何解决Paypal多账号登录账户关联?

热门文章

  1. (转)MapReduce中的两表join几种方案简介
  2. python学习之-文件和对象
  3. 三种DDL的简述:create、alter、drop
  4. Spring 入门 Ioc-Annotation
  5. 编程经历的一些思考——一个工作4年老鸟的职业思考(转载)
  6. android_dialog
  7. 收藏:常用的广告代码的表达式
  8. (PotPlayer)Windows视频播放神器
  9. 解决servlet中get方式中中文乱码问题前驱(一):装饰者模式再理解
  10. selenium添加cookie切换到不同环境