BP算法(李宏毅课堂笔记)

BP算法

  • 1. GD算法
  • 2. Forward pass
  • 3. Backward pass


1. GD算法

        首先,简要回忆一下GD梯度下降算法:
                        BP算法(李宏毅课堂笔记)_第1张图片
解读如下:

       对于网络参数有w、b等数值,将这些参数统一归为网络参数θ,将损失函数对这些参数进行求导,通过更新规则 θ i + 1 = θ i − η ▽ L ( θ i ) \theta ^{i+1}=\theta ^{i}-\eta \triangledown L(\theta ^{i}) θi+1=θiηL(θi) 来对参数进行更新。先已知初始网络参数 θ0,再求出loss function L(θ0) 的导数,从而得到 θ1,……依次如下,不断更新参数。


 
对于网络结构可以简化为下图结构:
                            在这里插入图片描述
       其中:输入数据 xn,经过网络后生成输出数据 ynCn 则是表示输出数据与真实数据之间距离的function,将所有的 Cn 相加得到 Loss function,如下:
              在这里插入图片描述
为什么需要反向传播?它有什么作用?
       BP算法(李宏毅课堂笔记)_第2张图片

当我们想去求 Cw 求导时,根据链式法则,我们可以知道 ∂ C ∂ w = ∂ C ∂ z ∂ z ∂ w \frac{\partial C}{\partial w}=\frac{\partial C}{\partial z}\frac{\partial z}{\partial w} wC=zCwz ,其中 ∂ z ∂ w \frac{\partial z}{\partial w} wz是前向传播, ∂ C ∂ z \frac{\partial C}{\partial z} zC是反向传播


 

2. Forward pass

        首先,对于简单一层网络结构,其前向传播求导很简单,如下图所示:
        BP算法(李宏毅课堂笔记)_第3张图片
对于多层结构,求导也是很简单!
        BP算法(李宏毅课堂笔记)_第4张图片
前向传播很简单, ∂ z ∂ w \frac{\partial z}{\partial w} wz 容易求出。


 

3. Backward pass

对于求解 ∂ C ∂ z \frac{\partial C}{\partial z} zC ,由于 Cz 关系复杂,不像前向传播直接可以计算结果。
        BP算法(李宏毅课堂笔记)_第5张图片
假定 ∂ C ∂ z ′ \frac{\partial C}{\partial {z}'} zC ∂ C ∂ z ′ ′ \frac{\partial C}{\partial {z}''} zC 都已知,那么就有:
         在这里插入图片描述
可以看成:(反向传播)从后向前!
         BP算法(李宏毅课堂笔记)_第6张图片
回到现实中, ∂ C ∂ z ′ \frac{\partial C}{\partial {z}'} zC ∂ C ∂ z ′ ′ \frac{\partial C}{\partial {z}''} zC 还是需要计算,具体求解就依照反向传播来进行。

情况一:

         假如 z’ 以及 z’’ 之后接的就是输出层,那么 ∂ C ∂ z ′ \frac{\partial C}{\partial {z}'} zC ∂ C ∂ z ′ ′ \frac{\partial C}{\partial {z}''} zC易求出
         BP算法(李宏毅课堂笔记)_第7张图片
情况二:

         假如后面不是直接接输出层,那么就需要一步一步反向来计算。
         BP算法(李宏毅课堂笔记)_第8张图片
先计算后面的导数,慢慢向前推。
         BP算法(李宏毅课堂笔记)_第9张图片

你可能感兴趣的:(机器学习)