点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达

上一篇,我们讲述了attention的知识,这篇接上篇,更加深入的理解attention的有关思想和最新的self-attention机制

一、Attention机制的本质思想

如果把Attention机制从上文讲述例子中的Encoder-Decoder框架中剥离,并进一步做抽象,可以更容易看懂Attention机制的本质思想。

图9 Attention机制的本质思想

我们可以这样来看待Attention机制(参考图9):将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。即可以将其本质思想改写为如下公式:

其中,Lx=||Source||代表Source的长度,公式含义即如上所述。上文所举的机器翻译的例子里,因为在计算Attention的过程中,Source中的Key和Value合二为一,指向的是同一个东西,也即输入句子中每个单词对应的语义编码,所以可能不容易看出这种能够体现本质思想的结构。

当然,从概念上理解,把Attention仍然理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息,这种思路仍然成立。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。

至于Attention机制的具体计算过程,如果对目前大多数方法进行抽象的话,可以将其归纳为两个过程:第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理;这样,可以将Attention的计算过程抽象为如图10展示的三个阶段。

在第一个阶段,可以引入不同的函数和计算机制,根据Query和某个 Keyi ,计算两者的相似性或者相关性,最常见的方法包括:求两者的向量点积、求两者的向量Cosine相似性或者通过再引入额外的神经网络来求值,即如下方式:

第一阶段产生的分值根据具体产生的方法不同其数值取值范围也不一样,第二阶段引入类似SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过SoftMax的内在机制更加突出重要元素的权重。即一般采用如下公式计算:

第二阶段的计算结果 ai 即为 Valuei 对应的权重系数,然后进行加权求和即可得到Attention数值:

通过如上三个阶段的计算,即可求出针对Query的Attention数值,目前绝大多数具体的注意力机制计算方法都符合上述的三阶段抽象计算过程。

二、Self Attention模型

通过上述对Attention本质思想的梳理,我们可以更容易理解本节介绍的Self Attention模型。Self Attention也经常被称为intra Attention(内部Attention),最近一年也获得了比较广泛的使用,比如Google最新的机器翻译模型内部大量采用了Self Attention模型。

在一般任务的Encoder-Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素和Source中的所有元素之间。而Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。其具体计算过程是一样的,只是计算对象发生了变化而已,所以此处不再赘述其计算过程细节。

Self Attention与传统的Attention机制非常的不同:传统的Attention是基于source端和target端的隐变量(hidden state)计算Attention的,得到的结果是源端的每个词与目标端每个词之间的依赖关系。但Self Attention不同,它分别在source端和target端进行,仅与source input或者target input自身相关的Self Attention,捕捉source端或target端自身的词与词之间的依赖关系;然后再把source端的得到的self Attention加入到target端得到的Attention中,捕捉source端和target端词与词之间的依赖关系。因此,self Attention比传统的Attention mechanism效果要好,主要原因之一是,传统的Attention机制忽略了源端或目标端句子中词与词之间的依赖关系,相对比,self Attention可以不仅可以得到源端与目标端词与词之间的依赖关系,同时还可以有效获取源端或目标端自身词与词之间的依赖关系,如图7所示

图11 可视化Self Attention实例

图12 可视化Self Attention实例

从两张图(图11、图12)可以看出,Self Attention可以捕获同一个句子中单词之间的一些句法特征(比如图11展示的有一定距离的短语结构)或者语义特征(比如图12展示的its的指代对象Law)。

很明显,引入Self Attention后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN或者LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。

但是Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention对于增加计算的并行性也有直接帮助作用。这是为何Self Attention逐渐被广泛使用的主要原因。

来源:知乎,浪大大
链接:https://zhuanlan.zhihu.com/p/61816483

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

干货|理解attention机制本质及self-attention相关推荐

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

    什么是Attention机制? Attention机制的本质来自于人类视觉注意力机制.人们在看东西的时候一般不会从到头看到尾全部都看,往往只会根据需求观察注意特定的一部分. 简单来说,就是一种权重参数 ...

  2. 深入理解attention机制

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

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

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

  4. 理解Attention机制原理及模型

    目前采用编码器-解码器 (Encode-Decode) 结构的模型非常热门,是因为它在许多领域较其他的传统模型方法都取得了更好的结果.这种结构的模型通常将输入序列编码成一个固定长度的向量表示,对于长度 ...

  5. 【机器学习】Attention机制的一些整理与理解

    写在前面 由于最近需要用到Attention机制,看了一些相关的论文以及介绍等,所以打算将其整理一下.关于Attention机制的一些背景知识就不做过多介绍了,做NLP研究的同学一般对其不会陌生.不熟 ...

  6. AI算法之Attention机制

    1 Attention的本质是什么? Attention(注意力)机制如果浅层的理解,跟它的名字非常匹配.它的核心逻辑就是从关注全部到关注重点 Attention 机制很像人类看图片的逻辑,当我们看一 ...

  7. Attention 机制是什么?

    Attention 机制 Attention 正在被越来越广泛的得到应用.尤其是 BERT 火爆了之后. Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型? ...

  8. Attention机制的总结笔记

    人类的视觉注意力 Attention机制借鉴了人类的视觉注意力机制.视觉注意力机制是人类视觉所特有的大脑信号处理机制.人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦 ...

  9. NLP中的attention机制总结

    目录 1 attention机制原理 2 attention类型 2.1 按照是否可直接BP算法计算梯度进行分类 2.1.1 Soft attention 2.1.2 Hard attention 2 ...

最新文章

  1. 线上订单号重复了?一招搞定它!
  2. ListBox combobox的常用功能
  3. [Silverlight]使用MVVM模式打造英汉词典
  4. 阿里巴巴的云原生与开发者
  5. 未明确定义列存储过程没问题_使用Apache Kudu和Impala实现存储分层
  6. Django2中使用xadmin
  7. Windows下部署yolov5实现口罩检测
  8. 深入解读Docker底层技术cgroup系列(1)——cgroup介绍
  9. 创建图片mat_Python骚操作,让图片人物动起来!
  10. OpenJDK8和OpenJDK8u的差异
  11. 单元测试用例如何编写
  12. Java中NIO详解
  13. 从小学4年级的数学课开始解释线性回归
  14. 深圳市社会医疗保险门诊大病管理办法
  15. Pytorch训练问题:AssertionError: Invalid device id
  16. xcode11 The app delegate must implement the window property if it wants to use a main storyboard fil
  17. 最小二乘支持向量机(lssvm)回归预测(matlab)
  18. 练习题|文件操作和函数
  19. 一文读懂网站SEO优化国际版
  20. 一个程序员上海买房,遇到的黑天鹅事件

热门文章

  1. 受用一生的高效PyCharm使用技巧
  2. 华为又一重拳!全球首款5G基站核心芯片“天罡”发布!
  3. 对话云知声李霄寒:不计成本研发芯片,探索语音之外的“硬”实力
  4. 1000万个“AI名师”:用机器算法“解剖”应试教育 | AI聚变
  5. 干掉Random:这个类已经成为获取随机数的王者
  6. 直观讲解一下 RPC 调用和 HTTP 调用的区别!
  7. 用漫画了解 Linux 内核到底长啥样!
  8. 都优秀!两位硕士都发一作Nature,之后选择却截然不同!
  9. Fine-tune之后的NLP新范式:Prompt越来越火,CMU华人博士后出了篇综述文章
  10. 「留光」1小时:中科大让我们离「量子U盘」又近了一步