
读论文不认真的后果……梯度消失/爆炸是激活函数和权重相互作用产生的联合效果,不单单是激活函数的问题,不管你用 sigmoid/tanh 还是 ReLU 都有可能发生梯度消失/爆炸,只是发生的频繁程度不同。
每层神经网络大体是一次矩阵乘法(线性变换)再接一次激活函数,例如这样:
求导以后是这样:
其中第一项是每个元素都小于 1 的对角阵(假设这里用 sigmoid 激活函数,其他激活函数可同理分析),于是特征值也小于 1,会产生压缩的效果;而第二项特征值的大小与 W 本身有关,既可能收缩也可能扩张。
假如 W 的所有特征值都小于 1,那么此时两项相乘也是收缩的效果;反之,两项的乘积有可能(注意不是一定)产生扩张的效果。多层累积以后,就有可能发生梯度消失和梯度爆炸。
举个 RNN 的例子吧:
论文第二节说的很清楚:
