批量标准化
批量标准化(batch normalaization)概念由2015年的论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》提出,后被广泛的应用于深度学习领域。
下面来看一下批量标准化的计算过程。
比如训练数据mini batch的大小为
m,某个特征
x的取值为
[x1,x2,...,xm],需要对特征
x做批量标准化,如何计算呢?
我们将
x的标准化的输出结果记为
y=[y1,y2,...,ym],yi=BNγ,β(xi),i∈[1,m],则计算
BNγ,β的过程如下:
μ=m1i=1∑mxi
σ2=m1i=1∑m(xi−u)2
x
i=σ2+ϵ
xi−u
yi=γxi+β
其中
γ,β为待训练的参数,
ϵ为超参。
本质思想
批量标准化的思想,来自于这样一个实验观察现象:当网络的输入分布符合标准分布的时候,训练会比较快的收敛。基于这样的现象,有理由可以猜想,如果网络的每一层的输入都符合标准分布,那么训练的过程应该更快。但是如果人为的改变上一层网络输出值的分布,可能会导致信息丢失,降低模型的表达能力,所以在标准化操作之后,引入的两个可学习的参数
γ,β,来学习原始分布与标准化分布间的映射关系。这样即加快的模型的训练,有不会降低模型的表达能力。