Files
2026-05-16 17:16:51 +08:00

12 KiB
Raw Permalink Blame History

title, draft, tags
title draft tags
1-架构讲解 false
Transformer
注意力机制
架构
深度学习

![[Pasted image 20260512212750.png] !Pasted image 20260512212917.png

1. 架构总览与图形化解构

【原理描述】输入流转与位置编码

在 Transformer 抛弃了 RNN/CNN 结构后,模型本身丧失了对序列顺序的感知能力。因此,输入张量在进入主体网络前,必须完成两步:Input Embedding(将离散 Token 映射为连续稠密向量)与 Positional Encoding(注入绝对与相对位置信息)。

【数学推导】Positional Encoding (PE)

Transformer 采用正余弦交替函数生成固定的位置编码,公式如下:


PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)

PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)

数学优越性

  1. 有界性:正余弦函数将值域限制在 [-1, 1],保证了位置向量与词嵌入相加时不会导致数值爆炸。
  2. 相对位置线性表达:借助三角函数和角公式 \sin(\alpha+\beta) 和 $\cos(\alpha+\beta)$,任意位置 pos+k 的编码都可以表示为位置 pos 编码的线性组合。这使得模型能够轻易学习到 Token 之间的相对距离。

【图形化表格】QKV 维度流转

设定序列长度为 $L$,模型维度为 $d_{model}$,单个 Attention Head 的维度为 $d_k = d_v = d_{model} / h$。

张量/操作 数学表达 维度变化 物理意义
输入张量 X L \times d_{model} 包含了语义和位置信息的 Token 序列表示
Query 权重 W^Q d_{model} \times d_k 将输入投影到“寻址”空间的变换矩阵
Key 权重 W^K d_{model} \times d_k 将输入投影到“被寻址”空间的变换矩阵
Value 权重 W^V d_{model} \times d_v 将输入投影到“内容”空间的变换矩阵
Query (Q) Q = X W^Q L \times d_k 当前 Token 的“查询意图”
Key (K) K = X W^K L \times d_k 序列中各 Token 的“身份标签/索引”
Value (V) V = X W^V L \times d_v 序列中各 Token 的“实际内容特征”

【图形化表格】Scaled Dot-Product Attention 步进模拟

步进 操作环节 数学推导 张量维度 数值/物理意义
1 计算点积评分 S = Q \cdot K^T (L \times d_k) \times (d_k \times L) \rightarrow L \times L 计算序列中每个 Token 对其他所有 Token 的原始相关性得分。
2 缩放 (Scale) S' = \frac{S}{\sqrt{d_k}} L \times L 关键! 防止维度过大导致点积结果爆炸,使 Softmax 落入梯度饱和区(梯度消失)。
3 归一化 (Softmax) A = \text{Softmax}(S') L \times L 将得分转化为概率分布每行和为1明确当前 Token 应该分配多少注意力给其他 Token。
4 加权求和 O = A \cdot V (L \times L) \times (L \times d_v) \rightarrow L \times d_v 根据注意力权重 $A$,按比例混合所有 Token 的 Value 信息,输出聚合后的上下文向量。

!Pasted image 20260512212947.png

2. 多头注意力机制 (Multi-Head Attention - 深度解剖)

【原理描述】维度拆解与拼接

Transformer 并没有使用单个巨大的 Attention 矩阵,而是将其拆分。假设 $d_{model} = 512$,头数 $h = 8$,则每个头处理的维度 $d_k = 512 / 8 = 64$。

计算过程:

  1. 独立投影:每个头 i 都有自己独立的 W_i^Q, W_i^K, W_i^V 矩阵,对输入进行降维投影。
  2. 并行计算8个头同时执行 Scaled Dot-Product Attention产生 8 个 L \times 64 的输出特征矩阵。
  3. 拼接还原:将这 8 个矩阵在最后一个维度上拼接Concat重新得到 L \times 512 的张量。
  4. 线性映射:最后通过一个全连接层 W^O 融合多头信息。

【数学推导】本质探究


\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O

\text{其中 } \text{head}_i = \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V)

