Attention Is All You Need (Transformer 原文)

最近按顺序读Transformer系列经典论文

Attention Is All You Need (Transformer 原文)_第1张图片

最前面是论文翻译,中间是背景+问题+方法步骤+实验过程,最后是文中的部分专业名词介绍(水平线分开,能力有限,部分翻译可能不太准确)




摘要

        主要的序列转导模型基于复杂的循环或卷积神经网络,包括编码器和解码器。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一种新的简单网络架构 Transformer,它完全基于注意力机制,完全摒弃了递归和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上更优越,同时具有更高的并行化能力,所需的训练时间显著减少。我们的模型在WMT 2014英译德翻译任务中获得了28.4%的BLEU成绩,比现有的最好成绩(包括语料库)提高了2%以上。在WMT 2014英法翻译任务上,我们的模型在8个GPU上进行了3.5天的训练后,建立了一个新的单一模型最先进的BLEU得分41.8%,这只是文献中最好的模型训练成本的一小部分。我们通过将其成功地应用于具有大量和有限训练数据的英语选区分析,表明该转换器对其他任务具有很好的通用性。

1. 介绍

        循环神经网络、长短期记忆和门控循环神经网络,在语言建模和机器翻译等序列建模和转导问题中已被牢固确立为最先进的方法。此后,许多努力继续推动循环语言模型和编码器-解码器架构的界限。

        循环模型通常沿输入和输出序列的符号位置考虑计算。将位置与计算时间的步骤对齐,它们生成一系列隐藏状态 ht,作为先前隐藏状态 ht-1 和位置 t 的输入的函数。这种固有的顺序性质排除了训练示例中的并行化,这在更长的序列长度下变得至关重要,因为内存限制限制了示例之间的批处理。最近的工作通过因式分解技巧和条件计算显著提高了计算效率,同时在后者的情况下也提高了模型性能。然而,顺序计算的基本约束仍然存在。

        注意机制已成为各种任务中引人注目的序列建模和转导模型的组成部分,允许对依赖项进行建模,而无需考虑它们在输入或输出序列中的距离。然而,除了少数情况,这种注意力机制与循环网络结合使用。

        在这项工作中,我们提出了Transformer,这是一个避免重复的模型体系结构,而完全依赖于一种注意力机制来绘制输入和输出之间的全局依赖关系。Transformer允许更多的并行化,在8个P100 GPU上接受了短短12个小时的训练后,翻译质量就可以达到新的艺术水平。

2. 背景

        减少顺序计算的目标也构成了扩展神经GPU、ByteNet和 ConvS2S的基础,所有这些都使用卷积神经网络作为基本构建块,并行计算所有输入的隐藏表示和输出位置。在这些模型中,关联来自两个任意输入或输出位置的信号所需的操作数量随着位置之间的距离而增长,对于 ConvS2S 呈线性增长,而对于 ByteNet 则呈对数增长。这使得学习远距离位置之间的依赖关系变得更加困难。在 Transformer 中,这被减少到恒定数量的操作,尽管由于平均注意力加权位置而降低了有效分辨率,我们使用多头注意力来抵消这种影响,如 3.2 节所述。

        自注意力,有时称为内部注意力,是一种将单个序列的不同位置关联起来以计算序列表示的注意力机制。自注意力已成功用于各种任务,包括阅读理解、抽象摘要、文本蕴涵和学习任务无关的句子表示。

        然而,据我们所知,Transformer 是第一个完全依赖自注意力来计算其输入和输出表示而不使用 RNN 或卷积的转换模型。在接下来的部分中,我们将描述 Transformer,激发自注意力并讨论其相对于 [16、17] 和 [9] 等模型的优势。

3. 模型架构

       大多数竞争性神经序列转导模型都有编码-译码结构。这里,编码器将符号表示(x1,...,xn)的输入序列映射到连续表示序列z=(z1,...,zn)。在给定z的情况下,然后解码器一次一个元素地生成符号的输出序列(y1,…,ym)。在每一步,模型都是自回归的[10],在生成下一步时,使用先前生成的符号作为附加输入。

        Transformer遵循这种总体架构,对编码器和解码器使用堆叠的自我关注和逐点、完全连接的层,分别显示在图1的左半部分和右半部分。

Attention Is All You Need (Transformer 原文)_第2张图片

图1:Transformer模型架构。

