20230323——文献阅读《只需要注意力就够了》



个人理解

作者建立了Transformer模型,仅仅通过注意力机制,就可以完成任务,甚至相较于结构更为复杂的CNN或RNN网络效果更好(这就是重要意义所在,为网络研究提供了新的方向)
作者同样表明了Transformer模型可以应用到其他任务中。


阅读前知识准备

知识储备丰富的同学请直接跳过;储备不足的同学也不建议花大量的时间先学,建议遇见什么不会了再学什么。

1.什么是hidden representations?

在《机器学习》一书中,第五章第7节(第114页)中提到——
“我们可以从另一个角度来理解深度学习。无论是 DBN 还是 CNN,其多隐层堆叠、每层对上一层的输出进行处理的机制,而可看作是在对输入信号进行逐层加工,从而把初始的、与输出目标之间联系不太密切的输入表示,转化成与输出目标联系更密切的表示,使得原来仅基于最后一层输出映射难以完成的任务成为可能。换言之,通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可可完成复杂的分类等学习任务。由此可将深度学习理解为进行“特征学习”( feature learning)或“表示学习”(representation learning)。”
这里就出现了“representation ”一词。
在深度学习中,多层感知机(multilayer perceptron)中,用H表示隐藏层输出,称为hidden representations。
所以,我们就可以理解hidden representations一词翻译为隐藏层输出。

2.什么是Transduction?

Transduction,转导/转换。一般来说,我们可以将Transduction理解成将一种形式的信号转换为另一种形式的信号。或者在序列预测中将Transduction描述为将输入字符串映射到输出字符串。

3.什么是point-wise Convolution?

point-wise Convolution就是指卷积核的尺寸为1×1×M,这种操作的意义还不是我很清楚
在这里插入图片描述

4.什么是mask?

mask,掩膜。由于在NLP领域中处理序列长度不相等,通常需要PAD操作,也就是在较短的序列后面添加0,但这样的操作导致mean-pooling、max-pooling、attention 等操作的数值相较于原始序列会发生变化,所以考虑使用mask,即填充后的序列中有效位数是多少,从而在计算中不会出现变化。同时为了防止未来信息泄露,也可以使用mask隐藏后续的信息。
深度学习中的mask到底是什么意思?

5.什么是embedding?

“Embedding”直译是嵌入式、嵌入层。
简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)和Embedding(钢铁侠)之间的距离就会很接近,但 Embedding(复仇者联盟)和Embedding(乱世佳人)的距离就会远一些。  
  除此之外Embedding甚至还具有数学运算的关系,比如Embedding(马德里)-Embedding(西班牙)+Embedding(法国)≈Embedding(巴黎)
  从另外一个空间表达物体,甚至揭示了物体间的潜在关系,上次体会这样神奇的操作还是在学习傅里叶变换的时候,从某种意义上来说,Embedding方法甚至具备了一些本体论的哲学意义
什么是embedding?
一文读懂Embedding的概念,以及它和深度学习的关系

6.为什么要scaled?为什么是对维数的根号?

【深度学习】transformer中softmax为什么要scaled
transformer中的attention为什么scaled?
Multi-head Attention为什么要做scaled

7.为什么用Softmax?什么时候用Softmax?

单个输出节点的二分类问题一般在输出节点上使用Sigmoid函数,拥有两个及其以上的输出节点的二分类或者多分类问题一般在输出节点上使用Softmax函数。
softmax 的作用是把一个序列,变成概率。这个概率不是别的,而是被选为 max 的概率。
他能够保证:

所有的值都是 [0, 1] 之间的(因为概率必须是 [0, 1])
所有的值加起来等于 1

在这里插入图片描述

8.什么是token?

Tokenization is a way of separating a piece pf text into smaller units called tokens.And tokens are the building blocks of Natural Language,which can be either words, characters, or subwords.
举个例子,“Never give up”,Tokenization 成words tokens:Never-give-up。
再举个例子,“smarter”,characters tokens:s-m-a-r-t-e-r ;subword tokens:smart-er。
深度学习中的token和tokenization

