Transformer FFN设计:为何移除偏置项

Transformer FFN设计:为何移除偏置项

本文档整理了关于现代Transformer模型在其前馈神经网络(FFN)层中通常会省略偏置项(bias terms)的原因和考虑。

1. 偏置项(Bias Terms)是什么?

在原始的 Transformer 公式中,FFN层的计算如下:
FFN(x) = max(0, xW₁ + b₁)W₂ + b₂

这里的 b₁b₂ 就是偏置项。它们是可学习的参数,作用类似于线性函数 y = mx + c 中的截距 c。偏置项允许模型在数据不以原点为中心时,对激活函数的输出进行平移,从而增加模型的拟合能力。

然而,在现代的大型语言模型中,研究人员发现去掉这些偏置项反而能带来好处。

2. 为什么现代 Transformer 要去掉偏置项?

主要有两个原因:优化稳定性 (optimization stability) 和 **内存效率 (memory)**。

优化稳定性 (Optimization Stability)

  • 现代 Transformer 架构在几乎每个线性层之后都会跟一个归一化层(Normalization Layer),比如 LayerNorm 或 RMSNorm。
  • 这些归一化层的一个关键作用就是对数据进行标准化处理,使其均值接近0,方差为1(或在某个固定范围内),这本身就起到了稳定数据分布、加速训练的作用。
  • 当归一化层已经将数据“居中”处理后,紧随其后的线性层中的偏置项 b 就显得有些多余了。去掉它不仅不会损害模型性能,经验证还能让大型模型的训练过程更加稳定。
  • 去掉偏置项可以减少参数之间的复杂相互作用,让损失函数的曲面(loss landscape)可能变得更平滑,从而使优化过程(如梯度下降)更加稳定和容易。

内存效率 (Memory Efficiency) & 与 RMSNorm 的相似性

  • 减少参数量:这一点非常直观。去掉 b₁b₂ 就意味着需要存储和更新的参数变少了。对于动辄拥有数十亿甚至上万亿参数的大型模型来说,虽然偏置项占总参数量的比例很小,但去掉它们仍然能积少成多,节省一定的内存和计算资源。
  • 与 RMSNorm 的相似性:在线性层中去掉偏置项,和在归一化层中使用 RMSNorm 代替 LayerNorm,背后的哲学是相通的。
    • 传统的 LayerNorm 在归一化后,会学习两个参数:一个缩放因子(gamma)和一个平移/偏置因子(beta)
    • 而 RMSNorm 是 LayerNorm 的一个简化版本,它去掉了平移/偏置因子(beta),只保留了缩放因子(gamma)。
    • 实践证明,RMSNorm 的这种简化不仅没有损害模型性能,还因为减少了计算和参数,提升了训练速度。
    • 因此,这两种做法都体现了同一个思想:去掉功能上冗余的偏置/平移参数,以换取更好的稳定性、速度和内存效率

3. 公式对比

  • 原始 Transformer: FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
    • 这是一个包含ReLU激活函数和两个偏置项 b₁, b₂ 的标准两层感知机。
  • 现代实现: FFN(x) = σ(xW₁)W₂
    • 这里的 σ 代表任意激活函数(如 GeLU, SwiGLU 等)。可以看到,两个偏置项 b₁b₂ 都被移除了。

总结

在现代 Transformer 的设计中,大家发现偏置项(bias)并非不可或缺。归一化层(特别是像 RMSNorm 这种无偏置的归一化)已经很好地稳定了数据,使得线性层中的偏置项变得冗余。去掉它们不仅可以节省少量内存,更重要的是能够提高超大规模模型训练的稳定性,算是一种经过实践检验的、更优的架构选择。


整理自: Transformer FFN Bias Removal Explained


Transformer FFN设计:为何移除偏置项
http://zl1bks.github.io/2025/09/20/Transformer FFN设计:为何移除偏置项/
作者
zl1bks
发布于
2025年9月20日
许可协议