Transformer架构详解:从Attention到GPT的演进之路

1. 引言

Transformer 是近年来自然语言处理(NLP)领域最具革命性的架构之一。自 2017 年 Google 在论文《Attention Is All You Need》中提出以来,它彻底改变了序列建模的范式,取代了传统的循环神经网络(RNN)和卷积神经网络(CNN),成为大语言模型(如 GPT、BERT、T5 等)的核心基础。

本文将深入解析 Transformer 的核心原理、关键组件,并探讨其如何演进为当今主导 AI 发展的基石模型。

2. Transformer 的核心思想

Transformer 的核心创新在于完全基于注意力机制(Attention Mechanism) 来建模序列中任意两个位置之间的依赖关系,摒弃了 RNN 的序列递归计算。这带来了两大优势:

  1. 并行化能力:由于不依赖前一时刻的隐藏状态,序列中所有位置的表示可以同时计算,极大提升了训练效率。
  2. 长距离依赖建模:自注意力机制允许模型直接关注序列中任何位置的 token,无论距离多远,有效缓解了 RNN 中的梯度消失问题。

3. 架构总览

标准的 Transformer 模型采用编码器-解码器(Encoder-Decoder)结构,但后续很多模型(如 BERT、GPT)只使用了其中一部分。
渲染错误: Mermaid 渲染失败: Parse error on line 2: ...ubgraph Encoder编码器 (N×) E1[多头自 -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'

编码器 :由 N 个相同的层堆叠而成。每层包含一个多头自注意力(Multi-Head Self-Attention) 子层和一个前馈网络(Feed-Forward Network) 子层,每个子层外围都有残差连接(Add)和层归一化(Norm)。

解码器:同样由 N 个相同的层堆叠。每层包含三个子层:

  1. 掩码多头自注意力层:确保在预测当前位置时,只能看到之前的位置(防止信息泄露)。
  2. 多头交叉注意力层:让解码器关注编码器的输出。
  3. 前馈网络层

4. 关键组件详解

4.1 注意力机制(Attention)

注意力函数可以描述为将一个查询(Query)和一组键值对(Key-Value)映射到输出的过程。输出是值的加权和,权重由查询与对应键的兼容性函数计算得出。

缩放点积注意力(Scaled Dot-Product Attention) 是 Transformer 使用的形式:

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(dk QKT)V

其中 dkd_kdk 是键向量的维度,缩放因子 dk\sqrt{d_k}dk 用于防止点积结果过大导致 softmax 梯度消失。

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

与其使用单一的注意力函数,模型将查询、键、值投影到不同的、维度更低的子空间(头)上,并行执行注意力函数,最后将结果拼接并再次投影。

MultiHead(Q,K,V)=Concat(head1,...,headh)WO \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1,...,headh)WO

where headi=Attention(QWiQ,KWiK,VWiV) \text{where head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) where headi=Attention(QWiQ,KWiK,VWiV)

这允许模型共同关注来自不同表示子空间的信息。

4.3 位置编码(Positional Encoding)

由于自注意力本身不具备序列顺序信息,需要显式地注入位置信息。Transformer 使用正弦和余弦函数来生成位置编码:

PE(pos,2i)=sin⁡(pos/100002i/dmodel) PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel)

PE(pos,2i+1)=cos⁡(pos/100002i/dmodel) PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}}) PE(pos,2i+1)=cos(pos/100002i/dmodel)

其中 pospospos 是位置,iii 是维度。这种编码方式使得模型能够轻松学习到相对位置关系。

4.4 前馈网络(Feed-Forward Network)

每个注意力子层后面跟着一个全连接的前馈网络,它对每个位置独立且相同地应用两次线性变换,中间有一个 ReLU 激活函数:

FFN(x)=max⁡(0,xW1+b1)W2+b2 FFN(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2

5. Transformer 的演进与变体

5.1 仅编码器模型(Encoder-Only)

  • 代表:BERT、RoBERTa、ALBERT
  • 特点:专注于理解输入文本的上下文表示,适用于分类、问答、命名实体识别等任务。通过掩码语言模型(MLM)进行预训练。

5.2 仅解码器模型(Decoder-Only)

  • 代表:GPT 系列、LLaMA、PaLM
  • 特点:专注于自回归文本生成。模型在训练时使用因果注意力掩码(Causal Attention Mask),确保每个 token 只能关注自身及之前的 token。这是当前大语言模型(LLM)的主流架构。

5.3 编码器-解码器模型(Encoder-Decoder)

  • 代表:原始 Transformer、T5、BART
  • 特点:适用于序列到序列(Seq2Seq)任务,如翻译、摘要、对话生成。

6. 代码示例:实现一个简化的自注意力层

以下是一个使用 PyTorch 实现的简化版缩放点积注意力层:

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

class ScaledDotProductAttention(nn.Module):
    def __init__(self, d_k, dropout=0.1):
        super().__init__()
        self.d_k = d_k
        self.dropout = nn.Dropout(dropout)

    def forward(self, q, k, v, mask=None):
        # q, k, v: [batch_size, seq_len, d_k]
        attn_scores = torch.matmul(q, k.transpose(-2, -1)) / (self.d_k ** 0.5) # [batch_size, seq_len, seq_len]

        if mask is not None:
            attn_scores = attn_scores.masked_fill(mask == 0, -1e9)

        attn_weights = F.softmax(attn_scores, dim=-1)
        attn_weights = self.dropout(attn_weights)

        output = torch.matmul(attn_weights, v) # [batch_size, seq_len, d_k]
        return output, attn_weights

# 使用示例
batch_size = 2
seq_len = 10
d_k = 64
attention = ScaledDotProductAttention(d_k=d_k)

q = torch.randn(batch_size, seq_len, d_k)
k = torch.randn(batch_size, seq_len, d_k)
v = torch.randn(batch_size, seq_len, d_k)

output, weights = attention(q, k, v)
print(f"Output shape: {output.shape}") # [2, 10, 64]
print(f"Attention weights shape: {weights.shape}") # [2, 10, 10]

7. 总结与展望

Transformer 架构以其强大的并行能力和卓越的建模性能,已成为现代 AI 的基石。从最初的机器翻译模型,到如今千亿参数的大语言模型,其核心的注意力机制展现了惊人的可扩展性和通用性。

未来的发展方向可能包括:

  • 效率优化:如稀疏注意力、线性注意力,以降低计算和内存开销。
  • 架构创新:探索超越标准 Transformer 的下一代骨干网络。
  • 多模态融合:将 Transformer 更有效地应用于图像、音频、视频等多模态数据。

理解 Transformer 不仅是掌握当前 AI 技术的关键,也是探索未来智能模型发展的起点。

相关推荐
是上好佳佳佳呀1 小时前
【深度学习|DAY05】卷积神经网络深度学习笔记
笔记·深度学习·cnn
盼小辉丶2 小时前
PyTorch强化学习实战——用预训练语言模型和ChatGPT玩转文本游戏
pytorch·深度学习·语言模型·chatgpt·强化学习
JavaPub-rodert2 小时前
Codex 从 0 开始:安装 ChatGPT,并接入 DeepSeek
人工智能·gpt·chatgpt
阿祖zu14 小时前
开源项目-让本地 Codex 临时接管远程 Linux 服务,实现快速运维
linux·gpt·agent
ASKED_201916 小时前
从 ASR+LLM+TTS 到 GPT‑Live:解读语音智能新范式
人工智能·gpt·语音识别
菜冻鱼16 小时前
Python-pytorch-高级技巧
开发语言·人工智能·pytorch·python·深度学习·神经网络·聚类
菜冻鱼17 小时前
Python-pytorch-模型保存与加载
开发语言·人工智能·pytorch·python·深度学习·机器学习
root_123456_17 小时前
注意力机制的诞生:从 Seq2Seq Attention 到注意力的本质
rnn·lstm·transformer·自学ai
LaughingZhu17 小时前
Product Hunt 每日热榜 | 2026-08-19
经验分享·深度学习·神经网络·百度·产品运营