9.什么是long-range dependencies?

长距离依赖(long-range dependencies),即如何建立图像(语言序列)上两个有一定距离的像素之间的联系,是一种注意力机制。
深度学习 卷积神经网络即插即用的小插件

10.什么是dilated convolutions?

dilated convolutions,空洞卷积。
dilated convolution被用来扩大输出的感受野,而不增加kernel的尺寸,当多个dilated convolution一个接一个堆叠时,这特别有效。

1个 7 x 7 的卷积层的正则等效于 3 个 3 x 3 的卷积层的叠加。而这样的设计可以大幅度的减少参数,有正则化的效果,参数少了就没那么容易发生过拟合。这也是现在绝大部分基于卷积的深层网络都在用小卷积核的原因,常常使用3 x 3的卷积核;
一般每一层的卷积核都是用3*3大小的,而每一层只要设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息,当然这样操作并不影响特征图的尺寸,这样一来,又避免下采样那样造成信息损失,同时也利用到多尺度信息。
如何理解空洞卷积(dilated convolution)?
一文带你了解深度学习中的各种卷积

11.什么是epoch,batch,iteration?

epoch,使用训练集中的全部数据对模型进行一次完整的训练。
batch,使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新,这一小部分样本被称为batch。
batch size,就是batch的数量值。
iteration,使用一个batch的数据对模型进行一次训练,1 个iteration即迭代一次。
举个例子,对于一个有 2000 个训练样本的数据集。将 2000 个样本分成batch size为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。
训练神经网络中最基本的三个概念:Epoch, Batch, Iteration
深度学习中epoch,batch的概念–笔记
【深度学习训练之Batch】

12.什么是batching?

理解了batch,epoch,iteration的概念后,就可以相应的理解batching。
batching,批处理训练数据,使其分割成为batch。这种操作更多的是应用在文本数据的处理中,因为每个句子的长短不同,所以一种想法就是将所有的训练数据顺序相连,但连接后的句子过于长,在训练中会产生较多问题。所以,产生了将数据连接后,在分割成为相同长度句子的想法。
这种想法适合于训练上下文之间具有关联的数据。(pad操作适合于无关联句子的处理)
[L2]使用LSTM实现语言模型-数据batching

13.什么是dropout?

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
dropout的出现,使得模型稳定性和鲁棒性被大大提高了。
CNN 入门讲解:什么是dropout?
深度学习中Dropout原理解析

14.什么是Perplexity?

Perplexity,困惑度。是一种评价语言模型的指标。
它主要是根据每个词来估计一句话出现的概率,并用句子长度作normalize。
句子越好(概率大),困惑度越小,也就是模型对句子越不困惑。
Perplexity

15.什么是n-gram?

n-gram,n元语法模型,指的是n个连续的片段,这个片段可以是单词、音素、音节等,根据应用不同有不同的含义。
该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
n-gram什么意思
自然语言处理中N-Gram模型介绍

16.什么是BLEU?

BLEU[1]是IBM在2002提出的,用于机器翻译任务的一种评价标准,发表在ACL,引用次数10000+,原文题目是“BLEU: a Method for Automatic Evaluation of Machine Translation”。
它的总体思想就是准确率,假如给定标准译文reference,神经网络生成的句子是candidate,句子长度为n,candidate中有m个单词出现在reference,m/n就是bleu的1-gram的计算公式。
BLEU还有许多变种。根据n-gram可以划分成多种评价指标,常见的指标有BLEU-1、BLEU-2、BLEU-3、BLEU-4四种,其中n-gram指的是连续的单词个数为n。
BLEU-1衡量的是单词级别的准确性,更高阶的bleu可以衡量句子的流畅性。
BLEU详解

17.什么是checkpoints?

