本文紧接《什么是Encoder-Decoder、Seq2Seq、Attention?》,目的是从输入输出、以及内部数据流和详细的计算过程角度,去剖析self-attention、Multi-Head Attention、Transformer的原理。

  • self-attention、Multi-Head Attention内部结构和计算原理,我参考的是:《详解Transformer中Self-Attention以及Multi-Head Attention》
  • Transformer全貌结构和Attention结构之外的一些模块原理,我参考的是:《Transformer--论文理解:transformer结构详解》

目录

1 概述

2 Transformer全貌

3 Self-Attention内部结构图

4 Multi-Head Attention内部结构图

5 Transformer其他模块原理


1 概述

  • self-attention:attention机制的一种。
  • Multi-Head Attention:attention机制的一种(其实就是对self-attention做了更多改进)。
  • Transformer:一种模型,它和ResNet分类器模型、Yolo检测器模型平级,都能用这种模型端到端的解决一种问题(它解决的是端到端翻译问题),只是Transformer里面既没有用RNN也没有用CNN,主要用的是Multi-Head Attention以及全连接层等东西。

问题:为什么会提出Transformer模型?

  • RNN:记忆能力有限、无法并行化。
  • LSTM:相对RNN提升了记忆能力,但无法并行化!必须一个时序一个时序的计算。

基于上述难题,谷歌在《Attention is all you need》中,提出transformer:记忆长度可以无限长,且可以并行化。

2 Transformer全貌

论文中原图架构:

《Transformer--论文理解:transformer结构详解》中绘制的结构:

(备注:下图encoder部分是6个encoder的堆叠串联,decoder部分也是6个堆叠串联,图中打字错了,右边方块中应该是“decoder”)

3 Self-Attention内部结构图

  • Q代表query,后续会去和每一个K进行匹配。
  • K代表key,后续会被每个Q匹配。
  • V代表value,从输入向量中提取得到的信息。

仔细研究观察输入输出的计算过程,你会发现,很多地方,计算是可以用矩阵计算并行完成的。我们知道,RNN它需要一个一个的去计算输入向量,但self-attention,可以一次性将所有输入向量同时输入,这就解决了计算并行问题。

4 Multi-Head Attention内部结构图

Multi-Head Attention和Self-Attention没有太多区别,唯一不同的是,Multi-Head Attention中根据定义的head数,会将输入向量形成的Q,K,V向量均分为几等分。后续独立的对这些均分的东西进行self-attention处理,然后再把出来的结果进行向量长度方向的拼接。

5 Transformer其他模块原理

在《Transformer--论文理解:transformer结构详解》文章中,非常详细的讲解了Transformer中其他模块的原理和计算过程,具体讲解内容如下(每个红色序号都是他会分章节讲解的内容):

由于上述博客已经讲的非常详细了,我这里就不重复剖析了,想进一步了解的,特别是Positional Embedding位置编码部分,后续可以去深入研究。

什么是self-attention、Multi-Head Attention、Transformer相关推荐

  1. attention机制及self-attention(transformer)

    最近接触的项目当中用到了transformer,学习相关知识之后其中一个重要的贡献就是引入了self-attention机制,了解了相关处理过程之后然而并没引起太多比较. 因为之前就已经有了atten ...

  2. attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer

    文章目录 attention sequence attention attention 与 self-attention channel attention 与 spatial attention m ...

  3. 《MA‑CRNN: a multi‑scale attention CRNN for Chinese text line recognition in natural scenes》论文阅读

    参考博文: CRNN的一个变种,可以读一读,看看相对于CRNN来说有什么变化?以及为什么? 文章目录 make decision step1:读摘要 step2:读Introduction step3 ...

  4. pytorch实现attention_Longformer: 局部Attention和全局attention的混搭

    最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的.完整的知识结构体系, 以下是要写的文章,本文是这个系列的第十一篇: Transformer:Attent ...

  5. Self Attention和Multi-Head Attention的原理和实现

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-47.html 引言 使用深度学习做NLP的方法,一般是将单词转 ...

  6. 【Attention,Self-Attention Self Attention Self_Attention】通俗易懂

    Attention is, to some extent, motivated by how we pay visual attention to different regions of an im ...

  7. 为节约而生:从标准Attention到稀疏Attention

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 如今 NLP 领域,Attention 大行其道,当然也不止 NLP,在 CV 领域 Attention 也占有一 ...

  8. attention与self attention的区别

    1 什么是注意力机制? 当我们观察某件事物/景色的时候,往往会先简单看下周围环境,然后将重点放在某一重要部分.深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,也是从众多信息中选择出对 ...

  9. Attention 与Hierarchical Attention Networks 原理

    Attention 与Hierarchical Attention Networks 1. Attention 注意力机制 1.1 什么是Attention? 1.2 加入Attention的动机 1 ...

  10. 注意力机制的分类 | Soft Attention和Hard Attention

    在前面两节的内容中我们已经介绍了注意力机制的实现原理,在这节内容中我们讲一讲有关于注意力机制的几个变种: Soft Attention和Hard Attention 我们常用的Attention即为S ...

最新文章

  1. 用父节点表示法表示一棵树
  2. 简单配置jena在eclipse的开发环境
  3. 玫瑰花函数matlab,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神...
  4. 计算机概论在线阅读,计算器概论 or 计算机概论
  5. 093:QuerySet API详解-QuerySet转换为SQL的条件
  6. 2018年11月27日 分类与集合
  7. HDU 5943 2016CCPC杭州 K: Kingdom of Obsession(二分匹配)
  8. 如何进行ASP.NET MVC 的测试
  9. web中有关文档元素距离的几个jquery 宽度 width高度height 尺寸 属性
  10. vc2008工程转vc2005
  11. Python nii文件转成tiff文件 以及遍历文件夹
  12. Kubernetes Downward API 基本用法
  13. [资源]C++ 程序员必收藏
  14. 北京博物馆十大镇馆之宝
  15. 微软Azure给openAI提供了多少机器资源
  16. WordSequence API
  17. java基于ssm的宠物狗商店交流网站
  18. python 图片识别服装_基于树莓派的服装识别系统及方法与流程
  19. 数据库事务的四大特性:ACID
  20. ESP8266实战(一)--wifi时钟的制作

热门文章

  1. Andriod TextView typeface
  2. Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
  3. 微信小程序 文字换行
  4. MSDN 教程短片 WPF 16(Path路径)
  5. Thymeleaf 入门
  6. 多媒体音量条显示异常跳动
  7. MySQL☞dual虚拟表
  8. Ubuntu 18 系统安装教程
  9. WEBSHELL跳板REDUH使用说明
  10. dateTimePicker编辑状态下,取值不正确的问题