多头自注意力机制:

 这个to_Q, to_K, to_V就对应图里的linear

论文中表明,将模型分为多个头,形成多个子空间,可以让模型去关注不同方面的信息。上图中Multi-Head Attention 就是将 Scaled Dot-Product Attention 过程做 H 次,再把输出合并起来。

多头注意力机制的公式如下:

拆 Transformer 系列二:Multi- Head Attention 机制详解 - 知乎

self-Attention 机制

Attention 常用的有两种,一种是加性注意力(Additive Attention),另一组是点乘注意力(Dot-product Attention),论文采用的是点乘注意力,这种注意力机制相比加法注意力机制,更快,同时更省空间。

Self-Attention 是 Transformer 的核心内容,然而作者并没用详细讲解。

以下面这句话为例,作为我们翻译的输入语句,我们可以看下 Attention 如何对这句话进行表示。

The animal didn’t cross the street because it was too tired

我们可以思考一个问题,“it” 指代什么?是 “street” 还是 “animal” ? 对人来说,很容易就能知道是 “animal”,但是对于算法来说,并没有这么简单。

模型处理单词 “it” 时,Attention 允许将 “it” 和 “animal” 联系起来。当模型处理每个位置时,Attention 对不同位置产生不同的注意力,使其来更好的编码当前位置的词,如果你熟悉 RNN,就知道 RNN 如何根据之前的隐状态信息来编码当前词。

即:当编码 “it” 时,部分 Attention 集中于 “the animal”,并将其表示合并到 “it” 的编码中。

RNN 要逐步递归才能获取全局信息,因此一般要双向 RNN 才比较好,且下一时刻信息要依赖于前面时刻的信息。CNN 只能获取局部信息,是通过叠层来增大感受野,Attention 思路最为粗暴,一步到位获得了全局信息。

而 Transformer 使用 Self-Attention,简单的解释:通过确定Q和K之间的相似程度来选择V

使用 Self-Attention 有几个好处:

  • 每一层的复杂度小

    • 如果输入序列 n 小于表示维度 d 的话,Self-Attention 的每一层时间复杂度有优势。
    • 当 n 比较大时,作者也给出了解决方案,Self-Attention 中每个词不是和所有词计算 Attention,而是只与限制的 r 个词进行 Attention 计算。
  • 并行 Multi-Head Attention 和 CNN 一样不依赖前一时刻的计算,可以很好的并行,优于 RNN。
  • 长距离依赖 优于 Self-Attention 是每个词和所有词计算 Attention,所以不管他们中间有多长距离,最大路径长度都只是 1,可以捕获长距离依赖关系。

上面讲到 Decoder 中有两种 Attention,一种是 Self-Attention,一种是 Context-Attention。

Context-Attention 也就是 Encoder 和 Decoder 之间的 Attention,也可以称之为 Encoder-Decoder Attention。

无论是Self-Attention 还是 Context-Attention,它们在计算 Attention 分数的时候,可以有很多选择:

  • additive attention
  • local-base
  • general
  • dot-product
  • scaled dot-product

那么我们的Transformer模型,采用的是哪种呢?答案是:scaled dot-product attention

为什么要加这个缩放因子呢?论文里给出了解释:

  • 如果 dk 很小,加性注意力和点乘注意力相差不大,但是如果 dk 很大,点乘得到的值很大,如果不做 scaling,结果就没有加性注意力好,
  • 另外,点乘结果过大,使得经过 softmax 之后的梯度很小,不利于反向传播的进行,所以我们通过对点乘的结果进行scaling。

先简单说下 Q、K、V 是什么:

  • Encoder 的 Self-Attention 中,Q、K、V 都来自同一个地方(相等),他们是上一层 Encoder 的输出,对于第一层 Encoder,他们就是 Word Embedding 和 Positional Embedding 相加得到的输入。
  • Decoder 的 Self-Attention 中,Q、K、V都来自于同一个地方(相等),它们是上一层 Decoder 的输出,对于第一层 Decoder,他们就是 Word Embedding 和 Positional Embedding 相加得到的输入。但是对于 Decoder,我们不希望它能获得下一个 time step(将来的信息),因此我们需要进行 Sequence masking。
  • 在 Encoder-Decoder Attention 中,Q 来自于上一层 Decoder 的输出,K 和 V 来自于 Encoder 的输出,K 和 V 是一样的。

