深度学习之参数初始化(二)——Kaiming初始化

Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun.
ICCV 2016.

在介绍Xavier初始化方法的这篇博客的最后,我们提到Xavier初始化方法适用的激活函数有限:关于0对称;线性。而ReLU激活函数并不满足这些条件,实验也可以验证Xavier初始化确实不适用于ReLU激活函数。

Kaiming初始化

残差网络的作者在这篇论文中提出了ReLU网络的初始化方法:Kaming初始化。作者的推导过程针对的其实是卷积网络的前向和反向过程(惊奇地发现自己好像没有推导过卷积网络的梯度表达式)。而为了和Xavier初始化方法保持一致,这里我们还是讨论全连接网络结构。
关于期望、方差的性质,我们已经在Xavier初始化一节介绍过了,这里不再重复。

在Xavier论文中,作者给出的Glorot条件是:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。这在本文中稍作变换:正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变。
网络的表达式:

zi=Wihi1,(1)

hi=f(zi).(2)


前向过程

由公式(1)可知:

Var(zi)===ni1Var(Wihi1)ni1[E(Wihi1)2(E(Wihi1))2]ni1[E(Wi)2E(hi1)2(E(Wi))2(E(hi1))2]

假设
E(Wi)=0(3)

又激活函数是ReLU,所以激活值的期望 E(hi1) 不为0。于是上式可以写成

Var(zi)==ni1E(Wi)2E(hi1)2ni1Var(Wi)E(hi1)2.(4)


E(hi1)2=======E(f(zi1))2p(zi1)(f(zi1))2dzi10p(zi1)(f(zi1))2dzi1+0p(zi1)(f(zi1))2dzi10+0p(zi1)(zi1)2dzi112p(zi1)(zi1)2dzi112E(zi1)212Var(zi1)(5)

把公式(5)代入公式(4)可以得到

Var(zi)=12ni1Var(Wi)Var(zi1).(6)

于是

Var(zi)=Var(z1)i=2i(12ni1Var(Wi)).(7)

为了让正向传播时状态值的方差不变,有

12ni1Var(Wi)=1,

于是:

Var(Wi)=2ni1.(8)

反向过程

Jhi=Jzi+1zi+1hi=(Wi+1)TJzi+1(9)

故:

Var(Jhi)====ni+1Var(Wi+1Jzi+1)ni+1Var(Wi+1)E(Jzi+1)2ni+1Var(Wi+1)E(Jhi+1f(zi+1))2ni+1Var(Wi+1)E(Jhi+1)2E(f(zi+1))2.(10)


E(f(zi+1))2=12,(11)

由公式(3)和公式(9)可知

E(Jhi+1)=0.(12)

把公式(11)和公式(12)代入公式(10)得到

Var(Jhi)=12ni+1Var(Wi+1)Var(Jhi+1).(13)

于是

Var(Jhi)=Var(Jhd)( i=i+1d12niVar(Wi)).(14)

为了让反向传播时关于激活值的梯度的方差不变,有

12ni+1Var(Wi+1)=1

得到

Var(Wi+1)=2ni+1

即:

Var(Wi)=2ni(15)


公式(8)和公式(15)就是Kaiming初始化应该满足的条件。这篇论文中Kaiming初始化方法为:均值为0方差为(8)或者(15)的高斯分布。

Kaiming初始化的推导过程和Xavier初始化的推导过程最重要的差别在于公式(4)和公式(10)中:即激活函数的期望和激活函数的导数的期望不再为0。

你可能感兴趣的:(深度学习)