深度学习| 正向传播和反向传播、梯度爆炸和梯度消失

本文详细解释了神经网络中的正向传播和反向传播过程,以及梯度爆炸和梯度消失现象的成因,特别关注了激活函数、权重初始化和深度网络的影响。
摘要由CSDN通过智能技术生成

前向传播和反向传播

以一个简单的神经网络为例子,讲解神经网络前向传播和反向传播的计算。
在这里插入图片描述

前向传播

前向传播(Forward Propagation,缩写为FP)是按顺序计算和存储神经网络中每层的结果,从而达到神经网络的运行。

h 1 h_1 h1的计算: h 1 = x 1 ⋅ w 1 + x 2 ⋅ w 2 h_1=x_1 \cdot w_1+x_2 \cdot w_2 h1=x1w1+x2w2
h 2 h_2 h2的计算: h 2 = x 1 ⋅ w 3 + x 2 ⋅ w 4 h_2=x_1 \cdot w_3+x_2 \cdot w_4 h2=x1w3+x2w4
y ′ y \prime y的计算: y ′ = h 1 ⋅ w 5 + h 2 ⋅ w 6 y \prime =h_1 \cdot w_5+h_2 \cdot w_6 y=h1w5+h2w6

为了方便理解,这里并没有加入激活函数和bias偏置值。

反向传播

反向传播(Back propagation,缩写为BP)是通过链式求导来更新神经网络中的权重,从而达到人工神经网络的训练。
简单来说,就是用损失函数对每一网络层的每一个参数求偏导,利用偏导的值来更新权重。

例如更新 W 5 W_5 W5的权值:
先用损失函数对 W 5 W_5 W5求偏导 ∂ δ ∂ W 5 = ∂ δ ∂ y ′ ∂ y ′ ∂ W 5 \frac{\partial \delta}{\partial W_5}=\frac{\partial \delta}{\partial y \prime} \frac{\partial y \prime}{\partial W_5} W5δ=yδW5y
∂ δ ∂ y ′ = 2 ⋅ 1 2 ( y − y ′ ) ⋅ ( − 1 ) \frac{\partial \delta}{\partial y \prime}=2\cdot \frac{1}{2}(y-y \prime) \cdot(-1) yδ=221(yy)(1)
∂ y ′ ∂ W 5 = h 1 + 0 \frac{\partial y \prime}{\partial W_5} =h_1+0 W5y=h1+0
通过带入正向传播计算出来的 y 、 y ′ 、 h 1 y、y \prime、h_1 yyh1,即可求出偏导数 ∂ δ ∂ W 5 \frac{\partial \delta}{\partial W_5} W5δ
通过偏导数对 W 5 W_5 W5的权值进行更新: w 5 ( u p d a t e ) = w 5 − η ⋅ ∂ δ ∂ W 5 {w_5}^{(update)}=w_5-\eta \cdot{\frac{\partial \delta}{\partial W_5}} w5(update)=w5ηW5δ,其中 η \eta η为超参数,可以自行设定。

其它权重更新也是差不多的,只不过求导的次数更多,遵守链式求导法则即可求出,例如损失函数对 W 1 W_1 W1求偏导 ∂ δ ∂ W 1 = ∂ δ ∂ y ′ ∂ y ′ ∂ h 1 ∂ h 1 ∂ W 1 \frac{\partial \delta}{\partial W_1}=\frac{\partial \delta}{\partial y \prime} \frac{\partial y \prime}{\partial h_1} \frac{\partial h_1} {\partial W_1} W1δ=yδh1yW1h1

梯度爆炸和梯度消失

介绍

梯度是什么?梯度是一个向量,是一个n元函数f关于n个变量的偏导数,梯度会指向各点处的函数值降低的方向。前面反向传播求权重偏导数的过程其实就是一个在求梯度的过程,神经网络通过梯度下降来找到“最优”的网络参数。

梯度爆炸:随着反向传播,并没有梯度下降,反而梯度增加。

梯度消失:随着反向传播,梯度会越来越小,最终没有变化,但并没有收敛到比较优的解。

产生的原因

本质上是反向传播的链式法则导致激活函数导数的连乘,以及权重初始值过大/小

