当前位置:   article > 正文

从计算过程领悟反向传播原理_。’。ii′“。!。;-:,,,i?痒。??。??‘:′然‘γ′,′。iidjldii6dvvvvl

。’。ii′“。!。;-:,,,i?痒。??。??‘:′然‘γ′,′。iidjldii6dvvvvllitp

反向传播

学习花费:2个到12点的晚上
李宏毅-反向传播

为什么引入反向传播?

更新参数的过程为:

  • 设有损失函数 L ( θ ) L(\theta) L(θ) θ 是 参 数 向 量 \theta是参数向量 θ θ = { w 1 , . . . , w n , b 1 , . . . , b n } \theta=\{w_1,...,w_n,b_1,...,b_n\} θ={w1,...,wn,b1,...,bn}

    • 损失函数衡量预测值 y p r e d y_{pred} ypred与真实label y y y的距离(差距)
  • 目的是要求loss最小,则求 ∇ L ( θ ) \nabla L(\theta) L(θ),等价于:
    ∂ L / ∂ θ = [ ∂ L / ∂ w 1 , . . . , ∂ L / ∂ b n ] \partial L/\partial\theta = [\partial L/\partial w_1,...,\partial L/\partial b_n] L/θ=[L/w1,...,L/bn]

  • 随机初始参数 θ 0 \theta^0 θ0,更新得到的参数 θ 1 = θ 0 − η ∇ L ( θ 0 ) \theta^1 = \theta^0 - \eta \nabla L(\theta_0) θ1=θ0ηL(θ0)

  • 当有数百万个参数时,结合求导的链式法则,按照网络结构的流向,必定是十分繁琐

  • 因此,引入反向传播

简介

梯度下降的一种高效率计算方式,分为:

  • 前向(Forward pass)
  • 后向(Backward pass)

原理及推算过程

图一:总方程式

对每个样本都有一个函数 C ( θ ) C(\theta) C(θ)计算损失,可以表示为: l o s s x n = C θ n ( y p r e d , y ) loss_{x^n} = C^n_\theta(y_{pred},y) lossxn=Cθn(ypred,y)

y p r e d = s i g m o i d ( Z l a y e r n ( i n p u t 1 x l a y e r n ∗ w 1 + i n p u t 2 x l a y e r n ∗ w 2 ) + b l a y e r n ) y_{pred} = sigmoid(Z^{{layer}_n}(input^{x^{layer_n}}_1*w_1+input^{x^{layer_n}}_2*w_2)+b^{layer_n}) ypred=sigmoid(Zlayern(input1xlayernw1+input2xlayernw2)+blayern)

大概的层次关系可以表示为:

  • l o s s = C θ ( y p r e d , y ) loss = C_\theta(y_{pred},y) loss=Cθ(ypred,y)
  • y p r e d = s i g m o i d ( Z ) y_{pred}=sigmoid(Z) ypred=sigmoid(Z)
  • Z = w 1 x 1 + w 2 x 2 + b Z=w_1x_1+w_2x_2+b Z=w1x1+w2x2+b
  • 然后2,3步,层层循环,直到输入层

∇ C ( θ ) \nabla C(\theta) C(θ)(即单个样本损失的梯度),如求 ∂ C / ∂ w 1 \partial C/\partial w_1 C/w1,就得采用链式法则,网络越深。链越长。

在这里插入图片描述

图二:图一的左上角局部图

前向 ∂ z / ∂ w \partial z/\partial w z/w

  • 该结果就是参数 w w w的系数,即输入 x x x,如 ∂ z / ∂ w 1 = x 1 \partial z/\partial w_1 = x_1 z/w1=x1
  • 所以这部分已知

后向 ∂ C / ∂ z \partial C/\partial z C/z

  • 这一部分要依靠正难则反的思想,根据链式法则来做
  • 即可以继续来拆分来做
  • 这部分现在未知,看后面图求解

在这里插入图片描述

图三:前向

通过前向,可以知道:

  • 每一个 Z ( w 1 , w 2 , b ) Z(w_1,w_2,b) Z(w1,w2,b)函数对参数(自变量)的偏导
  • 图中,随机初始化参数即:参数位置的数值
  • 根据<图二>规律,三个参数的偏导结果分别是红箭头所指,即该层的输入 i n p u t input input

反向

在这里插入图片描述

