一、 BERT 的深度解析 (The Foundation)

1. Scaled Dot-Product Attention 的维度约束与方差偏移

注意力机制的本质是特征空间的相似度加权。在给定的 Query、Key 和 Value 矩阵 下,计算过程如下:

为什么必须引入缩放因子

假设 是均值为 、方差为 的独立随机变量向量(即 )。其点积为

根据概率论,点积的均值和方差分别为:

工程结论点积结果的方差随维度 的增加而线性放大。 在输入 Softmax 函数时,极大的方差会导致分布两极分化(趋近于 One-hot),使得极大值处的 Softmax 梯度区域平坦()。除以 可严格将点积结果的方差强行缩放回 ,避免梯度消失,保证训练早期的稳定性。

2. 多头注意力 (MHA) 的物理意义

多头注意力的数学表达为:

其中 是投影矩阵。

物理意义上,线性投影将原始高维输入隐式映射到 相互正交的特征子空间中。每个 Head 能够独立关注不同的语言学特征(如句法依赖、语义指代等),最后通过 Concat 与 进行高维流形的特征融合,极大提升了模型的表达能力。

3. 输入层细化: 的构建与局限

BERT 的输入表征是三个相同维度 Embedding 的严格加和:

其中, 采用的是绝对位置编码 (Learned Positional Embedding)

局限性分析:Learned Positional Embedding 是通过反向传播更新的参数矩阵 。这种设计的致命弱点在于零外推性 (Zero Extrapolation):当推理时的序列长度超过预训练时设定的最大长度 (如 512)时,模型无法查找到对应的位置向量,直接导致系统性崩溃。这也是后续模型向旋转位置编码 (RoPE) 演进的根本原因。


二、 演进至 GPT (The Transition & Architecture)

1. Masked Self-Attention 与因果视图

GPT 的核心是自回归生成,必须阻断信息从未来流向现在。数学上通过引入下三角 Mask 矩阵 实现:

在计算 Softmax 之前,将 直接叠加到注意力分数上:

时,,确保第 个 Token 只能对 的 Token 产生非零概率权重。这构成了 Decoder 的因果视图 (Causal View),而 BERT 则是没有 Mask 全局视图 (Global View)

2. 层归一化的深层抉择 (Pre-LN vs Post-LN)

Transformer 结构的成败高度依赖 Layer Normalization 的位置设置:

  • Post-LN (BERT):

  • Pre-LN (GPT):

梯度动力学分析:在 Post-LN 中,残差分支的输出直接被 LayerNorm 重新标准化。随着网络层数 的加深,反向传播到达底层的梯度会发生严重的衰减,导致极难初始化且必须依赖 Warm-up 策略。

而在 Pre-LN 中,主干网络始终保留一条纯净的恒等映射 (Identity Mapping)路径:

工程结论Pre-LN 使得各个 SubLayer 的梯度可以直接且无损地流向底层网络,从根本上缓解了深层网络的梯度消失/爆炸问题,是极深(如 96 层 GPT-3)模型能够稳定启动训练的必决条件。

3. 前馈神经网络 (FFN):从 ReLU 到 GeLU

FFN 负责非线性映射:

GPT 彻底摒弃了 ReLU (),采用高斯误差线性单元 GELU

相比 ReLU 在 处的不可导和硬截断,GELU 是一种概率平滑激活。它实际上等价于将输入 乘以一个服从 的 Dropout 门控变量。在零点附近的平滑过渡保证了更丰富的曲率信息,对优化器评估 Loss 景观非常有益。


三、 训练过程的硬核细节 (The Engineering)

1. 损失函数 (Loss Functions)

  • BERT 联合目标

  • GPT 标准自回归似然估计 (NLL Loss)

2. 优化器与学习率策略

AdamW 的权重衰减逻辑:标准 Adam 在处理 L2 正则化时,梯度更新表达式会将权重衰减项和动量项耦合,导致正则化效果在遇到自适应学习率时被削弱。AdamW 强制将权重衰减解耦到梯度更新之外:

