Transformer:ChatGPT语言模型背后的核心技术
Transformer是一种革命性的神经网络模型,它彻底改变了自然语言处理(NLP)和计算机视觉等领域。本教程将带你全面了解Transformer的原理、架构、应用以及局限性,帮助你掌握这一核心技术的来龙去脉。
一、什么是Transformer?
Transformer是一种用于序列到序列(Sequence-to-Sequence)任务的神经网络模型,例如机器翻译、语音识别和生成对话等。它使用了注意力机制来计算输入序列和输出序列之间的关系。
Transformer的主要优点包括:
- 并行处理:可以并行地处理输入序列中的所有位置,因此在训练和推理时都有着很好的效率。
- 长序列友好:没有使用循环结构,不会受长序列的影响,在处理长序列时不会出现梯度消失或爆炸的问题。
相比之下,基于循环的模型(例如基于LSTM的模型)在处理长序列时可能出现问题,因为它们必须逐个处理序列中的位置,训练速度变慢。另一方面,Transformer在处理短序列时可能不如基于循环的模型准确,因为它没有循环结构可以保留先前位置的信息。
总体来说,Transformer是一种很有效的模型,特别是在处理较长的序列和并行化计算时。它已经成为了NLP领域中许多序列到序列任务的首选模型。

小提示: 当你需要处理长文本(如文章摘要、对话生成)时,Transformer通常比RNN/ LSTM更高效;但若序列很短(如单个单词分类),可先尝试简单模型。
二、Transformer的核心机制:自注意力(Self-Attention)
Transformer的核心是自注意力机制,它让模型能够同时关注输入序列中的所有位置,从而捕捉全局依赖关系。
2.1 缩放点积注意力(Scaled Dot-Product Attention)
Attention函数将三元组Q(Query)、K(Key)、V(Value)映射成输出。输出是V的加权和,权重由Q和K的点积计算得出。其公式如下:
Attention(Q,K,V) = softmax( Q·Kᵀ / √dₖ ) · V
其中,是K的维度。除以是为了防止点积过大导致softmax进入梯度极小区域。
self-attention过程图如下:

具体流程:
- Query q 对 Key k 做attention:

- Softmax归一化:

- 权重乘Value v 输出转化值:

- 合并上述操作:


2.2 多头注意力(Multi-Head Attention)
Transformer使用多个并行的注意力头(Multi-Head),每个头学习不同的表示子空间,然后将结果拼接起来。这样模型可以从不同角度关注信息。
Transformer在三处采用了多头注意力机制:
- 编码器-解码器注意力层:Q来自解码器,K和V来自编码器输出,使解码器关注输入序列。
- 编码器自注意力层:Q、K、V均来自编码器上一层输出,捕捉输入序列内部关系。
- 解码器自注意力层:Q、K、V来自解码器,且通过掩码防止看到未来位置。
2.3 位置编码(Positional Encoding)
由于Transformer没有循环或卷积,无法感知序列顺序,因此需要注入位置编码。它使用不同频率的正弦和余弦函数:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
这种设计让模型容易学习到相对位置关系。位置编码与输入嵌入具有相同维度,直接相加后送入模型。
常见问题: 为什么Transformer需要位置编码?
答: 因为Transformer没有递归或卷积结构,如果没有任何位置信息,模型会将输入当作无序的集合(bag of words)。位置编码为每个位置赋予唯一的向量,使模型能够区分“我打你”和“你打我”这样的顺序差异。
三、Transformer的架构
Transformer采用编码器-解码器结构,如下图所示:

3.1 编码器(Encoder)
编码器由6个相同的块堆叠而成(N=6)。每个块包含两个子层:
- 多头自注意力机制:捕捉输入序列内部关系。
- 前馈全连接网络(Feed-Forward):对每个位置独立进行非线性变换。
每个子层后都使用Add & Norm(残差连接 + 层归一化),输出为LayerNorm(x + Sublayer(x))。所有子层输出维度为512。
前馈网络公式:
FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
内部维度2048,外部维度512。

3.2 解码器(Decoder)
解码器也由6个块堆叠而成,每个块包含三个子层:
- 掩码多头自注意力:防止看到未来位置。
- 编码器-解码器注意力:Q来自解码器,K和V来自编码器输出。
- 前馈全连接网络:同编码器。
同样每个子层后都有Add & Norm。
3.3 嵌入层与Softmax
与常见序列模型类似,输入和输出标记通过词嵌入转换为向量。解码器输出经线性变换和Softmax得到下一个标记的概率。两个嵌入层和Softmax之间共享权重矩阵。
小提示: 理解Transformer架构时,记住“编码器负责理解输入,解码器负责生成输出”。多头注意力是两者的核心“沟通桥梁”。
四、Transformer的应用方向
Transformer最初用于机器翻译,随后迅速扩展到NLP和计算机视觉等领域。
4.1 自然语言处理(NLP)经典模型
著名的Transformer模型包括:
- BERT(Bidirectional Encoder Representations from Transformers):语言模型,在许多NLP任务中取得最先进性能。
- GPT(Generative Pre-training Transformer):自然语言生成模型,能生成新闻、小说、代码等。
- Transformer-XL:扩展模型,能处理更长的序列。