图四:反向(一)解决 ∂ a / ∂ z \partial a / \partial z a/z

目前按照图二, ∂ C / ∂ z \partial C/\partial z C/z,还未知,我们细化后面一层,得到:图中下面的偏导公式。

公式 a = σ ( Z ) a = \sigma(Z) a=σ(Z)是激活函数 s i g m o i d ( Z ) sigmoid(Z) sigmoid(Z)

在这里插入图片描述

图五:反向(二),解决 ∂ C ∂ a \partial C \over \partial a aC

在这里插入图片描述

图六:反向(二-1),解决 ∂ C / ∂ a \partial C / \partial a C/a的其中一部分

  • 剩下❓处未知

  • 这里是C由自变量 Z ′ Z' Z Z ′ ′ Z'' Z函数组成

综上可表示为在这里插入图片描述

在这里插入图片描述

图六:反向(三),重点部分,反着求两个未知偏导
  • σ ′ ( Z ) \sigma'(Z) σ(Z)是一个常数,在正向的时候就算出来了
    • 因为正向的时候, Z = w 1 x 1 + w 2 x 2 + b Z=w_1x_1+w_2x_2+b Z=w1x1+w2x2+b,此时参数值和输入值都已知,故 Z Z Z已知

在这里插入图片描述

图七:反向(三-1),假设是算到了输出层

两项偏导可如图一样,如求 ∂ C / ∂ Z ′ \partial C/\partial Z' C/Z:

  • ∂ y 1 / ∂ Z ′ \partial y_1/\partial Z' y1/Z
    • 函数表示: y 1 = σ ( Z ′ ) y_1 = \sigma(Z') y1=σ(Z) Z ′ = w 1 x 1 + w 2 x 2 + b Z'=w_1x_1+w_2x_2+b Z=w1x1+w2x2+b
    • 都已知,所以可求
  • ∂ C / ∂ y 1 \partial C/\partial y_1 C/y1
    • 函数表示: C = C θ ( y 1 , y 1 t r u e ) C = C_\theta(y_1,{y_1}_{true}) C=Cθ(y1,y1true)
    • 可以带入一个具体的损失函数,如均方误差
      • 此时, y 1 y_1 y1是自变量, y 1 t r u e {y_1}_{true} y1true是label,一个具体数值,是常量
      • y 1 y_1 y1是自变量是因为
        • 由函数 y 1 = σ ( Z ′ ) y_1 = \sigma(Z') y1=σ(Z)得来

在这里插入图片描述

图八:方向(三-2),假设还没算到输出层

此时情况同图四,以求 ∂ C / ∂ Z ′ \partial C/\partial Z' C/Z为例:

(1) 看链式情况:---->

Z ′ Z' Z a ′ = s i g m a ( z ′ ) a' = sigma(z') a=sigma(z) —(1) Z a = w 5 a ′ + . . . . Z_a=w_5a'+.... Za=w5a+....---- C = C θ ( Z a ) C = C_\theta(Z_a) C=Cθ(Za)

​ —(2) Z b = w 6 a ′ + . . . . Z_b = w_6a'+.... Zb=w6a+....---- C = C θ ( Z b ) C = C_\theta(Z_b) C=Cθ(Zb)

(2) 所以可以求偏导:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} …
(3) 这也可以看出,激活函数,在反向的时候,类似一个缩放器

(4) 这样就又回到了图四的情况,以此类推;即看下一层,直到输出层

反向总结

图九:反向总结(九-1)

从输出层开始依次计算

在这里插入图片描述

图十:反向总结(九-2)

依照图八方式,即可求出所有偏导

总结

在这里插入图片描述

目的是求损失函数 C = C θ ( y p r e d , y ) C=C_\theta(y_{pred},y) C=Cθ(ypred,y)对各参数 θ = { w 1 , . . . . , b n } \theta=\{w_1,....,b_n\} θ={w1,....,bn}的偏导,

继而可以使用 θ n e w = θ o l d − η ∇ C θ \theta_{new} = \theta_{old}-\eta\nabla C_{\theta} θnew=θoldηCθ来更新参数

而,对于每个样本来说,损失函数对参数的偏导,由图中两部分组成:

  • 左边:由前向得到,即该参数的系数
  • 右边:由后向得到,即一直递归到输出层,图7:反向(三-1)过程就是。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/405677
推荐阅读
相关标签
  

闽ICP备14008679号