前向傳播與反向傳播
- 反向傳播(back-propagation)是計算深度學習模型參數梯度的方法。總的來說,反向傳播中會依據微積分中的鏈式法則,按照輸出層、靠近輸出層的隱含層、靠近輸入層的隱含層和輸入層的次序,依次計算並存儲模型損失函數有關模型各層的中間變量和參數的梯度。反向傳播回傳誤差(只在訓練過程中實現)
- 反向傳播對於各層中變量和參數的梯度計算可能會依賴各層變量和參數的當前值。對深度學習模型按照輸入層、靠近輸入層的隱含層、靠近輸出層的隱含層和輸出層的次序,依次計算並存儲模型的中間變量叫做正向傳播(forward-propagation)。前向傳播求損失(訓練與測試均需要)
反向傳播公式推導
在這裏,我們先按照周志華《機器學習》的反向傳播理解思路進行公式推導,對後面深入理解深度神經網絡中的反向傳播預熱!
深入理解反向傳播
計算圖
計算圖的三要素:節點,連接線,操作
- 節點:用於表示變量,變量可以是標量,矢量,向量,矩陣等
- 連接線:用於連通節點
- 操作:一個或多個變量的簡單函數
舉例說明計算圖的表示方式
鏈式法則與雅可比矩陣
- 單項鍊式法則
- 多項鍊式法則
- 雅可比矩陣
- 高維鏈式法則表示
反向傳播的優點
我們通過計算圖結合鏈式法則舉例說明反向傳播在計算上的優勢:
反向傳播與梯度下降的關係
有很多人會將反向傳播與梯度下降算法混爲一談,但其實兩者是可以分離的,我們獨立出兩個概念來討論問題會使得學習的重點更加清晰!
- 反向傳播僅僅是計算梯度的算法
- 梯度下降是使用該梯度進行學習的算法
總結
反向傳播與梯度下降總結圖示:
參考
李宏毅機器學習課程
Deep Learning Book
Principles of training multi-layer neural network using backpropagation