🎓 总站 🏠 本课目录 01 图像基础 02 空间滤波 03 频率滤波 04 彩色处理 05 神经网络 06 表征学习 07 Transformer 08 CNN
视觉计算 · 第7章

Transformer 网络

从 CNN 的局部性局限出发,理解注意力机制、词元(Token)、QKV 缩放点积注意力、自注意力与多头注意力,以及位置编码、Encoder-Decoder 架构和视觉 Transformer(ViT)。

📚 学习进度
0%

🎯学习目标

  • 理解 CNN 处理全局信息的局限,以及 Transformer 的引入动机;
  • 掌握注意力机制、词元(Token)化与词元序列;
  • 理解 Query-Key-Value 与缩放点积自注意力的计算;
  • 掌握多头自注意力、Transformer Block(FFN + LayerNorm + 残差);
  • 理解置换等变性与位置编码、因果(掩码)注意力;
  • 比较 CNN 与 Transformer,了解 ViT 与大语言模型。

1CNN 的局限

CNN 的核心是局部性思想:图像不同局部区域可被安全地独立处理。但其局限是不擅长处理全局信息

⚠️ 例子一个卷积核大小为 3 的 2 层 CNN,要比较 x₁ 和 x₇——它做不到,因为没有任何神经元同时连接到 x₁ 和 x₇(二者超出了感受野范围)。

CNN 处理全局信息的两种方式:

  • 方式1:增大卷积核尺寸;
  • 方式2:堆叠更多层,扩大深层神经元的感受野

2MLP / CNN / RNN 对比

架构优点缺点
全连接 MLP可全局信息传递参数量大;无法处理变长;无平移/旋转不变性
卷积 CNN参数少(权值共享);平移不变;可并行长程依赖建模弱(需堆叠层)
循环 RNN处理任意长度序列;有时序记忆并行化困难;长程依赖建模弱
💡 Transformer 的定位Transformer 推广扩展了 CNN 思想——把信号处理分解为"独立且相同处理"的块,同时增加可跨块混合信息的注意力层,从而建模块之间的依赖关系。

3注意力机制

注意力是一种高效处理全局信息的策略:只聚焦于信号中对当前任务最显著的部分,而不是一次性接收整个场景。

在神经网络中,第 l 层的一组神经元会关注第 l−1 层的一组神经元,以决定如何响应。例如若"要求"报告图中任意汽车的颜色,它们就应把注意力导向上一层中代表汽车颜色的神经元。

4词元(Token)与词元化

词元(Token)是神经元的另一种组合形式,可视为封装的信息组,用一个列向量 t∈ℝd×1 表示(也叫代码向量)。Transformer 运行在词元阵列之上(矩阵 X 是词元的一维阵列)。

数据词元化

  • 用一个 Token 代表图像中的每一个图像块(patch),整幅图对应一个词元阵列;
  • 直接向量化:不涉及学习,只是数据重排(如 16×16 像素 RGB 拉成 768 维向量 x);
  • 低维投影:引入可学习的嵌入矩阵 W,z = W·x
💡 万物皆可词元化通用策略:把输入切成块(chunks),把每个块投影成一个向量。文本、图像、音频都适用。

Transformer 对词元有两项核心操作:线性组合逐点非线性变换(主流用 MLP,含可学习参数)。

5Query-Key-Value 注意力 ⭐

注意力层是一种特殊的词元线性组合——它是一个权重由数据动态决定的全连接层(也叫"动态池化":加权平均,权重随输入动态确定)。

  • 权重矩阵 A 是输入数据的函数,告诉我们应关注(赋予较高权重)哪些词元;
  • A 通常仅含非负值;A 实际确定了词元的组合权重。

QKV 三角色(点击翻转)

Query

查询 Q=WqX
当前词元发出的"我想找什么"。与各 Key 做匹配算相似度
🔑

Key

键 K=WkX
每个词元的"我是什么"。Q·Kᵀ 决定注意力权重
📦

Value

值 V=WvX
每个词元实际携带的内容。按权重 A 加权求和得输出

QKV 与缩放点积注意力

三个可学习映射矩阵把词元投影为 Query(查询)、Key(键)、Value(值)。Q 与 K 的匹配相似度决定权重,再对 V 加权求和:

Q = W_q·X ,  K = W_k·X ,  V = W_v·X
注意力权重 A = softmax( Q·Kᵀ / √dₖ )     ← 缩放点积(除以 √dₖ)
输出 = A·V                               ← 对 Value 加权求和
⭐ 为什么要除以 √dₖ点积 Q·Kᵀ 的数值随维度 dₖ 增大而变大,会把 softmax 推向饱和区使梯度变小。除以 √dₖ 做缩放,让数值稳定、梯度良好。
X Q=WqX K=WkX V=WvX QKᵀ/√dₖ缩放点积 softmax → A A·V 输出
图1 · QKV 缩放点积注意力流程

6自注意力(Self-Attention)

自注意力:Q、K、V 都来自同一组输入词元,让每个词元根据其他词元的上下文来优化自身表示。

  • 词元 t₂ 关注代表"黑斑羚"其他部位的词元,借助上下文把 t₂ 优化为更抽象、捕捉"黑斑羚"标签的向量;
  • 减少被关注图像块之间不共享的噪声,放大它们的共性。
⭐ 动态感受野 & 打破空间限制动态性:Query 变了,生成的"感受野"(高亮区域)就完全变了——这在 CNN 中不可想象(CNN 卷积核感受野形状固定);② 打破空间限制:注意力完全无视空间距离,只要特征匹配就能赋高权重,"天涯若比邻"。

