吳恩達機器學習系列12:反向傳播算法

當咱們要運用高級算法進行梯度降低時,須要計算兩個值,代價函數代價函數的偏導數算法

未命名圖片.png

代價函數咱們以前已經知道怎麼求了,如今只須要求代價函數的偏導數便可。微信


採用以下方法,先進行前向傳播算法,而後再進行反向傳播算法(Backpropagation Algorithm,反向傳播算法與前向傳播算法方向相反,它用來求代價函數的偏導數。具體過程看下圖:網絡

未命名圖片.png

用 δ 做爲偏差,計算方法爲:機器學習

未命名圖片.png


有時咱們在運用反向傳播算法時會遇到 bug,並且這個 bug 還不容易被發現,所以咱們就須要用梯度檢驗(Gradient Checking。這種算法的思想就是運用導數估計值去對導數真實值進行檢驗,去檢查反向傳播算法運行時是否存在 bug。函數


都知道,函數在某點的導數近似於該點相鄰的兩點所連直線的斜率。學習

未命名圖片.png

在函數圖像上藍色線表明該點的導數,紅色線表明導數的近似值:優化

未命名圖片.png

在向量中進行計算就須要對向量中每個元素都計算一遍,這就須要進行一個循環,而這個循環會很是慢。spa

未命名圖片.png

循環以後獲得的結果與運用反向傳播獲得的結果進行比較,若是兩個結果近似相等,那咱們就能夠認爲反向傳播算法運行正常,以後就能夠關閉梯度檢驗,繼續運行反向傳播算法。由於梯度檢驗的循環致使運行速度太慢了。3d



總結cdn


在訓練一個完整的神經網絡以前,咱們首先要選擇一個神經網絡結構,也就是選擇一個神經元之間關係的模型,一般會是如下這幾種狀況:

未命名圖片.png

通常地來說,最左邊這種隱藏層只有一層的結構是最多見的,也是使用最多的。


在選好神經網絡結構後,就能夠訓練神經網絡模型了,一共有 6 個步驟:

1.隨機初始化權重;

2.運用前向傳播算法對每個輸入值 x^((i)) 獲得輸出值

未命名圖片.png

3.計算代價函數;

4.運用反向傳播算法計算代價函數的偏導數;

5.使用梯度檢驗肯定反向傳播算法是否正常工做,若是檢驗沒有問題,就要關閉梯度檢驗,由於梯度檢驗算法運行速度很是慢;

6.使用高級優化算法去進行梯度降低,使得代價函數最小化,從而獲得參數向量。



ps. 本篇文章是根據吳恩達機器學習課程整理的學習筆記。若是想要一塊兒學習機器學習,能夠關注微信公衆號「SuperFeng」,期待與你的相遇。

請關注公衆號.PNG

相關文章
相關標籤/搜索