Checkpoints,检查点。Checkpoints是在训练过程中保存的模型状态。
在数据库领域,为了防止执行时间较长的存储过程失败重新执行,会将中间的过程状态以检查点的形式持续记录下来,每次失败时不需要重头执行,而是加载最近的检查点,继续执行,避免浪费时间。和存储过程类似,模型的训练时间会更长,如果缺乏一定的可靠性机制,过程中一旦失败,就需要重头开始训练,浪费时间较多。因此,需要实现类似的机制来保证可靠性问题,这种机制被称为检查点(CheckPoints)模式。
【AI设计模式】05-检查点模式(CheckPoints):如何定期存储模型?
TensorFlow 2.0教程03:Saving Checkpoints

18.什么是beam search?

beam search,束搜索。beam search是机器学习中常用到的一种搜索算法,通常是用在预测阶段(也就是解码策略)。
beam search是对贪心策略一个改进。思路也很简单,就是稍微放宽一些考察的范围。在每一个时间步,不再只保留当前分数最高的1个输出,而是保留num_beams个。当num_beams=1时集束搜索就退化成了贪心搜索。
如何通俗的理解beam search?
十分钟读懂Beam Search 1:基础
十分钟读懂Beam Search 2:一些改进
seq2seq 中的 beam search 算法过程是怎样的?

19.什么是development set?

英文维基百科的解释:
A validation dataset is a dataset of examples used to tune the hyperparameters(i.e. the architecture) of a classifier. It is sometimes also called the development set or the “dev set”.
因为验证集又被叫做"development set",所以代码里常被写作"dev set"。
机器学习项目代码中为什么验证集会简写成dev_set?

20.什么是corpus、word和vocabulary?

corpus是语料库,a set of texts,文档的集合。语料库一般是指一些根据研究需要从自网站、新闻、报纸等采集的大规模文本。
word是词,“词”是语料中的最小单位。通常在自然语言处理(NLP)中,词也是最小单位,所以有“词向量”,但是没有“字符向量“。
vocabulary是词汇表,语料库中所包含的所有词。统计语料中出现的不重复的词构成即可构成词汇表。
NLP中corpus和vocabulary的区别是什么?
快速入门词嵌入之word2vec


文章翻译与精读

一 引言

在语言建模和机器翻译等领域中,大家的研究重点都放在RNN和LSTM上面,也取得了很多成果。但是这种循环网络模型对于数据处理的顺序性限制了其计算效率的提高,就算是提出了分解技巧、条件计算等,也没有办法解除其固有的基本约束。
尽管注意力机制已经出现了,且已经成为序列建模和转导模型中的一部分,允许在不考虑输入或输出序列距离的情况下对依赖性进行建模。但是总的来说,除了少数研究者之外,这种注意机制是与循环网络结合使用的。
这就是本文提出Transformer模型的一个背景或前提,本文的目的就是要加速网络训练,至于效果的提升我感觉可能是意外收获(个人理解)
赵本山小品《心病》

二 背景

在扩展神经GPU[16]、ByteNet[18]和ConvS2S[9]中都将减少顺序计算作为目标,他们的网络主体还是卷积神经网络,并行计算所有输入和输出位置的隐藏表示关系。但是在这些模型中,将来自两个任意输入或输出位置的信号关联起来所需的操作数量,按照位置之间的距离呈线性或指数增长。这使得学习遥远位置[12]之间的依赖关系变得很困难(或代价很大)。在Transformer中,这被减少到一个恒定的数值,尽管由于平均注意加权位置而降低了有效分辨率,但通过在3.2节中描述的多头注意抵消了这一影响。
自我注意(Self-attention),有时也被称为内部注意(intra-attention),是一种将单个序列的不同位置联系起来以计算序列的表示形式(就是输入和输出之间的关系)的注意机制。自我注意已成功应用于各种任务,包括阅读理解、抽象摘要、文本蕴涵和学习任务独立的句子表征[4,27,28,22]。
端到端记忆网络是基于循环注意力机制而不是循环(或递归)结构,并且已经被证明在简单语言问题回答和语言建模任务中表现良好[34]。
然而,据我们所知,Transformer是第一个完全依赖自我注意机制来计算其输入和输出之间关系而不使用基于顺序处理的RNNs或CNN的转换模型。在接下来的部分中,我们将描述Transformer,激发自我关注,并讨论它相对于[17,18]和[9]等模型的优势。