参数规模示例:
- BERT-BASE: L=12, H=768, A=12, 参数=110M
- BERT-LARGE: L=24, H=1024, A=16, 参数=340M
4.2 计算机视觉(CV)中的演进
Transformer也被用于视觉任务,从最初的尝试到如今的主流方法:
- IGPT:借鉴BERT思想,对测试数据随机mask 5个token,ImageNet结果提升(红色)。但马赛克操作过于严重,降低了模型拟合能力。
- VIT (Vision Transformer):将图像划分为patch,直接应用Transformer。尝试三种预训练方法:预测mean color、预测马赛克版patch、用L2损失预测所有pixel。第三种接近但未深入。
- DEIT:预训练时最多mask 40%的patch,尝试过复原pixel但效果下降1.8%(因为太关注局部细节)。
- MAE (Masked Autoencoder):轻量级架构,encoder只输入未mask的patch,decoder负责还原。mask比例高达75%时效果依然很好,加速预训练。细节:输入侧直接丢掉mask token(效果+0.7,效率×3.3),预测normalized pixel(效果+0.5),数据增强策略(效果+0.2)。













4.3 视觉与语言Masked Autoencoder的差异思考
导致视觉和语言masked autoencoder不一样的三大原因:
- 结构:CNN天然适用于图像,Transformer不自然。ViT解决了此问题,IGPT的马赛克、dVAE的离散化让patch形态信息损失最少且高效。
- 信息密度:语言含义多,一个单词可能有多种解释;图片直观易表示。预测图片patch比预测单词更容易,可以大胆mask。
- 需要一个Decoder:图片信息密度有限,复原pixel需要细粒度。MAE加decoder分工明确:encoder负责高维表示,decoder负责细粒度还原。
规模大的简单算法是深度学习的核心。在NLP中,简单的自我监督学习方法能从模型规模中获益。在计算机视觉中,自我监督学习(如MAE)提供了可扩展的好处。图像和语言是不同性质的信号:图像是光记录,没有语义分解;MAE重建像素,却能推断出复杂的整体重建,说明它学会了视觉概念。
常见问题: 为什么MAE要加入一个解码器?
答: 因为图像信息密度有限,如果让编码器直接负责像素级别复原,会损失高维抽象能力。加入解码器后,编码器专注于提取语义特征,解码器负责细粒度还原,两者分工明确,效果更好。
五、Transformer的训练
5.1 训练数据与批次
以WMT2014英德翻译为例:约450万句子对,使用字节对编码(BPE),共享37000 token。每个训练批包含约25000个源标记和25000个目标标记。
5.2 硬件配置
使用8块NVIDIA P100 GPU。基础模型每步0.4秒,训练10万步(12小时)。大模型每步1.0秒,训练30万步(3.5天)。
5.3 优化器
采用Adam优化器,β₁=0.9, β₂=0.98。学习率调整公式:
lrate = d_model⁻⁰·⁵ · min(step_num⁻⁰·⁵, step_num · warmup_steps⁻¹·⁵)
其中warmup_steps=4000。前4000步线性上升,之后按平方根倒数下降。
5.4 正则化
使用残差Dropout:在子层输出后、Add & Norm前应用Dropout(dropout_rate=0.1)。同时在嵌入和位置编码后也加Dropout。
5.5 训练结果
在WMT2014英德翻译中,Transformer(big) BLEU=28.4,比之前最佳模型高2.0+。在英法翻译中BLEU=41.0,训练成本降低1/4。在英语选区解析任务中,4层Transformer也取得了不错结果。


小提示: 训练Transformer时,学习率的warmup至关重要。直接使用高学习率会导致训练不稳定,先线性增加到峰值再缓慢下降是标准做法。
六、Transformer的局限性
尽管Transformer非常强大,但它并非万能。以下为主要局限性:
- 输入长度依赖:注意力机制的计算复杂度为O(n²),处理超长序列时内存和计算开销巨大。尽管有Transformer-XL等变体,问题依然存在。
- 时间依赖性不友好:没有循环结构,无法天然保留序列中的时间顺序信息(依赖位置编码间接提供)。在处理语音信号等强时间依赖任务时可能不准确。
- 计算成本高:预训练需要大量计算资源(如GPT-3训练成本数百万美元),对高分辨率图像等尤其突出。
未来的模型可能是Transformer与卷积等混合架构,而不是完全抛弃CNN。例如,一些最新的视觉模型同时使用两者。
常见问题: Transformer能完全取代CNN吗?
答: 目前看不太可能完全取代。在计算机视觉任务中,ViT等纯Transformer模型已经表现优异,但许多新模型仍包含卷积模块(如ConvNeXt)。混合架构可能在未来一段时间内占主导。Transformer的优势在于全局感知,CNN的优势在于局部特征提取和计算效率。
七、未来展望
Transformer正在向更多领域扩展:
- 多模态处理:结合图像、文本、语音等多种数据。
- 生成模型:如TransGAN用两个Transformer生成逼真的人脸图像。
- 蛋白质折叠:AlphaFold使用Transformer组件解决了蛋白质结构预测难题。
- 强化学习与机器人:教机器人识别人体运动、检测心电图压力等。
当前,Transformer已被证明在语言任务、视觉任务以及其他AI子领域中具有巨大潜力。正如研究人员所说:“Transformer不是唯一的答案,但它正在成为许多问题的最强工具之一。”
作者简介: 陈之炎,北京交通大学通信与控制工程专业毕业,工学硕士,历任长城计算机软件与系统公司工程师、大唐微电子公司工程师,目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和NLP方面有一定经验。
编辑: 黄飞
