批归一化(Batch Normalization)在每个 mini-batch 内对激活值进行标准化,解决了深层网络训练中的内部协变量偏移问题,让网络可以用更大学习率收敛、对权重初始化更不敏感,是 2015 年之后 CNN 训练的标配操作。

| 类型 | 神经网络训练技术 |
| 提出者 | Ioffe & Szegedy,Google,2015 |
| 变体 | Layer Norm(Transformer 用)/ Group Norm / Instance Norm |
深层网络训练中,前面层的参数更新会改变后面层接收到的数据分布——这叫内部协变量偏移(Internal Covariate Shift)。后面的层需要不断适应变化的输入分布,相当于每次迭代都在解决一个稍微不同的问题,训练极慢,学习率也不能设太大(否则崩溃)。
Ioffe 和 Szegedy 2015 年提出的解决方案很直接:在每一层激活之前(或之后),对 mini-batch 内的激活值做标准化(减均值除标准差),然后用两个可学习参数 γ 和 β 做缩放和平移,让网络自己决定「要多标准」。这样每层的输入分布始终保持在合理范围。[1]
BN 的实际效果非常显著:加了 BN 的 Inception 网络(GoogLeNet)用相同计算量准确率提升 4.9%,而且学习率可以提高 14 倍,训练速度快 14 倍,Dropout 也可以去掉(BN 本身有轻微正则化效果)。
但 BN 有一个根本局限:依赖 batch 内的统计量,batch size 太小时(如目标检测、分割任务的大分辨率图,每次只能放 1-4 张)统计不准,效果变差甚至变差。由此催生了不依赖 batch 的变体:Layer Normalization(对单样本的所有特征归一化,Transformer 标配)、Group Normalization(将特征分组归一化,batch size=1 时也稳定)、Instance Normalization(风格迁移常用)。

| 类型 | 神经网络训练技术 |
| 提出者 | Ioffe & Szegedy,Google,2015 |
| 变体 | Layer Norm(Transformer 用)/ Group Norm / Instance Norm |
登录 后参与讨论
暂无讨论,来发表第一条评论吧