摘要

当前主流的序列转换(sequence transduction)模型主要基于复杂的循环神经网络(RNN)或卷积神经网络(CNN),这些模型通常包括一个编码器(encoder)和一个解码器(decoder)。表现最好的模型还通过注意力机制(attention mechanism)将编码器和解码器连接起来。

本文提出了一种全新的、结构更简单的网络架构——Transformer。这个架构完全基于注意力机制,彻底摒弃了循环和卷积结构。

在两个机器翻译任务上的实验表明,Transformer模型不仅在翻译质量上优于以往的模型,而且更易于并行计算,训练所需的时间也大大减少。在WMT 2014 英译德(English-to-German)翻译任务中,Transformer模型获得了28.4的BLEU分数,比当时最好的结果(即使是模型集成)还高出2分多。在WMT 2014 英译法(English-to-French)任务上,Transformer模型经过3.5天、8块GPU的训练后,单模型就达到了41.8的BLEU分数,远远低于当时文献中最佳模型的训练成本。

此外,作者还将Transformer模型应用到英语句法分析(constituency parsing)任务上,无论训练数据多还是少,Transformer都能很好地泛化并取得成功,说明该模型具有良好的通用性。

简而言之,Transformer模型用一种更简单高效的方式,依靠注意力机制,取代了传统的循环和卷积结构,在多个NLP任务上取得了更好的效果和更高的效率。

一)介绍

1.1  传统序列建模方法的局限

在自然语言处理(NLP)领域,像RNN、LSTM 和 GRU 这样的循环神经网络长期以来都是处理序列数据(比如文本、语音、时间序列等)的主力方法。它们的基本思想是:每个时刻的隐藏状态不仅依赖于当前输入,还依赖于上一个时刻的隐藏状态。这样一来,模型能够捕捉到序列中的上下文信息,实现对时间/顺序的建模。

但是,这种方式有两个明显的缺点:

  • 串行计算瓶颈:RNN等模型只能按顺序处理数据,不能并行。比如输入一句话时,必须等前一个词处理完才能处理下一个词,这极大限制了训练和推理速度,特别是在长序列时非常低效。
  • 长距离依赖难建模:虽然LSTM、GRU等通过门控机制缓解了“长距离依赖”问题,但本质上,信息还是要一层一层传递。如果两个词距离很远,信息就容易在传递过程中被稀释或遗失。

1.2 注意力机制的引入

注意力机制的提出,极大地改善了模型对序列中远距离依赖的建模能力。它允许模型在处理每一个输出时,可以直接“关注”输入序列的所有位置,而不是只关注某个局部区域。这样,模型可以灵活地捕捉到输入中不同部分之间的关系。但在早期,大多数注意力机制都是作为“补充”加在RNN结构之上的,模型的主要流程仍然是按顺序执行的,无法根本解决并行效率的问题。

1.3 Transformer的创新与优势

Transformer的出现,彻底改变了序列建模的范式。它有几个革命性的创新:

  • 完全去除循环结构:Transformer完全舍弃了RNN、LSTM等串行结构,整个模型只由注意力机制和前馈网络组成。这意味着所有位置的计算都可以并行完成,极大提升了训练和推理的速度。
  • 自注意力机制(Self-Attention):模型中每个位置都可以直接“看到”序列中所有其他位置的信息,自由地建立联系。这不仅加深了模型对全局上下文的理解能力,也使得长距离依赖建模变得非常容易。
  • 更易扩展和优化:由于没有循环,模型结构更简单,便于工程实现和硬件加速(比如用GPU/TPU进行大批量并行训练),从而可以在更大规模数据和更复杂任务上取得更好效果。

1.4 实际效果与应用扩展

论文的实验结果非常突出:

  • 在机器翻译任务上,Transformer不仅在BLEU分数(衡量翻译质量的指标)上超过了所有现有模型,而且训练速度快很多。
  • 只需要较短时间和有限硬件资源,就能达到甚至超过以往模型用更大算力和更长时间得到的效果。
  • Transformer的结构也很通用,可以应用于其他序列任务(比如句法分析、文本生成等),并且表现同样优异。

为什么Transformer会成为NLP领域的新基石?

  • 并行化带来的效率革命:在大规模数据和模型时代,计算效率是决定NLP技术能否大规模应用的关键。Transformer通过结构创新,让原本按序处理的任务变成可以同时处理,大大提升了工业界和学术界的训练效率。
  • 自注意力机制的表达力:自注意力机制在理论上能够直接捕捉序列中任意两个位置之间的关系,使得模型对于复杂结构、长距离依赖等问题有了更强的建模能力。
  • 为后续研究铺路:自从Transformer提出后,BERT、GPT、T5等一系列划时代的模型(也就是现在的主流大语言模型)都是在Transformer基础上发展起来的。可以说,Transformer是现代NLP和AI革命的基石。

