赞
踩
这里仅仅做一些数学上的简单分析,首先看sigmoid的公式:
sigmoid=σ(z)=11+e−zsigmoid=σ(z)=11+e−z
它的导数:
σ(z)′=e−z(1+e−z)2=σ(z)∗(1−σ(z))σ(z)′=e−z(1+e−z)2=σ(z)∗(1−σ(z))
σ(z)σ(z)的图像如下:
也就是说任何输入都会被缩放到0到1,如果隐层的所有layer都使用sigmoid,除了第一层的输入,最后一层的输出,其他层的输入输出都是0到1,看看σ(z)′σ(z)′的完整图像:
z大概在-5到5之间,σ(z)′σ(z)′才有值,而除第一层隐层的输入都在0到1之间,所以σ(z)′σ(z)′的图像如下:
σ(z)′σ(z)′最终取值大概0.2到0.25之间,下面以一个简单的神经原结构举例:
∂L∂z=σ′(z)(w1∂L∂z′+w2∂L∂z′′)∂L∂z=σ′(z)(w1∂L∂z′+w2∂L∂z″)
∂L∂w=∂L∂z∂z∂w=a∂L∂z∂L∂w=∂L∂z∂z∂w=a∂L∂z
由于σ(z)′σ(z)′会把∂L∂z∂L∂z缩小4至5倍,而这个∂L∂z∂L∂z又会影响前一层的∂L∂z∂L∂z,反向下去,每一层的∂L∂z∂L∂z在不断被缩小,深度越深这种连锁反应越明显,越靠近输入层越小,∂L∂w∂L∂w中a又是0到1之间的梯度再次被整体缩小,这里主要考虑了σ′(z)σ′(z)以及∂L∂z∂L∂z的传递性以及输入a带来的影响,我认为权重w只会对局部的∂L∂z∂L∂z带来影响,而σ(z)′σ(z)′带来的这种连续缩小的影响将传递到计算前层的∂L∂z∂L∂z中。
梯度消失带来的影响,靠近输入层的参数几乎不能被更新,靠近输入层的layer预测结果不准确,产生对整个后面的影响,最后无法训练。