一、为什么需要归一化
1、提高泛化能力
若测试集与训练集分布不同,则会使网络的泛化能力降低。
2、提高收敛速度
若每个batch的数据分布不尽相同,那么每次迭代都需要去适应不同的分布情况;且网络前几层的变化会累积到后面的网络层(我们将这种训练过程中网络中间层数据分布的改变称之为:“Internal Covariate Shift”。),从而使训练收敛速度降低。
3、待补充
二、Batch Normalization原理
与再输入层对输入数据进行归一化处理相似,于每一层的输入之前加入BN层进行每一层的数据分布归一化。
1、借鉴思想
对输入数据的预处理通常采用白化操作,经白化处理后的数据集满足如下两个条件:
(1)特征相关性降低;
(2)数据均值、标准差归一化。
然而简单的白化处理有可能破坏上一层所学习到的特征分布,故BN层在对x近似白化处理之后引入可学习参数γ和β来还原特征分布。
2、前向传播
(1)计算数据均值;
(2)计算数据方差;
(3)对输入数据近似白化处理(归一化);
(4)通过放缩和迁移提高数据对非线性区域的表达能力并还原上一层学习到的特征分布。
3、反向传播
通过链式求导方式求出γ与β以及相关权值。
三、