【论文精度】Transformer---大模型基石

博主简介:努力学习的22级本科生一枚 🌟​
博客主页:羊小猪~~-CSDN博客
内容简介:探索AI算法,C++,go语言的世界;在迷茫中寻找光芒​🌸​
本文内容:精读Transformer论文,下一篇transformer论文复现。

翻译软件https://yiyibooks.cn/

文章目录

  • Abstract-摘要
  • Introduction--引言
  • Background--预备知识
  • [Model Architecture--模型架构](#Model Architecture--模型架构)
    • [Encoder and Decoder Stacks--编码器和解码器堆栈](#Encoder and Decoder Stacks--编码器和解码器堆栈)
    • Attention--注意力
      • [Scaled Dot-Product Attention--缩放点积](#Scaled Dot-Product Attention--缩放点积)
      • [Multi-Head Attention--多头注意力](#Multi-Head Attention--多头注意力)
      • [Applications of Attention in our Model--注意力在我们模型中的应用](#Applications of Attention in our Model--注意力在我们模型中的应用)
    • [Position-wise Feed-Forward Networks--基于位置的前馈神经网络](#Position-wise Feed-Forward Networks--基于位置的前馈神经网络)
    • [Embedding and Softmax--嵌入和Softmax](#Embedding and Softmax--嵌入和Softmax)
    • [Positional Encoding--位置编码](#Positional Encoding--位置编码)
  • [Why Self-attention--为什么是自注意力机制?](#Why Self-attention--为什么是自注意力机制?)
  • Training--训练
    • [Training Data and Batching--训练数据和批处理](#Training Data and Batching--训练数据和批处理)
    • [Haedware and Schedule--硬件和进度](#Haedware and Schedule--硬件和进度)
    • Optimizer--优化器
    • Regularization--正则化
  • Results--结果
    • [Machine Translation--机器翻译](#Machine Translation--机器翻译)
    • [Model Variations--模型变体](#Model Variations--模型变体)
    • [English Constituency Parsing--英语成分分析](#English Constituency Parsing--英语成分分析)
  • Conclusion

Abstract-摘要

目前主流的序列转换模型基于复杂的循环神经网络或卷积神经网络,它们包含一个编码器和一个解码器。 性能最佳的模型还通过注意力机制连接编码器和解码器。 我们提出了一种新的简单网络架构,即 Transformer,它仅基于注意力机制,完全摒弃了循环和卷积 。 在两个机器翻译任务上的实验表明,这些模型在质量上更优,同时并行化程度更高训练所需时间也显著更少。 在 WMT 2014 英德翻译任务上,我们的模型达到了 28.4 BLEU,比包括集成模型在内的现有最佳结果提高了 2 BLEU 以上。 在 WMT 2014 英法翻译任务上,我们的模型在八个 GPU 上训练 3.5 天后,取得了 41.8 的新单模型 BLEU 分数,这是文献中最佳模型训练成本的一小部分。 我们通过将 Transformer 成功应用于大型和有限训练数据下的英语成分句法分析任务,展示了它能很好地泛化到其他任务。


精读

背景

  • 主流序列模型采用RNN或者CNN网络,包含一个编码器和一个解码器,并且可以通过注意力机制连接编码器和解码器达到最佳性能

缺点

  • 计算量大,并行化程度低

本文方法

  • 提出一个全新的架构--Transformer,完全基于注意力机制,完全抛弃CNN、RNN网络

优点

  • 并行化程度高,训练时间显著减少
  • 在两个翻译任务中效果明显
  • BLEU 是一种广泛用于自动评估机器翻译质量 的指标,也可用于文本摘要、对话生成等自然语言生成任务。它的核心思想是:通过比较模型生成的句子与人工参考译文之间的 n-gram 重合程度,来衡量生成结果的准确性与流畅性
    总的来说,BLEU越大说明翻译效果越好,0.3以上代表可用。
  • 参考:【《RethinkFun深度学习教程》:14.2 BLEU评价指标】https://www.bilibili.com/video/BV1XThMzBEQ2?vd_source=1fd424333dd77a7d3e2e741f7d6fd4ee

Introduction--引言

循环神经网络,特别是长短期记忆 [13] 和门控循环 [7] 神经网络,已牢固确立为序列建模和转换问题(如语言建模和机器翻译 [35, 2, 5])的最新方法。 此后,许多努力一直致力于突破循环语言模型和编码器-解码器架构的界限 [38, 24, 15]。

循环模型通常根据输入和输出序列的符号位置进行计算分解。 将位置与计算时间步对齐,它们生成一个隐藏状态序列 ht,作为前一个隐藏状态 ht−1 和位置 t 输入的函数。这种固有的顺序性阻碍了训练样本内的并行化,而这对于较长的序列长度至关重要,因为内存约束限制了跨样本的批处理。 最近的工作通过分解技巧 [21] 和条件计算 [32] 在计算效率方面取得了显著的改进,同时在后者的情况下也提高了模型性能。 然而,顺序计算的基本约束依然存在。

注意力机制已成为各种任务中引人注目的序列建模和转换模型不可或缺的一部分,它允许在不考虑输入或输出序列距离的情况下建模依赖关系 [2, 19]。 然而,在少数情况 [27] 之外,这种注意力机制都与循环网络结合使用。

在本文中,我们提出了 Transformer,一种摒弃循环,完全依赖注意力机制来绘制输入和输出之间全局依赖关系的Transformer模型架构。 Transformer 允许显著的并行化,并且在仅使用八个 P100 GPU 训练十二小时后,就能达到新的翻译质量的Transformer。


精度

RNN系列网络

  • 一直致力于突破编码器-解码器架构界限
  • 固有的顺序性: 生成一个隐藏状态序列 ht,作为前一个隐藏状态 ht−1 和位置 t 输入的函数,阻碍了并行化
  • RNN结合注意力机制在序列建模和转换模型中不可或缺

本文方法

  • 提出全新架构,完全抛弃循环,采用完全依赖注意力机制来绘制输入和输出之间的全局依赖关系
  • 能够显著提高并行化

Background--预备知识

减少顺序计算的目标也构成了Extended Neural GPU[16]、ByteNet[18] 和ConvS2S_[9] 的基础,它们都使用卷积神经网络作为基本构建块并行计算所有输入和输出位置的隐藏表示 。 在这些模型中,关联两个任意输入或输出位置的信号所需的操作数随着位置距离的增加而增加,对于ConvS2S是线性的,对于ByteNet是Transformer的。 这使得学习Transformer距离位置之间的依赖关系更加困难 [12]。 在Transformer中,这减少为常数次操作,尽管是以有效分辨率降低为代价,因为注意力加权位置被平均化了,我们通过第 3.2 节中描述的多头注意力来抵消这种影响 3.2

自注意力,有时也称为Transformer内部注意力,是一种注意力机制,它关联单个序列的不同位置,以计算该序列的表示。 自注意力已成功应用于多种任务,包括阅读理解、抽象摘要、文本蕴涵和学习与任务无关的句子表示 [4, 27, 28, 22]。

端到端记忆网络基于Transformer循环注意力机制,而不是序列对齐的循环,并且已被证明在简单语言问答和语言建模任务上表现良好 [34]。

然而,据我们所知,Transformer是第一个完全依赖于self-attetion来计算其输入和输出表示而不使用序列对齐的RNN或卷积的转换模型,在下面的章节中,我们将描述Transformer,motivate ,self-attention,并讨论它相对于[17,18]和[9]等模型的优势


精读

CNN代替RNN

  • 通道数可以增加
  • 减少时序计算

缺点

  • 感受野有限,对于较远的句子距离来说,需要多次卷积才能捕捉到其序列关系

自注意力

  • transformer的内部注意力机制,成功应用于多种任务

端到端注意力

  • 基于transformer,证明在简单语言问答和语言建模任务上表现良好

Transformer

  • 完全依赖自注意力机制,可以完全看到一层数据,不使用CNN或者RNN模型。

Model Architecture--模型架构

大多数具有竞争力的神经网络序列转换模型都采用编码器-解码器结构 [5, 2, 35]。 在此,编码器将符号表示的输入序列 (x1,...,xn) 映射到连续表示的序列 𝐳=(z1,...,zn)。 给定 𝐳,解码器然后一次生成一个符号的输出序列 (y1,...,ym)。 在每一步,模型都是自回归的 [10],在生成下一个符号时,将之前生成的符号作为附加输入。

Transformer 遵循这一整体架构,对编码器和解码器使用堆叠自注意力和逐点、全连接层,分别如图 1 的左半部分和右半部分所示。


精读

以前模型

  • 采用编码器-解码器,编码器输入序列X映射到连续序列Z,Z在解码器中解码输出
  • 模型是自回归的

Transformer

  • transformer遵循这一架构,编码器和解码器采用堆叠自注意力和全连接层

Encoder and Decoder Stacks--编码器和解码器堆栈

编码器:

编码器由一个 N=6 相同层的堆栈组成。 每层有两个子层。 第一个是一个多头自注意力机制,第二个是一个简单的、逐点的全连接前馈网络。 我们在两个子层周围都使用了残差连接 [11],然后是层归一化 [1]。 即,每个子层的输出是 LayerNorm(x+Sublayer(x)),其中 Sublayer(x) 是由子层本身实现的功能。 为了方便这些残差连接,模型中的所有子层以及嵌入层都产生维度为 dmodel=512 的输出。

解码器:

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


精读

编码器

  • 6个相同层组成,每层有两个子层
    • 第一个子层,多头注意力机制
    • 第二个子层,全连接神经前馈神经网络
  • 每个子层都用了"残差连接 + 层归一化", LayerNorm(x+Sublayer(x))
  • 所有子层嵌入维度维持在dmodel=512输出

解码器

  • 6个子层组成,每层除了编码器的两个,还增加了一个子层--对编码器的堆栈输出执行多头注意力机制
  • 每个子层依然采用"残差连接 + 层归一化", LayerNorm(x+Sublayer(x))
  • 修改了解码器堆栈的注意力子层(Mask掩码),目的是为了位置 i 的只能依赖 i 之前位置的已知输出,不能看到 i 后的输出。

Attention--注意力

Attention机制可以描述为将一个query和一组key-value对映射到一个输出,其中query,keys,values和输出均是向量。输出是values的加权求和,其中每个value的权重通过query与相应key的兼容函数来计算。 输出是通过值的加权和计算得出的,其中分配给每个值的权重是通过查询与相应键的兼容性函数计算得出的。


精读

  • attention组成是由一个query和一组key-value矩阵
  • 权重是通过查询query与相应键key的兼容性函数计算得出的,然后与value进行加权求和,然后进行输出

Scaled Dot-Product Attention--缩放点积

我们将我们特定的注意力称为"缩放点积注意力 "(图 2)。 输入由维度为d **k**的查询和键,以及维度为 d **v**的值 组成。 我们计算查询与所有键的点积,将每个点积除以
,然后应用 softmax 函数以获得值上的权重

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

最常用的两种注意力函数加性注意力 [2] 和点积(乘性)注意力 。 点积注意力与我们的算法相同,除了缩放因子
。 加性注意力使用具有单个隐藏层的前馈网络来计算兼容性函数。 虽然两者在理论复杂度上相似,但点积注意力在实践中速度更快、空间效率更高,因为它可以使用高度优化的矩阵乘法代码来实现。

虽然对于 dk 的小值,这两种机制的表现相似,但对于 dk 的较大值,在没有缩放的情况下,加性注意力优于点积注意力 [3]。 我们怀疑,对于 dk 的大值,点积的绝对值会增大,将 softmax

数推向梯度极小的区域 。为了抵消这种效应,我们用
对点积进行缩放。


精读

  • 缩放点积注意力:查询Q和键值K做点乘,每个点乘除以
    ,最后运用softmax函数获取权重最大值。
  • 常用注意力函数有两种,加性注意力和点积注意力,点击注意力在实践中速度更快,空间效率更高。
  • 对于dk维度较大的时候,点积注意力在没有缩放的情况下,加性注意力机制由于点积注意力机制 ,作者怀疑dk 增加,点积绝对值也会增大,从而使softmax梯度推向极小区域,所以使用
    进行点积缩放。
  • dk:词嵌入维度
  • 换句话说,除以dk是为了控制方差,如果不除以dk,那么q点乘k结果方差就会变得很大,导致数据变得分散很多,如果数据变得很大,那么就会导致softmax的梯度在更新的时候区域0,从而导致梯度消失/梯度爆炸问题,具体数学原理如下图所示:

Multi-Head Attention--多头注意力

相比于使维度的query,keys,values执行一个attention函数,我们发现使用不同的学习到的线性映射把query, keys 和 values线性映射到d **k**,d **k**和d **v****维度h次是有益的。**在query,keys和values的每个映射版本上,我们并行的执行attention函数,生成dv维输出值。它们被拼接起来再次映射,生成一个最终值,如 Figure 2 中所示。

多头注意力机制允许模型同时关注来自不同表示子空间、在不同位置的信息。 单一注意力头进行平均会抑制这一点。


精读

  • 我们发现使用不同的学习到的线性映射把query, keys 和 values线性映射到d **k**,d **k**和d **v**维度h次是有益的,这句话难理解点,换句话说,采用多头机制 ------即对输入序列的 Query、Key 和 Value 分别应用 h组独立的可学习线性投影,将其映射至 dk , dk 和 dv 维的子空间,并在各子空间中并行计算注意力------能够有效增强模型的表达能力。
  • 并行执行attention,最后将输出结果进行拼接
  • 多头注意力机制可以同时关注来着不同子空间在不同位置的信息,而单头注意力机制不行。

Applications of Attention in our Model--注意力在我们模型中的应用

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

  • 在"编码器-解码器注意力"层中,查询来自前一个解码器层,而键和值来自编码器的输出。 这允许解码器中的每个位置都关注输入序列中的所有位置。 这模仿了序列到序列模型中典型的编码器-解码器注意力机制,例如 [38, 2, 9]。
  • 编码器包含自注意力层。 在自注意力层中,所有的键、值和查询都来自同一个地方,在这种情况下,是编码器前一层的输出。 编码器中的每个位置都可以关注编码器前一层的的所有位置。
  • 类似地,解码器中的自注意力层允许解码器中的每个位置关注解码器中(包含该位置本身)的所有先前位置。 我们需要防止解码器中的左向信息流,以保持自回归属性。 我们通过掩码(设置为 −∞)来消除 softmax 输入中对应于非法连接的所有值,从而在缩放点积注意力中实现这一点。 参见图 2。

精读

  • 编码器-解码器注意力

查询Query来源于解码器,键Key和值Value来源于编码器,这将允许解码器中的每个位置都关注输入序列中的所有位置,这也是经典的encoder-decoder模式,在seq2seq中注意力体现很明显。

  • 编码器包含自注意力层

Query、Key、Value来至于同于输入X,这可以很好的捕捉句子内部之间的关系

  • 解码器中的掩码注意力层

作用 :使t时刻后的权重设置为0,使得模型在训练过程中不能看到t后面的信息,保持自回归特性

Position-wise Feed-Forward Networks--基于位置的前馈神经网络

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

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


精读

  • 前馈神经网络有两个线性变换,第一个线性变换后通过ReLU激活函数,然后在进行第二个线性变换

Embedding and Softmax--嵌入和Softmax

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


精读

  • embedding将输入和输出的Token转换为向量
  • 采用线性变换和softmax函数的方式将decoder输出转化为预测下一个的token概率
  • 在嵌入层中,我们将这些权重乘以 d **model,****目的是**放大词嵌入的数值,使其方差与位置编码的方差大致相当,从而在模型训练初期保持两者重要性的平衡

Positional Encoding--位置编码

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


精读

  • transformer模型不含rnn和cnn,所以模型不能利用序列顺序,故采用的是"位置编码"加入到输入嵌入向量中
  • 位置编码和嵌入向量维度相同
  • 采用不同频率的正弦和余弦函数进行交替编码,使的数据具有时序信息。

Why Self-attention--为什么是自注意力机制?

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

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

如表1所示,自注意力层以恒定的顺序执行操作次数连接所有位置,而递归层需要 O(n) 次顺序操作。 在计算复杂度方面,当序列长度 n 小于表示维度 d 时,自注意力层比递归层更快,而这在机器翻译的最新模型(如 word-piece [38] 和 byte-pair [31] 表示)所使用的句子表示中是最常见的情况。 为了提高涉及非常长序列的任务的计算性能,可以将自注意力限制为仅考虑输入序列中围绕相应输出位置大小为 r 的邻域。 这会将最长路径长度增加到 O(n/r)。 我们计划在未来的工作中进一步研究这种方法。

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

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


精读

自注意力考虑问题

  • 每层的总计算复杂度
  • 并行化计算量
  • 网络中长距离之间的路径长度

关键挑战

  • 学习长距离依赖

关键因素

  • 前向和后向信号在网络中必须经过的路径长度 ,输入和输出序列中任意位置组合 之间的路径越短就越容易学习长距离依赖关系

实验结果

  • "为了提高涉及非常长序列的任务的计算性能,可以将自注意力限制为仅考虑输入序列中围绕相应输出位置大小为 r 的邻域 "----这个是用 "掩码" 实现的。

自注意力优点

  • 更具有可解释性

Training--训练

本节描述了我们模型的训练方案。

Training Data and Batching--训练数据和批处理

我们在标准的 WMT 2014 英德数据集上进行了训练,该数据集包含约 450 万个句子对。 句子使用byte-pair编码对编码 [3] 进行编码,该编码具有约 37000 个 token 的共享源目标词汇表。 对于英法数据集,我们使用了规模显著更大的 WMT 2014 英法数据集,其中包含 3600 万个句子,并将 token 分割成一个 32000 个词片 (word-piece) 的词汇表 [38]。 句子对按近似序列长度进行批处理。 每个训练批次包含一组句子对,包含约 25000 个源 token 和 25000 个目标 token。


精读

英德数据

  • 标准的 WMT 2014 英德数据集上进行了训练,该数据集包含约 450 万个句子对
  • byte-pair编码

英法数据

  • 对于英法数据集,我们使用了规模显著更大的 WMT 2014英法数据集,其中包含 3600 万个句子
  • token 分割成一个 32000 个词片 (word-piece) 的词汇表
  • 句子对按近似序列长度 进行批处理

Haedware and Schedule--硬件和进度

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


精读

硬件

  • 8个英伟达P100

训练时间

  • 基础模型:12h
  • 大模型:3.5天

Optimizer--优化器


精读

  • 优化器:Adam
  • 参数:
    =0.9,
    =0.98,
    =1e-9

Regularization--正则化

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

残差 dropout

我们将 dropout [33] 应用于每个子层的输出,在将其添加到子层输入并归一化之前。 此外,我们还将 dropout 应用于编码器和解码器堆栈中嵌入和位置编码的总和。 对于基础模型,我们使用的率为 Pdrop=0.1。

标签平滑

在训练过程中,我们采用了值为 ϵls=0.1 的标签平滑 [36]。 这会损害困惑度,因为模型会学得更加不确定,但会提高准确率和 BLEU 分数。


精读

残差dropout

dropout

  • dropout运用于每一个子层的输出,添加到子层输入并归一化之前
  • 还运用于编码器和解码器中嵌入位置编码的地方
  • dropout=0.1

残差和dropout架构

标签平滑

值: 0.1

效果: 会损害困惑度,因为模型会学得更加不确定,但会提高准确率和 BLEU 分数.

Results--结果

Machine Translation--机器翻译

表 2: Transformer 在 English-to-German 和 English-to-French 的 newstest2014 测试上的 BLEU 分数优于之前的最先进模型,而训练成本仅为其一小部分。

在 WMT 2014 English-to-German 翻译任务上,大型 Transformer 模型(表 2 中的 Transformer (big))的 BLEU 分数比之前报道的最佳模型(包括集成模型)高出 2.0 以上,创下了 28.4 的新 BLEU 分数最先进记录。 该模型的配置列在表 3 的最后一行。 训练在 8 个 P100 GPU 上耗时 3.5 天。 即使是我们的基础模型,也优于所有先前发布的模型和集成模型,而训练成本仅为任何竞争模型的一小部分。

在 WMT 2014 English-to-French 翻译任务上,我们的模型达到了 41.0 的 BLEU 分数,优于所有先前发布的单模型,而训练成本不到先前最先进模型成本的 1/4。 用于 English-to-French 训练的 Transformer (big) 模型使用了 Pdrop=0.1 的 dropout 率,而不是 0.3。

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

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


精读

English-to-German任务上

  • 效果:大模型Transformer的BLEU分数达28.4,创记录;基础模型也好于之前模型
  • 训练成本:P100 GPU上耗时3.5天

English-to-French

  • 效果:BLEU分数达到41.0,由于之前发布的模型
  • 训练成本:之前最先进模型的四分之一

Model Variations--模型变体

表 3: Transformer 架构的变体。 未列出的值与基础模型相同。 所有指标均基于英德翻译开发集 newstest2013。 列出的困惑度是根据我们的字节对编码计算的每个 wordpiece 的值,不应与每个词的困惑度进行比较。

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

在表 3 的行 (A) 中,我们改变了注意力头的数量以及注意力键和值的维度,同时保持计算量不变,具体描述见 3.2.2 节。 单头注意力比最佳设置差 0.9 BLEU,而过多的头也会导致性能下降。

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


精读

目的: 为了评估Transformer不同组件的重要性

改进措施

方法一:改变注意力头数和注意力键key和值Value维度,但保持计算量总体不变

  • 结果: (h, dk, dv)=(16, 32, 32)效果最好,BLEU分数为25.8,说明多头注意力机制多头数量有利于获取更好效果,但是不是头越多越好。

方法二:改变注意力键值Key维度大小

  • 结果 :减少dk维度大小会损害模型质量

方法三:换更大的模型并且调整dropout参数

  • 结果:换更大的模型,效果更好,运用dropout缓解过拟合哟很好的效果

方法四:采用正弦位置编码作为位置嵌入

  • 与基本模型基本相同

English Constituency Parsing--英语成分分析

表 4: Transformer 在英语成分句法分析任务上泛化能力良好(结果来自 WSJ 第 23 节)

为了评估 Transformer 是否能够泛化到其他任务,我们进行了英语成分句法分析的实验。 该任务存在特定的挑战:输出受到严格的结构约束,并且显著长于输入。 此外,在小数据场景下,RNN 序列到序列模型未能取得最先进的结果 [37]。

我们使用 4 层 Transformer,在 Penn Treebank 的 Wall Street Journal (WSJ) 部分训练,大约有 40K 个训练句子,dmodel=1024。 [25] 我们还在半监督设置下训练了它,使用了来自更大、置信度更高且包含约 17M 个句子的 BerkleyParser 语料库 [37]。 对于仅使用 WSJ 的设置,我们使用了 16K token 的词汇表;对于半监督设置,我们使用了 32K token 的词汇表。

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

4 中的结果表明,尽管缺乏针对特定任务的调优,我们的模型表现出人意料地好,除了 Recurrent Neural Network Grammar [8] 之外,其结果优于所有先前报道的模型。

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


精读

目的:验证transformer的泛化性能

实验分类:

  1. 使用 4 层 Transformer,在 Penn Treebank 的 Wall Street Journal (WSJ) 部分训练,大约有 40K 个训练句子,dmodel=1024,训练方式:半监督设置下训练了它
  2. 在半监督设置下,使用了来自更大、置信度更高且包含约 17M 个句子的 BerkleyParser 语料库。

效果:

  • 尽管不调优,模型出人意料的好,由于之前所有模型。

Conclusion

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

对于翻译任务,Transformer 的训练速度比基于循环或卷积层的架构快得多。 在 WMT 2014 英译德和 WMT 2014 英译法的翻译任务上,我们均取得了新的最先进水平。 在前者任务上,我们最好的模型甚至优于所有先前报道的集成模型。

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

我们用于训练和评估模型的代码可在 https://github.com/tensorflow/tensor2tensor 获取。


精度

本文创新

  • 提出了 Transformer,这是第一个完全基于注意力机制的序列转换模型,它用多头自注意力机制取代了编码器-解码器架构中最常用的循环层

效果--翻译任务

  • 训练速度比RNN/CNN架构快很多,且在在 WMT 2014 英译德和 WMT 2014 英译法的翻译任务上,均取得了新的最先进水平
相关推荐
DO_Community2 小时前
高性能、低成本推理新标准:NVIDIA Dynamo 1.0 现已上线 DigitalOcean 推理云平台
人工智能·aigc·ai推理
zzh940772 小时前
ChatGPT镜像官网实战:如何用GPT-4o解决信息过载与知识管理难题
人工智能·chatgpt
馨谙2 小时前
万字详解 MCP 协议:AI 智能体连接外部世界的 “通用神经接口”
人工智能·云原生
西西弟2 小时前
常见排序算法集合(数据结构)
数据结构·算法·排序算法
伏 念2 小时前
大模型技术之LLM
人工智能·笔记·python·aigc
ayingmeizi1632 小时前
从算力领先到增长领先:前沿科技企业为何需要AI原生CRM作为增长引擎
人工智能·科技·数据可视化·crm·ai-native
Yzzz-F2 小时前
[模板]Nim博弈
算法
小龙报2 小时前
【数据结构与算法】栈和队列的综合应用:1.用栈实现队列 2.用队列实现栈 3.设计循环队列
c语言·数据结构·数据库·c++·redis·算法·缓存
胡摩西2 小时前
制造业室内精准定位:毫米级技术如何破解工厂自动化“最后一厘米”难题
人工智能·自动化·slam·室内定位·roomaps