归一化层的参数 gamma 和 beta:它们不只是缩放和平移,还在学习什么?

第一次看 Batch Normalization 论文时,我的注意力全被 μ 和 σ 吸走了——原来训练时要算一个 mini-batch 的均值和方差,把每层输出强行拉回均值为 0、方差为 1。看到后面那两个参数 γ 和 β,我只有一个念头:哦,再缩放一下,再平移一下,收工。后来想手撕一遍 BN 的反向传播,算到 γ 的梯度时,我忽然卡住了。

AI technology illustration

为什么这两个参数也是训练出来的?它们到底在学什么?如果只是“缩放和平移”,那和前面卷积核的权重,到底有什么区别?

先看定义。Batch Normalization 对某一层某个特征通道的输入 x 做的事情是:

y = γ * (x - μ) / sqrt(σ² + ε) + β

前一半 (x-μ)/σ 是标准化,后一半 γ、β 是缩放和平移。单看形式,这就是两个线性旋钮。但仔细想一下:标准化本身只有两个自由度——把均值踩到 0,把方差掰到 1。而 γ 和 β 也恰好提供两个自由度——把 0 和 1 变回网络想要的 μ′ 和 σ′。换句话说,它们不是“额外的调整”,而是把标准化拿走的两个自由度,原样还给了网络。

为什么不是多余的?

因为“均值 0、方差 1”不一定就是下一层想要的最优输入分布。拿 ReLU 举例:如果一层激活被强制集中在 0 附近,大约一半输出会被压成 0,神经元很容易进入死亡状态。下一层本来可以通过调整自身权重来适应输入分布,但前一层被标准化之后,这个适应过程就被砍掉了一截。γ 和 β 就是补偿手段:给每一层一个选择权,让它自己决定要不要撤销刚做过的标准化,或者换一个对后续层更友好的分布。

Ioffe 和 Szegedy 在 2015 年的Batch Normalization 原始论文里,专门为这两个参数写过一段话:

Note that simply normalizing each input of a layer may change what the layer can represent… We accomplish this by introducing, for each activation, a pair of parameters γ and β, which scale and shift the normalized value.

翻译成大白话就是:归一化可能会改变这层能表达的范围,所以我们要把“可学习的缩放和平移”还回去。我最早把 γ/β 理解为数值范围调节器,后来才想通:标准化本身已经调节了数值范围,γ/β 调节的是“这个数值范围对下一层是否合适”。这两件事只在初始化时重合——γ=1、β=0——之后很快就走散了。

γ 在学习通道的重要性

从梯度上看更直白:γ 的梯度是 ∂L/∂y 与标准化后激活 z 的乘积,β 的梯度是 ∂L/∂y 的累加。所以 γ 学到的是“这个特征通道应该被放大还是缩小”,β 学到的是“这个通道的激活均值应该被修正多少”。它们和前面卷积核的权重,本质上在做同一类事——最小化损失。

如果你在 BN 层后对所有 γ 做 L1 正则,还会看到一个更有意思的现象:网络会把一堆 γ 推向 0,而另一批 γ 保持很大。这不是巧合。γ 乘在标准化后的激活上,如果某个通道的 γ 接近 0,它对后续层的贡献也就基本归零。于是 γ 的数值逐渐演变成了一个通道重要性指示器。Liu et al. 在Network Slimming里就是这么干的:训练时给 γ 加稀疏正则,剪枝时直接看 γ 的绝对值,小于阈值的通道统统砍掉。

这时 γ 已经不只是缩放系数了——它是在学习哪些特征应该被保留、哪些可以被丢弃。这是“缩放”两个字远远盖不住的。

β 在学习数据分布中的偏移

β 则更像是网络自动学出来的偏置项。它吸收的是“经过标准化之后仍未消除、但对后续层有意义的偏移信息”。你可以把它看成是卷积层 bias 的另一种写法。在推理阶段,BatchNorm 会被折叠到前面的卷积层里:卷积权重乘上来自 σ 的系数,β 和原来的 bias 经过变换后合到一起。模型结构里没有显式 BN,但处处都是 BN 的影子。

不只是 Batch Norm:这是归一化层的通用接口

往后看你会发现,几乎所有归一化层都保留了一对可学习的 scale/shift 参数,区别只在统计量的来源。

归一化方法 统计量来源 可学习参数 特殊设定
Batch Norm mini-batch 内各样本、各位置 γ, β 推理时折叠进前一层
Layer Norm 单样本的所有通道 γ, β Transformer 标配
Instance Norm 单样本、单通道 γ, β 风格迁移常用
RMSNorm 单样本的均方根 只有 γ 不建模均值偏移,省计算

注意最后一排:RMSNorm 把 LayerNorm 中的均值中心化去掉了,也不再设置 β,只保留缩放参数 γ。作者在多个序列任务上验证,效果和 LayerNorm 接近,但省下了一部分统计计算。反过来也说明:β 不是每个归一化都必需,它是否出现取决于你要不要去建模均值偏移。而 γ 仍然是标配。

常见误解,逐个拆

为什么 γ 初始化为 1、β 初始化为 0?

因为要保证刚开始训练时,归一化层的输入输出落在同一条轨道上:输入已经被标准化成单位方差、零均值,γ=1、β=0 让输出继续保持这个状态。之后训练开始,网络再决定偏离多远。这是“先从标准答案出发,再慢慢修正”的经典策略。

推理时 BN 被折叠了,γ 和 β 还有没有用?

推理时它们不再单独参与计算,但它们训练出来的数值已经被写进了前一层卷积的权重和偏置里。你模型结构里没有了 BN,但每个 conv 里都有 γ 的影子。

如果去掉 γ 和 β,模型会更差吗?

大多数情况下会。因为模型失去了为每个通道选择尺度和偏移的自由度,强行让所有通道保持单位方差和零均值,会让一部分有用信息被人为抹掉。有些论文尝试去掉它们,但通常是在权重初始化或归一化策略上做了别的补偿,不是白去的。

回到标题的问题:γ 和 β 只是在缩放和平移吗?从算子形式看,是的;从它们学习到的内容看,远不止。它们保留了网络“反悔”的权利——如果标准化过度了,网络可以用 γ 把尺度救回来;如果均值的偏移含有信息,网络可以用 β 把它写回来。到这一步,你才真正理解归一化层里那两个小参数:它们才是整个归一化设计中最不“归一”的部分。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/1106.html

赞 (0)
上一篇 2026年9月24日
下一篇 2026年9月24日

相关推荐