【CS336】Lec 3 - Architectures, hyperparameters

Transformer

原版 Transformer

../../source/CS336Lec 3 - Architectures, hyperparameters\_原版.png
这是最初的 Transformer 架构, 在 Attention is All You Need 文章中提出
历经多年研究和改进, 已经有了多种变体, 能力也有所提升

通用改进版 Transformer

../../source/CS336Lec 3 - Architectures, hyperparameters\_改进版.png
以下是和原版的一些区别:

  • LayerNorm 放在了模块的前端
  • 位置编码采用 RoPE
  • 前馈层用 SwiGLU 取代 ReLU
  • 线性层去掉了偏置项

../../source/CS336Lec 3 - Architectures, hyperparameters\_演变.png
Tatsu 根据近些年最新的模型的一些论文, 统计出了一些表格, 里面有关于模型架构的一些信息, 可以直观的看出模型架构的演变, 以及各家的差异

架构差异

归一化的先后顺序

业界共识: 采用前归一化, 而非后归一化
../../source/CS336Lec 3 - Architectures, hyperparameters\_归一化.png
左侧是原始 Transformer, 右侧是改进后的版本, 使用前归一化
右侧的效果普遍更加, 当下的模型基本都采用这一方法
后归一化相对没有那么稳定, 因此需要谨慎设置 warmup 等策略, 以保证训练过程稳定

双重归一化

此外, 还有更创新的方法: 双重归一化
../../source/CS336Lec 3 - Architectures, hyperparameters\_双归一化.png
右侧在预归一化的基础上, 在 MHA 和 FFN 后都加了一个层归一化, 使得每个块都有两个归一化
有人认为这种方法更好

归一化的方式选择

原始的归一化方式是 LayerNorm, 现在的主流做法是 RMSNorm
../../source/CS336Lec 3 - Architectures, hyperparameters\_两种归一化.png

LayerNorm
  1. 对输入向量 x 减去均值(中心化)
  2. 除以标准差(归一化方差)
  3. 再乘以可训练的缩放系数 $\gamma$ 并加上偏置 $\beta$
RMSNorm
  • 做法
    1. 不减均值(不做中心化)
    2. 只用向量的 均方根 来缩放
    3. 没有加偏置 $\beta$,只有缩放系数 $\gamma$
  • 特点
    • 比 LayerNorm 计算更简单(少了减均值和加偏置的步骤)
    • 在某些 LLM 中效果相近甚至更好
    • 更节省计算量,适合大规模模型
Licensed under CC BY-NC-SA 4.0
最后更新于 Aug 05, 2025 02:56 UTC
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计