一、背景
He初始化是何凯明等提出的一种鲁棒的神经网络参数初始化方法,动机同Xaviar初始化基本一致,都是为了保证信息在前向传播和反向传播过程中能够有效流动,使不同层的输入信号的方差大致相等。
二、假设
关于参数的大部分假设同Xaviar初始化一致,但是,He初始化对应的是非线性激活函数(Relu 和 Prelu),而Xaviar初始化对应的是线性激活函数。
三、推导
以下推导所用符号均参考原论文,释义详见原文。
3.1、前向传播过程推导
首先是下式成立,利用了随机变量的独立性得出,
其中, 表示第 层激活单元的数量,由于 和 独立,故
若令 ,则
若令 是以0为中心的对称分布,,则 ,且 以0为中心形成对称分布,则
所以有,
据此有,
若网络有 层,则
因此,合适的参数初始化应该避免使信号在前向传播过程中指数级的放大或者缩小,为此,下式应该满足,
因此,任意层的权重 ,应该按照均值为 0,且方差为 的高斯分布进行初始化,这样才能保证每一层的输入方差尺度一致。
输入层由于没有激活函数的参与(相当于线性激活),因此有 ,但是少一个 0.5 的因子对整体影响不大,因此输入层仍然和其它层采用一致的初始化。
3.2、反向传播过程推导
反向传播过程信息从后向前传递,推导过程理解起来较为困难,但是结论同前向传播基本一致,
其中, 表示第 层激活单元的数量,任意层的权重 ,应该按照均值为 0,且方差为 的高斯分布进行初始化。
3.3、如何选择
前向传播和反向传播得出的初始化方法,按照原文的解释,任意采用一种即可。
3.4、Prelu激活函数下的推导
前面的推导均基于Relu,对于Prelu,前向传播和反向传播的权重初始化推导结果如下,其中 是Prelu的调和系数,
可见,不同版本的Relu变种,公式上会有细微的差别,在使用新的激活函数时,需要适时的做一些改变。
四、讨论
1、每一层权重均按照标准差0.01来初始化,容易造成靠近网络输入层的梯度发生消失,进而停止学习;
2、Xaviar初始化和He初始化没有绝对的好坏,需要在同一激活函数类型基础上进行讨论,如果采用线性激活函数、sigmod或tanh(均在0附近呈现线性趋势)时,可采用Xaviar初始化,对于Relu或Prelu,应采用He初始化;
2、对于浅层网络,He初始化和Xaviar初始化不分伯仲,但是随着深度增加,Xaviar初始化会发送梯度消失,而He初始化不受影响;