前面介绍正向传播和反向传播的时候,为了讲解方便所以公式并没有加入激活函数和bias偏置项,但实际上神经网络常常都会加入激活函数bias
引入激活函数是为了引入非线性,让神经网络更好应用到非线性模型中。
引入bias是为了具有更复杂的参数结构,更好的拟合。例如 s i g m o i d ( w x ) sigmoid(wx) sigmoid(wx),不同权重w的 s i g m o i d ( w x ) sigmoid(wx) sigmoid(wx)函数形状会改变,但是位置不会改变,而加入了bias后 s i g m o i d ( w x + b ) sigmoid(wx+b) sigmoid(wx+b)函数就可以左右平移。

介绍激活函数和bias的原因,是因为接下来推导需要用到,以及梯度爆炸和梯度消失产生的原因和激活函数有关。

以一个四层神经网络为例子,简单理解一下梯度(偏导数)的推导,从而来理解梯度爆炸和消失产生的原因。
在这里插入图片描述
每层神经元的函数为 f i f_i fi,激活函数记为F,递推关系 f i + 1 = F ( f i × w i + 1 + b i + 1 ) f_{i+1}=F(f_i×w_{i+1}+b_{i+1}) fi+1=F(fi×wi+1+bi+1)
既然是为了理解梯度爆炸和消失的原因,那么我们就要找出梯度相关的表达式。
梯度和权重更新的差值有关,也就是权重的偏导数相关 △ w = − η ⋅ ∂ δ ∂ W \triangle w=-\eta \cdot\frac{\partial \delta}{\partial W} w=ηWδ

△ W 3 \triangle W_3 W3的计算化简作为例子。
∂ δ ∂ W 2 = ∂ δ ∂ f 3 ∂ f 3 ∂ f 2 ∂ f 2 ∂ W 2 \frac{\partial \delta}{\partial W_2}= \frac{\partial \delta}{\partial f_3} \frac{\partial f_3}{\partial f_2} \frac{\partial f_2}{\partial W_2} W2δ=f3δf2f3W2f2
∂ f 2 ∂ W 2 = ∂ F ( f 1 × w 2 + b 2 ) ∂ W 2 = F ′ f 1 \frac{\partial f_2}{\partial W_2}=\frac{\partial F(f_1×w_2+b_2)}{\partial W_2}=F\prime f_1 W2f2=W2F(f1×w2+b2)=Ff1
∂ f i + 1 ∂ f i = ∂ F ( f i × w i + 1 + b i + 1 ) ∂ f i = F ′ w i \frac{\partial f_{i+1}}{\partial f_i}=\frac{\partial F(f_i×w_{i+1}+b_{i+1})}{\partial f_i}=F\prime w_i fifi+1=fiF(fi×wi+1+bi+1)=Fwi
依次类推,可得 ∂ δ ∂ W 2 = ∂ δ ∂ f 3 F ′ w 2 F ′ f 1 \frac{\partial \delta}{\partial W_2}=\frac{\partial \delta}{\partial f_3}F\prime w_2 F\prime f_1 W2δ=f3δFw2Ff1

△ W 3 \triangle W_3 W3的计算化简可以看到,权重更新的插值是一定会和激活函数的导数 F ′ F\prime F有关,并且随着权重离输出层越远,表达式中的 ∂ f i + 1 ∂ f i = F ′ w i \frac{\partial f_{i+1}}{\partial f_i}=F\prime w_i fifi+1=Fwi就会越多,激活函数的导数 F ′ F\prime F连乘就会越多。
当激活函数的导数 F ′ F\prime F>1的时候,随着神经网络层数增加,梯度更新就会以指数形式增长,从而梯度爆炸。
当激活函数的导数 F ′ F\prime F<1的时候,随着神经网络层数减少,梯度更新就会以指数形式减少,从而梯度消失。

总结起来,梯度爆炸和梯度消失的主要原因就是激活函数选择的不合理和过深的网络层数。

但其实从推到的公式来看的时候,其实也和初始设置权重的值有关,初始化太大会导致梯度爆炸,初始化太小会导致梯度消失。

本文参考:
5分钟-通俗易懂 - 神经网络 反向传播算法(手算)
欠拟合、过拟合、梯度消失与梯度爆炸

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值