三 模型结构

最具竞争力的神经序列转导模型都有一个编码器-解码器结构[5,2,35]。在每个步骤中,模型都是自回归的[10],在生成下一个步骤时,使用之前生成的符号作为额外的输入。
Transformer遵循这种整体架构,使用堆叠的自注意机制和逐点、完全连接的编码器和解码器层,分别如图1的左半部分和右半部分所示。
在这里插入图片描述

3.1 编码器和解码器堆栈

编码器:编码器由N = 6个相同层的堆栈组成。每个层有两个子层。第一种是多头注意力机制,第二种是简单的位置全连接前馈网络。我们在这两个子层的周围都使用了一个残差的连接[11],然后是层归一化[1]。也就是说,每个子层的输出都是LayerNorm(x + Sublayer(x)),其中Sublayer(x)是子层本身实现的函数。为了便于这些残差的连接,模型中的所有子层以及嵌入层都产生了512维的输出。
解码器:解码器也由N = 6个相同层的堆栈组成。除了每个编码器层中的两个子层外,解码器还插入了第三个子层,该子层对编码器堆栈的输出执行多头关注。与编码器类似,我们在每个子层周围使用残差连接,然后进行层归一化。我们还修改了解码器堆栈中的自注意子层,以防止位置对后续位置的影响。结合输出嵌入偏移一个位置的事实,这种掩膜操作确保了位置i的预测只能依赖于位置小于i的已知输出。

3.2 注意力

注意力函数可以描述为将query和一组key-value对映射到输出,其中query, keys, values和输出都是向量。输出是作为值的加权和计算的,其中分配给每个value的权重是通过计算query与相应key的兼容性函数得到的。
在这里插入图片描述

3.2.1 Scaled的点积注意力机制

输入由dk维的queries 和 keys组成,输出由dv维的values组成。我们计算query与所有keys的点积,除以√dk,并应用softmax函数来获得values的权重。
在实践中,我们同时计算一组queries的注意函数,它们被打包成一个矩阵Q。keys和values也被打包成矩阵K和V。我们按照计算输出矩阵如式(1):
在这里插入图片描述
最常用的两个注意函数是加法attention[2]和点积(乘法)attention。除了比例因子为1√dk之外,点积attention与我们的算法相同。加法attention使用带有单个隐藏层的前馈网络计算兼容性函数。虽然两者在理论上的复杂性相似,但点积attention在实践中要快得多,而且空间效率也更高,因为它可以使用高度优化的矩阵乘法代码来实现。
当dk值较小时,两种机制表现相似,当dk[3]值较大时,加法attention优于不需缩放的点积attention。我们猜想,当dk值较大时,点积的计算在数量级上的增长幅度会变大,从而使softmax函数进入其梯度极小的区域。为了抵消这种影响,我们将点积乘以1√dk

3.2.2 多头注意力机制

我们发现,将queries、keys和values分别用不同的、学习过的线性投影h次地线性投影到dk、dk和dv维上,比用d_model维的keys、values 和queries执行单一的注意函数更为有效。然后,在queries、keys和values的每一个投影版本上,我们并行执行注意力函数,产生dv维的输出值。这些被连接起来并再次投影,得到最终结果,如图2所示。
多头注意机制使得模型能够联合注意不同位置上、不同表示子空间的信息。如果使用单注意力机制,求平均值就会抑制这一点(应该指对于不同位置、不同表示信息的获取能力)
在这里插入图片描述
在本篇文章中,令h=8平行的attention层或heads。对于每一个,我们使用d_k = d_v = (d_model)/h = 64。由于每个head的维度减小了,总的计算成本与全维度的单头注意机制相似。(也就是通过多头注意力机制没有额外增加计算量)