为什么多头比单头好? 单头 Attention 容易将全部权重集中在某一个强相关的特征上。多头机制本质上是将 d_{model} 切分到不同的低维特征子空间 (Low-dimensional Representation Subspaces) 中。这允许模型同时在不同的表示空间中捕捉信息的不同侧面例如Head 1 可能专门寻找主谓宾的句法依赖SyntaxHead 2 可能捕捉代词指代关系CoreferenceHead 3 可能聚焦情感词汇Semantics

3. 三大 Attention 的本质区别与痛点(必答项)

3.1 Encoder Self-Attention (全局感知)

  • 机制Q, K, V 全部来源于 Encoder 前一层的输出。
  • 本质:完全的无向图,每个 Token 都可以毫无限制地“看”到序列的前后所有 Token借此消除长距离依赖问题构建完美的全局上下文感知。

3.2 Masked Self-Attention (Decoder)

  • Look-ahead Mask 形态为了保证自回归生成的因果性Causality必须将矩阵的主对角线以上的元素遮蔽。

M = \begin{bmatrix}
0 & -\infty & -\infty & \cdots & -\infty \\
0 & 0 & -\infty & \cdots & -\infty \\
0 & 0 & 0 & \cdots & -\infty \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & 0
\end{bmatrix}
  • Preventing Information Leakage:在训练阶段,我们是一次性输入整个目标序列进行并行计算的。通过在 Q \cdot K^T 的结果上加上 Mask 矩阵 $M$,经过 Softmax 时,$e^{-\infty} \rightarrow 0$。这强行截断了当前词对未来词的注意力权重,完美模拟了推理阶段“只能看到已生成内容”的物理现实,防止了“答案泄露”。

3.3 Encoder-Decoder Cross-Attention重难点

  • 原理K 和 V 来自 Encoder 的最高层输出,而 Q 来源于 Decoder 中 Masked Self-Attention 层的输出。

  • 直观逻辑(意图寻找语境)在机器翻译中Decoder 当前正在生成的词(隐含在 Q 中)代表当前的翻译意图 Encoder 提取的原句信息(封装在 K, V 中)代表全局语境。Q 拿着意图去遍历原句的标签 K找到最匹配的部分后提取出对应的真实内容 V 来指导下一个词的生成。

  • 维度匹配 假设 Encoder 输入序列长度为 $n$源语言长度Decoder 当前序列长度为 $m$(目标语言长度)。

  • 注意力权重$Q \cdot K^T \in \mathbb{R}^{m \times n}$。(这 m \times n 的矩阵完美地代表了 m 个目标词与 n 个源词的对齐关系矩阵)。

  • 最终输出$\text{Softmax}(\dots) \cdot V \in \mathbb{R}^{m \times n} \times \mathbb{R}^{n \times d_v} \rightarrow \mathbb{R}^{m \times d_v}$。完美对齐输出维度!

4. 残差、归一化与前馈网络(细节填补)

【数学推导】Add & Norm

Layer Normalization 公式


\text{LN}(x) = \gamma \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta

其中 \mu\sigma 是在 d_{model} 这个特征维度上计算的均值和方差,\gamma\beta 是可学习的仿射变换参数。

对比 BNBatch Normalization 在 Batch 维度上做归一化,这对 NLP 中长度参差不齐的序列极为不友好Pad 符会导致严重的统计噪声。LN 在单个 Token 的特征维度上进行,不受序列长度和 Batch 维度的影响,极其稳定。

【原理描述】Residual Connection (残差连接)

  • 公式:$\text{Output} = x + \text{Sublayer}(x)$。
  • 机制:提供了恒等映射的高速公路。在深层网络中,梯度可以通过 x 这条路径无损地反向传播回底层,极大地缓解了梯度消失问题,使得训练极深(如百层以上)的大语言模型成为可能。

