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₂的标准两层感知机。
- 这是一个包含ReLU激活函数和两个偏置项
- 现代实现:
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设计:为何移除偏置项/