总结:

Transformer模型通过完全基于注意力机制的方法,极大提升了效率和效果,解决了传统RNN结构的瓶颈问题,并为后续的NLP和AI技术发展奠定了坚实的基础。这种架构不仅改变了机器翻译,也推动了整个AI领域的进步。

二)背景

2.1 降低序列化计算的尝试

在自然语言处理的发展过程中,很多模型都在尝试减少“序列化”计算的比例,因为序列化会导致计算效率低、并行性差。比如:

  • Extended Neural GPU [16]
  • ByteNet [18]
  • ConvS2S(Convolutional Sequence to Sequence)[9]

这些模型的共同点是:以卷积神经网络(CNN)为基本模块,可以同时(并行)计算所有输入和输出位置的隐藏表示(hidden representations)。这比循环神经网络(RNN)只能顺序处理要高效得多。

但这些模型也有自己的局限性:

  • 长距离依赖问题:如果要让输入或输出序列中的两个距离很远的位置建立联系,所需的计算步骤会随距离增长而增加。以ConvS2S为例,两个位置之间的操作数随距离线性增长;ByteNet则是对数级增长。
  • 这意味着,序列中距离越远的信息,模型越难捕捉到它们之间的联系。这对于需要全局理解的任务来说是个挑战。

2.2 transformer的突破

Transformer模型通过自注意力机制(Self-Attention),将任意两个位置之间的关联操作数降为常数(即无论两个位置距离多远,模型只需一步操作就能建立联系)。但这种方式也有副作用:由于注意力是加权平均的方式,可能会导致“信息分辨率降低”(即不同位置的信息被平均后,可能丢失细节)。为了解决这个问题,Transformer引入了多头注意力(Multi-Head Attention) 机制(将在第三节详细介绍),可以让模型从不同“视角”关注信息,提升表达能力。

2.3 自注意力机制的定义和应用

自注意力,有时也叫“内部注意力(intra-attention)”,指的是在一个序列内部,不同位置之间相互关注,从而得到该序列的综合表达。这种机制已经在很多任务中取得了成功,比如:

  • 阅读理解
  • 摘要生成
  • 句子蕴含判断
  • 通用句子表示学习

2.4 其他相关模型

“端到端记忆网络(End-to-End Memory Networks)”也是一种基于注意力机制的模型,它用的是“循环式注意力”,而不是严格对齐序列的RNN结构。这类模型在简单语言问答和语言建模等任务上表现不错。

2.5 Transformer的独特性和创新点

据作者所知,Transformer是第一个完全依靠自注意力机制、而不使用序列对齐的RNN或卷积结构来计算输入输出表示的转导(transduction)模型
也就是说,Transformer彻底摆脱了以往的“序列化”计算方式,实现了高效、全局的信息建模。

为什么这是一次重要的范式转变?

  • 以往的RNN和CNN虽然各自有优点,但依然存在“信息传递距离”成本(RNN是时间步,CNN是卷积层级),导致长距离依赖难建模或效率低下。
  • Transformer的自注意力机制打破了这种限制,让模型可以“一步到位”地捕捉全局信息,理论上更适合处理那些需要综合全局语义的任务(如机器翻译、文本生成、代码理解等)。
  • “多头注意力”则进一步增强了模型的表达力,让模型能同时关注不同层次、不同方向的信息,避免简单平均造成的信息丢失。

实际应用角度:

  • 由于完全去除了循环与卷积,Transformer结构更容易在现代硬件(比如GPU、TPU)上做大规模并行计算,这也是后续BERT、GPT等大模型能够快速训练和扩展到超大规模的基础。
  • Transformer的思想也被迁移到很多非NLP领域(如图像、音频、推荐系统等),推动了整个深度学习领域的技术进步。

总结:

Transformer的自注意力机制不仅提升了NLP模型的表达能力和效率,更为后续的AI发展打开了新的技术路径。它的核心创新——“全局依赖的并行建模”——已经成为现代AI模型设计的重要范式。

三)模型结构

编码器-解码器结构

大多数先进的神经序列转换(transduction)模型采用编码器-解码器(encoder-decoder)结构

  • 编码器:将输入序列(如一串单词的嵌入)映射为一组连续的高维表示(z)。
  • 解码器:基于编码器的输出z,逐步生成目标序列(如翻译后的句子),每次生成一个新元素。解码时,每一步会把之前生成的结果作为输入(自回归性质)。

Transformer 也采用这种结构,但与传统RNN/CNN不同,Transformer编码器和解码器均由多层自注意力和前馈全连接层堆叠而成。

3.1 编码器与解码器堆叠结构

编码器(Encoder)

  • 由N=6个完全相同的层堆叠而成。
  • 每层有两个子层:
    1. 多头自注意力机制(Multi-Head Self-Attention)。
    2. 逐位置(Position-wise)前馈全连接网络。
  • 每个子层外有残差连接(Residual Connection),并接层归一化(LayerNorm)。
  • 所有子层输出和嵌入维度统一为d_model=512,方便残差连接。

解码器(Decoder)

  • 结构与编码器类似,也是6层堆叠。
  • 每层有三个子层:
    1. 多头自注意力机制(但增加了mask,防止信息泄露到未来位置,保证自回归)。
    2. 对编码器输出的多头注意力机制(允许解码时每个位置关注输入序列所有位置)。
    3. 逐位置前馈全连接网络。
  • 同样使用残差连接和层归一化。


通过堆叠多层,模型可以逐步提取更复杂、更高层次的特征;残差连接和归一化则缓解了深层网络训练的梯度消失和收敛难题。

3.2 注意力机制详解

3.2.1 缩放点积注意力(Scaled Dot-Product Attention)

  • 输入:查询(Q)、键(K)、值(V)向量。
  • 计算方式:
    1. 计算查询与所有键的点积,除以\sqrt{d_k}(防止高维下数值过大,导致softmax梯度消失)。
    2. 经过softmax得到权重,对值向量加权求和。
  • 数学表达式: Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

缩放的目的在于稳定训练过程,防止高维空间下点积过大导致softmax输出过于极端。

3.2.2 多头注意力(Multi-Head Attention)

  • 不是只用一套Q/K/V,而是用h=8套不同的线性投影(参数各自独立),并行计算多个注意力头,最后拼接结果再线性变换。
  • 每个头关注不同的信息子空间,能综合多维视角的信息。

多头注意力让模型在同一层次上“同时关注”不同特征,例如短语结构、实体关系等,丰富了表达能力。

3.2.3 注意力在模型中的应用

  • 编码器-解码器注意力:解码器每个位置可关注输入序列所有位置,提升翻译/生成效果。
  • 编码器自注意力:编码器每个位置可关注输入序列所有位置,有助于捕捉全局上下文。
  • 解码器自注意力:每个位置只能关注当前位置及之前,避免信息泄露。

3.3 逐位置前馈网络(Position-wise Feed-Forward Networks)

  • 每层的每个位置都通过同一个两层全连接网络(中间ReLU),输入输出维度d_{model}=512,隐藏层df=2048。
  • 参数在不同层之间不共享。

这相当于对每个位置独立地进行特征变换,补充了非线性表达能力,为注意力机制提供丰富特征。

3.4 嵌入与Softmax

  • 输入和输出token都通过可学习的嵌入层映射到d_{model}=512维空间。
  • 解码器输出通过线性层+softmax转为下一个token的概率分布。
  • 共享输入、输出嵌入权重和softmax预处理权重,提升参数利用率。
  • 嵌入层输出还乘以\sqrt{d_{model}}进行缩放,稳定训练。

3.5 位置编码(Positional Encoding)

由于Transformer无循环和卷积,原生无法感知序列顺序。为此:

  • 在编码器和解码器底部,给每个token的嵌入加上“位置编码”。
  • 位置编码与嵌入同维,可直接相加。
  • 采用正弦和余弦函数,不同维度对应不同频率,能够表达绝对和相对位置。
  • 数学表达式:
    PE_{(pos,2i)} = sin(pos / 10000^{2i/d_{model}})
    PE_{(pos,2i+1)} = cos(pos / 10000^{2i/d_{model}})
  • 这样,即使序列比训练时更长,模型也能泛化出合理的位置关系。

实际计算,以 “猫追老鼠” 生成位置编码 

10000^{2i/d_{\text{model}}}是 “频率因子”—— 维度 i 越大,频率越低,编码的 “周期” 越长(对应 “全局位置信息”);维度 i 越小,频率越高,编码的 “周期” 越短(对应 “局部位置信息”)。

假设词向量的嵌入维度是4维度的。即d_{model}=4

步骤 1:先计算频率因子

步骤 2:计算每个位置的编码值

步骤 3:最终位置编码矩阵 P

思考:

为什么正弦余弦函数可以编码出来位置关系

其实可以类比时钟来看,其实时钟就可以被看作是三维的,表盘的时间点都可以被这三个数值唯一的表示出来,显然,秒针的周期短,所以它对应局部时间信息;而时针的周期长。它对应全局时间信息。

sin 和 cos 是 “天然的位置标签生成器”—— 不同 pos 对应唯一的 (sin, cos) 组合(绝对位置),且 pos 变化时,组合的变化规律能体现 “前后顺序” 和 “相对距离”(相对位置);高维扩展后,多组 sin/cos 又能覆盖 “局部 + 全局” 的位置信息,最终让模型读懂词的顺序。

Transformer的核心创新在于:

  • 完全基于注意力机制,无需循环和卷积,极大提高了并行性和全局建模能力。
  • 多头注意力机制让模型表达能力更强,每层可同时关注不同信息。
  • 位置编码让模型具备序列感知能力,兼具泛化性。
  • 残差连接、层归一化、权重共享等技巧,保证深层模型易于训练、参数高效。

对NLP和深度学习的意义:

  • Transformer解决了长距离依赖和训练效率瓶颈,推动了大规模语言模型(如BERT、GPT等)的发展。
  • 架构高度通用,已广泛应用于图像、音频、推荐等领域。
  • 其设计理念(全局并行、注意力优先)已成为AI模型设计主流范式。

四)Why Self-Attention

主要比较了自注意力(Self-Attention)层与传统的循环(RNN)层卷积(CNN)层在处理序列任务时的不同表现,阐述了作者选择自注意力机制的原因。

比较的三大指标

  1. 每层的总计算复杂度
    即每一层完成运算所需的总计算量(比如多少乘加操作),直接影响模型速度与资源消耗。

  2. 可并行化的计算量
    也就是最少需要多少步串行计算,能否利用硬件并行优势。并行性越好,训练和推理速度越快。

  3. 网络中长距离依赖的最短路径长度
    指模型中信号(如梯度)在输入与输出的不同位置之间传播时经过的最短路径。路径越短,模型越容易捕捉长距离的信息(比如一句话的主语与谓语之间的关系)。

各种层的具体表现

1. 自注意力(Self-Attention)

  • 任意两个位置之间的信号传播路径长度为常数O(1),即一层就能直接关联任意位置。
  • 串行操作数也为常数O(1),高度可并行化。
  • 计算复杂度是O(n²·d),其中n是序列长度,d是每个词的向量维度。
  • 当序列长度n比维度d小(如常见的机器翻译任务),自注意力比循环更快。
2. 循环层(RNN)
  • 路径长度为O(n),因为必须一步步顺序处理每个位置(比如从头到尾传递信息),难以并行。
  • 计算复杂度是O(n·d²)。
3. 卷积层(CNN)
  • 单层只能覆盖有限范围,若要任意位置相互关联,需要堆叠多层,路径长度随层数增加,通常为O(logk(n))(k为卷积核宽度)。
  • 复杂度比RNN高(O(k·n·d²)),但可以适当并行,尤其是深度可分离卷积能降低复杂度。

五)训练

5.1 训练数据与批处理

  • 使用了WMT 2014英德数据集(约450万对句子),采用BPE(字节对编码)分词,词表约37,000个token,源/目标共享词表。
  • 英法任务用WMT 2014英法数据集(3,600万对句子),采用WordPiece分词,词表32,000。
  • 批处理时,按句子长度近似分组,每个batch包含约25,000个源token和25,000个目标token。

5.2 硬件与训练时间

  • 基础模型在8张NVIDIA P100 GPU上训练,每步约0.4秒,总共训练100,000步(约12小时)。
  • 大模型(参数更多)每步1秒,训练300,000步(约3.5天)。

5.3 优化器

  • 用Adam优化器,参数为β1=0.9, β2=0.98, ϵ=1e-9。
  • 学习率采用特殊的动态调整公式:

  • 前4000步(warmup_steps)学习率线性增加,之后按步数的负0.5次方递减。

5.4 正则化

论文用到三种正则化方法:

  1. Residual Dropout:对每个子层输出(如注意力层、前馈层)在加到输入前做dropout,率为0.1。同时对embedding和位置编码之和也做dropout。
  2. 标签平滑(Label Smoothing):训练时将正确标签概率分散一些(ε=0.1),这样模型不会过分自信,有助于提升准确率和BLEU分数(但困惑度会变高)。

Transformer以自注意力机制为核心,实现了NLP技术的重大突破,不仅在机器翻译领域取得了最优成绩,也为多模态AI和高效建模带来了广阔前景。它的设计理念和工程实践至今影响着整个AI领域的模型发展方向。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