3.1 编码器和解码器堆栈

        编码器:编码器由N=6个相同层的堆叠组成。每一层都有两个子层。第一种是多头自我注意机制,第二种是简单的位置全连接前馈网络。我们在两个子层的每一个周围采用残差连接,随后是层标准化。也就是说,每个子层的输出是LayerNorm(x+subayer(X)),其中subayer(X)是由子层本身实现的功能。为了促进这些残差连接,模型中的所有子层以及嵌入层产生维度dModel=512的输出。

        解码器:解码器也由N=6个相同层的堆栈组成。除了每个编码层中的两个子层之外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行多头关注。与编码器类似,我们在每个子层周围使用残差连接,然后进行层标准化。我们还修改了解码器堆栈中的自我关注子层,以防止位置关注后续位置。这种掩蔽与输出嵌入偏移一个位置的事实相结合,确保了对位置i的预测只能依赖于小于i的位置处的已知输出。

3.2 注意力

       注意力函数可以描述为将查询和一组键值对映射到输出,其中查询、键、值和输出都是向量。输出计算为值的加权和,其中分配给每个值的权重由查询与相应键的兼容性函数计算。

Attention Is All You Need (Transformer 原文)_第3张图片

        图 2:(左)按比例缩放的点积注意力。 (右)多头注意力由多个并行运行的注意力层组成。

3.2.1 Scaled Dot-Product Attention

       我们将我们的特别关注称为“Scaled Dot-Product Attention”(图 2)。输入由维度 dk 的查询和键以及维度 dv 的值组成。我们使用所有键计算查询的点积,将每个键除以 √dk,并应用 softmax 函数来获得值的权重。

       在实践中,我们同时计算一组查询的注意力函数,这些查询被打包到一个矩阵Q中。键和值也打包到矩阵K和V中。我们将输出矩阵计算为:

        两个最常用的注意函数是加性注意和点积(乘性)注意。点积关注度与我们的算法相同,只是比例因子为1√dk。附加关注度使用具有单个隐藏层的前馈网络来计算兼容性函数。虽然两者在理论复杂性上相似,但点积注意在实践中要快得多,空间效率更高,因为它可以使用高度优化的矩阵乘法代码来实现。

        虽然对于较小的dk值,这两种机制的表现相似,但加性注意优于点积注意,而不会对较大的dk值进行缩放[3]。我们怀疑,对于较大的dk值,点积的大小会增大,从而将Softmax函数推入其梯度极小的区域。为了抵消这种影响,我们将点积缩放1√dk。

3.2.2 多头注意力

        我们发现,使用不同的学习线性投影将查询、键和值分别线性投影到DK,DK和DV维度上h次是有益的,而不是使用dModel维键、值和查询执行单一的注意函数。然后,在这些查询、键和值的每个投影版本上,我们并行执行注意力功能,产生DV维输出值。它们被连接起来,并再次投影,产生最终的值,如图2所示。

        多头注意力允许模型共同关注来自不同位置的不同表示子空间的信息。对于单个注意力头,平均化会抑制这一点。

Attention Is All You Need (Transformer 原文)_第4张图片

        其中投影是参数矩阵

        在这项工作中,我们使用 h = 8 个并行注意力层或头。对于其中的每一个,我们使用 k = dv = dmodel/h = 64。由于每个头的维度减少,总计算成本类似于具有全维度的单头注意力。

3.2.3 我们模型中注意力的应用

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

        在“编码器-解码器注意”层中,查询来自前一个解码器层,内存键和值来自编码器的输出。这使得解码器中的每个位置都能处理输入序列中的所有位置。这模拟了序列对序列模型(如[38,2,9])中典型的编码器-解码器注意机制。

        编码器包含自我注意层。在自我注意层中,所有键、值和查询都来自同一个地方,在本例中是编码器中前一层的输出。编码器中的每个位置都可以处理编码器的前一层中的所有位置。

        类似地,解码器中的自注意力层允许解码器中的每个位置关注解码器中直到并包括该位置的所有位置。我们需要在解码器中防止向左的信息流,以保持自回归特性。我们通过屏蔽(设置为−∞)softmax输入中所有对应非法连接的值来实现这一点。参见图2。

