Skip to content

Layer Normalization 篇

来自:AiGC面试宝典

整理:宁静致远

📝通俗解释:本文档系统整理了Transformer模型中常用的几种归一化技术,是面试高频考点,建议重点掌握各方法的计算公式、优缺点及实际应用场景。


一、Layer Norm 篇

1.1 Layer Norm 的计算公式

Layer Norm(层归一化)会对同一层的所有神经元进行归一化,其计算公式如下:

第一步:计算均值 $$ \mu = E(X) = \frac{1}{H} \sum_{i=1}^{H} x_i $$

第二步:计算方差 $$ \sigma^2 = Var(x) = \frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2 $$

第三步:归一化并线性变换 $$ y = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta $$

其中:

  • $\gamma$(gamma):可训练的缩放参数
  • $\beta$(beta):可训练的偏移参数
  • $\epsilon$:防止除零的小常数(如 1e-6)

📝通俗解释:Layer Norm 就像是把一个班级所有学生的成绩进行标准化处理。先算出平均分(均值),再算出成绩的波动程度(方差),然后把每个学生的成绩转换成"距离平均分多少个标准差"的格式。最后还可以用gamma和beta来调整这个标准化后的分布形状,让模型学习到最适合的特征表示。


二、RMS Norm 篇(均方根 Norm)

2.1 RMS Norm 的计算公式

RMS Norm(Root Mean Square Normalization)是一种简化的归一化方法:

$$ RMS(x) = \sqrt{\frac{1}{H} \sum_{i=1}^{H} x_i^2} $$

$$ y = \frac{x}{RMS(x)} \cdot \gamma $$

📝通俗解释:RMS Norm 相比 Layer Norm 更加"偷懒"——它只关心数据的"能量"(均方根),不关心数据的方向(均值)。就像评价一个篮球队,只看队员的平均身高(能量),而不关心是高还是矮(方向)。这样计算更快,因为少算了一个均值。

2.2 RMS Norm 相比于 Layer Norm 有什么特点?

特性Layer NormRMS Norm
计算内容均值 + 方差仅均方根
计算复杂度较高较低
效果基准基本相当,略有提升

总结

  • RMS Norm 简化了 Layer Norm,去除了计算均值进行平移的部分
  • 优点:计算速度更快
  • 效果:与 Layer Norm 基本相当,部分场景略有提升

📝通俗解释:可以把 RMS Norm 理解成 Layer Norm 的"精简版"。就像做菜时,Layer Norm 要计算平均值再调整(比较精细),RMS Norm 只看整体"火候"够不够(比较粗略)。虽然步骤少了,但做出来的"菜"(模型效果)差不多,甚至有时候更好吃,而且做饭时间更短。


三、Deep Norm 篇

3.1 Deep Norm 的思路?

Deep Norm 是微软提出的改进方法,其核心思想包括:

  1. 残差连接 upscale:在执行 Layer Norm 之前,up-scale 残差连接的输出($\alpha > 1$)
  2. 参数初始化 down-scale:在初始化阶段 down-scale 模型参数($\beta < 1$)

📝通俗解释:Deep Norm 就像给模型"减压"。它通过放大残差路径(让信息更容易传递)和缩小初始化参数(让训练起步更平稳),来防止深层网络训练时"心态爆炸"(梯度爆炸),让训练过程更稳定。

3.2 Deep Norm 代码实现

python
def deepnorm(x, f, alpha):
    """
    Deep Norm 前向传播
    alpha: 残差连接放大系数 (通常 > 1)
    """
    return LayerNorm(x * alpha + f(x))

def deepnorm_init(w, beta):
    """
    Deep Norm 初始化
    beta: 参数缩放系数 (通常 < 1)
    """
    if w.name in ['ffn', 'v_proj', 'out_proj']:
        # FFN和输出投影使用较大的初始化增益
        nn.init.xavier_normal_(w, gain=beta)
    elif w.name in ['q_proj', 'k_proj']:
        # Q、K投影使用标准初始化
        nn.init.xavier_normal_(w, gain=1)

