文献阅读(48)NIPS2017-Attention Is All You Need
本文是对《Attention Is All You Need》一文的浅显翻译与理解,如有侵权即刻删除。
文章目录
- Title
- 总结
- 1 位置编码
- 2 编码器和多头注意力机制
- 3 解码器和位置掩码
- 4 为什么选择注意力
Title
《Attention Is All You Need》
——NIPS2017
Author: Ashish Vaswani
总结
参考文章:
https://www.zhihu.com/question/61077555
https://zhuanlan.zhihu.com/p/63191028
https://zhuanlan.zhihu.com/p/48508221
https://zhuanlan.zhihu.com/p/46990010
文章提出了Transformer算法,抛弃传统机器翻译通过CNN或RNN构建的编码解码器模型,而是完全使用注意力机制构建。前人文章分析已经到位,在此主要梳理一下框架,并非完全按照文章结构进行介绍。
1 位置编码
首先,给出一段文本序列x,由于注意力机制无法捕获相对或绝对位置的信息,因此文章采用了位置编码的思想,对这段文本序列进行初始化为嵌入z。
使用sin和cos函数进行编码的含义,主要源自于这一定义:
这意味着p+k位置的向量可以表示成位置p向量的线性变换,提供了表达相对位置信息的可能性。
2 编码器和多头注意力机制
在对文本序列进行初始化后,就要送入编码器进行编码。编码器和解码器的结构是机器翻译中常见的经典结构,即给出数据序列,通过编码首先进行封装,换算后再解码成预期结果:
编码器层数设定为6,每一层又分为两个子层,首先进行注意力机制的加权计算,其次设置全连接层得到输出。注意到,在底层也就是第一层的输入是上述通过位置编码得到的嵌入向量,而之后的每一层的输入都是前一层的输出。
在层与层之间,文章还引入了残差连接的方法来预防梯度消失。由于网络变深后,不断求偏导会导致梯度消失的隐患增大,模型性能会不升反降。因此,残差连接允许低层的原始信息直接传递作为附加信息到后续高层,那么高层网络求偏导时,就会多出一个常数项,从而避免了梯度消失。
所谓注意力机制,其思想源自于信息检索领域,人们在搜索引擎中输入的查询内容即Query,系统为其匹配的关键字即Key,而最终搜索得到的结果即Value。因此,注意力机制事实上是一种对同一序列不同位置的向量进行加权重组的过程。通过计算每个位置Query和Key得到的分数,进行归一化后作为权重附加到实际的Value上,就完成了加权的过程,即:
事实上,在计算QK得分的时候,有多种方法:
以上即自注意力机制的计算过程,文章在此基础上加入了多头注意力。由于Q、K、V都是根据同一列向量按照不同参数矩阵生成的,为了捕捉各个位置上的权重多样性,多头注意力即采用多组参数矩阵来生成多组QKV,最终将它们拼接在一起,即:
因此在维度方面,有:
在实际设置中,d_model=512,表示每个时刻的输入和输出维度,h=8表示注意力头数,d_k=d_v=d_model/h=64,表示经过线性变换后,进行attentioin之前的维度。这样每一次attention生成维度为64的向量,8次拼接就又得回了512维的向量。
对全连接层,是由内部的Relu函数和外部的线性激活函数构成,即:
3 解码器和位置掩码
解码器同样六层,每一层除包含注意力子层和全连接子层外,还有一个将编码器输入的嵌入解码化的子层。相比于关注于解码器内部当前层输出与前一层输出间关系的自注意力层,编码解码子层关注编码器给出的特征向量和当前层输出的关系。
注意到文章在此提出了位置掩码的概念(mask),在transformer中有两种mask,即在所有注意力层中都用到的padding mask和只用在解码器中的sequence mask。
对padding mask,指的是文本序列的输出长度往往不同,通常做法是为短的序列用0来补足。但事实上这些填充的位置是没有意义的,因此文章在进行注意力计算前,将这些原本要补0的位置设置为负无穷,这样经过softmax之后,这些位置的数值就会倾向于0,在注意力计算中不起作用。
对sequence mask,如果将每个单词视为一个时刻的信息,那么在t时刻时,解码器应当只能得到t-1及其之前时刻的信息,而不能得到之后的信息。具体做法是,产生一个上三角矩阵,上三角的值全为0,这样在读取矩阵信息的时候,就会有效控制对未来时刻信息的掩盖。
对解码器而言,同时需要padding mask和sequence mask,则需要将两个mask的值进行相加。而在其他情况下,attention mask一律视为padding mask。
4 为什么选择注意力
文章通过与RNN、CNN在三个方面进行比较,阐述了选择注意力机制的原因:
(1)每一层的计算复杂度;(2)能够并行的计算,用所需最少操作数来衡量;(3)长距离依赖的路径长度,即前向/后向传播所需的步长。
文献阅读(48)NIPS2017-Attention Is All You Need相关推荐
- 文献阅读10期:ATTENTION, LEARN TO SOLVE ROUTING PROBLEMS!
[ 文献阅读·路径规划 ] ATTENTION, LEARN TO SOLVE ROUTING PROBLEMS! [1] 推荐理由:这篇应该不用多说了,ATTENTION模型做路径规划,算是一篇Mi ...
- 经典文献阅读之--Swin Transformer
0. 简介 Transfomer最近几年已经霸榜了各个领域,之前我们在<经典文献阅读之–Deformable DETR>这篇博客中对DETR这个系列进行了梳理,但是想着既然写了图像处理领域 ...
- 那些文献阅读能力爆表的科研学子,都在偷偷做这件事……
对于广大科研学子来说,阅读文献这件事可谓是贯穿整个学术生涯,因为文献是了解现在所学专业的领域切入点,且做科研遇到难题时还可以在文献中寻找答案. 以及科研实验完毕后,若是准备发表论文,那么还得再看看文献 ...
- 文献阅读总结:网络表示学习/图学习
本文是对网络表示学习/图学习(Network Representation Learning / Graph Learning)领域已读文献的归纳总结,长期更新. 朋友们,我们在github创建了一个 ...
- 文献阅读(60)ACL2021-Attention Calibration for Transformer in Neural Machine Translation
本文是对<Attention Calibration for Transformer in Neural Machine Translation>一文的浅显翻译与理解,如有侵权即刻删除. ...
- 【转载】关于文献阅读和科研选题
本文转载自程明明老师博客:https://mmcheng.net/paperreading/ 对于论文的阅读和研究脉络的梳理很清晰,特别是在于找研究方向的建议上:从开山文献开始,会到当事人的角度去 ...
- 文献阅读:Improving neural networks by preventing co-adaptation of feature detectors
文献阅读:Improving neural networks by preventing co-adaptation of feature detectors ----通过防止特征检测器的共适应以改进 ...
- 文献阅读系列-2|TBC-Net: A real-time detector for infrared small
TBC-Net: A real-time detector for infrared small TBC-Net:一种使用语义约束实时检测红外小目标的检测器 论文撰写文献阅读 提示:写完文章后,目录可 ...
- 论文阅读—Relation-Aware Graph Attention Network for Visual Question Answering
论文阅读-Relation-Aware Graph Attention Network for Visual Question Answering 一.标题 用于视觉问答的关系感知图注意力网络 二.引 ...
- 《论文阅读笔记》Attention Bottlenecks for Multimodal Fusion
转自于https://blog.csdn.net/me_yundou/article/details/121070837 查看全文 http://www.taodudu.cc/news/show-62 ...
最新文章
- LeetCode 1021:Remove Outermost Parentheses
- React AntD 表格查看修改时默认选中几行数据
- python中的面向对象:类与对象(重点!!!)
- jquery怎么创建一个img标签
- springboot异步任务
- 泛微oa系统什么框架_泛微OA ecology 二次开发实例 开发完整说明
- VMWare Workstation 15 serial number
- 2016版excel_想要下班直接打卡,这些Excel技巧可以帮到你
- C语言变量及其生命周期
- centos 安装 时间校准与定时同步
- 虚拟机共享服务器设置,虚拟机共享网络设置教程
- 运维小知识---If you insist running as root, then set the environment variable RUN_AS_USER=root...
- 计算机流程图设计教程,流程图制作工具分享,在电脑上就可以画图
- 10000小时定律:成为大牛的秘密是什么?
- MySQL 性能优化:8 种常见 SQL 错误用法!
- linux 修改vg名称,hp-ux 修改vg属性 | 旺旺知识库
- Flutte 之TextFile(文本输入框)
- 基于javascript扫雷小游戏,以前上学经常玩
- 秦储联合承办 | 西部数博会暨第三届中国西安区块链论坛即将召开
- 财务会计U8-出纳管理-日记账导入