3.3 位置前馈网络

        除了注意力子层之外,我们的编码器和解码器中的每一层都包含一个完全连接的前馈网络,该网络分别且相同地应用于每个位置。这包括两个线性变换,中间有一个 ReLU 激活。 

        虽然线性变换在不同位置上是相同的,但它们在不同的层之间使用不同的参数。另一种描述方式是将其描述为核大小为1的两个卷积。输入和输出的维度为dModel=512,内层的维度为df=2048。

3.4 嵌入和 Softmax

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

3.5 位置编码

         由于我们的模型不包含递归和卷积,为了使模型能够利用序列的顺序,我们必须注入一些关于序列中标记的相对或绝对位置的信息。为此,我们在编码器和解码器堆栈的底部为输入嵌入添加 "位置编码"。位置编码与嵌入具有相同的维度dmodel,因此这两者可以相加。有很多位置编码的选择,有学习的,也有固定的[9]。

Attention Is All You Need (Transformer 原文)_第5张图片

        表 1:不同层类型的最大路径长度、每层复杂度和最小顺序操作数。 n 是序列长度,d 是表示维度,k 是卷积的核大小,r 是受限自注意中的邻域大小。

        在这项工作中,我们使用不同频率的正弦和余弦函数

Attention Is All You Need (Transformer 原文)_第6张图片

        其中 pos 是位置,i 是维度。也就是说,位置编码的每个维度对应一个正弦曲线。波长形成从 2π 到 10000 · 2π 的几何级数。我们选择这个函数是因为我们假设它可以让模型很容易地学习通过相对位置来参与,因为对于任何固定的偏移量 k,P Epos+k 可以表示为 P Epos 的线性函数。

        我们还尝试使用学习的位置嵌入,发现这两个版本产生了几乎相同的结果(见表 3 行 (E))。我们选择了正弦版本,因为它可以让模型推断出比训练期间遇到的序列长度更长的序列长度。

4. 为什么Self-Attention

        在本节中,我们将自我注意层的各个方面与通常用于映射一个可变长度符号表示序列的循环层和卷积层进行比较(x1,…, xn)到另一个相等长度的序列(z1,…, zn),与xi, zi∈Rd,如典型序列转导编码器或解码器中的一个隐层。激励我们使用自我关注我们考虑三个需求。

        一个是每层的总计算复杂度。另一个是可并行化的计算量,通过所需的最小顺序操作数来衡量。

        第三是网络中远程依赖关系之间的路径长度。学习远程依赖关系是许多序列转导任务中的一个关键挑战。影响学习这种依赖关系能力的一个关键因素是信号在网络中必须遍历的前向和后向路径的长度。输入和输出序列中任何位置组合之间的这些路径越短,就越容易学习远程依赖。因此,我们还比较了由不同层类型组成的网络中任意两个输入和输出位置之间的最大路径长度。

        如表1所示,自我注意层以恒定数量的顺序执行操作连接所有位置,而递归层需要O(n)顺序操作。就计算复杂度而言,当序列长度n小于表示维度d时,自注意层比递归层更快,这通常是机器翻译中最先进的模型所使用的句子表示的情况,如词片和字节对表示。为了提高涉及超长序列的任务的计算性能,自我关注可以被限制为只考虑输入序列中以各自输出位置为中心的大小为r的邻域。这将使最大路径长度增加到O(n/r)。我们计划在未来的工作中进一步研究这种方法。

        内核宽度 k < n 的单个卷积层不会连接所有输入和输出位置对。这样做需要在连续内核的情况下堆叠 O(n/k) 卷积层,或者在扩张卷积的情况下需要 O(logk(n)) [18],从而增加任意两个位置之间最长路径的长度在网络中。卷积层通常比循环层更昂贵,高出 k 倍。然而,可分离卷积 [6] 将复杂度大大降低到 O(k · n · d + n · d2)。然而,即使 k = n,可分离卷积的复杂度也等于自注意力层和逐点前馈层的组合,这是我们在模型中采用的方法。

        作为附带的好处,self-attention 可以产生更多可解释的模型。我们从我们的模型中检查注意力分布,并在附录中展示和讨论示例。不仅单个注意力头清楚地学习执行不同的任务,而且许多似乎表现出与句子的句法和语义结构相关的行为。

5. 训练

        本节描述了我们模型的训练机制。