【工程细节】FFN (Position-wise Feed-Forward Networks) 设计

  • 公式:\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2
  • 升降维逻辑:输入为 $d_{model}$,首先通过 W_1 升维到 $4 \times d_{model}$(即 2048经过激活函数后再通过 W_2 降维回 $d_{model}$。
  • 作用Attention 层本质上只做特征的“线性加权混合”缺乏非线性表达能力。FFN 的非线性激活函数ReLU/GELU和宽阔的中间层$4 \times d_{model}$)充当了**“记忆网络”“局部特征加工厂”**的作用,对 Attention 提取出的上下文信息进行深度的非线性变换。

5. 训练全流程、优化与工程实践

【原理描述】Teacher Forcing 与并行加速

如果像 RNN 那样等待前一个词生成再预测下一个词训练速度将极其缓慢。Transformer 在 Decoder 端采用 Teacher Forcing:直接将 Ground Truth真实标签序列整体右移一位Shifted Right一次性输入 Decoder。借助 Mask 机制的遮挡,网络可以高度并行地在同一个 Batch 内计算整个序列的所有损失,效率得到了颠覆性提升。

【工程细节】Weight Sharing (权重共享)

在标准的 Transformer 中Input Embedding 矩阵和最后 Softmax 前的 Linear 层通常共享同一个权重矩阵 $W \in \mathbb{R}^{\text{vocab_size} \times d_{model}}$。

动机Embedding 是将离散 Token 编码到连续空间,最后的 Linear 是将连续空间解码回离散 Token 概率。两者是互逆过程,共享权重不仅可以大幅减少模型参数量(防止过拟合),还能迫使模型学习到具有高度语义一致性的向量空间。

【数学推导】Noam Scheduler 与 Warmup

由于 Transformer 的结构特性初始阶段梯度极其不稳定。直接使用高学习率会导致模型崩溃。Noam 学习率调度策略结合了线性预热Warmup与衰减


lrate = d_{model}^{-0.5} \cdot \min(step\_num^{-0.5}, step\_num \cdot warmup\_steps^{-1.5})

解析:在最初的 warmup\_steps 步内,学习率随着 step\_num 线性急剧上升;到达峰值后,按 step\_num^{-0.5} 的轨迹缓慢衰减。这犹如给引擎“预热”后再平稳加速,是 Transformer 能够收敛的核心 Trick 之一。

【优化细节】Label Smoothing

传统的 Hard Label如 $[0, 0, 1, 0]$会鼓励模型产生极端的概率分布导致模型过于自信Overconfidence陷入死记硬背。Label Smoothing 将真实分布软化:



\boldsymbol{y}_{\text{true}}^{ls} = (1-\alpha)\cdot \boldsymbol{y}_{\text{onehot}} + \frac{\alpha}{V}\boldsymbol{1}

通常 $\alpha = 0.1$。这相当于告诉模型:“你不仅要关注正确答案,还要分一点点注意力给其他词汇”。这种机制有效增加了不确定性,极大提升了模型在未知测试集上的泛化能力。

【工程实践】软硬件极限与算力刚需

Transformer 的核心痛点在于 Scaled Dot-Product Attention 的计算复杂度是 $\mathcal{O}(L^2 \cdot d_{model})$,空间复杂度(显存)同样随序列长度 L 呈平方级增长。

  • 物理极限:当上下文长度扩展到 128k 甚至百万级别时,L^2 的矩阵乘加MACs和显存读写带宽Memory Bandwidth将压垮普通计算架构。
  • GPU 算力支持:这正是为何大模型训练和推理需要具备庞大显存、超高显存带宽(如 HBM3以及专门优化矩阵乘法的 Tensor Cores 的硬件。以 RTX 5070 等现代 GPU 为例,其微架构针对大规模并行矩阵运算进行了极致优化,支持 FP8/BF16 混合精度计算,这正是支撑 Transformer 从纸面走向工业神坛的底层算力引擎。

相关视频:常看常新

  1. https://www.youtube.com/watch?v=wjZofJX0v4M
  2. https://www.youtube.com/watch?v=zxQyTK8quyY