3.2.3 attention在我们模型中的应用

Transformer以三种不同的方式利用多头注意力机制:

  • 在“编码器-解码器注意”层中,queries 来自先前的解码器层,而记忆keys and values来自编码器的输出。这使得解码器中的每个位置都能处理输入序列中的所有位置。这模仿了序列到序列模型中典型的编码器-解码器注意力机制,如[38,2,9]。
  • 编码器包含自注意层。在自注意层中,所有的keys, values 和queries都来自同一个地方,在本例中,即编码器中前一层的输出。编码器中的每个位置可以处理其前一层中的所有位置。
  • 类似地,解码器中的自注意层允许解码器中的每个位置处理解码器中该位置之前的所有位置(包括该位置)。我们需要防止信息在解码器中向左流动,以保持自回归特性。我们通过mask(设置为−∞)softmax输入中与非法连接对应的所有值来实现scaled dot-product attention。(没太明白)参见图2。

3.3 Position-wise前馈网络

除了注意力子层外,我们的编码器和解码器中的每一层都包含一个全连接的前馈网络,该网络分别和相同地应用于每个位置。这包括两个线性转换,中间用一个ReLU进行激活。
在这里插入图片描述
虽然在不同的位置上线性转换是相同的,但它们在不同的层中使用的参数是不同的。另一种描述它的方法是两个卷积,内核大小为1。输入输出维数为d_model = 512,内层维数为d_ff = 2048。

3.4 Embeddings and Softmax

与其他序列转导模型类似,我们使用学习过的embeddings 将输入tokens和输出tokens转换为维数d_model的向量。我们还使用通常学到的线性变换和softmax函数将解码器输出转换为预测的下一个token的概率。在我们的模型中,我们共享两个embedding层之间的权值矩阵和pre-softmax线性变换,类似于[30]。在embedding层中,我们将这些权重乘以√dmodel。

3.5位置编码

由于我们的模型不包含递归和卷积,为了让模型利用序列的顺序,我们必须注入一些关于序列中tokens 的相对或绝对位置的信息。为此,我们将“位置编码”添加到位于编码器和解码器堆栈底部的输入embeddings 中。位置编码与embeddings具有相同的d_model维数,因此可以将两者相加。有许多位置编码的选择,学习到的和固定的[9]。
在这项工作中,我们使用不同频率的正弦和余弦函数:
在这里插入图片描述
其中,pos是位置,i是维数。也就是说,位置编码的每个维度都对应一个正弦信号。波长从2π到10000·2π呈几何级数。我们选择这个函数是因为我们假设它可以让模型很容易学会通过相对位置载入(Attend)(这里的attend我还是没有太理解),因为对于任何固定偏移量k, PE_(pos+k)可以表示为PE_pos的线性函数。
我们还使用学习过的位置embeddings [9]进行了实验,发现两个版本产生了几乎相同的结果(见表3行(E))。我们选择正弦版本是因为它可以让模型能够推理到比训练中遇到的序列更长的序列长度。

四 为什么是Self-Attention

