Backpropagation === ###### tags: `李宏毅` ## 課程資訊 * [pdf](https://drive.google.com/file/d/1TPvl21DdL9sTt8KSQCcATke2wWhwI4NR/view?usp=sharing) * [youtube](https://www.youtube.com/watch?v=ibJpTrp5mcE&ab_channel=Hung-yiLee) ## Backpropagation Backpropagation 就是一個快速計算 Gradient Descent 的方法,最終目標就是要計算 Loss 對參數的偏微分。  ### Chain Rule 就是微積分 Chain Rule,因為 Deep Learning 要回推上一個參數的偏微分,所以需要這個性質。  ### Forward Pass z 是 Activation Function 的 Input Function,也就是 $z=x_1w_1+x_2w_2+b$  所以計算 z 對 w 的偏微分,就只要看 Input 是什麼。  ### Backward Pass 這部分是要計算 C 對 z 的偏微分,其中可以用 Chain Rule 變成 $\dfrac{∂C}{∂z}=\dfrac{∂a}{∂z}\dfrac{∂C}{∂a}$。其中 $\dfrac{∂a}{∂z}$ 就是 Activation Function 的偏微分而已,不過 $\dfrac{∂C}{∂a}$ 就需要看後面的變化,因為之後的每個 Neural 都會影響到 C。這同樣也可以用 Chain Rule 轉換,那但轉換後的 $\dfrac{∂C}{∂z^{'}}$、$\dfrac{∂C}{∂z^{''}}$ 又會被後面的 Neural 影響。  先假設 $\dfrac{∂C}{∂z^{'}}$、$\dfrac{∂C}{∂z^{''}}$ 都算得出來,則更新前面的參數就都很容易算。 那怎麼算 $\dfrac{∂C}{∂z^{'}}$、$\dfrac{∂C}{∂z^{''}}$ 呢? 假設現在已經是 Output Layer,則要計算 C 對 $z^{'}$ 的偏微分可以用 Chain Rule $\dfrac{∂C}{∂z^{'}}=\dfrac{∂y_1}{∂z^{'}}\dfrac{∂C}{∂y_1}$。接下來就根據前面說的算出 Gradient。  那假設還不是 Output Layer? 就再往後去看,直到抵達 Output Layer,然後再算出前面的。所以實際上就直接從 Output Layer 開始算就好。  ## Summary 把 Forward Pass 和 Backward Pass 合起來就可以分別得到 $\dfrac{∂z}{∂w}=a$ 和 $\dfrac{∂C}{∂z}$,兩個相乘就是 Gradient $\dfrac{∂C}{∂w}$。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up