《深度学习之图像识别核心技术与案例实战》—2.2.2 参数初始化方法
2.2.2 参数初始化方法
为了让神经网络在训练过程中学习到有用的信息,参数梯度应该保持非零。在全连接神经网络中,参数初始化应该满足以下两个条件:
* 各层激活值不会出现饱和现象;
* 各层激活值不为0。
若把参数都初始化为0,经过正向传播和反向传播后,所有参数经过相同的更新过程导致迭代获得的参数值都是一样的,严重地影响了模型的性能。一般只在训练SLP/逻辑回归模型时才使用0初始化所有参数,深度模型都不会使用0初始化所有参数。
常用的参数初始化方法有如下几种。
1.随机生成小的随机数
将参数初始化为小的随机数,从均值为0,标准差是1的高斯分布中取样,这样参数的每个维度来自一个多维的高斯分布。一般而言,参数的初始值不能太小,因为较小的参数在反向传播时会导致过小的梯度产生,对于深度网络而言,会产生梯度弥散问题,降低参数的收敛速度。
2.标准初始化
权重参数从确定的区间内均匀随机取值,即从均匀分布中生成当前神经元的权重,其中d为每个神经元的输入数量。除以d,可以确保神经元的输出有相同的分布,提高训练的收敛速度。标准初始化方法隐层状态的均值为0,方差为常量的1/3,和网络的层数无关,即对Sigmoid函数而言,其自变量始终落在有梯度的范围内。
3.Xavier初始化
理想的初始化应该使各层的激活值和状态梯度的方差在传播过程中的方差保持一致,否则更新后的激活值方差若发生改变,将造成数据的不稳定。
Xavier初始化首先作出如下3个假设,这3个都是关于激活函数的假设,也称为Glorot激活函数假设。
(1)输入的每个特征方差一样:Var(x)。
激活函数对称,这样就可以假设每层的输入均值都是0:
(2)初始时,状态值落在激活函数的线性区域:。
Xavier初始化取值为:
(2.8)
(3)这个区间是根据以式(2.9)所得:
(2.9)
其中,ni和ni+1表示输入和输出维度。激活值的方差和层数无关,反向传播梯度的方差和层数无关。Xavier通常与ReLU共同使用。
- 点赞
- 收藏
- 关注作者
评论(0)