在本节中,我们将自我注意层的各个方面与通常用于映射一个符号表示的可变长度序列到另一个固定长度的序列的循环和卷积层,例如典型序列转导编码器或解码器中的隐层。使用自我注意力机制的原因有三:
一个是每一层的总计算复杂度。
另一个是可以并行化的计算量,由序列操作所需的最小操作次数来衡量。
第三个是网络中长距离依赖关系之间的路径长度。在许多序列转导任务中,学习长距离依赖是一个关键的挑战。影响学习这种依赖关系的能力的一个关键因素是信号在网络中必须通过的前向和后向路径的长度。输入和输出序列中任意位置组合之间的路径越短,学习长距离依赖[12]就越容易。因此,我们也比较了由不同层类型组成的网络中任意两个输入和输出位置之间的最大路径长度。
如表1所示,自注意层用固定数量的顺序执行操作连接所有位置,而循环层需要O(n)个顺序操作。在计算复杂度方面,当序列长度n小于表示维数d时,自我注意层比循环层更快,这是应用于最先进的机器翻译模型的序列表示中最常用的情况,如词块[38]和字节对[31]表示。为了提高涉及非常长的序列的任务的计算性能,可以将自我注意机制限制在只考虑输入序列中以各自输出位置为中心、大小为r的邻域。这将增加最大路径长度到O(n/r)。我们计划在未来的工作中进一步研究这种方法。
在这里插入图片描述
核宽度为k < n的单个卷积层并不连接所有的输入和输出位置对。在相邻核的情况下,做到这样需要O(n/k)个卷积层,或者在扩张卷积[18]的情况下需要O(logk(n))个卷积层,增加网络中任意两个位置之间的最长路径的长度。卷积层通常比循环层复杂k倍。然而,可分离卷积[6]大大降低了复杂度,达到O(k·n·d + n·d^2)。然而,即使在k = n的情况下,可分离卷积的复杂性也等于自注意层和point-wise前馈层的结合,这是我们在模型中采用的方法。
作为附带利益,自我关注可以产生更多可解释的模型。我们检查了我们模型中的注意力分布,并在附录中展示和讨论了一些例子。不仅个别注意heads能够清楚地学会了执行不同的任务,很多甚至表现出与句子的句法和语义结构有关的行为。

五 训练

本节描述了本模型的训练方法。

5.1训练数据和batching

我们在由450万对句子组成的标准WMT 2014英-德数据集上进行训练。其中句子使用字节对编码,该编码具有大约37000个tokens的共享源-目标词汇表。对于英-法两种语言,我们使用更大的WMT 2014英-法数据集,其中包含3600万个句子,并将tokens分解为32000个单词块词汇[38]。句子对按照近似的序列长度进行分组。每个训练批包含一组句子对,其中包含大约25000个源标记和25000个目标标记。

5.2硬件和计划

我们在一台装有8个NVIDIA P100 gpu的机器上训练我们的模型。对于使用本文中描述的超参数的基本模型,每个训练步骤大约需要0.4秒。我们对基本模型进行了总共10万步或12小时的训练。对于我们的大型模型(如表3所示),步长为1.0秒。这些大型模型被训练了30万步(3.5天)。

5.3优化器

我们使用了Adam优化器[20],β1 = 0.9, β2 = 0.98,ε= 10−9。根据公式,我们在训练过程中改变学习速率:
在这里插入图片描述
这对应于第一个warmup_steps训练步骤的学习速率线性增加,然后按步数的平方根倒数的比例递减。我们使用warmup_steps = 4000。
Transformer必须要Warmup
Improving Transformer Optimization Through Better Initialization

5.4正则化

在训练过程中,我们采用了三种正则化方法:

残留dropout

在每个子层的输出被添加到子层输入和归一化之前,我们先对其进行dropout[33]。此外,我们在编码器和解码器堆栈中对embeddings和位置编码的和应用了dropout。对于基础模型,我们使用P_drop = 0.1的速率。

标签平滑

在训练过程中,我们使用了ε_ls = 0.1[36]的标签平滑。这伤害了困惑(也就是提高了困惑度),因为模型学会了更不确定,但提高了准确性和BLEU得分。

六 结果

6.1 机器翻译

