DL ML Learning Lab
07 / 10
第 7 步 · 现代深度学习的引擎

Transformer 架构Transformer Architecture

堆叠自注意力与逐位置前馈,丢掉循环,用并行与位置编码重塑序列建模。

14 分钟
阅读 + 实操
1 个
交互演示
高级
难度

Transformer 架构 · 交互演示

编码器层6
头数8
参数量65M
① 位置编码 — sin/cos 给每个位置打上"位置标签"(行=位置 0-7,列=维度 0-15)
② 多头注意力 — 输入句子,看各头关注了哪些词
点击上方词标签选择当前 Query,查看它"关注"各词的程度
③ 编码器架构总览(简化版:d_model=8, heads=2, d_ff=16)
输入嵌入+ 位置编码多头注意力残差 & 归一化前馈网络残差 & 归一化输出
示例句子
当前 Query 词 The

为什么学这步?

Transformer 催生了 BERT、GPT 等大模型,几乎统辖了序列任务。理解它,就握住了当代 AI 的钥匙。

📌 发生了什么

  • 自注意力 + 前馈 + 残差 / 归一
  • 解码器带因果掩码
  • 位置编码补顺序信息

⚠️ 常见陷阱

  • 数据量小易过拟合
  • 计算随长度平方增长
  • 位置编码方式影响外推

本章小结

  • Transformer 用注意力替代循环
  • 并行高效、长程友好
  • 是大模型统一架构

📐 多头注意力与位置编码

Transformer 完全基于注意力、没有循环;多头注意力让模型并行关注多个子空间,位置编码注入顺序信息。

多头注意力将 Q/K/V 拆成 h 个头并行做缩放点积注意力,再拼接后用 W_O 投影回原维度。

由于没有循环结构,需用位置编码注入顺序信息;正弦/余弦编码让模型能泛化到更长序列。

每个 Transformer block = 多头注意力 + 前馈网络(FFN),各带残差连接与 LayerNorm,堆叠 N 层构成编码器。

🎛 编码器层数对比

层数决定模型深度,太浅表达力不足,太深易过拟合且训练更难。

层数 表现 结果
2 表达力有限 浅任务可用
6 经典设定(base) 推荐
12 表达力强 大模型 / 大数据

💡 原始 Transformer base=6 层、big=12 层;层数翻倍参数近似翻倍,需配更多数据与正则。

💻 Transformer Block

一个编码器层的 Python 实现(注意力 + FFN + 残差 + LayerNorm):

# 单个 Transformer 编码器层
def transformer_block(x, params):
    # 1. 多头自注意力 + 残差 + LayerNorm
    attn = multi_head_attention(x, x, x, params)  # Q=K=V=x
    x1 = layer_norm(x + attn)                     # 残差 + 归一化
    # 2. 前馈网络(两层线性 + ReLU)+ 残差 + LayerNorm
    ffn = relu(x1 @ params['W1'] + params['b1'])
    out = ffn @ params['W2'] + params['b2']
    return layer_norm(x1 + out)                   # 残差 + 归一化

📚 参考文献与延伸阅读

  • Vaswani et al. (2017), Attention Is All You Need, NeurIPS — Transformer 原始论文
  • Devlin et al. (2018), BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, NAACL — 预训练 Transformer
  • Goodfellow, Bengio & Courville, Deep Learning (2016), §6.3 Universal Approximation + 注意力相关章节
  • The Annotated Transformer — Harvard NLP 的逐行注解版
  • 下一步 → 第 10 步 · 视觉 Transformer ViT:同一个编码器搬去看图,图像切 patch 当单词

📝 课后练习

检验你的理解——答对为止