卷积神经网络初始化方法总结

一、前言

  在 CNN 模型的训练过程中,权值初始化的恰当与否对结果有较大影响,不合适的初始化参数可能使得 CNN 训练时收敛缓慢或者无法收敛。
  在深度神经网络中,随着层数的增多,在反向传播的过程中,极易出现梯度消失或者梯度爆炸。因此,对权重w的初始化则显得至关重要,一个好的权重初始化虽然不能完全解决梯度消失和梯度爆炸的问题,但是对于处理这两个问题是有很大的帮助的,并且合适的初始化可以提升模型性能,也可以加速模型收敛。不同的初始化有不同的适用场合,对以下五大类模型初始化的方式进行总结:

  • 预训练初始化
  • 全0初始化
  • 固定值初始化
  • 固定方差的参数初始化
  • 方差缩放的参数初始化

二、预训练初始化

  预训练模型一般是在大规模数据上训练得到的,可以为新任务的模型提供一个较好的参数初始值,并能提升模型的泛化能力(一种解释是预训练任务起到一定的正则化作用)。

三、全0初始化

  在线性回归,logistics回归的时候,基本上都是把参数初始化为0,模型也能够很好的工作。然后在神经网络中,把w初始化为0是不可以的。如果全部初始化为0,在神经网络第一遍前向传播所有隐层神经网络**值相同,反向传播权重更新也相同,导致隐层神经元没有区分性,称为“对称权重”现象。为打破这个平衡,比较好的方式是对每个参数进行随机初始化。

四、固定值初始化

  固定值初始化适用于如下网络层:

1.BN层的初始化

  BN层中的gamma初始化为1,beta初始化为0。

2.LSTM

  LSTM遗忘门偏置通常为1或2,使时序上的梯度变大.

3.bias初始化

  • 对于偏置(bias)通常用0初始化
  • 对于ReLU神经元,偏置设为0.01,使得训练初期更容易**。

五、固定方差的参数初始化

1.高斯分布初始化

卷积神经网络初始化方法总结
  使用高斯分布随机初始化模型

2.均匀分布初始化

在[-r, r] 内采用均匀分布初始化,其方差为卷积神经网络初始化方法总结
r为:卷积神经网络初始化方法总结

3.固定方差初始化的缺点

  如何设置方差,如果太小或太大,信号经过sigmoid**函数后会进入**函数的饱和区,从而造成梯度消失等问题。
  另外如果太小,导致神经元输出过小,经过多层则信号消失了;同时sigmoid**丢失非线性(0附近基本是近似线性的)。

六.方差缩放的参数初始化

  如果一个神经元输入很多,则每个输入连接上的权重就应该小一些,以免输出过大,导致梯度爆炸或梯度消失(sigmoid)。因此,需要尽量保持每个神经元输入和输出方差一致,可以根据神经元连接数量自适应调整初始化分布的方差,称为“方差缩放”。

1.Xavier初始化

  也称为Glorot初始化,因为发明人为Xavier Glorot。Xavier initialization是 Glorot 等人为了解决随机初始化的问题提出来的另一种初始化方法,他们的思想就是尽可能的让输入和输出服从相同的分布,这样就能够避免后面层的**函数的输出值趋向于0。
  Xavier初始化在sigmoid和tanh**函数上有很好的表现,但是在Relu**函数上表现很差。

2.He初始化

  也称为Kaiming初始化,这种初始化解决了Xavier初始化在Relu**函数上性能差的问题,也是较为常用的初始化方法。
卷积神经网络初始化方法总结

七、BN层可以降低对初始化的要求

八、参考

神经网络参数初始化小结
深度学习中神经网络的几种权重初始化方法