transform再次理解相关推荐

  1. 对深拷贝与浅拷贝的再次理解

    对深拷贝与浅拷贝的再次理解 记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再 ...

  2. 再次理解STM32中的堆栈机制

    再次理解STM32中的堆栈机制 刚拿到STM32时,你只编写一个死循环 void main() { while(1); }BUILD://Program Size: Code=340 RO-data= ...

  3. CSS3 Transform变形理解与应用

    CSS3 Transform变形理解与应用 Transform:对元素进行变形: Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞. ...

  4. 再次理解HTTP请求过程[概念原理篇]

    我曾多次阅读http协议,但是理解依然不深,在此,再次阅读,再次理解.加深两点:解析头部信息\r\n,分解头部和主体用\r\n\r\n.之所以一次请求会看到网络里有很多请求,是因为浏览器代替访问了多次 ...

  5. 傅立叶变换(Fourier Transform)分析理解

    引言 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解,最近,我偶尔从 ...

  6. 再次理解信号采样定理(低通抽样定理)

    以前对低通信号的采样定理简单理解为:必须要以信号的最高频率的2倍进行采样,否则就恢复不出来原信号,原因是采样频率Fs较小时,信号频谱发生了混叠,所以无法恢复. 仔细想想,这样理解当然正确,可以给出简单 ...

  7. php修改文件访问目录为 .htaccess_借github上韩国师傅的一个源码实例再次理解.htaccess的功效...

    今天翻了翻GitHub,很巧发现一个韩国师傅的实例:也是关于.htaccess的,就继续理解了一波:稍微修改了几行代码来理解一下:先来发出源码: 我们简单的审计:很明显,列出了禁止的后缀:但是很明显, ...

  8. patchGAN再次理解【相比于原始D全图输出true/false,patchGAN可以关注更多的区域】

    这种GAN的差别主要是在于Discriminator上,一般的GAN是只需要输出一个true or fasle 的矢量,这是代表对整张图像的评价:但是PatchGAN输出的是一个N x N的矩阵,这个 ...

  9. 由翻转字符窜再次理解递归

    要求:输入一个字符串,字符串反序输出. 比如:"hello" ⇒ "olleh" 首先就看代码是什么: #include <iostream> #i ...

最新文章

  1. regardless what you do
  2. 低成本、高性能创客开发板——PYB Nano
  3. code craft_以Craft.io为先—关于我们行业的实践职业道路的系列
  4. 看代码学知识之(2) ListView无数据时显示其他View
  5. Spring+SpringMVC+MyBatis深入学习及搭建(五)——动态sql
  6. 190910-ajax-请求小结
  7. 【CSS】学习笔记3 段落设置
  8. 交换机命令行配置与VLAN
  9. html出现滚动条页面闪动,CSS3 calc实现滚动条出现页面不跳动闪动
  10. pta 编程题10 Root of AVL Tree
  11. Matlab 四阶龙格库塔法求解二元常微分方程组
  12. html代码实现简单的简历模板
  13. mysql 导出表结构或表数据的操作
  14. 自底向上与自顶向下(递归与动态规划)
  15. 免费下载国内知网和万方等平台文档,及外文文献
  16. 自然语言处理之语言模型(LM)
  17. 浅述SATA接口Raid、AHCI、IDE三种模式
  18. electron通过注册表打开软件
  19. SqlServer 对象名无效的原因及解决方法
  20. 意识比智力重要,选择比努力重要

热门文章

  1. hibernate映射数据库表如何在不插入值的情况下使表中字段默认值生效
  2. MySQL进阶篇(01):基于多个维度,分析服务器性能
  3. SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
  4. inittab文件剖析[CentOS 5.X](第二版)
  5. 浙江省2018年高等数学竞赛工科类试题
  6. BitAdminCore框架更新日志20180529
  7. MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结
  8. Flask-第二课:路由
  9. spring-data-jpa原理探秘(2)-RepositoryQuery的用途和分类
  10. 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