1. 前向传播和反向传播
在讲解梯度消失和梯度爆炸之前,我们需要先了解什么是前向传播和反向传播。
前向传播: 输入层数据开始从前向后,数据逐步传递至输出层。
反向传播: 损失函数从后向前,梯度逐步传递至第一层。
在讲解前向传播和反向传播计算过程之前,我们先介绍一下计算图的概念,通过计算图可以很清楚的了解后向传播的计算过程,以3层网络为例。
蓝色圆圈表示运算操作,分别为乘法,激活函数,乘法,损失函数;白色框框表示传播的数值;蓝色框框表示权重;
前向传播不同多说,不断的乘以权重在通过激活函数即可;
反向传播的计算过程本质是链式求导过程。下面为 W 1 W_1 W1的计算过程,从后向前逐步进行计算。
2. 梯度消失和梯度爆炸产生的原因
了解了前向传播和反向传播机制之后,再去了解梯度消失、爆炸就很简单了。
以5层网络为例,激活函数为 f ( z ) f(z) f(z), f i + 1 = f ( f i ⋅ x ) f_{i+1} = f(f_i \cdot x) fi+1=f(fi⋅x),通过计算图给出 W 1 W_1 W1的梯度推导公式,我们将根据这个公式进行梯度消失、爆炸的分析。
Δ W 1 = ∂ l o s s ∂ o u t ∂ o u t ∂ f 3 ∂ f 3 ∂ 2 ∂ f 2 ∂ f 1 ∂ f 1 ∂ W 1 = ∂ l o s s ∂ o u t W 4 f ′ W 3 f ′ W 2 f ′ x Δ W 2 = ∂ l o s s ∂ o u t ∂ o u t ∂ f 3 ∂ f 3 ∂ f 2 ∂ f 2 ∂ W 2 = ∂ l o s s ∂ o u t W 4 f ′ W 3 f ′ f 1 \Delta W_1 = \frac {\partial loss} {\partial out} \frac {\partial out} {\partial f3} \frac { \partial f3} {\partial 2} \frac {\partial f2} {\partial f1} \frac {\partial f1} {\partial W_1} \\ \quad \\ = \frac {\partial loss} {\partial out} W_4f'W_3f'W_2f'x \\ \quad \\ \Delta W_2 = \frac {\partial loss} {\partial out} \frac {\partial out} {\partial f3} \frac { \partial f3} {\partial f_2} \frac {\partial f_2} {\partial W_2} \\ \quad \\ = \frac {\partial loss} {\partial out} W_4f' W_3f'f_1 ΔW1=∂out∂loss∂f3∂out∂2∂f3∂f1∂f2