Member-only story
免費閱讀文章:機器學習自學筆記08: Backpropagation
今日的課程來自於: https://youtu.be/CXgbekl66jc
參考筆記:https://github.com/Sakura-gh/ML-notes/blob/master/ML-notes-pdf/8_Deep%20Learning.pdf
Backpropagation(反向傳播)是一種 gradient descent,也是一種演算法。Backpropagation 就是告訴我們用 gradient 吃來 train一個 neural network 的時候該怎麼做,他只是求微分的一種方式,而不是一種新的算法。
我們在使用 gradient descent 的時候可能會用到上千萬筆的參數,而我們可以使用backpropagation有效率的算出來。backpropagation並不是一個和gradient descent 不同的方法,他就是gradient descent ,他只是一個比較有效率的算法。
Chain Rule
backpropagation裡面並沒有什麼高深的數學,只需要記得的就是chain rule
對整個neural network,我們定義一個 loss function: L(θ) 等於所有的training data的loss總和
對L(θ)偏微之後,可以得到下面的式子:
接下來我們就不用計算 ∂L(θ)/∂w ,可以計算所有的∂l^n(θ)/∂w ,最後再總和起來
而現在的問題是∂l/∂w 該怎麼算,我們可以把它拆成兩項: ∂l/∂w=∂z/∂w * ∂l/∂z
前面這項比較簡單 (∂z/∂w) ,方法叫做Forward pass; 而求後面這項的方法比較複雜(∂l/∂z),稱之為Backward pass
Forward pass
∂l/∂w=∂z/∂w * ∂l/∂z 中,考慮前面這項∂z/∂w,他的結果可以馬上算出來。因為 z=x1w1+x2w2+b,所以z的偏微是: ∂z/∂w1 = x1,∂z/∂w2 = x2。