Lec 7: Backpropagation
- Backpropagation 是一種比較有效率的 gradient descent
Chain Rule
y=g(x),z=h(y)
- dzdx=dzdydydx
x=g(s),y=h(s),z=k(x,y)
- dzds=dxds∂z∂x+dyds∂z∂y
Backpropagation
L(θ)=∑Nn=1Cn(θ) so that ∂L(θ)∂w=∑Nn=1∂Cn(θ)∂w 所以現在只需要 focus 在如何計算某筆 training data 的 loss
- Forward pass
- compute ∂z∂w for all params w
- Backward pass
- compute ∂C∂z for all activation function input z
Forward pass
∂z∂w 其實就是他的 input
Backward pass
∂C∂z=∂a∂z∂C∂a
- 以 sigmoid 而言,∂a/∂z=σ(z)(1−σ(z))
而根據 chain rule,∂C/∂a=∑z[l+1]∈Z[l+1]∂z[l+1]∂a∂C∂z[l+1]
又 ∂z[l+1]k/∂a=w[l+1]k
因此 ∂C∂z=∂a∂z∑z[l+1]∈Z[l+1]w[l+1]k∂C∂z[l+1]k
- ∂a/∂z 其實就是該層 activation function 的微分 (在 z 值 的導數 σ′(z),而 z 在 forward pass 時已經知道,因此這一項是常數)
- ∂C/∂z[l+1]k 就是下一層某個 neuron 的 ∂C/∂z
所以要求某層的 ∂C/∂z 就只要從最後一層算回來就好,故名 backward pass
Backpropagation - Summary
∂C/∂w=∂z∂w×∂C∂z
只要是跟第 k 個 input 相連的 w 的 forward pass
- ∂z∂wk=a[l−1]k
- 就是跟著他的 input
backward pass
- ∂C∂z=σ′(z)∑z[l+1]k∈Z[l+1]w[l+1]k∂C∂z[l+1]k