3.3 Deep Norm 有什么优点?

  1. 稳定训练:缓解深层 Transformer 的梯度爆炸问题
  2. 常数更新:把模型更新限制在常数范围内,使得训练过程更稳定
  3. 支持更深模型:可以训练更深的网络结构

📝通俗解释:普通的 Transformer 深层网络就像一个传递信息的"传声筒游戏",层数多了之后信息会越来越走样(梯度爆炸)。Deep Norm 相当于给每层加了一个"放大器"和"稳定器",让信息能更完整地传递下去,这样就能训练上百层的模型而不"炸"掉。


四、Layer Normalization 位置篇

4.1 LN 在 LLMs 中的不同位置有什么区别?

在 Transformer 中,Layer Normalization 的位置有三种常见形式:

1. Post LN(后置 Layer Norm)

  • 位置:Layer Norm 在残差连接之后
  • 结构x -> Attention -> Add -> LayerNorm -> FFN -> Add -> LayerNorm
  • 缺点:深层梯度范式逐渐增大,容易出现训练不稳定的问题

📝通俗解释:Post LN 就像在每节课结束后才检查学生掌握情况(归一化),层数多了之后,后面几节课的压力会越来越大,容易"崩不住"。

2. Pre LN(前置 Layer Norm)

  • 位置:Layer Norm 在残差连接内部(放在注意力或FFN之前)
  • 结构x -> LayerNorm -> Attention -> Add -> LayerNorm -> FFN -> Add
  • 优点:深层梯度范式近似相等,训练更稳定
  • 缺点:模型效果略差于 Post LN

📝通俗解释:Pre LN 就像在每节课开始前先复习重点(归一化),这样每节课的压力都比较均衡,训练更稳定,但可能没有课后检查那么"针对性强"。

3. Sandwich LN(三明治 Layer Norm)

  • 位置:在 Pre LN 的基础上,额外在残差连接内部再插入一个 Layer Norm
  • 优点:Cogview 论文提出,用于避免值爆炸的问题
  • 缺点:训练不稳定,可能导致训练崩溃

📝通俗解释:Sandwich LN 就像"课前复习+课后测验"双重检查,虽然想法是更严格把控,但有时候可能过于严格导致学生压力过大(训练崩溃)。

三种位置对比图示

Post-LN:     x -> [Multi-Head Attention + Add] -> LN -> [FFN + Add] -> LN

Pre-LN:      x -> LN -> [Multi-Head Attention + Add] -> LN -> [FFN + Add]

Sandwich-LN: x -> LN -> [Multi-Head Attention + Add] -> LN -> [FFN + Add] -> LN

📝通俗解释:这三种位置就像安排"复习环节"的时机——Post LN 是课后复习,Pre LN 是课前复习,Sandwich LN 是课前课后都复习。课前复习(Pre LN)让每节课压力均匀,最稳定;课后复习(Post LN)效果更好但后面压力大;三明治虽然严格但容易出问题。


五、Layer Normalization 对比篇

5.1 各主流 LLMs 使用的 Normalization 方法

模型Normalization 方法位置
GPT-3Pre Layer Norm前置
LLaMAPre RMS Norm前置
BaichuanPre RMS Norm前置
ChatGLM-6BPost Deep Norm后置
ChatGLM2-6BPost RMS Norm后置
BloomPre Layer Norm前置
FalconPre Layer Norm前置

补充说明

  • Bloom 在 embedding 层后添加 Layer Norm,有利于提升训练稳定性,但可能会带来一定的性能损失

📝通俗解释:主流大模型现在更偏爱"Pre + RMS Norm"的组合——前置归一化让训练更稳定,RMS Norm 计算更快。LLaMA、Baichuan 等新秀都采用这个方案。而 ChatGLM 系列早期用了 Deep Norm(后置),后来也转向了 RMS Norm。


面试要点总结

  1. 计算公式:LN 和 RMS Norm 的公式必须能手写
  2. 对比理解:RMS Norm 相比 LN 更快、更简单
  3. 位置影响:Pre LN 更稳定,Post LN 效果更好,Sandwich LN 容易崩
  4. 实际应用:主流趋势是 Pre + RMS Norm

整理自:知识星球 - AiGC面试宝典日期:2023年09月29日

基于 MIT 许可发布