Transformer目录:《Transformer Paper》1.0 CV Transformer必读论文5篇_汉卿HanQ的博客-CSDN博客
前文参考:Transformer1.0-预热_汉卿HanQ的博客-CSDN博客
全文1w3字左右,按照论文翻译+个人理解精读,如果对你有所帮助,欢迎点个赞哦!
目录
3.2.1Scaled DotProductAttention
3.2.3Applications of Attention in our Model
3.3Position-wise Feed-Forward Networks
Abstract
- 翻译
主流的序列转换模型都是基于复杂的循环神经网络或卷积神经网络,且都包含一个encoder和一个decoder。表现最好的模型还通过attention机制把encoder和decoder联接起来。我们提出了一个新的、简单的网络架构,Transformer. 它只基于单独的attention机制,完全避免使用循环和卷积。在两个翻译任务上表明,我们的模型在质量上更好,同时具有更高的并行性,且训练所需要的时间更少。我们的模型在 WMT2014 英语-德语的翻译任务上取得了28.4的BLEU评分。在现有的表现最好模型的基础上,包括整合模型,提高了2个BLEU评分。在WMT2014英语-德语的翻译任务上,我们的模型在8个GPU上训练了3.5天(这个时间只是目前文献中记载的最好的模型训练成本的一小部分),创造了单模型的SOTA结果,BLEU分数为41.8,通过在大量和少量训练数据上所做的英语选区分析工作的成功,表明Transformer能很好的适应于其它任务。
- 精读
本文提出的Transformer摒弃了之前的循环和卷积的操作,并全完基于注意力机制,其效率也达到了较好的提升,在并行性和减少内存上有较大提升
一.Introduction
- 翻译
RNN,LSTM,GRU,Gated Recurrent Neural Networks 在序列建模和转换任务上,比如语言模型和机器翻译,已经是大家公认的取得SOTA结果的方法。自此,无数的努力继续推动递归语言模型和encoder-decoder体系结构的界限。
递归模型通常沿输入和输出序列的符号位置进行因子计算。在计算时将位置与步骤对齐,它们生成一系列隐藏状态ht,t位置的ht使用它的前驱ht−1和当前的输入生成。这种内部的固有顺阻碍了训练样本的并行化,在序列较长时,这个问题变得更加严重,因为内存的限制限制了样本之间的批处理。最近的工作通过因子分解技巧[21]和条件计算[32]在计算效率方面取得了显著的提高,同时也提高了后者的模型性能。然而,顺序计算的基本约束仍然存在。
在各种各样的任务中,注意力机制已经成为各种引人注目的序列模型和转换模型中的不可或缺的组成部分,它允许对依赖关系建模,而不需要考虑它们在输入或输出序列中的距离。然而,在除少数情况外的所有情况下[27],这种注意机制都与一个递归网络结合使用。
在这项工作中,我们提出了Transformer,这是一种避免使用循环的模型架构,完全依赖于注意机制来绘制输入和输出之间的全局依赖关系。Transformer允许更显著的并行化,使用8个P100 gpu只训练了12小时,在翻译质量上就可以达到一个新的SOTA。
- 精读
之前的语言模型RNN,LSTM,GRU等需要从左到右一步步计算,因此难以并行计算,并且过早的历史信息容易丢失,消耗内存大
RNN上使用注意力机制,通过它注意力机制把encoder的信息传递给decoder,可以不考虑输入输出序列的距离建模。而本文的transformer完全不使用RNN,可以避免使用循环的模型架构,完全依赖于注意机制来绘制输入和输出之间的全局依赖关系,来提高并行性,缩短计算时间。
二.Background
- 翻译
减少序列计算的目标也成就了 Extended Neural GPU [16],ByteNet[18],和ConvS2S[9]的基础,它们都使用了卷积神经网络作为基础模块,并行计算所有输入和输出位置的隐藏表示。在这些模型中,将来自两个任意输入或输出位置的信号关联起来所需的操作数,随位置间的距离而增长,ConvS2S为线性增长,ByteNet为对数增长。这使得学习远距离位置之间的依赖性变得更加困难[12]. 在Transformer中,这种情况被减少到了常数次操作,虽然代价是由于平均 注意力加权位置信息降低了有效分辨率,如第3.2节所述,我们用多头注意力抵消这种影响。
self-attention,有时也叫做内部注意力,是一种注意力机制,它将一个序列的不同位置联系起来,以计算序列的表示。self-attention 已经成功的运用到了很多任务上,包括阅读理解、抽象摘要、语篇蕴涵和学习任务无关的句子表征等。
已经被证明,端到端的记忆网络使用循环attention机制替代序列对齐的循环,在简单的语言问答和语言建模任务中表现良好。
然而,据我们所知,Transformer是第一个完全依赖于self-attetion来计算其输入和输出表示而不使用序列对齐的RNN或卷积的转换模型,在下面的章节中,我们将描述Transformer,motivate ,self-attention,并讨论它相对于[17,18]和[9]等模型的优势
- 精读
自注意力机制,是一种将单个序列的不同位置关联起来以计算序列表示的注意力机制,并且自注意力已成功应用在诸多领域。transformer是第一个完全依赖自注意力机制的模型,用注意力机制可以直接看一层的数据,很好的解决了CNN中卷积感受野距离较远需要多次卷积结合的问题。
三.Model Architecture
- 翻译
大多数有竞争力的序列转换模型都有encoder-decoder结构构。这里,encoder将符号表示的输入序列( x 1 , . . . , x n )映射成一个连续表示的序列z = ( z 1 , . . . , z n )。给定z,解码器以一次生成一个字符的方式生成输出序列( y 1 , . . . , y m ) 。在每一步,模型都是自回归的[10],在生成下一个字符时,将先前生成的符号作为附加输入。
Transformer遵循这个总体架构,使用堆叠的self-attention层、point-wise和全连接层,分别用于encoder和decoder,如图1的左半部分和右半部分所示。
- 精读
Transformer1.0-预热_汉卿HanQ的博客-CSDN博客
3.1Encoder and Decoder Stacks
- 翻译
Encoder:encoder由N(N=6)个完全相同的layer堆叠而成.每层有两个子层。第一层是multi-head self-attention机制,第二层是一个简单的、位置全连接的前馈神经网络。我们在两个子层的每一层后采用残差连接[11],接着进行layer normalization[1]。也就是说,每个子层的输出是LayerNorm(x+Sublayer(x)),其中Sublayer(x) 是由子层本身实现的函数。为了方便这些残差连接,模型中的所有子层以及embedding层产生的输出维度都为dmodel=512。
Decoder: decoder也由N(N=6)个完全相同的layer堆叠而成.除了每个编码器层中的两个子层之外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行multi-head attention操作,与encoder相似,我们在每个子层的后面使用了残差连接,之后采用了layer normalization。我们也修改了decoder stack中的 self-attention 子层,以防止当前位置信息中被添加进后续的位置信息。这种掩码与偏移一个位置的输出embedding相结合, 确保对第i ii个位置的预测 只能依赖小于i的已知输出。
- 精读
Encoder
将一个长为n的输入(如句子),序列(x1, x2, … xn)映射为向量(z1, z2, …, zn)
Encoder由n个相同层组成,重复6个layers,每个layers会有两个sub-layers,每个sub-layers里第一个layer是multi-head attention,第二个layer是 simple,position-wise fully connected feed-forward network,简称 MLP。
每个sub-layer的输出都做一个残差连接和layerNorm。计算公式:LayerNorm( x +Sublayer(x) ),Sublayer(x) 指 self-attention 或者 MLP。
残差连接需要输入和输出的维度一致,所以每一层的输出维度在transformer里都是固定的,都是512维。与CNN不同,MLP空间维度逐层下降
Decoder
Decoder 拿到Encoder 的输出,会生成一个长为 m 的序列(y1, y2, … , ym)。n 和 m 可以一样长、也可以不一样长,编码时可以一次性生成,解码时只能一个个生成(auto-regressive 自回归模型)Decoder同样由n个相同层组成。
除了Encoder中的两个子层外,Decoder还增加了一个子层:对Encoder层的输出执行多头注意力。
另外对自注意力子层进行修改(Mask),防止某个position受后续的position的影响。确保位置i的预测只依赖于小于i的位置的已知输出。输出就是标准的 Linear+softmax。
LayerNorm
LayerNorm是层标准化,和 BatchNorm 在很多时候几乎一样,除了实现方法不同。
BN取的是不同样本的同一个特征,而LN取的是同一个样本的不同特征。在BN和LN都能使用的场景中,BN的效果一般优于LN,原因是基于不同数据,同一特征得到的归一化特征更不容易损失信息。
但是有些场景是不能使用BN的,例如batchsize较小或者在RNN中,这时候可以选择使用LN,LN得到的模型更稳定且起到正则化的作用。RNN能应用到小批量和RNN中是因为LN的归一化统计量的计算是和batchsize没有关系的。
3.2Attention
- 翻译
Attention机制可以描述为将一个query和一组key-value对映射到一个输出,其中query,keys,values和输出均是向量。输出是values的加权求和,其中每个value的权重 通过query与相应key的兼容函数来计算。
- 精读
Query:查询 目标在target区域 即decoder
Key:键 在源头,即encoder
Value:值 在源头,即encoder
相似度: Q K内积(多d相同,则向量内积越大,余弦值越大,相似度越高 如果内积为0 则表示正交,即相似度为0)
3.2.1Scaled DotProductAttention
- 翻译
我们称我们的特殊attention为Scaled Dot-Product Attention(Figure 2)。输入由query、dkdk的key和dvdv的value组成。我们计算query和所有key的点积,再除以√dk然后再通过softmax函数来获取values的权重。
在实际应用中,我们把一组query转换成一个矩阵Q,同时应用attention函数。key和valuue也同样被转换成矩阵K和矩阵V。我们按照如下方式计算输出矩阵:
additive attention和dot-product(multi-plicative) attention是最常用的两个attention 函数。dot-product attention除了没有使用缩放因子1/√1dk外,与我们的算法相同。Additive attention使用一个具有单隐层的前馈神经网络来计算兼容性函数。尽管在理论上两者的复杂度相似,但是在实践中dot-product attention要快得多,而且空间效率更高,这是因为它可以使用高度优化的矩阵乘法代码来实现。
当dk的值较小时,这两种方法性能表现的相近,当dk比较大时,addtitive attention表现优于 dot-product attention。我们认为对于大dk,点积在数量级上增长的幅度大,将softmax函数推向具有极小梯度的区域。为了抵消这种影响,我们对点积扩展1/√dk倍。
- 精读
Scaled Dot-Product Attention是特殊attention,输入包括查询Q和键K的维度dk 以及值V的维度dv 。计算查询和键的点积,将每个结果除dk−−√dk ,然后用 softmax() 函数来获得值的权重。
在实际使用中,我们同时计算一组查询的注意力函数,并一起打包成矩阵 Q。键和值也一起打包成矩阵 K 和 V。
Q1:softmax作用?
对于一个Q会给 n 个 K-V 对,Q会和每个K-V对做内积,产生 n 个相似度。传入softmax后会得到 n 个非负并且和为 1 的权重值,把权重值与 V 矩阵相乘后得到注意力的输出。
Q2:为什么除√1dk?
虽然对于较小的 dk 两者的表现相似,但在较大的 dk 时,加法注意力要优于没有缩放机制的点乘注意力。我们认为在较大的 dk 时,点乘以数量级增长,将 softmax 函数推入梯度极小的区域,值就会更加向两端靠拢,算梯度的时候,梯度比较小。为了抵抗这种影响,我们使用 1/√dk缩放点乘结果。
3.2.2MultiHead Attention
- 翻译
相比于使dmodel维度的queries,keys,values执行一个attention函数,我们发现使用不同的学习到的线性映射把queries, keys 和 values线性映射到dk,dk和dv维度h次是有益的。在queries,keys和values的每个映射版本上,我们并行的执行attention函数,生成dv维输出值。它们被拼接起来再次映射,生成一个最终值,如 Figure 2 中所示。
Multi-head attention允许模型把不同位置子序列的表示都整合到一个信息中。如果只有一个attention head,它的平均值会削弱这个信息。
在这项工作中,我们采用h = 8 个并行attention层或head。 对每个head,我们使用 dk = dv = dmodel / h = 64 dk= dv = dmodel/h = 64。 由于每个head尺寸上的减小,总的计算成本与具有全部维度的单个head attention相似。
- 精读
在多头注意力机制中,不再使用一个attention函数,而是使用不同的学习到的线性映射将q,k,v分布线性投影到dq,dk,dv维度h次,然后将q,k,v这些投影版本中的每一个加上并行执行注意力功能,产生h个注意力函数,最终将这些注意力函数拼接并再次投影,输出最终值。
本文的点积注意力先进行投影(投影权重W可学习),多头注意力给h次机会学习不一样的投影方法,使得在投影进去的度量空间里能够去匹配不同模式需要的一些相似函数。
3.2.3Applications of Attention in our Model
- 翻译
Multi-head attention在Transformer中有三种不同的使用方式:
在encoder-decoder attention层中,queries来自前面的decoder层,而keys和values来自encoder的输出。这使得decoder中的每个位置都能关注到输入序列中的所有位置。 这是模仿序列到序列模型中典型的编码器—解码器的attention机制,例如[38, 2, 9]。
encoder包含self-attention层。 在self-attention层中,所有的key、value和query来自同一个地方,在这里是encoder中前一层的输出。 encoder中的每个位置都可以关注到encoder上一层的所有位置。
类似地,decoder中的self-attention层允许decoder中的每个位置都关注decoder层中当前位置之前的所有位置(包括当前位置)。 为了保持解码器的自回归特性,需要防止解码器中的信息向左流动。我们在scaled dot-product attention的内部 ,通过屏蔽softmax输入中所有的非法连接值(设置为 −∞)实现了这一点。
- 精读
Transformer中使用了三种不同的注意力头
Encoder:输入数据经过Embedding+位置Encoder后,复制了三份,分别为q,k,v。因为这个数据同时担任q,k,v三个数据,所以叫做自注意力机制。
Decoder:其中k,v来自encoder,q来自掩码多头注意力
Decoder掩码注意力层:t时刻后的数据权重设置为0
3.3Position-wise Feed-Forward Networks
- 翻译
除了encoder子层之外,我们的encder和decoder中的每个层还包含一个全连接的前馈网络,该网络分别单独应用于每一个位置。这包括两个线性转换,中间有一个ReLU激活。
尽管线性变换在不同位置上是相同的,但它们在层与层之间使用不同的参数。 它的另一种描述方式是两个内核大小为1的卷积。 输入和输出的维度为dmodel = 512,内部层的维度dff = 2048
3.4Embedding and Softmax
- 翻译
与其他序列转换模型类似,我们使用学习到的嵌入词向量 将输入字符和输出字符转换为维度为dmodel的向量。我们还使用普通的线性变换和softmax函数将decoder输出转换为预测的下一个词符的概率。在我们的模型中,两个嵌入层之间和pre-softmax线性变换共享相同的权重矩阵,类似于[30]。 在嵌入层中,我们将这些权重乘以√dmodel
- 精读
Embedding: 特征嵌入,embedding是可以简单理解为通过某种方式将词向量化,即输入一个词输出该词对应的一个向量。embedding可以采用训练好的模型如GLOVE等进行处理,也可以直接利用深度学习模型直接学习一个embedding层,Transformer模型的embedding方式是第二种,即自己去学习的一个embedding层。
3.5Position Encoding
由于我们的模型不包含循环或卷积,为了让模型利用序列的顺序信息,我们必须加入序列中关于字符相对或者绝对位置的一些信息。 为此,我们在encoder和decoder堆栈底部的输入嵌入中添加“位置编码”。 位置编码和嵌入的维度dmodel相同,所以它们两个可以相加。有多种位置编码可以选择,例如通过学习得到的位置编码和固定的位置编码[9]
在这项工作中,我们使用不同频率的正弦和余弦函数:
其中pos 是位置,i 是维度。也就是说,位置编码的每个维度对应于一个正弦曲线。波长形成了从2π到10000·2π的几何数列。我们之所以选择这个函数,是因为我们假设它可以让模型很容易地通过相对位置来学习,因为对任意确定的偏移k, PEpos+k可以表示为PEpos的线性函数。
我们还尝试使用预先学习的positional embeddings[9]来代替正弦波,发现这两个版本产生了几乎相同的结果 (see Table 3 row (E))。我们之所以选择正弦曲线,是因为它允许模型扩展到比训练中遇到的序列长度更长的序列。
- 精读
由于Transformer中不包含循环和卷积,输出的是v的加权和,对于任意的k-v打乱,结果都一样。但它书讯变化而值不变,若一个序列完全被打乱,其语义肯定会发生变化,但注意力机制不会处理这种情况。
因此要在注意力机制的输入中加入时序信息,位置在encoder和decoder端的embedding后,以补充attetion机制本身不能捕捉位置信息的缺陷
四.Why self-attention
- 翻译
在这一节中,我们将self-attention layers与常用的recurrent layers和convolutional layers进行各方面的比较,比较的方式是 将一个可变长度的符号表示序列 ( x 1 , . . . , x n ) 映射到另一个等长序列( z 1 , . . . , z n ) ,用 xi,zi∈Rd,比如在典型的序列转换的encoder或decoder中的隐藏层。我们考虑三个方面,最后促使我们使用self-attention。
一是每层的总计算复杂度。另一个是可以并行化的计算量,以所需的最小序列操作数衡量。
第三个是网络中长距离依赖关系之间的路径长度。在许多序列转换任务中,学习长距离依赖性是一个关键的挑战。影响学习这种依赖关系能力的一个关键因素是网络中向前和向后信号必须经过的路径的长度。输入和输出序列中任意位置组合之间的这些路径越短,越容易学习长距离依赖。因此,我们还比较了在由different layer types组成的网络 中的任意两个输入和输出位置之间的最大的路径长度。
如表1所示,self-attention layer用常数次(O ( 1 ) )的操作连接所有位置,而recurrent layer需要O(n)顺序操作。在计算复杂度方面,当序列长度N小于表示维度D时,self-attention layers比recurrent layers更快,这是使用最先进的机器翻译模型表示句子时的常见情况,例如word-piece [38] 和byte-pair [31] 表示。为了提高包含很长序列的任务的计算性能,可以仅在以输出位置为中心,半径为r的的领域内使用self-attention。这将使最大路径长度增长到O ( n / r ) 。我们计划在今后的工作中进一步研究这种方法。
核宽度为k<n的单层卷积不会连接每一对输入和输出的位置。要这么做,在相邻的内核情况下,需要一个n个卷积层的堆栈, 在扩展卷积的情况下需要O(logk(n)) 层[18],它们增加了网络中任意两个位置之间的最长路径的长度。 卷积层通常比循环层代价更昂贵,这与因子k有关。然而,可分卷积[6]大幅减少复杂度到O(k⋅n⋅d+n⋅d2)。然而,即使k=n,可分离卷积的复杂度等于self-attention layer和point-wise feed-forward layer的组合,这是我们在模型中采用的方法。
一个随之而来的好处是,self-attention可以产生更多可解释的模型。我们从我们的模型中研究attention的分布,并在附录中展示和讨论示例。每个attention head不仅清楚地学习到执行不同的任务,还表现出了许多和句子的句法和语义结构相关的行为。
- 精读
考虑到每层的计算强度,并行计算量和网络中国长距离依赖之间的路径问题。尤其是计算距离问题,因此采用自注意力机制产生解释性更强的模型
五.Training
5.1Training Data and Batching
- 翻译
我们在标准的WMT 2014英语-德语数据集上进行了训练,其中包含约450万个句子对。 这些句子使用byte-pair编码[3]进行编码,源语句和目标语句共享大约37000个词符的词汇表。 对于英语-法语翻译,我们使用大得多的WMT 2014英法数据集,它包含3600万个句子,并将词符分成32000个word-piece词汇表[38]。 序列长度相近的句子一起进行批处理。 每个训练批次的句子对包含大约25000个源词符和25000个目标词符。
5.2Hardware and Schedule
- 翻译
我们在一台具有8个 NVIDIA P100 gpu的机器上训练我们的模型。对于paper中描述的使用超参数的基础模型,每个训练步骤大约需要0.4秒。我们对基础模型进行了总共100000步或12小时的训练。对于我们的大型模型(见表3的底线),步进时间为1.0秒。大模型 使用了30万步(3.5天)的训练。
5.3Optimizer
- 翻译
我们使用Adam优化器[20],其中β1 = 0.9, β2 = 0.98及ϵ= 10-9。
这对应于在第一次warmup_steps 步骤中线性地增加学习速率,并且随后将其与步骤数的平方根成比例地减小。 我们使用warmup_steps=4000。
5.4Regularization
- 翻译
训练中我们采用三种正则化:
Residual Dropout 我们在对每个子层的输出上执行dropout操作,这个操作在additive操作(子层的输出加上子层的输入)和 normalized操作之前。 此外,在编码器和解码器堆栈中,我们将丢弃应用到嵌入和位置编码的和。 对于基础模型,我们使用Pdrop = 0.1丢弃率。
六.Results
6.1Machine Translation
- 翻译
在WMT 2014英语-德语翻译任务中,大型Transformer模型(表2中的Transformer (big))比以前报道的最佳模型(包括整合模型)高出2个以上的BLEU评分,以28.4分建立了一个全新的SOTA BLEU分数。 该模型的配置列在表3的底部。 在8 个P100 GPU上花费3.5 天进行训练。 即使我们的基础模型也超过了以前发布的所有模型和整合模型,且训练成本只是这些模型的一小部分。
我们的模型在 WMT2014 英语-德语的翻译任务上取得了28.4的BLEU评分。在现有的表现最好模型的基础上,包括整合模型,提高了2个BLEU评分。
在WMT 2014英语-法语翻译任务中,我们的大型模型的BLEU得分为41.0,超过了之前发布的所有单一模型,训练成本低于先前最先进模型的1 ∕ 4 。 英语-法语的Transformer (big) 模型使用 Pdrop=0.1,而不是0.3。
对于基础模型,我们使用的单个模型来自最后5个checkpoints的平均值,这些checkpoints每10分钟保存一次。 对于大型模型,我们对最后20个checkpoints进行了平均。 我们使用beam search,beam大小为4 ,长度惩罚α = 0.6 [38]。 这些超参数是在开发集上进行实验后选定的。 在推断时,我们设置最大输出长度为输入长度+50,但在条件允许时会尽早终止[38]。
表2总结了我们的结果,并将我们的翻译质量和训练成本与文献中的其他模型体系结构进行了比较。 我们通过将训练时间、所使用的GPU的数量以及每个GPU的持续单精度浮点能力的估计相乘来估计用于训练模型的浮点运算的数量。
6.2Model Variations
- 翻译
为了评估Transformer不同组件的重要性,我们以不同的方式改变我们的基础模型,观测在开发集newstest2013上英文-德文翻译的性能变化。 我们使用前一节所述的beam search,但没有平均checkpoint。 我们在表中列出这些结果 3.
在表3的行(A)中,我们改变attention head的数量和attention key和value的维度,保持计算量不变,如3.2.2节所述。 虽然只有一个head attention比最佳设置差0.9 BLEU,但质量也随着head太多而下降。
在表3行(B)中,我们观察到减小key的大小dk会有损模型质量。 这表明确定兼容性并不容易,并且比点积更复杂的兼容性函数可能更有用。 我们在行(C)和(D)中进一步观察到,如预期的那样,更大的模型更好,并且dropout对避免过度拟合非常有帮助。 在行(E)中,我们用学习到的positional encoding[9]来替换我们的正弦位置编码,并观察到与基本模型几乎相同的结果。
6.3English Constituency Parsing
- 翻译
为了评估Transformer是否可以扩展到其他任务,我们进行了英语选区解析的实验。这项任务提出特别的挑战:输出受到很强的结构性约束,并且比输入要长很多。 此外,RNN序列到序列模型还没有能够在小数据[37]中获得最好的结果。
我们用dmodel = 1024 在Penn Treebank[25]的Wall Street Journal(WSJ)部分训练了一个4层的transformer,约40K个训练句子。 我们还使用更大的高置信度和BerkleyParser语料库,在半监督环境中对其进行了训练,大约17M个句子[37]。 我们使用了一个16K词符的词汇表作为WSJ唯一设置,和一个32K词符的词汇表用于半监督设置。
我们只在开发集的Section 22 上进行了少量的实验来选择dropout、attention 和residual(第5.4节)、learning rates和beam size,所有其他参数从英语到德语的基础翻译模型保持不变。在推断过程中,我们将最大输出长度增加到输入长度+300。 对于WSJ和半监督设置,我们都使用beam size = 21 和α = 0.3 。
表4中我们的结果表明,尽管缺少特定任务的调优,我们的模型表现得非常好,得到的结果比之前报告的Recurrent Neural Network Grammar [8]之外的所有模型都好。
与RNN序列到序列模型[37]相比,即使仅在WSJ训练40K句子组训练时,Transformer也胜过BerkeleyParser [29]。
七.Conclusion
在这项工作中,我们提出了Transformer,第一个完全基于attention的序列转换模型,用multi-headed self-attention取代了encoder-decoder架构中最常用的recurrent layers。
对于翻译任务,Transformer比基于循环或卷积层的体系结构训练更快。 在WMT 2014英语-德语和WMT 2014英语-法语翻译任务中,我们取得了最好的结果。 在前面的任务中,我们最好的模型甚至胜过以前报道过的所有整合模型。
我们对基于attention的模型的未来感到兴奋,并计划将它们应用于其他任务。 我们计划将Transformer扩展到除文本之外的涉及输入和输出模式的问题,并研究局部的、受限的attention机制,以有效地处理图像、音频和视频等大型输入和输出。 让生成具有更少的顺序性是我们的另一个研究目标。
我们用于训练和评估模型的代码可以在GitHub - tensorflow/tensor2tensor: Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research.找到。
八.Innovation point
1.自注意力机制(Self-Attention Mechanism): Transformer 引入了一种全新的自注意力机制,允许模型在处理序列数据时,直接计算输入序列中不同位置之间的关系。这使得模型能够在不受限于固定窗口大小的情况下,同时捕捉长距离的依赖关系和短距离的局部特征。
2.无需序列顺序: 传统的循环神经网络(RNN)和卷积神经网络(CNN)在处理序列数据时通常需要考虑数据的顺序,而 Transformer 不需要。这种无序的特性使得 Transformer 更容易并行化,从而提高了训练速度。
3.多头自注意力(Multi-Head Self-Attention): Transformer 中的自注意力机制被扩展为多头机制,允许模型通过多个注意力头同时学习不同的关系表示。这种多头机制增强了模型的表示能力,使其能够从不同角度捕捉输入数据的特征。
4.位置编码(Positional Encoding): 由于自注意力机制本身不包含位置信息,为了使模型能够处理序列数据,Transformer 引入了位置编码,将输入序列的位置信息嵌入到模型中。
5.编码器-解码器架构: Transformer 模型由编码器和解码器两部分组成,可以用于序列到序列的任务,如机器翻译。编码器用于将输入序列编码为上下文表示,解码器则根据上下文表示生成输出序列。
6.逐层归一化(Layer Normalization): Transformer 引入了逐层归一化,有助于加速训练过程并稳定模型训练。