Batch Normalization
Batch Normalization: Accelerating Deep Network Training by ReducingInternal Covariate Shift
训练深度神经网络很复杂,因为在训练过程中每层输入的分布发生变化,因为前一层的参数发生了变化。 这通过要求较低的学习率和仔细的参数初始化来减慢训练,并且使得训练具有饱和非线性的模型变得非常困难。我们将这种现象称为内部协变量移位,并通过规范化层输入来解决问题。我们的方法的优势在于将标准化作为模型体系结构的一部分,并为每个训练批次执行标准化。批量标准化使我们能够获得更高的学习率并且不太关心初始化,并且在某些情况下可以消除对Dropout的需求。 应用于最先进的图像分类模型,批量标准化实现了相同的准确度,培训步骤减少了14倍,并且显着地超过了原始模型。使用批量标准化网络的集合,我们改进了ImageNet分类的最佳公布结果:达到4.82%的前5个测试错误,超出了人类评估者的准确性。
方法
批标准化
其中scale/shift变换系数是可训练的
参数的反向传播公式
伪代码
需要注意的是训练的时候使用批次样本的均值与方差,预测的时候使用所有训练样本的均值与方差。
卷积网络
注意前面写的都是对于一般情况,对于卷积神经网络有些许不同。因为卷积神经网络的特征是对应到一整张特征响应图上的,所以做BN时也应以响应图为单位而不是按照各个维度。
调参技巧
Increase learning rate
Remove Dropout
Shuffle training examples more thoroughly
Reduce the L2weight regularization
Accelerate the learning rate decay
Remove Local Response Normalization
Reduce the photometric distortions
实验
Last updated