本篇博客仅作为学习,如有侵权必删。
一、BN批标准化
1、BN的基本动机
- (初始数据分布一致)神经网络训练过程的本质是学习数据分布,如果训练数据与测试数据的分布 不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数据进行归一化处理。
- (中间数据分布一致)然而随着网络训练的进行,每个隐层的参数变化使得后一层的输入发生变 化,从而每一批训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合 不同的数据分布,增大训练的复杂度以及过拟合的风险。
原因在于神经网络学习过程本质上是为了学习数据的分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另一方面,一旦在mini-batch梯度下降训练的时候,每批训练数据的分布不相同,那么网络就要在每次迭代的时候去学习以适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对所有训练数据做一个Normalization预处理的原因。
2、 BN的原理
BN首先是把所有的样本的统计分布标准化,降低了batch内不同样本的差异性,然后又允许batch内的各个样本有各自的统计分布。
BN是针对每一批数据,在网络的每一层输入之前增加归一化处理(均值为0,标准差为1),将所有批数据强制在统一的数据分布下,即对该层 的任意一个神经元(假设为第k维)x^(k) 采用如下公式: