[ML筆記] Backpropagation
ML Lecture 7: Backpropagation
本篇為台大電機系李宏毅老師 Machine Learning (2016) 課程筆記
上課影片:
https://www.youtube.com/watch?v=ibJpTrp5mcE
課程網 (投影片出處):
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
上課影片:
https://www.youtube.com/watch?v=ibJpTrp5mcE
課程網 (投影片出處):
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
在 Neural Network 裡面使用 Gradient Descent 更新上百萬個參數
對於上百萬維度的 Vector 如何有效地計算偏微分出來
這就是 Backpropagation 做的事情!
原理:會用到 Chain Rule,先來複習一下
Chain Rule
接下來看 Loss Function
Cn 代表計算 yn 跟 ynhat 距離差距的 function
我們要計算一筆 data 的偏微分,就可以計算出全部偏微分的加總
先考慮某一個 neuron
partial z over partial w 稱為 Forward pass
partial C over partial z 稱為 Backward pass
先來看
Forward Pass
秒算!
要算 forward pass 偏微分的結果,等同於 input 丟進去,計算每一個 output 就是答案
再來看
Backward Pass
也就是怎麼算 partial C over partial z
根據 chain rule 可以得到
partial a / partial z 這就是 sigmoid function 的微分!
|
Sigmoid function 的微分結果如圖!
|
那 partial C / partial a 是什麼呢?
再根據 chain rule 可以展開 partial C / partial a
|
目前的結果展開來得到這樣個式子
|
從另一個觀點來看這個式子!想像有另外一個 Neuron 用三角形表示
這個 Neuron 的 input 如圖
把下面的式子畫成圖中得長相
z 是一個已知的值,因為在 forward pass 就知道多少了!
Case 1 如果是在最後一層 output layer
兩個紅色的 neuron 是整個 network 的 output
根據 chain rule 以及根據 output y1 y2 的結果秒算!
真正要煩惱的問題是 Case 2
如果這兩個紅色的 neuron 不在 output layer 的話
如果知道 partial C / partial za 跟 partial C / partial zb 就可以知道 partial C / partial z’
這樣的做法從前面慢慢往後找會很崩潰
從後面往前算的話就會很有效率!
所以在做 Backword Pass 的實際做法,就是建一個反向的 network 來計算
summary: 先做 forward pass 得到 weight 然後在做反向的 network 計算偏微分,結束!
留言
張貼留言