5.1 训练数据和批处理

        我们在标准的WMT 2014英语-德语数据集上进行了训练,该数据集由大约450万个句子对组成。句子使用字节对编码[3],它有一个共享的源目标词汇表,大约有37000个标记。对于英语-法语,我们使用了更大的2014年WMT英语-法语数据集,包括3600万个句子和拆分成32000个单词的词汇表[38]。句子对按大致的序列长度成批排列在一起。每个训练批次包含一组句子对,其中包含大约25000个源标记和25000个目标标记。

5.2 硬件和时间表

        我们在一台配备 8 个 NVIDIA P100 GPU 的机器上训练我们的模型。对于我们使用整篇论文中描述的超参数的基础模型,每个训练步骤大约需要 0.4 秒。我们对基础模型进行了总共 100,000 步或 12 小时的训练。对于我们的大型模型,(在表 3 的最后一行进行了描述),步进时间为 1.0 秒。大型模型训练了 300,000 步(3.5 天)。

5.3 优化器

        我们使用了 β1 = 0.9、β2 = 0.98 和 = 10−9 的 Adam 优化器 [20]。我们根据以下公式在训练过程中改变学习率:

        这对应于在第一个 warmup_steps 训练步骤中线性增加学习率,然后根据步数的平方根倒数按比例减少学习率。我们使用warmup_steps = 4000。

5.4 正则化

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

        Residual Dropout 我们将 dropout [33] 应用于每个子层的输出,然后将其添加到子层输入并进行归一化。此外,我们将 dropout 应用于编码器和解码器堆栈中嵌入和位置编码的总和。对于基本模型,我们使用 Pdrop = 0.1 的比率。

       表 2:在英语到德语和英语到法语的 newstest2014 测试中,Transformer 的 BLEU 分数比之前最先进的模型更好,而训练成本只是其中的一小部分。

Attention Is All You Need (Transformer 原文)_第7张图片

        标签平滑在训练期间,我们采用了值ls=0.1的标签平滑。这伤害了困惑,因为模型学会了更多的不确定,但提高了准确性和BLEU的分数。

6. 结果

6.1 机器翻译

        在 WMT 2014 英德翻译任务中,大的 Transformer 模型(表 2 中的 Transformer (big))比之前报道的最好的模型(包括 ensembles)高出 2.0BLEU 以上,建立了一个新的艺术水平, BLEU 得分为 28.4。该模型的配置列于表 3 的最后一行。在 8 个 P100 GPU 上训练耗时 3.5 天。甚至我们的基础模型也超过了所有先前发布的模型和集成,其训练成本只是任何竞争模型的一小部分。

        在 WMT 2014 英法翻译任务中,我们的大模型达到 41.0 的 BLEU 分数,优于之前发布的所有单一模型,其训练成本不到之前最先进技术的 1/4模型。为英语到法语训练的 Transformer(大)模型使用的辍学率 Pdrop = 0.1,而不是 0.3。

        对于基本模型,我们使用通过平均最后 5 个检查点获得的单个模型,这些检查点以 10 分钟的间隔写入。对于大型模型,我们平均了最后 20 个检查点。我们使用束搜索,束大小为 4,长度惩罚 α = 0.6。这些超参数是在对开发集进行实验后选择的。我们将推理期间的最大输出长度设置为输入长度 + 50,但在可能的情况下提前终止。

        表 2 总结了我们的结果,并将我们的翻译质量和训练成本与文献中的其他模型架构进行了比较。我们通过将训练时间、使用的 GPU 数量以及每个 GPU 5 的持续单精度浮点容量的估计值相乘来估计用于训练模型的浮点运算的数量。

6.2 模型变化

        为了评估 Transformer 不同组件的重要性,我们以不同的方式改变了我们的基础模型,测量了开发集 newstest2013 上英德翻译性能的变化。我们使用了上一节中描述的波束搜索,但没有检查点平均。我们在表 3 中展示了这些结果。

        在表 3 行 (A) 中,我们改变了注意力头的数量以及注意力键和值维度,保持计算量不变,如第 3.2.2 节所述。虽然单头注意力比最佳设置差 0.9 BLEU,但质量也会因人头过多而下降。

Attention Is All You Need (Transformer 原文)_第8张图片

        表 3:Transformer 架构的变化。未列出的值与基本模型的值相同。所有指标都在英语到德语的翻译开发集 newstest2013 上。根据我们的字节对编码,列出的困惑是每个单词的,不应与每个单词的困惑进行比较。

