深度神经网络的训练难点
深度神经网络是很多个隐藏层的神经网络,可以学习到不同抽象程度的概念。
例如:图像中,第一层学到边角,第二层学到一些基本形状,第三层学到物体概念。
训练深度学习网络时,不同层的学习率明显不同,接近输出层学习率比较合适,但是前面的层学习太慢,有时会被困住,这个问题被称为消失的Gradient问题(VanishingGradientProblem)。
理论原因
假设每层只有一个神经元
对于每一级神经元有zj=wjaj−1+bj,同时得到∂b1∂C的表达式
∂b1∂C=σ′(z1)×w2×σ′(z2)×w3×σ′(z4)×∂a4∂C
对b1的一个小变化引起的C的变化
∂b1∂C≈Δb1ΔC
如何引起b1的变化
a1=σ(z1)=σ(w1a0+b1)
衡量z1的变化
Δa1≈∂b1∂σ(w1a0+b1)Δb1=σ′(z1)Δb1
a1的变化又引起z2的变化,z2=w2×a1+b2
Δz2≈∂a1∂z2Δa1=w2Δa1
把以上a1的变化代入z2的变化
Δz2≈σ′(z1)w2Δb1
根据以上规律可以进行推导
ΔC≈σ′(z1)w2σ′(z2)...σ′(z4)∂a4∂CΔb1
等式两边同时除以b1的变化,得到
∂b1∂C=σ′(z1)w2σ′(z2)...σ′(z4)∂a4∂C
根据上图,σ′的值小于1/4,∣w∣的值小于等于1,因此在不断连乘的情况下,这个值会不断减小。
解决方法
利用其他激活函数,比如ReLU来代替Sigmod