深度模型(九):Batch Normalization

批量标准化

批量标准化(batch normalaization)概念由2015年的论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》提出,后被广泛的应用于深度学习领域。

下面来看一下批量标准化的计算过程。

比如训练数据mini batch的大小为 m m ,某个特征 x x 的取值为 [ x 1 , x 2 , . . . , x m ] [x_1,x_2,...,x_m] ,需要对特征 x x 做批量标准化,如何计算呢?

我们将 x x 的标准化的输出结果记为 y = [ y 1 , y 2 , . . . , y m ] , y i = B N γ , β ( x i ) , i [ 1 , m ] y=[y_1,y_2,...,y_m],y_i=BN_{\gamma,\beta}(x_i), i\in[1,m] ,则计算 B N γ , β BN_{\gamma,\beta} 的过程如下:

μ = 1 m i = 1 m x i \mu=\frac{1}{m}\sum_{i=1}^mx_i
σ 2 = 1 m i = 1 m ( x i u ) 2 \sigma^2=\frac{1}{m}\sum_{i=1}^m(x_i-u)^2
x ^ i = x i u σ 2 + ϵ \widehat x_i=\frac{x_i-u}{\sqrt{\sigma^2+\epsilon}}
y i = γ x i + β y_i=\gamma x_i + \beta

其中 γ , β \gamma,\beta 为待训练的参数, ϵ \epsilon 为超参。

本质思想

批量标准化的思想,来自于这样一个实验观察现象:当网络的输入分布符合标准分布的时候,训练会比较快的收敛。基于这样的现象,有理由可以猜想,如果网络的每一层的输入都符合标准分布,那么训练的过程应该更快。但是如果人为的改变上一层网络输出值的分布,可能会导致信息丢失,降低模型的表达能力,所以在标准化操作之后,引入的两个可学习的参数 γ , β \gamma,\beta ,来学习原始分布与标准化分布间的映射关系。这样即加快的模型的训练,有不会降低模型的表达能力。

发布了52 篇原创文章 · 获赞 105 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/gaofeipaopaotang/article/details/99869506