在2014年WMT英-德翻译任务中,大transformer 模型(表2中的Transformer(big))的性能比之前报告的最佳模型(包括模型集成)BLEU指标高出了2.0 以上,从而建立了一个新的最先进的BLEU评分28.4。该模型的配置列于表3的底部。使用8个P100 gpu的培训花了3.5天。甚至我们的基础模型超过了所有以前发表的模型和模型集成,而训练成本只是任何竞争模型的一小部分。(又快又好)
在WMT 2014英法翻译任务中,我们的大模型的BLEU分数为41.0,超过了之前发布的所有单个模型,而训练成本不到之前最先进的模型的1/4。用于英-法双语训练的Transformer大模型型使用了dropout率P_drop = 0.1,而不是0.3。
对于基本模型,我们使用了通过平均最后5个checkpoints获得的单个模型,这些checkpoints每10分钟记录一次。对于大型模型,我们计算了最后20个检查点的平均值。我们采用beam size为4,长度惩罚α = 0.6[38]的beam search。这些超参数是在开发台上经过实验后选定的(只是淡淡的说一句,并没有太多的解释)。在推理期间,我们将最大输出长度设置为输入长度+ 50,但在可能的情况下提前终止[38]。(因为提前结束获得的中间的模型可能更好)
表2总结了我们的结果,并将我们的翻译质量和训练成本与文献中的其他模型架构进行了比较。我们通过将训练时间、所使用的GPU数量和每个GPU的持续单精度浮点容量相乘,来估计用于训练一个模型的浮点运算的数量。

6.2 模型变化

为了评估Transformer中不同组件的重要性,我们用不同的方法改变我们的基本模型,在英语到德语翻译的验证集(newstest2013)上观察模型的性能变化。我们使用了前一节所描述的beam search,但并没有对checkpoint取平均值。我们在表3中展示了这些结果。
在表3行(A)中,我们改变注意头的数量以及注意键和值维度,保持计算量不变,如章节3.2.2所述。虽然单头注意力比多头(最好的设置情况)的BLEU差0.9,但过多的头也会降低质量。
在表3行(B)中,我们观察到降低注意键大小d_k会影响模型质量。这表明确定兼容性并不容易,一个比点积更复杂的兼容性函数可能是有益的。我们在©和(D)行中进一步观察到,正如预期的那样,更大的模型效果更好,并且dropout在避免过度拟合方面非常有帮助。在行(E)中,我们将正弦位置编码替换为学习过的位置embeddings[9],并观察到与基模型几乎相同的结果。

6.3 英语成分句法分析

为了评估Transformer是否可以推广到其他任务,我们进行了英语成分句法分析实验。这项任务提出了具体的挑战:输出受到强烈的结构性限制,而且明显长于投入。此外,RNN序列到序列模型还不能在小数据量[37]中获得最先进的结果。
我们使用宾州树库(Penn TreeBank)[25]的Wall Street Journal (WSJ)部分训练d_model = 1024的4层transformer,大约40K个训练句子。我们还在半监督环境中训练它,使用包含大约17M个句子[37]的更大的高置信度和BerkleyParser语料库。针对前一个我们使用了16K个tokens的词表,后一个使用了32K个tokens的词表。
我们只进行了少量的实验来选择dropout,注意和残差(第5.4节),在第22节验证集上的学习速率和beam size,所有其他参数从英语到德语的基础翻译模型保持不变。在推理过程中,我们将最大输出长度增加到输入长度+ 300。我们使用beam size=21和α = 0.3作为华尔街日报和半监督的设置参数。
我们在表4中的结果表明,尽管缺少特定于任务的调优,我们的模型的性能仍然令人惊讶地好,产生的结果比以前报告的所有模型(除了循环神经网络语法[8])都好。
与RNN序列到序列模型[37]相比,Transformer甚至在仅接受华尔街日报的40K句子训练集训练时,就在BerkeleyParser[29]表现的很突出。

七 结论

在这项工作中,我们提出了Transformer,第一个完全基于注意力机制的序列转换模型,用多头自注意机制取代了编码-解码器架构中最常用的循环层。
对于翻译任务,Transformer的训练速度比基于循环层或卷积层的架构快得多。在WMT 2014英语到德语和WMT 2014英语到法语的翻译任务中,我们都是最棒的。在前一个任务中,我们的最佳模型甚至优于所有之前报告的集合。
我们对基于注意力的模型的未来感到兴奋,并计划将其应用到其他任务中。我们计划将Transformer扩展到涉及文本以外的输入和输出模式的问题,并研究局部的、受限制的注意机制,以有效地处理大的输入和输出,如图像、音频和视频。使生成不那么连续(Making generation less sequential)是我们的另一个研究目标。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值