2. DNN神經網絡的反向更新(BP)
1. DNN神經網絡的前向傳播(FeedForward)
2. DNN神經網絡的反向更新(BP)
1. 前言
DNN前向傳播介紹了DNN的網絡是如何的從前向後的把數據傳遞過去的,但是只有這個過程還不夠,我們還需要想辦法對所有參數進行一個梯度的更新,才能使得網絡能夠慢慢的學習到新的東西。
在神經網絡中有一種通用的方法來更新參數,叫做反向更新BP。
2. DNN反向更新過程
根據前面的前向傳播的過程我們得到了一個傳播公式,其中\(\sigma\)是激活函數,對具體的函數不做要求,可以是線性激活函數,也可以是非線性激活函數。
\[ a^l = \sigma(z^l) = \sigma(W^la^{l-1} + b^l)\;\;\;\;\;\;(0) \]
我們假設DNN的損失函數是MSE,其中\(a^L\)是輸出層的輸出:
\[
J(W,b,x,y) = \frac{1}{2}||a^L-y||_2^2
\]
對低\(l\)層的\(W,b\)求導數有:
\[ \frac{\partial J(W,b,x,y)}{\partial W^l} = \frac{\partial J(W,b,x,y)}{\partial z^l} \frac{\partial z^l}{\partial W^l}\;\;\;\;\;\;(1) \]
\[ \frac{\partial J(W,b,x,y)}{\partial b^l} = \frac{\partial J(W,b,x,y)}{\partial z^l} \frac{\partial z^l}{\partial b^l}\;\;\;\;\;\;(2) \]
我們令
\[ \delta^l =\frac{\partial J(W,b,x,y)}{\partial z^l}\;\;\;\;\;\;(3) \]
把(3)帶入(1)(2)得到下式(4)(5)
\[
\frac{\partial J(W,b,x,y)}{\partial W^l} = \delta^{l}(a^{l-1})^T\;\;\;\;\;\;(4)
\]
\[
\frac{\partial J(W,b,x,y)}{\partial b^l} = \delta^{l}\;\;\;\;\;\;(5)
\]
我們只要求出\(\delta^l\)的表達式,就能求出每一層的\(W^l,b^l\)
由(3)不難得出
\[
\delta^{l} = \frac{\partial J(W,b,x,y)}{\partial z^l} = \frac{\partial J(W,b,x,y)}{\partial z^{l+1}}\frac{\partial z^{l+1}}{\partial z^{l}} = \delta^{l+1}\frac{\partial z^{l+1}}{\partial z^{l}}\;\;\;\;\;\;(6)
\]
又因為有
\[
z^{l+1}= W^{l+1}a^{l} + b^{l+1} = W^{l+1}\sigma(z^l) + b^{l+1}\;\;\;\;\;\;(7)
\]
根據(6)(7)我們得出
\[
\delta^{l} = \delta^{l+1}\frac{\partial z^{l+1}}{\partial z^{l}} = (W^{l+1})^T\delta^{l+1}\odot \sigma^{'}(z^l)\;\;\;\;\;\;(8)
\]
現在我們有了一個\(\delta^{l}\)和\(\delta^{l+1}\)的遞推公式,我們只要求出最後一層的\(\delta^{L}\),就能算出所有層的\(\delta^{l}\),然後根據(4)(5)可以算出每層的參數的梯度並進行更新。
如果理解了上面的過程,相比讀者對計算\(\delta^{L}\)已經不在話下了:
\[
\delta^L = \frac{\partial J(W,b,x,y)}{\partial z^L} = (a^L-y)\odot \sigma^{'}(z^L)
\]
到此為止,我們已經能成功的更新了每層的梯度,整個網絡在理論上已經能夠跑通了。不過在此說明兩點。
- 上面的推理過程是在MSE的假設下進行的,如果換一個損失函數,那需要對計算輸出層\(\delta^{L}\)進行相應的修改。
- 因為方便推理過程,前面都使用同一個激活函數\(\sigma\),但是其實每一層可以有自己相應的激活函數,只要計算過程中使用相應的相應激活函數的導數即可。
3. 總結
由於梯度下降法有批量(Batch),小批量(mini-Batch),隨機三個變種,為了簡化描述,這裏我們以最基本的批量梯度下降法為例來描述反向傳播算法。實際上在業界使用最多的是mini-Batch的梯度下降法。不過區別僅僅在於叠代時訓練樣本的選擇而已。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected])
2. DNN神經網絡的反向更新(BP)