目录
神经网络模型一般依靠随机梯度下降进行模型训练和参数更新,网络的最终性能与收敛得到的最优解直接相关,而收敛结果实际上又很大程度取决于网络参数的最开始的初始化。理想的网络参数初始化使模型训练事半功倍,相反,糟糕的初始化方案不仅会影响网络收敛,甚至会导致梯度弥散或爆炸。
参数初始化的理想状态是参数正负各半,期望为0。
过大或者过小的初始化
如果权值的初始值过大,则会导致梯度爆炸,使得网络不收敛;过小的权值初始值,则会导致梯度消失,会导致网络收敛缓慢或者收敛到局部极小值。
如果权值的初始值过大,则loss function相对于权值参数的梯度值很大,每次利用梯度下降更新参数的时,参数更新的幅度也会很大,这就导致loss function的值在其最小值附近震荡。
而过小的初值值则相反,loss关于权值参数的梯度很小,每次更新参数时,更新的幅度也很小,着就会导致loss的收敛很缓慢,或者在收敛到最小值前在某个局部的极小值收敛了。
1. 所有的参数初始化为0或者相同的常数
最简单的初始化方法就是将权值参数全部初始化为0或者一个常数,但是使用这种方法会导致网络中所有的神经元学习到的是相同的特征。
当网络达到稳定状态时, 参数(权值)在理想情况下应该保持正负各半(此时期望为0)。因此一种看起来简单的方法,干脆将所有参数都初始化为0, 因为这样可以使得初始化全零时参数的期望与网络稳定时参数期望一致。
但是,参数全是零时网络不同神经元的输出必然相同,相同的输出必然导致梯度更新完全一样,这样会令更新后的参数仍然保持一样的状态。换句话说,如果参数进行了全零的参数化,那么网络神经元将无法训练模型。例如,对于y=WX+by=WX+by=WX+b,由于参数W需要和X乘积,因此不能初始化为0,而b可以。
2. Xavier
初始化方法由Bengio等人在2010年的论文《Understanding the difficulty of training deep feedforward neural networks》中提出。
它为了保证前向传播和反向传播时每一层的方差一致:在正向传播时,每层的激活值的方差保持不变;在反向传播时,每层的梯度值的方差保持不变。根据每层的输入个数和输出个数来决定参数随机初始化的分布范围,是一个通过该层的输入和输出参数个数得到的分布范围内的均匀分布。
基于上述的准则,初始的权值参数(l为网络的第l层)要符合以下公式(或派生公式之一):
其中是第l−1层的神经元的个数。 也就是说,初始的权值W可以从均值μ=0,方差为
的正态分布中随机选取。
正向传播的推导过程:
推导过程中的三个假设:
- 权值矩阵w是独立同分布的,且其均值为0
- 每一层的输入a是独立同分布的,且均值也为0
- w和a是相互独立的
设l层的权值矩阵为W,偏置为b,其输入为a,激活函数为tanh:
Xavier假设的激活函数为tanh,其函数曲线为
其中间的部分可以近似线性linear regime,而在训练的过程就要保证激活值是落在这个线性状体的区间内的,不然就会出现梯度饱和的情况。所以,这里可以近似的有:
也就意味着:
根据以上三个假设可知:
由方差公式
得:
由第一第二个假设可知:l层输入的均值为0,权值参数W的均值也为0,即,
,因此
上面的等式来自于第一个假设:
第二个假设:
同样的有:
注意:以上三个公式没有看懂,有理解的小伙伴,可以在留言区留言
所以:
x作为输入,则迭代为:
因为各层输入的方差保持一致则:
注意:以上正向传播的详细推导见https://www.deeplearning.ai/ai-notes/initialization/
反向传播的推导过程,同正向传播推导类似得:
又因为:
注意:以上公式没有看懂,有理解的小伙伴,可以在留言区留言
所以
为了均衡考量,最终我们的权重方差应满足:
限制
对于权值的初始化,Glorot提出两个准则:
- 各个层激活值的方差保持不变(正向传播)
- 各个层的梯度值的方差保持不变(反向传播)
在Xavier的推导的过程中,做了以下假设:
- 权值矩阵w是独立同分布的,且其均值为0
- 每一层的输入a是独立同分布的,且均值也为0
- w和a是相互独立的
Xavier的初始化有个假设条件,激活函数关于0对称,且主要针对于全连接神经网络。适用于tanh和softsign。
均匀分布
正太分布
原始论文
Understanding the difficulty of training deep feedforward neural networksf
3. MSRA
由何凯明在论文Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification提出,由于Xavier的假设条件是激活函数是关于0对称的,而常用的ReLU激活函数并不能满足该条件。
只考虑输入的个数,MSRA的初始化是一个均值为0,方差为的高斯分布:
正向传播的推导过程:
其前半部分的推导和Xavider类似,对于第l层,有如下公式 :
其中:
-
为当前层的输入,也是上一层的激活后的输出值
为当前层输入到激活函数的值
和
为权值和偏置
其中xl 以及wl 都是独立同分布的,(和Xavier相同的假设条件),则有:
设wl 的均值为0,即,则有:
这里有和Xavier一个很大的不同是,这里没有假设输入的值的均值为0。这是由于,使用ReLU的激活函数,xl=max(0,yl−1),每层输出的值不可能均值为0。
上面最终得到:
初始化时通常设,w的均值为0,偏置b=0以及w和x是相互独立的,则有:
也就是说,yl的均值为0。
再假设w是关于0对称分布的(均匀分布,高斯分布都符合),则可以得到yl在0附近也是对称分布的。
这样,使用ReLU作为激活函数,则有:
由于只有当>0的部分,
才有值,且
在0附近也是对称分布的,则可以得到:
将得到的:
带入到:
则可以得到:
将所有层的方差累加到一起有:
为了是每一层的方差保持不变,则有:
也即得到 权值矩阵的方差应该是:
反向传播的推导过程:
正态分布
均匀分布
原始论文:
Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification