一种有效的神经网络权重初始化方法

    本文介绍一种权重初始化方法,它可以很大程度上避免神经元过早饱和而导致的学习率下降问题。

一、问题引出

    一种简单而有效的方法是将每个权重看作一个服从均值为0且方差为1的高斯分布,然后独立的对每个权重从分布中采样进行初始化。如下图所示。假设输入层有1000个神经元,我们聚焦第二层的第一个隐单元来研究这个问题。同时,假设这1000个输入神经元中有500个值为0, 另外500个值为1。

    根据上述的设定,同时依据统计学中多个独立随机变量和的方差定义,可以得出

                                                                                        z = \sum_jw_j x_j+b

隐单元的输入值 z 服从均值为0,标准差为 \sqrt{501} \approx 22.4,这使得该分部的两侧的尾部特别长,如下图所示。

     位于 [1,-1] 之间的区域远远小于两侧的区域,这将使 z 的值相对较大,从而隐单元的激活值达到或接近饱和状况,这将会造成学习率严重下降。

 

二、改进策略

    可以看到,单纯使用均值为0且方差为1的高斯分布会引起学习率下降,那如何改进这个方法那? 可以这样改进,假设隐单元有 n_{in} 个输入,那么可以改用均值为0但是方差为 \frac{1}{n_{in}},这样一来,隐单元的输入值

                                                                                    z = \sum_jw_j x_j+b

的方差将是1。现在得到的分布如下图,这样便可以大大减少隐单元过早饱和的概率,学习率下降的可能性也大大减小。

 

三、总结

    本文给出了一种在实践中有效的权重初始化方法,很多类似的方法均以此为核心。其实, 无论是什么方法,其本质均是避免隐单元过早饱和而导致的初始学习率过低的问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章