2022年11月14日 Batch Normalization
What Is Batch Norm?
Batch Normalization(批标准化)的动机是“内部协变量偏移”,可解决梯度消失和梯度爆炸问题,其本质上就是做特征缩放,将分散的数据做一个统一,让机器学习更容易找到数据之中的规律。
Why Batch Normalization Matters?
- 数据预处理的方式对最终结果有很大影响(例如:标准化输入特征:均值为0,方差为1)
- 随着模型的训练层次加深(输入层→输出层),变量分布的不规则偏移可能会阻碍网络的收敛。
- 训练深层网络容易过拟合。
批量标准化(BN)使我们能够选择更高的学习率,从而更快地收敛损失函数,同时可减少对dropout的需求。
Source: https://www.jeremyjordan.me/batch-normalization/
How to do batch normalization?
注意:
- 标准化是逐批训练的
- γ,β是训练过程出来的,是要学习的参数
- B:小批量
- ε(ε > 0):确保在做归一化时除数永远不等于零
- μB(样本均值)和 σB(样本标准差)是从数据中计算得到的
Internal Covariate Shift(协变量偏移)
需要较低的学习率和合理的参数初始化来减慢训练速度,并且使得训练具有饱和非线性的模型变得非常困难。换句话说就是数据分布对训练产生了影响。例:
Results
Figure 1
- (a) 使用和不使用 Batch Normalization 训练的 MNIST 网络的测试准确度与训练步骤的数量。 Batch Normalization 有助于网络更快地训练并获得更高的准确度。
- (b, c) 在训练过程中输入分布到典型 sigmoid 的演变,显示为第 {15, 50, 85} 个百分位数。 Batch Normalization 使分布更加稳定,并减少了内部协变量偏移。
Figure 2
Inception及其批量标准化变体的验证准确度与训练步骤数的关系。
Figure 3
对于 Inception 和批量归一化变体,达到 Inception 的最大准确度 (72.2%) 所需的训练步骤数,以及网络达到的最大准确度。
References
- https://www.bilibili.com/h5/note-app/view?cvid=15375138&pagefrom=comment
- https://zhuanlan.zhihu.com/p/24810318
- https://ithelp.ithome.com.tw/articles/10241052
- https://arxiv.org/pdf/1502.03167.pdf
作者:kali
-------------------------------------------
个性签名:纸上学来终觉浅,绝知此事要躬行。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!