7.3 参数初始化
- 神经网络的参数学习是一个非凸优化问题.当使用梯度下降法来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力.参数初始化的方式通常有以下三种:
- 预训练初始化:不同的参数初始值会收敛到不同的局部最优解.虽然这些局部最优解在训练集上的损失比较接近,但是它们的泛化能力差异很大.一个好的初始值会使得网络收敛到一个泛化能力高的局部最优解。通常情况下,一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值,这种初始化方法称为预训练初始化(Pre-trained Initialization)。
- 随机初始化:在线性模型的训练(比如感知器和Logistic 回归)中,我们一般将参数全部初始化为0.但是这在神经网络的训练中会存在一些问题.因为如果参数都为0,在第一遍前向计算时,所有的隐藏层神经元的激活值都相同;在反向传播时,所有权重的更新也都相同,这样会导致隐藏层神经元没有区分性.这种现象也称为对称权重现象.为了打破这个平衡,比较好的方式是对每个参数都随机初始(Random Initialization),使得不同神经元之间的区分性更好。
- 固定值初始化:对于一些特殊的参数,我们可以根据经验用一个特殊的固定值来进行初始化.比如偏置(Bias)通常用0 来初始化,但是有时可以设置某些经验值以提高优化效率.在LSTM网络的遗忘门中,偏置通常初始化为1 或2,使得时序上的梯度变大.对于使用ReLU 的神经元,有时也可以将偏置设为0.01,使得ReLU 神经元在训练初期更容易激活,从而获得一定的梯度来进行误差反向传播.