AI师辅
研究生 · 信息技术 · 深度学习

Transformer
注意力机制全景

自注意力 · 位置编码 · 多头注意力 · 编码器架构
一个问题贯穿全课:注意力,凭什么能取代循环?

看懂计算理解 Q/K/V 自注意力的逐步运算
理解位置掌握位置编码的必要性与设计
把握并行阐明多头注意力的多视角学习
组装架构描述编码器层的堆叠与残差结构
SECTION 01 · 背景导入

背景导入:序列建模与注意力机制的兴起

传统 RNN / LSTM 逐步递归处理文本,无法并行、长程依赖薄弱。2017 年 Vaswani 等人提出 《Attention is All You Need》,彻底摒弃循环结构。

Transformer 让每个 token 直接与序列中所有 token 交互,一步捕捉全局依赖,训练可大规模并行 —— 这正是打破顺序瓶颈的关键。

认知反转:以前我们认为"理解一句话必须从左读到右"。自注意力告诉我们 —— 整句可以同时被看见。
演进路线
RNN/LSTM
逐步递归
Seq2Seq
编码-解码
+ Attention
软对齐
Transformer
纯注意力

从依赖隐状态串行传递,到全局并行的注意力加权 —— 序列建模范式被改写。

SECTION 02 · 核心机制一

核心机制一:自注意力的计算原理

Attention(Q,K,V) = Softmax( QKT / √dk ) V
1

线性变换

输入嵌入分别乘 WQ、WK、WV,得到 Q、K、V 三组向量。

2

打分

Q 与 K 点积得相似度分数,除以 √dk 进行缩放,稳定梯度。

3

归一化

对分数做 Softmax,转为权重分布,越相关权重越大。

4

加权求和

用权重对 V 加权汇聚,得到该位置的上下文表示。

例句 "The animal didn't cross the street because it was too tired":自注意力让 "it" 把更高权重分配给 "animal",自动解析指代关系。
课堂动手: 给定一个 2×2 的 Q、K,自己算一遍 Softmax 权重。
SECTION 03 · 核心机制二

核心机制二:位置编码的必要性与设计

位置编码波形示意
不同维度的正弦/余弦波形构成位置编码,与词嵌入直接相加

自注意力对位置不敏感:交换 token 顺序,交互结果不变。所以必须主动注入位置信息

PE(pos,2i)=sin(pos/100002i/d)
PE(pos,2i+1)=cos(pos/100002i/d)

正弦编码使相对位置可由线性关系表达,便于外推到训练时未见的更长序列。

正弦编码

  • 无需训练,零参数
  • 可外推长序列
  • 相对位置可推导
VS

可学习嵌入

  • 需训练,更灵活
  • 受最大长度限制
  • 外推能力弱
SECTION 04 · 核心机制三

核心机制三:多头注意力的并行化设计

单头注意力只能捕捉一种关联模式。多头注意力把 Q/K/V 投影到 h 个低维子空间,并行计算后拼接再投影。

常用 h=8,每头维度 dk=dv=dmodel/h。不同头学习不同视角 —— 句法、语义、指代各司其职。

多头注意力分布可视化
"The cat sat on the mat":不同头关注名动关系、介词短语等不同模式
8 个头 · 多视角并行
Head 1

主谓关系

Head 2

介词短语

Head 3

整体平滑

Head 4

指代消解

互动演示:若关闭某个头,模型在该关联类型上的判断会变差 —— 这正说明多头的互补性,而非冗余。
SECTION 05 · 结构组装

结构组装:编码器层的组成与堆叠

编码器由 N=6 个相同层堆叠。每层两个子层:多头自注意力 + 逐位置前馈网络(FFN),每个子层后紧跟残差连接 + 层归一化

+
残差连接

梯度直通,缓解深层网络梯度消失。

N
层归一化

稳定激活分布,加速收敛。

每层独立参数

各层不共享权重,逐层抽象更深特征。

对比实验:去掉残差连接后,深层 Transformer 的训练损失难以下降 —— 直观感受梯度消失。
单层数据流(× 6)
输入嵌入 + 位置编码
子层 1
多头自注意力
→ Add & LayerNorm
子层 2
前馈网络 FFN
→ Add & LayerNorm
上下文感知表示 → 输出

编码器角色:将输入序列编码为上下文感知的连续表示,供下游解码器或任务头使用。

课堂互动 · 检验理解

为什么缩放因子是 √dk

当 dk 增大时,QKT 点积的方差会随之增大,使 Softmax 进入饱和区,梯度极小。下列哪一项是正确解释?

选择一个答案试试看 ▸
SECTION 06 · 总结迁移

总结迁移:从理论到实践与前沿演进

自注意力

提供全局视野,token 间直接交互,捕捉长程依赖。

位置编码

注入顺序意识,弥补注意力的位置不敏感性。

多头机制

多个子空间并行,实现多视角表征学习。

编码器堆叠

残差 + LayerNorm 保证可大规模、可深层训练。

这些组件已被 BERT、ViT、GPT 等模型继承,成为现代深度学习的基石。

▸ 完全去除位置编码,模型在序列任务上会丢失什么?设计实验验证。
▸ 多头数量如何选择?自注意力是否总能优于卷积?
▸ 阅读 Vanilla Transformer 局限及变体(Longformer、BigBird)。
▸ 动手任务:用 PyTorch 实现一个单层编码器,验证 QKV 计算。