Attention is all you need-论文阅读笔记
摘要
主流的序列转换模型都是基于复杂的循环或者卷积神经网络,需要进行解码器和编码器处理。表现最好的模型也是基于注意力机制,并连接编码器和解码器。本文提出一个新的简单网络结构:Transformer,同样基于注意力机制,不再依赖RNN或者CNN。基于两种机器翻译任务的实验显示这些模型质量更优同时并行度更高,需要更少的训练时间。本文模型在WMT 2014 英语德语翻译任务达到28.4BLEU,优于最好记录2 BLEU。在WMT 2014 英法翻译任务,模型获得单模型最好乘积 41.0 BLEU。模型在8块GPU上训练了3.5天。
介绍
RNN,LSTM,GRNN(门控循环神经网络)这些模型牢固建立了序列模型和诸如语言模型和机器翻译的转导问题的良好表现。循环模型内在的顺序性阻碍了训练过程中的平行度,当序列长度更长时这种问题会更加严重,内存约束限制了样本间的批处理。近期的工作通过因子分解和条件计算改进了计算效率和模型表现,但是序列计算的基础限制仍然存在。
背景
减少顺序计算的目标也形成了扩展神经GPU,ByteNet和ConvS2S的基础,她们使用卷积神经网络作为基础构建块,对所有输入和输出位置并行计算隐藏表征。在这些模型中,需要从两个任意输入或者输出位置的相关信号操作数随着位置之间的距离增加而增加。ConvS2S是线性增加,ByteNet是对数增长。在Transformer中,这些被减少到常数个操作数。尽管由于平均注意力加权位置降低有效分辨率为代价,我们使用多头注意力来抵消这种影响。
自注意力也被叫做内部注意力,是一种关系到单个序列的不同位置,去计算序列的标表征的注意力方法。自注意力方法已经被成功用到阅读理解,抽象概括,文本内涵和学习任务无关的句子表征。
端到端内存网络基于循环注意力机制而不是序列对齐循环。它已经被证明在简单语言问答和语言模型任务上表现良好。
Transformer是第一个完全依赖于自注意力去计算输入输出表征而不用序列对齐RNN或者卷积的转导模型。
本文主要描述Transformer和激励自注意力,并讨论他们对比其他模型的优势。
模型结构
大多数神经序列转换模型都是encoder-decoder结构的,encoder将输入序列的符号表征
Transformer大体上也使用这种结构,并使用了堆叠的自注意力和点式,encoder和decoder都是全连接层。
Encoder and Decoder Stacks#
Encoder: encoder有六个相等层堆叠组成,每一层有两个子层。第一个是多头自注意力机制,第二个是简单的位置相关的全连接前馈网络。模型在每两个子层后使用残差连接,接着是层标准化。也就是说,每个子层的输出是
Decoder:decoder也是由六个相同层的堆叠组成。除了两个endoer层的子层,decoder插入了第三个子层,在encoder堆栈的输出上进行多头注意力方法。和encoder类似,模型使用残差连接在每个子层上,然后是层标准化。论文修改了decoder堆栈的自注意力子层,防止位置进入后续位置。这种mask方法结合输出embedding被一个位置偏离,保证位置i的预测只依赖于比i小的位置的已知输出。
Attention#
Attention函数可以被描述为查询和一组键值对到输出的映射,查询、键值和输出都是向量。输出是由值的加权和计算而来,分配给每个值的权重是由查询和对应键的兼容函数计算得来。
Scaled Dot-Product Attention
本文中的这种注意力机制称为缩放点乘注意力。输入包含了query和
在实践中,模型在一组查询上同时计算注意力,打包成矩阵
两个最常用的注意力函数是加性注意力和点乘注意力。点乘注意力和本文算法相同,除了缩放因子
Multi-Head Attention
不使用
多头注意力允许模型在不同位置共同处理来自不同子空间的信息。单头注意力则抑制了这种共享。
投影是参数矩阵
模型中的注意力应用#
Transformer使用的多头注意力有三种不同的方式:
- 在encoder-decoder注意力层,query来自前面的decoder层,存储器key和value来自编码器的输出。这允许解码器的每个位置参与输入序列的所有位置。这模仿了sequence to sequence模型中典型的编码-解码注意力机制。
- encoder编码器包含自注意力层。在自注意力层所有key,value和query来自相同的地方,即encoder中前一层的输出。encoder中的每个位置都接受编码器前一层的所有位置。
- 相同地,解码器的自注意力层允许解码器中的每个位置参与解码上的每个位置。需要阻止解码器中的左向信息流并保护自动回归属性。我们实现这种机制而不是缩放点乘注意力,通过屏蔽(设置为负无穷)和非法连接相关的softmax层输入的所有值。
Position-wise前馈网络#
除了注意力子层,编码器和解码器的每一层都包含一个全连接前馈网络,它对每个位置单独且同等地施加。这包含两个线性转换,在这之间是ReLU激活函数。
虽然线性转换也同样跨过不同位置,他们在层和层之间使用不同的参数。另一种描述方式是和两个核大小为1的卷积层一样。输入输出的维度
Embedding 和 Softmax#
和其他序列转换模型相似,本文也使用学习后的embedding去转换输入符号和输出符号为
位置编码#
因为模型不包含任何循环和卷积,为了模型利用号序列顺序,我们必须注入一些关于序列中符号的绝对位置的信息。模型在编码器和解码器堆栈底部添加位置编码到embedding中。这些位置编码有相同的维度
本文使用不同频率的sine和cosine函数:
pos是位置,i为维度,位置编码的每个维度都和sin正弦曲线相关。波长从
作者使用学习后的位置嵌入进行实现,发现这两种版本有近乎相同的结果。之所以选择正弦曲线版本,是因为它允许模型去推断比在训练中遇到的更长的序列长度。
Why Self-Attention
在本节作者将自注意力层的各个方面与循环和卷积层进行比较,他们通常用于映射一个变量长度符号表征序列
一个是每层总计计算复杂度。另一个是可并行的计算量,通过序列操作需要的最小数量进行度量。第三个是网络中长范围依赖间的路径长度。学习长范围依赖是许多序列转换任务的关键挑战。一个影响着学习这种依赖的关键因子是前向和反向信号需要在网络中穿越的路径长度。在输入和输出序列中任意位置的结合路径越短,越容易去学习这种长范围依赖。因此我们也比较了由不同层类型组成的网络中,任意两个输入和输出位置的最大路径长度。
如表一所示,一个自注意力层连接着所有位置和常数个顺序执行操作。一个循环层需要
一个核宽度
至于侧面的收益,自注意力应该生成更多可解释的模型。作者观察模型中注意力的分布,在附录中提出并讨论了几个样例。不仅单个注意力头清楚地学习不同任务,许多注意头还表现出与句子的句法和语义结构相关的行为。
训练
训练数据和批数据#
在包含450万句子对的WMT 2014 英-德数据集训练,句子使用字节对编码,用一个有37000符号的源到目标的字典。英译法任务使用明显更大的WMT 2014 英译法数据集,包含了3600万句子,并且划分符号到32000词片的字典。句子对被以一个估计的序列长度进行批处理。每个训练批包含一组含有大概25000个源符号和25000个目标符号的句子对。
硬件和规划#
模型使用8块NVIDIA P100 GPU在一台机器上训练。基础模型训练每一步耗时0.4秒,总共训练了10万步或者12个小时。大模型的每一步时间为1秒,训练了30万步,耗时3.5天。
优化器#
使用Adam优化器,
正则化#
Residual Dropout: 作者对每个子层的输出施加dropout,在它被加到子层的输入并且标准化之前。此外,作者也对编码器和解码器栈中的embeddings的总和与位置编码应用dropout。对于基础模型,使用dropout率为
标签平滑: 在训练中,应用了值
结果
机器翻译#
在英德翻译任务中,Transformer(big)模型好过此前所有模型超过2.0 BLEU,达到了28.4 BLEU。基础模型Transformer也超过此前发布的模型与集合。
在英法翻译任务中,大模型Transformer(big)达到了41.0的BLEU分数。
对于基础模型,我们使用单个模型,从间隔10分钟写入的最后5个检查点平均得到。对于大模型,平均了最后20个检查点。
模型使用beam大小为4,长度惩罚
表2也展示了与其他模型进行对比的训练开销,使用训练时间乘以GPU数量和估计的单个GPU的持续单精度浮点运算能力来估计训练一个模型所需要的浮点操作数。
K80,K40,M40和P100 GPU的算力分别为2.8 ,3.7,6.0和9.5 TFLOPS 。
模型变化#
为了评估Transformer不同组件的重要性,作者将基础模型在不同方面进行变化,测量模型在newstest 2013 开发集的英德翻译任务上表现的变化。使用上节提到的beam search,但是不进行checkpoint平均化。
通过改变注意头的数量和注意力key和value的维度,保持计算量不变。单头注意力模型比最好的配置低0.9 BLEU,太多头的话质量也会下降。
在B行,作者观察到注意力key的尺寸
作者也观察了C行和D行,和预期一致,更大的模型表现更好,dropout有助于避免过拟合。在E行,把正弦曲线位置编码替换成学习后的位置嵌入,观察到与基础模型非常相近的结果
结论
在本文中,作者提出Transformer:第一个完全基于注意力的序列转换模型,在编码器-解码器结构中用多头自注意力取代最常用的循环层。
对于翻译任务,Transformer可以被训练地比基于循环或者卷积层的架构显著地更快。在WMT 2014 英-德 英-法翻译任务上,取得了新的成绩,比之前报道的任何模型都要表现出色。
作者对基于注意力的模型的未来很期待,计划把他们应用到其他任务。作者计划扩展Transformer到其他涉及文本以外的输入输出模型的问题,并研究本地受限制的注意力机制,以有效处理图像、音频和视频等大型输入和输出。使生成的序列更少也是另一个研究目标。
本文来自博客园,作者:d42z,转载请注明原文链接:https://www.cnblogs.com/d42z/p/16857316.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署