1. 为什么要选择合适的权重初始化
在训练一个神经网络模型之前,我们需要对模型中的权重进行初始化。这时,选择一个合适权重初始化方法尤为重要,一个好的权重初始化方法能够加速模型收敛减少训练时间。
2. 合适的初始化方法应该具备哪些条件
- 早期标准
- 各层激活值不会出现饱和现象(早期激活函数主要以Sigmoid为主)。
- 各层激活值不为0。
- Glorot条件
- 前向过程中,各层激活值方差不变。
- 反向过程中,各层梯度值方差不变。
3.常用的几种权重初始化方法
- 零初始化
- 随机初始化
- Xavier初始化
- He 初始化
- 预训练权重
3.1 零初始化
零初始化将所有的权重 W W W设为0。将所有的权重 W W W设为0会出现“对称问题”,也就是每个神经元学到的东西都一样最终导致神经网络训练失败。
3.2 随机初始化
随机初始化从一些分布中随机采样若干个小值赋值给权重 W W W。主要目的是防止出现零初始化中的对称问题。
常用的几个分布:
- 均匀分布
- 高斯分布
- 截断正态分布
3.3 X a v i e r 初 始 化 [ 1 ] Xavier初始化^{[1]} Xavier初始化[1]
随机初始化方法采用从均匀分布和高斯分布中随机采样值,那么均匀分布的上界和下界分别取什么值比较好?高斯分布的方差该怎么取值?Xavier初始化在保证每一层激活值具有相同方差的前提下,推导出了参考值。
- 均匀分布
W ∼ U [ − 6 n i n + n o u t , 6 n i n + n o u t ] W\sim U[-\frac{6}{n_{in}+n_{out}}, \frac{6}{n_{in}+n_{out}}] W∼U[−