梯度消失/梯度爆炸(Vanishing / Exploding gradients)
梯度消失或梯度爆炸:训练神经网络的时候,导数或坡度有时会变得非常大,或者非常小,甚至于以指数方式变小,这加大了训练的难度。
g(z)=z,b[l]=0g(z)=z,b^{[l]}=0g(z)=z,b[l]=0
y^=W[l]W[l−1]W[l−2]⋯W[3]W[2]W[1]x\hat{y}=W^{[l]}W^{[l-1]}W^{[l-2]}\cdots W^{[3]}W^{[2]}W^{[1]}xy^=W[l]W[l−1]W[l−2]⋯W[3]W[2]W[1]x
z[1]=W[1]xz^{[1]}=W^{[1]}xz[1]=W[1]x
a[1]=g(z[1])=z[1]a^{[1]}=g(z^{[1]})=z^{[1]}a[1]=g(z[1])=z[1]
a[2]=g(z[2])=g(w[2]a[1])a^{[2]}=g(z^{[2]})=g(w^{[2]}a^{[1]})a[2]=g(z[2])=g(w[2]a[1])
⋯\cdots⋯
若:W[l]=[1.5001.5],y^=W[L][1.5001.5]L−1xW^{[l]}=\left[ \begin{matrix}1.5&0\\0&1.5\end{matrix} \right],\hat{y}=W^{[L]}\left[ \begin{matrix}1.5&0\\0&1.5\end{matrix} \right]^{L-1}xW[l]=[1.5001.5],y^=W[L][1.5001.5]L−1x
注:假设 W[L]W^{[L]}W[L] 更 W[l]W^{[l]}W[l] 相等
这会导致 y^\hat{y}y^ 呈指数级增长,比率:1.5L1.5^L1.5L
相反,若 W[l]=[0.5000.5],y^=W[L][0.5000.5]L−1xW^{[l]}=\left[ \begin{matrix}0.5&0\\0&0.5\end{matrix} \right],\hat{y}=W^{[L]}\left[ \begin{matrix}0.5&0\\0&0.5\end{matrix} \right]^{L-1}xW[l]=[0.5000.5],y^=W[L][0.5000.5]L−1x
- 这会导致激活函数的值将以指数级下降,它是与网络层数数量 LLL 相关的函数,在深度网络中,激活函数以指数级递减。
若 W[l]W^{[l]}W[l] 略大于 1,激活函数将爆炸式增长
若 W[l]W^{[l]}W[l] 略小于 1,激活函数将以指数级递减
同理:与层数 LLL 相关的导数或梯度函数