Attention Is All You Need (Transformer 原文)_第9张图片

        表4:Transformer很好地概括了英语选区分析(结果见《华尔街日报》第23节)

        在表 3 行 (B) 中,我们观察到减小注意力键大小 dk 会损害模型质量。这表明确定兼容性并不容易,比点积更复杂的兼容性功能可能是有益的。我们在行 (C) 和 (D) 中进一步观察到,正如预期的那样,更大的模型更好,并且 dropout 非常有助于避免过度拟合。在第 (E) 行中,我们用学习的位置嵌入 [9] 替换我们的正弦位置编码,并观察到与基本模型几乎相同的结果。

6.3 英语选区解析

        为了评估Transformer是否可以推广到其他任务,我们对英语成分分析进行了实验。这项任务提出了具体的挑战:输出受制于强大的结构性严格的结构限制,并且比输入的内容长很多。此外,RNN序列到序列模型在小数据系统中无法达到最先进的结果。

        我们在 Penn Treebank [25] 的华尔街日报 (WSJ) 部分训练了一个 dmodel = 1024 的 4 层转换器,大约 40K 训练句子。我们还在半监督环境中对其进行了训练,使用来自大约 1700 万个句子 [37] 的更大的高置信度和 BerkleyParser 语料库。我们将 16K 令牌的词汇表用于 WSJ 唯一设置,将 32K 令牌词汇表用于半监督设置。

        我们只进行了少量实验来选择第 22 节开发集上的 dropout、注意力和残差(第 5.4 节)、学习率和光束大小,所有其他参数与英德基础翻译模型保持不变。在推理过程中,我们将最大输出长度增加到输入长度 + 300。对于 WSJ 和半监督设置,我们使用了 21 的光束大小和 α = 0.3。

        我们在表 4 中的结果表明,尽管缺乏针对特定任务的调整,但我们的模型表现得非常好,比除递归神经网络语法之外的所有先前报告的模型产生了更好的结果。

     与 RNN 序列到序列模型 [37] 相比,即使仅在 WSJ 40K 句子的训练集上进行训练,Transformer 也优于 BerkeleyParser [29]。

7. 结论

        在这项工作中,我们提出了 Transformer,这是第一个完全基于注意力的序列转导模型,用多头自注意力取代了编码器-解码器架构中最常用的循环层

        对于翻译任务,Transformer 的训练速度明显快于基于循环或卷积层的架构。在 WMT 2014 英语到德语和 WMT 2014 英语到法语的翻译任务上,我们都达到了新的水平。在前一项任务中,我们最好的模型甚至超过了之前报道的所有组合。

        我们对基于注意力的模型的未来感到兴奋,并计划将它们应用于其他任务。我们计划将 Transformer 扩展到涉及文本以外的输入和输出模式的问题,并研究局部的受限注意力机制,以有效处理图像、音频和视频等大型输入和输出。减少生成的顺序是我们的另一个研究目标。




背景:

        循环神经网络、长短期记忆和门控循环神经网络,在语言建模和机器翻译等序列建模和转导问题中已被牢固确立为最先进的方法。此后,许多努力继续推动循环语言模型和编码器-解码器架构的界限。

问题1(无法并行)

        循环模型通常沿输入和输出序列的符号位置考虑计算,具有顺序计算的基本约束,无法并行计算

解决方法:

        注意机制已成为各种任务中引人注目的序列建模和转导模型的组成部分,允许对依赖项进行建模,而无需考虑它们在输入或输出序列中的距离。

前人减少顺序计算的探索:

        扩展神经GPUByteNet ConvS2S,这些都使用卷积神经网络作为基本构建块,并行计算所有输入的隐藏表示和输出位置。

问题2(无法建立上下文的长期依赖)

        在这些模型中,关联来自两个任意输入或输出位置的信号所需的操作数量随着位置之间的距离而增长,对于 ConvS2S 呈线性增长,而对于 ByteNet 则呈对数增长。这使得学习远距离位置之间的依赖关系变得更加困难。例如it代替上下文中的什么

我们的解决方法:

        在 Transformer 中,这被减少到恒定数量的操作,尽管由于平均注意力加权位置而降低了有效分辨率,我们使用多头注意力来抵消这种影响

        我们提出了Transformer,这是一个避免重复的模型体系结构,而完全依赖于一种注意力机制来绘制输入和输出之间的全局依赖关系。

方法:

        基于自注意力机制并行化处理数据(自注意力是一种将单个序列的不同位置关联起来以计算序列表示的注意力机制,解决上文中的远距离依赖关系

Attention Is All You Need (Transformer 原文)_第10张图片

步骤:

Attention Is All You Need (Transformer 原文)_第11张图片

输入:

        将句子通过单词嵌入算法转换为向量,再给每个word词向量添加位置编码

Attention Is All You Need (Transformer 原文)_第12张图片

位置编码:        

        由于我们的模型不包含递归和卷积,为了使模型能够利用序列的顺序,我们必须注入一些关于序列中标记的相对或绝对位置的信息。

        位置编码通过使用不同频率的正弦、余弦函数生成,然后和对应的位置的词向量相加,位置向量维度必须和词向量的维度一致。PE(positional encoding)计算公式如下:

        其中 pos 是位置,i 是维度

Attention Is All You Need (Transformer 原文)_第13张图片

编码器:

        6个相同编码器堆叠组成。每一层都有两个子层。第一种是多头自我注意机制,第二种是简单的位置全连接前馈网络。两个子层的每一个周围采用残差连接随后是层标准化。也就是说,每个子层的输出是LayerNorm(x+subayer(X)),其中subayer(X)是由子层本身实现的功能。为了促进这些残差连接,模型中的所有子层以及嵌入层产生维度dModel=512的输出。

Attention Is All You Need (Transformer 原文)_第14张图片

       多头注意力机制在参数量总体不变的情况下,将查询、键、值三个参数进行多次拆分,每组拆分参数映射到高维空间的不同子空间中计算注意力权重,从而关注输入的不同部分。多个头关注不同的信息(如全局信息和局部信息),从而提取更加全面丰富的特征。

        在实践中,我们同时计算一组查询的注意力函数,这些查询被打包到一个矩阵Q中。键和值也打包到矩阵KV中。我们将输出矩阵计算为:

        在这些QueryKeysValues的每个投影版本上,我们并行执行注意力功能,产生DV维输出值。它们被相加,并再次投影,产生最终的值,最后加入残差块防止在深度神经网络训练中发生退化问题,为了能够加快训练的速度、提高训练的稳定性,又对数据进行了归一化

编码器位置前馈网络

Attention Is All You Need (Transformer 原文)_第15张图片

        除了注意力子层之外,我们的编码器和解码器中的每一层都包含一个完全连接的前馈网络,该网络分别且相同地应用于每个位置。这包括两个线性变换,中间有一个 ReLU 激活。

        虽然线性变换在不同位置上是相同的,但它们在不同的层之间使用不同的参数。另一种描述方式是将其描述为核大小为1的两个卷积。输入和输出的维度为dModel=512,内层的维度为dff=2048

Attention Is All You Need (Transformer 原文)_第16张图片

 解码器:

        解码器也由N=6个相同层的堆栈组成。除了每个编码层中的两个子层之外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行多头关注。与编码器类似,我们在每个子层周围使用残差连接,然后进行层标准化。我们还修改了解码器堆栈中的自我关注子层,以防止位置关注后续位置。这种掩蔽与输出嵌入偏移一个位置的事实相结合,确保了对位置i的预测只能依赖于小于i的位置处的已知输出

Attention Is All You Need (Transformer 原文)_第17张图片

        Masked Multi-Head Attention与EncoderMulti-Head Attention计算原理一样,只是多加了一个mask码。mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果

      Encoder中的Multi-Head Attention是基于Self-Attention地,Decoder中的第二个Multi-Head Attention就只是基于Attention,它的输入Quer来自于Masked Multi-Head Attention的输出,KeysValues来自于Encoder中最后一层的输出。

        Add和Norm与编码器的作用一样(残差块防止在深度神经网络训练中发生退化问题,归一化加快训练的速度、提高训练的稳定性

输出:

Attention Is All You Need (Transformer 原文)_第18张图片

        经过一次线性变换,然后Softmax得到输出的概率分布,然后通过词典,输出概率最大的对应的单词作为我们的预测输出。 




知识点:

  • 主要是编码器和解码器、注意力方面,可参考博主:

史上最小白之Attention详解_Stink1995的博客-CSDN博客_attention解析

  • 参考了该博主对Transformer的细致讲解:

史上最小白之Transformer详解_Stink1995的博客-CSDN博客_transformer神经网络

你可能感兴趣的:(transformer,读论文,transformer,深度学习,人工智能)