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


1. GD算法

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

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


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

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


 

2. Forward pass

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


 

3. Backward pass

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

情况一:

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

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