梯度爆炸与梯度消失
sigmoid数学公式:
值域为[0,1]
sigmoid求导公式:
值域为[0,1/4]
实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定。
梯度弥散: 靠近输出层的hidden layer 梯度大,参数更新更快,所以很快就会收敛。而靠近输入层的hidden layer梯度小,参数更新慢,几乎和初始状态一样,随机分布。
梯度爆炸: 当前面hidden layer的梯度通过训练变大,而后面的梯度将会指数级增大。
现象原因: sigmoid函数会将[+∞,-∞]的输入压缩到[0,1],导致当输入更新时,输出的更新会很小。在这种情况下,就会随着隐藏层数的增加,反向传递时,数值更新将会越来越小。
解决方法:
- Relu函数代换Sigmoid函数。
- 逐层贪婪预训练,如同训练自编码器的过程&