Linear Warmup + Cosine Decay

初始极高的方差需要极小的学习率启动。

  1. 预热期 ():作用:保护随机初始化的权重在第一个 Epoch 内免遭巨大且方差极高的梯度破坏(俗称“梯度洗牌”)。

  2. 余弦退火 ():。平滑逼近局部最优解。

3. 初始化与梯度控制

深度残差缩放:为了控制残差网络累积方差在深层的爆炸,GPT 要求针对残差路径前的权重(例如自注意力的投影矩阵 和 FFN 的第二层 )执行额外的缩放初始化:

其中 为层数。这确保了在初始化阶段,深层方差仍保持在 量级。

Gradient Clipping:在大规模预训练(如 Batch Size = 2048)中,Loss 景观充满“悬崖”。当 时,执行 工程结论:梯度裁剪是防御预训练“Loss 突刺 (Spike)”的最后防线,通常阈值 设为 1.0。

4. BPE (Byte Pair Encoding) 编码方案

BPE 是一种基于数据统计的子词压缩算法。通过计算连续字节对的频率,将最高频的组合不断合并,从而构建词表。

平衡 OOV 逻辑:它结合了 Character-level 的全覆盖特性(完全消除 OOV 问题)和 Word-level 的语义丰富特性。对于罕见词(OOV),BPE 会将其自然降解为更短的子词序列(或最终的字符/字节),从而保证了对未知词汇的鲁棒泛化。


四、 故障排除与架构对比 (Troubleshooting & Comparison)

1. KV Cache 推理加速与显存边界

在自回归生成第 个 Token 时,无需重新计算前 个 Token 的表征。只需将新计算的 拼接到缓存矩阵中:

内存占用数学推导:以 FP16(每参数 2 字节)为例,单个 Token 在每一层的注意力机制中需存储 Key 和 Value。对于单个 Batch:

工程结论KV Cache 会随序列长度呈线性暴涨,极易导致 OOM,这也是后续 PagedAttention 等内存分页技术被提出的直接推手。

2. 训练崩溃与 Loss Spike

在几十 B 规模的模型训练中,Loss Spike(从正常值瞬间飙升至数百甚至 NaN)极度常见。

原因:通常由半精度 (FP16/BF16) 溢出引发。在注意力权重或 FFN 放大器中,某些异常 Token 导致中间特征激活值突破了 65504 (FP16 的最大表示阈值)。

应对方案:除了梯度裁剪和调整混合精度策略(如主权重保持 FP32)外,监控 是关键。若某一步梯度范数异于移动平均值过多,直接 Skip 该 Batch。

3. Softmax 饱和与 Temperature 控制

在 GPT 采样解码时,预测下一个 Token 的概率分布由带温度标量 的 Softmax 控制:

  • (Greedy):分布变得极其尖锐,相当于 ,导致文本极其死板且容易陷入循环重复。

  • (Smoothing):概率分布变得平缓(接近均匀分布),使得长尾低频词被选中的概率增加,提升了生成的多样性和创造力,但过高会导致逻辑崩坏。


附录:BERT 与 GPT 核心数学差异对比表

对比维度BERT (Encoder)GPT (Decoder)核心数学/结构差异点
掩码机制 (Masking)全局无 Mask (Padding 除外)下三角 Causal Mask Softmax 输入存在 的硬截断
计算复杂度 (Self-Attn)复杂度相同,但 GPT 矩阵运算由于 Mask 为下三角矩阵,可作特定优化
训练/推理并行度训练:极高 / 推理:单次计算训练:极高 / 推理:极低GPT 推理受限于自回归本质,时间复杂度为 步向后展开
特征感受野 (Receptive) 深度双向上下文严格单向 (仅见历史 Token)联合概率分解定律的架构具象化表示
LayerNorm 拓扑Post-LNPre-LN决定深层梯度反传是衰减还是完美继承 (Identity mapping)