注:本文翻译的原文为Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift中的BN理论知识(到3.1小节),同时会在翻译过程中加入一些自己的理解。目的是加深对提出BN的目的及其原理的理解。英语水平以及知识水平有待提高,有不足之处请大家提出来。
http://blog.youkuaiyun.com/linmingan/article/details/50780761
Abstract:当前神经网络层之前的神经网络层的参数变化,引起神经网络每一层输入数据的分布产生了变化,这使得训练一个深度神经网络(Deep Neural Networks)变得复杂。这样就要求使用更小的学习率,参数初始化也需要更为谨慎的设置。并且由于非线性饱和(注:如sigmoid激活函数的非线性饱和问题),训练一个深度神经网络会非常困难。我们称这个现象为:internal covariate shif;同时利用归一化层输入解决这个问题。我们将归一化层输入作为神经网络的结构,并且对每一个小批量训练数据执行这一操作。Batch Normalization(BN) 能使用更高的学习率,并且不需要过多的注重参数初始化问题。BN 的过程与正则化相似,在某些情况下可以去除Dropout。将BN应用到一个state-of-the-art的图片分类模型中时,使用BN只要1/14的训练次数就能够达到同样的精度。使用含有BN神经网络模型能提升现有最好的ImageNet分类结果:在top-5 验证集中达到4.9%的错误率(测试集为4.8%),超出了人类的分类精度。
1 Introduction
深度学习极大的促进了许多领域的发展,如视觉、语音以及其他领域。随机梯度下降法(SGD)已经证明能够有效的训练深度神经网络,并且在SGD中加入momentum和Adgrad变量也达到了最好的性能。SGD优化参数 θ θ 来最小化损失函数
尽管随机梯度下降法简单有效,但却需要谨慎的调整模型的参数,特别是在优化过程中加入学习率和参数初始化方式的选择。每一层的输入都会受之前所有层的参数影响,并且随着网络越深,即使参数的变化很小也为对每一层的输入产生很大的影响。这使得训练一个网络变得十分复杂。
神经网络层输入分布的改变,使得神经网络层必须不停的适应新的数据分布。当一个学习系统的输入数据分布产生变化,我们称这种现象为:Experience Covariate Shift. 解决这种现象的典型方法是领域适应。然而,Covariate Shift的概念的适用性能够从整个学习系统扩展到该系统的一部分,比如一个子网络或者其中的一层。考虑一个网络计算
保持一个子网络的输入数据分布不变,对该子网络以外的隐藏层也有积极的作用。考虑一层激活函数为sigmoid函数的神经网络层 ,其中 u u 为该层的输入,权值矩阵 和偏置 b b 为该层需要学习的参数, . 随着 |x| | x | 的增大, g′(x) g ′ ( x ) 趋向0 (因为 g(x)→1 g ( x ) → 1 )。这意味着在 x=