深度学习模型的初始化

一、为什么要初始化?

神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作用。其中,初始点的选取,有时能够决定算法是否收敛。当收敛时,初始点可以决定学习收敛的多快,是否能够收敛到一个代价高或低的点。过大的初始化导致梯度爆炸,过小的初始化导致梯度消失。

深度学习模型的初始化_第1张图片

 二、什么是好的初始化?

好的初始化应该满足以下两个条件:

1、让各神经元层激活值不会出现饱和现象;

2、各层激活值也不能为0。

三、常见初始化方法

1、全零初始化

特点:参数初始值为0。

缺点:同一层的神经元会学习到相同的特征,不能破坏不同神经元的对称性质。如果神经元的权重被初始化为0 ,所有神经元的输出都将是相同的,除了输出之外,所有的中间层的节点的值都为零。一般神经网络拥有对称的结构, 那么在进行第一次误差反向传播时,更新后的网络参数将会相同,在下一次更新时,相同的网络参数学习提取不到有用的特征,因此深度学习模型都不会使用0初始化所有参数。

深度学习模型的初始化_第2张图片

2、随机初始化 

随机初始化:将参数初始化为小的随机数。一般随机值从均值为μ ,标准差是σ的高斯分布中取样,最终参数的每个维度来自一个多维的高斯分布。
缺点:一旦随机分布选择不当,就会导致网络优化陷入困境。若参数初始值取得太小,在反向传播时会
导致小的梯度,对于深度网络来说,会产生梯度弥散问题,降低参数的收敛速度。 若参数初始值取得太大,那么神经元会容易饱和。

深度学习模型的初始化_第3张图片

3、 Xavier初始化

Xavier初始化 :保持每一层的输入和输出的方差一致。 将参数初始化为:

W^{[l]]}\sim N(\mu =0,\sigma ^{2}=\frac{1}{n^{[l-1]}}),b^{l}=0

其中W^{l}为l层的所有权重,是从均值μ=0,方差\sigma ^{2}=\frac{1}{n^{[l-1]}}的正态分布中随机选取的,n^{[l-1]}是层l-1中盛神经元的数量;偏置b被初始化为0。
缺点:没有考虑激活函数对数据分布的影响。

深度学习模型的初始化_第4张图片

 4、He初始化

He初始化:在ReLU网络中,假定每一层有一半的神经元被激活,另一半为0 ,所以,要保持var不,
变,只需要在Xavier的基础上再除以2 ,即将参数初始化为:

 W^{[l]]}\sim N(\mu =0,\sigma ^{2}=\frac{2}{n^{[l-1]}}),b^{l}=0

其中W^{l}为l层的所有权重,是从均值μ=0 ,方差\sigma ^{2}=\frac{2}{n^{[l-1]}}的正态分布中随机选取的, n^{[l-1]}是层
l-1中神经元的数量;偏置b被初始化为0。
●优点:考虑了ReLU对输出数据分布的影响,使得输入和输出的方差保持一致。

 

 

你可能感兴趣的:(深度学习,人工智能,算法)