用Ik代表第K个神经元的总输入,用Ok代表第k个神经元的输出。
举例计算5号神经元的梯度:
Gk有可能在传播过程中绝对值越来越小(直到变成0),这称为梯度消失,其会使得网络的训练停滞不前。
Gk有可能在传播过程中绝对值越来越大(直到发散),这称为梯度爆炸,其会使得网络不稳定,性能崩溃。
梯度消失举例:
如果采用sigmoid或tanh非线性,在输入的绝对值很大的时候,会出现“饱和”,即导数趋近0,根据公式,会造成梯度消失。
梯度爆炸的例子:
如果网络中的W很大,例如初始化网络时使用了过大的初始值,或是网络的权重随着训练越来越大,就可能发生梯度爆炸。对于循环神经网络和GAN,较为容易出现这种现象。
因此,如果发现网络的训练性能很差,就要考虑是否出现了梯度消失和梯度爆炸。
改善梯度可通过多种技巧,包括批规范化、残差网络,还可采用梯度截断技术,或引入一定的梯度惩罚。