大语言模型基石:Transformer
一、引言
如今火爆的 GPT、LLaMA、通义千问、ChatGLM 等大语言模型,背后都离不开一个核心架构——Transformer。
2017 年,Google 在论文《Attention Is All You Need》中首次提出 Transformer 模型,彻底改变了自然语言处理的发展方向。它摒弃了传统的循环结构(RNN/LSTM),完全依赖注意力机制实现高效、并行化的序列建模。
二、模型总览:Encoder-Decoder 框架
论文提出的 Transformer 是一个典型的 Encoder-Decoder 结构,整体架构如下图所示:
📌 图1:Transformer 整体架构(源自论文 Fig.1)
🔹 Encoder:负责将输入序列编码为富含语义的表示。
🔹 Decoder:基于编码结果,自回归地生成输出序列。
两者均由 6 层相同结构的模块堆叠而成,每一层都包含多头注意力和前馈网络。
三、模型架构详解(Model Architecture)
3.1 编码器(Encoder)
每个编码器层由两个子层组成:
- 多头自注意力机制(Multi-Head Self-Attention)
- 位置前馈网络(Position-wise Feed-Forward Network, FFN)
-
每个子层后都有 残差连接(Residual Connection) 和 层归一化(LayerNorm):
由Transformer 结构组成的网络结构通常都非常庞大。编码器和解码器均由很多层基本的Transformer块组成,每一层中都包含复杂的非线性映射,这就导致模型的训练比较困难。因此,研究人员在Transformer 块中进一步引入了残差连接与层归一化技术,以进一步提升训练的稳定性。具体来说,残差连接主要是指使用一条直连通道直接将对应子层的输入连接到输出,避免在优化过程中因网络过深而产生潜在的梯度消失问题。 -
所有层输入输出维度均为
d_model = 512
✅ 这种设计有助于梯度传播,支持深层网络训练。
3.2 解码器(Decoder)
解码器结构更复杂一些,每层包含 三个子层:
- 掩码多头自注意力(Masked Multi-Head Self-Attention)
- 编码器-解码器注意力(Encoder-Decoder Attention)
- 位置前馈网络(FFN)
流程如下:
🔹 为什么需要“掩码”?
为了防止解码时“偷看未来”。例如生成句子时:
“我 爱 吃 __”
模型在预测“吃”后面的词时,不能看到后面的词。因此使用 因果掩码(Causal Mask),只允许关注当前位置及之前的位置。
掩码矩阵示意(下三角):
[1, 0, 0, 0]
[1, 1, 0, 0]
[1, 1, 1, 0]
[1, 1, 1, 1]
3.3 注意力机制(Attention)
这是论文最核心的部分。标准注意力定义为:
Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
其中:
- QQQ:Query,表示“我在找什么”
- KKK:Key,表示“我能被找到吗”
- VVV:Value,表示“我提供什么信息”
通过 QKTQK^TQKT 计算相似度,softmax 归一化后加权求和 VVV,得到输出。
多头注意力(Multi-Head Attention)
单次注意力可能只捕捉一种关系,因此论文提出“多头”机制:
MultiHead(Q,K,V)=Concat(head1,...,headh)WO\text{MultiHead}(Q,K,V) = \text{Concat}(head_1, ..., head_h)W^O MultiHead(Q,K,V)=Concat(head1,...,headh)WO
其中每个 head 独立计算:
headi=Attention(QWiQ,KWiK,VWiV)head_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)
参数矩阵 WiQ,WiK,WiVW_i^Q, W_i^K, W_i^VWiQ,WiK,WiV 不同,使每个 head 关注不同子空间的信息。
✅ 类比:多个专家从不同角度分析同一个问题,最后汇总决策。
✅自注意力机制使模型能够识别不同输入部分的重要性,而不受距离的影响,从而
能够捕捉输入句子中的长距离依赖关系和复杂关系。
3.4 位置前馈网络(Position-wise FFN)
前馈层接收自注意力子层的输出作为输入。
每个位置独立通过一个两层全连接网络:
FFN(x)=max(0,xW1+b1)W2+b2\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2
通常设置为:d_model=512
, d_ff=2048
虽然简单,但它增强了模型的非线性表达能力。
四、词嵌入与位置编码(Embeddings & Positional Encoding)
4.1 词嵌入(Token Embeddings)
输入的每个词先映射为 d_model
维的向量(如 512 维),与其他模型类似。
4.2 位置编码(Positional Encoding)
由于 Transformer 没有循环或卷积结构,无法感知词序,因此必须显式加入位置信息。具体来说,序列中每一个单词所在的位置都对应一个向量。这一向量会与单词表示对应相加并送入后续模块中做进一步处理
论文使用正弦和余弦函数生成位置编码:
PE(pos,2i)=sin(pos100002i/dmodel)PE(pos,2i+1)=cos(pos100002i/dmodel)PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \\ PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i)=sin(100002i/dmodelpos)PE(pos,2i+1)=cos(100002i/dmodelpos)
这些编码与词嵌入相加,作为最终输入:
Input=Word Embedding+Positional Encoding\text{Input} = \text{Word Embedding} + \text{Positional Encoding} Input=Word Embedding+Positional Encoding
✅ 优点:能表示相对位置,且可扩展到更长序列。
五、为什么 Transformer 能支撑大语言模型?
虽然原始 Transformer 是为机器翻译设计的,但它的设计理念完美契合了大语言模型的需求:
特性 | 对大模型的意义 |
---|---|
并行计算 | 可高效训练千亿参数模型 |
长距离依赖建模 | 能理解上下文数百词外的信息 |
可堆叠性 | 层数越多,表达能力越强 |
注意力可视化 | 易于分析模型决策过程 |
现代大语言模型大多基于 Transformer 的变体:
模型类型 | 结构来源 | 典型代表 |
---|---|---|
Decoder-only | 仅保留解码器 | GPT 系列、LLaMA、通义千问 |
Encoder-only | 仅保留编码器 | BERT、RoBERTa |
Encoder-Decoder | 完整结构 | T5、BART |
🔹 GPT 就是典型的 Decoder-only 模型:去掉编码器,仅用掩码注意力进行自回归生成。
六、总结:Transformer 的革命性意义
维度 | RNN/LSTM | CNN | Transformer |
---|---|---|---|
并行性 | 差 | 中 | ✅ 极强 |
长程依赖 | 弱 | 一般 | ✅ 强 |
可解释性 | 低 | 中 | ✅ 注意力可可视化 |
扩展性 | 有限 | 一般 | ✅ 支持超大规模 |
Transformer 的成功在于:
- 用注意力替代循环,实现高效并行
- 多头机制 提升语义表达多样性
- 位置编码 解决顺序感知问题
- 模块化设计 易于扩展和改进
它不仅是 NLP 的里程碑,更是通向通用人工智能的重要一步。