transform再次理解
多头自注意力机制:
这个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再次理解相关推荐
- 对深拷贝与浅拷贝的再次理解
对深拷贝与浅拷贝的再次理解 记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再 ...
- 再次理解STM32中的堆栈机制
再次理解STM32中的堆栈机制 刚拿到STM32时,你只编写一个死循环 void main() { while(1); }BUILD://Program Size: Code=340 RO-data= ...
- CSS3 Transform变形理解与应用
CSS3 Transform变形理解与应用 Transform:对元素进行变形: Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞. ...
- 再次理解HTTP请求过程[概念原理篇]
我曾多次阅读http协议,但是理解依然不深,在此,再次阅读,再次理解.加深两点:解析头部信息\r\n,分解头部和主体用\r\n\r\n.之所以一次请求会看到网络里有很多请求,是因为浏览器代替访问了多次 ...
- 傅立叶变换(Fourier Transform)分析理解
引言 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解,最近,我偶尔从 ...
- 再次理解信号采样定理(低通抽样定理)
以前对低通信号的采样定理简单理解为:必须要以信号的最高频率的2倍进行采样,否则就恢复不出来原信号,原因是采样频率Fs较小时,信号频谱发生了混叠,所以无法恢复. 仔细想想,这样理解当然正确,可以给出简单 ...
- php修改文件访问目录为 .htaccess_借github上韩国师傅的一个源码实例再次理解.htaccess的功效...
今天翻了翻GitHub,很巧发现一个韩国师傅的实例:也是关于.htaccess的,就继续理解了一波:稍微修改了几行代码来理解一下:先来发出源码: 我们简单的审计:很明显,列出了禁止的后缀:但是很明显, ...
- patchGAN再次理解【相比于原始D全图输出true/false,patchGAN可以关注更多的区域】
这种GAN的差别主要是在于Discriminator上,一般的GAN是只需要输出一个true or fasle 的矢量,这是代表对整张图像的评价:但是PatchGAN输出的是一个N x N的矩阵,这个 ...
- 由翻转字符窜再次理解递归
要求:输入一个字符串,字符串反序输出. 比如:"hello" ⇒ "olleh" 首先就看代码是什么: #include <iostream> #i ...
最新文章
- regardless what you do
- 低成本、高性能创客开发板——PYB Nano
- code craft_以Craft.io为先—关于我们行业的实践职业道路的系列
- 看代码学知识之(2) ListView无数据时显示其他View
- Spring+SpringMVC+MyBatis深入学习及搭建(五)——动态sql
- 190910-ajax-请求小结
- 【CSS】学习笔记3 段落设置
- 交换机命令行配置与VLAN
- html出现滚动条页面闪动,CSS3 calc实现滚动条出现页面不跳动闪动
- pta 编程题10 Root of AVL Tree
- Matlab 四阶龙格库塔法求解二元常微分方程组
- html代码实现简单的简历模板
- mysql 导出表结构或表数据的操作
- 自底向上与自顶向下(递归与动态规划)
- 免费下载国内知网和万方等平台文档,及外文文献
- 自然语言处理之语言模型(LM)
- 浅述SATA接口Raid、AHCI、IDE三种模式
- electron通过注册表打开软件
- SqlServer 对象名无效的原因及解决方法
- 意识比智力重要,选择比努力重要
热门文章
- hibernate映射数据库表如何在不插入值的情况下使表中字段默认值生效
- MySQL进阶篇(01):基于多个维度,分析服务器性能
- SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
- inittab文件剖析[CentOS 5.X](第二版)
- 浙江省2018年高等数学竞赛工科类试题
- BitAdminCore框架更新日志20180529
- MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结
- Flask-第二课:路由
- spring-data-jpa原理探秘(2)-RepositoryQuery的用途和分类
- 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