机器学习与模式识别 第十六章 Transformers 考点压缩
第十六章:Transformers — 知识点笔记
综合来源:Lecture 16 PDF(68页)、课堂笔记(CSDN)
占位图
16.1 从MLP到CNN到Attention
MLP的局限
- 每像素独立参数→P2P^2P2参数量→参数爆炸
- 固定输入大小→稍大图像需全新模型
CNN的贡献与局限
| 优势 | 局限 |
|---|---|
| 权重共享→参数高效 | 局部感受野→高层才有全局上下文 |
| 平移不变性归纳偏置 | 卷积核感受野逐层增长→需很深 |
| 支持可变输入尺寸 |
核心需求
需要一种能高效建模所有token之间关系的架构 →Attention机制
16.2 Attention机制 ⭐⭐⭐
从平均池化到加权平均
平均池化:Yn=Xn+1N∑iVi\mathbf{Y}_n = \mathbf{X}_n + \frac{1}{N}\sum_i \mathbf{V}_iYn=Xn+N1∑iVi
- 问题:所有上下文同等重要→不相关token也是等权重
Attention(加权平均):
Yn=Xn+∑iαniVi,∑iαni=1,αni≥0\mathbf{Y}_n = \mathbf{X}_n + \sum_i \alpha_{ni} \mathbf{V}_i, \quad \sum_i \alpha_{ni}=1, \alpha_{ni}\geq 0Yn=Xn+i∑αniVi,i∑αni=1,αni≥0
- αni\alpha_{ni}αni:token i对token n的注意力权重
16.3 QKV与自注意力 ⭐⭐⭐
三个投影矩阵
| 矩阵 | 公式 | 含义 |
|---|---|---|
| V(Value) | V=XW(V)\mathbf{V} = \mathbf{X}W^{(V)}V=XW(V) | 提取的"内容/上下文" |
| K(Key) | K=XW(K)\mathbf{K} = \mathbf{X}W^{(K)}K=XW(K) | "被查询"的键 |
| Q(Query) | Q=XW(Q)\mathbf{Q} = \mathbf{X}W^{(Q)}Q=XW(Q) | "发起查询"的查询 |
为什么分开K和Q?
- 相关性关系不对称:bank关注river,但river不一定关注bank
- 分离KQ允许非对称查询
Scaled Dot-Product Attention ⭐
Z=QKT(内积矩阵,N×N)\mathbf{Z} = \mathbf{Q}\mathbf{K}^T \quad \text{(内积矩阵,$N\times N$)}Z=QKT(内积矩阵,N×N)
α=SoftMax(ZDk)\boldsymbol{\alpha} = \text{SoftMax}\left(\frac{\mathbf{Z}}{\sqrt{D_k}}\right)α=SoftMax(DkZ)
Attention(K,Q,V)=αV\text{Attention}(\mathbf{K},\mathbf{Q},\mathbf{V}) = \boldsymbol{\alpha}\mathbf{V}Attention(K,Q,V)=αV
Scaling因子Dk\sqrt{D_k}Dk:防止内积方差过大→Softmax梯度消失
自注意力特性
- Attention层无参数(仅依赖K,Q,V)
- 等变性:置换输入token→输出同样置换
- O(N2)O(N^2)O(N2)复杂度(NNN=token数)
16.4 多头注意力 ⭐⭐
Multi-Head Attention(MHA)
Hh=Attention(Kh,Qh,Vh),A=Concat[H1,…,HH]W(O)H_h = \text{Attention}(\mathbf{K}_h, \mathbf{Q}_h, \mathbf{V}_h), \quad \mathbf{A} = \text{Concat}[H_1,\ldots,H_H]W^{(O)}Hh=Attention(Kh,Qh,Vh),A=Concat[H1,…,HH]W(O)
- HHH个并行"注意力头"→不同头捕捉不同关系
- 每头通常用更小的Dv=D/HD_v = D/HDv=D/H
变体
| 类型 | K,V | Q | 效率 |
|---|---|---|---|
| MHA | 每头独立 | 每头独立 | 最低 |
| GQA(分组查询) | 每头组共享 | 每头独立 | 中等 |
| MQA(多查询) | 全部共享 | 每头独立 | 最高 |
大多数现代模型使用GQA(效率与表达力的折中)
16.5 Transformer层 ⭐
X → [Multi-Head Self-Attention → +Residual → LayerNorm → MLP(2层) → +Residual → LayerNorm] → Output为什么需要MLP?
- Attention输出=αV\boldsymbol{\alpha}\mathbf{V}αV(输入的线性组合)
- MLP引入非线性激活→增强表达能力
- 每个token独立通过MLP→token级前馈
关键设计
- 残差连接:+++→梯度直通
- Layer Norm:每token独立归一化→支持并行
- 参数共享:同层token间共享,跨层不共享
- 支持可变token数(attention无固定尺寸要求)
16.6 位置编码 ⭐⭐
为什么需要?
- Self-Attention是置换等变的→不感知token顺序
- 文本/图像中位置信息至关重要
两种方法
| 方法 | 原理 | 优/缺点 |
|---|---|---|
| Learned | 每个位置学一个ri\mathbf{r}_iri(GPT-1) | 表达力强;需预设最大N;相对距离难表达 |
| Sinusoidal | sin/cos\sin/\cossin/cos波组合编码 | 任意长度;可查询相对位置(旋转矩阵特性) |
Sinusoidal编码
rn,i={sin(n/Li/D)i evencos(n/L(i−1)/D)i oddr_{n,i} = \begin{cases} \sin(n/L^{i/D}) & i\text{ even} \\ \cos(n/L^{(i-1)/D}) & i\text{ odd} \end{cases}rn,i={sin(n/Li/D)cos(n/L(i−1)/D)ieveniodd
- 类似位置的连续二进制编码
- 存在旋转矩阵RΔ\mathbf{R}_\DeltaRΔ:rn−Δ=RΔrn\mathbf{r}_{n-\Delta} = \mathbf{R}_\Delta \mathbf{r}_nrn−Δ=RΔrn
- 内积随距离衰减→天然的相对位置感知
位置编码的使用
x~n=xn+rn(加法,非拼接)\tilde{\mathbf{x}}_n = \mathbf{x}_n + \mathbf{r}_n \quad \text{(加法,非拼接)}x~n=xn+rn(加法,非拼接)
- 高维空间中xn\mathbf{x}_nxn和rn\mathbf{r}_nrn近似正交→不破坏原始语义
16.7 Encoder Transformer
架构(标准视觉/语言嵌入任务)
- 输入→Token Embeddings + Positional Encoding
- 重复LLL层Transformer Block
- 输出→Pooling/特殊[CLS]token→下游任务
特殊Token技巧
- 添加可学习的[CLS] token→经过所有层后→其输出=整句/图的语义表示
笔记中的图片索引
| 序号 | 图片内容描述 | 来源位置 |
|---|---|---|
| 图1 | MLP vs CNN vs Transformer对比 | Lecture 16 第7-24页 |
| 图2 | QKV计算示意图 | Lecture 16 第39-40页 |
| 图3 | 内积矩阵Z和注意力权重α | Lecture 16 第43-45页 |
| 图4 | MHA/MQA/GQA对比 | Lecture 16 第50页 |
| 图5 | Transformer层结构 | Lecture 16 第51页 |
| 图6 | Sinusoidal位置编码热力图 | Lecture 16 第64页 |
笔记整理时间:2026年6月30日