7多头自注意力(Multi-Head Self-Attention)

映射矩阵 W_q、W_k、W_v 定义了一种"相似度概念"。单个自注意力层只能用一种方式衡量相似度。Transformer 使用多头自注意力:并行运行 k 个注意力层(头),各自学习不同的相似度/关注模式,再拼接。

X 头1 Attn 头2 Attn 头k Attn 拼接 Concat 线性投影
图2 · 多头自注意力:k 个头并行 → 拼接 → 线性投影

8完整 Transformer 架构

一个 Transformer Block 由以下部分组成:

  • 注意力层:跨词元混合信息;
  • 前馈层(Feedforward / MLP):N 个逐位置网络,每个位置独立处理;同一层各位置权重相同,但不同层参数不同;
  • 层归一化(Layer Norm)残差连接

整体常用 Encoder-Decoder 结构:Encoder 编码输入序列,Decoder 结合 Encoder 输出与已生成内容产生输出。

Encoder 多头自注意力 Add & LayerNorm 前馈 FFN Decoder 掩码自注意力 交叉注意力 前馈 FFN 编码输出
图3 · Encoder-Decoder 结构(含残差与 LayerNorm)

9置换等变性与位置编码 / 掩码注意力

置换等变(Permutation Equivariance)

纯注意力对词元的顺序不敏感(置换输入则输出同样置换)——这意味着它本身丢失了空间/顺序信息

位置编码(Positional Encoding)

把一个表示位置的编码拼接到每个词元上,恢复位置信息。常用位置的周期性(正弦/余弦)表示:把坐标编码为一组不同频率正弦波在该位置的取值组成的向量。

sin(x)      → 波长极短、频率极高
sin(x/Bⁱ)   → 波长极长、频率很低
(多个频率组合可唯一表示每个位置)

因果(掩码)自注意力 Causal Self-Attention

用于语言模型/自回归生成:每个位置只能看到当前及之前的输入,不能看未来。

⭐ 掩盖未来QKᵀ 会给每个 query 对所有 key 打分(包括它后面的)。语言建模中"已知答案就太简单了",所以把矩阵上三角部分置为 −∞(softmax 后变 0),从而屏蔽未来词。每个位置的计算相互独立,前向推理与训练都易于并行。

10CNN 与 Transformer 对比 · ViT

相同点

  • 都做 Token 化(可写成卷积核大小与步长都等于 K 的卷积层);
  • 都有 QKV / 1×1 卷积式投影(矩阵相乘 AB 可理解为 B 作为 1×1 卷积核对 A 的卷积);
  • 都有逐 Token 的 MLP(线性层本质是 1×1 卷积 + 逐点非线性);
  • 都用归一化、残差连接。

不同点

对比CNNTransformer
核心算子K×K 滤波器(相邻区域一起处理)尺寸为 1 的卷积 + 位置编码 + 注意力
感受野固定形状、局部注意力做全局操作,无视空间距离
空间信息天然保留靠位置编码补充(大卷积核会破坏置换不变性)
💡 ViT(Vision Transformer)把图像切成 patch 词元,加位置编码后送入标准 Transformer Encoder 做视觉任务——这就是把 Transformer 用于视觉的 ViT。

Transformer 因上下文很长(1024 甚至 4096 词元),在条件生成、情感分类、问答、文本摘要等 NLP 任务上非常强大(许多任务可被建模为词预测,自监督并行训练)。

重点例题

例题1:写出缩放点积自注意力的计算步骤
① 由输入 X 投影得到  Q=WqX, K=WkX, V=WvX
② 计算相似度分数     S = Q·Kᵀ / √dₖ   (缩放)
③ 归一化为权重       A = softmax(S)    (每行和为1,非负)
④ 加权求和输出       Output = A·V
关键点:权重 A 由数据动态决定;除以 √dₖ 防止点积过大导致 softmax 饱和、梯度消失。
例题2:为什么需要位置编码? 纯注意力具有置换等变性——打乱词元顺序,输出只是相应打乱,模型本身分不清顺序/位置。位置编码(正弦/余弦周期表示)把位置信息拼接到每个词元上,恢复空间结构信息。
例题3:CNN 为何难处理全局依赖,注意力如何解决? CNN 卷积核感受野局部且固定,比较相距很远的 x₁ 与 x₇ 时没有神经元同时连接二者,需靠堆叠层数慢慢扩大感受野。注意力做全局操作,任意两个词元可直接交互,且感受野随 Query 动态变化,天然建模长程依赖。

🎯自测(点击展开)

CNN 在处理全局信息上的主要局限是什么?
卷积核感受野局部且固定,相距很远的元素之间没有神经元直接连接,长程依赖需靠堆叠层数缓慢实现。
注意力层和普通全连接层的关键区别?
注意力是权重由输入数据动态决定的"动态池化"加权平均,而普通 FC 层权重固定。
QKV 各自的作用是什么?
Query 查询、Key 键用于计算匹配相似度决定权重;Value 值是被加权求和的内容。
缩放点积为什么要除以 √dₖ?
防止点积随维度增大而过大,把 softmax 推入饱和区导致梯度消失。
多头注意力相比单头有什么好处?
单头只能用一种方式衡量相似度;多头并行学习多种相似度/关注模式,表达更丰富。
因果(掩码)注意力如何屏蔽未来?
把注意力分数矩阵的上三角部分置为 −∞,softmax 后变 0,使每个位置看不到其后的词。

📝强化题库

选择题点选即时判分;填空题输入后"检查"或"显示答案"。

已答 0/0答对 0正确率
已答 0/0答对 0