BP神經網路優化方程式的推導
以MNIST數據集(手寫阿拉伯數字圖像,)為例,每幅圖像含有個像素。每幅圖像對應一個標籤,一共有10個標答,分別為數字0-9。設計神經網路如下圖所示:
圖像包含個像素,,在本例中。每個像素對應一個輸入層神經元,第個神經元的輸出值即為,。隱含層包含個神經元,接受來自輸入層的輸出值,在本例中設定。每個神經元包含個權重和1個偏置。權重用表示,偏置用表示,其中,,不是變數,僅表示這些權重和偏置屬於隱含層。隱含層第個神經元的輸出值為:
其中從直觀的角度理解上述公式,隱含層各神經元的輸出就是將接受到的所有輸入加權求和,並加一個偏置值。函數的功能是使得輸出值限定在之間。
輸出層包含個神經元,接受來自隱含層的輸出值,在本例中設定,對應這10個數字。每個神經元包含個權重和1個偏置。權重用表示,偏置用表示,其中,,不是變數,僅表示這些權重和偏置屬於輸出層。輸出層第個神經元的輸出值為:
輸出值表示輸入的圖像的標籤為第個標籤的可能性。
對於一個輸入的訓練圖像,其真實標籤為第Y個標籤,那麼可以用一個維的向量表示x所屬的標籤:,其中:
神經網路的輸出結果與真實值之間的差為,其中 ,設計代價函數: ,展開得:
用梯度下降法優化隱含層和輸出層的各個權重和偏置,使得代價函數值最小。
1) 首先對輸出層的權重求偏導:
注意當時,因此有:
2) 對輸出層偏置求偏導:
注意當時,因此有:
3) 對隱含層的權重求偏導:
其中 (當時)
令 ,有
因為,所以有
(當時)
所以,
4) 對隱含層的偏置求偏導:
與前述過程類似,,其中,得到
訓練數據集是由一組圖像構成,對於訓練集的代價函數可以設定為每個圖像代價函數的平均,那麼不難得出,訓練集的代價函數的上述4個偏導數也是圖像對應偏導數的平均。
根據上述4個偏導數分別修正隱含層和輸出層的各個權重和偏置(沿負梯度方向下降):
,
,
,
但對於多層網路,用如上方式求導就過於繁複了,為了簡化這一過程,我們先給出一個的定義:
其中是層,輸入層,輸出層。那麼對於輸出層有:
對於二範數形式的代價函數,有:。
根據網路的層次結構可設:,且:,其中層和層神經元的數量分別為和,那麼應用偏導數的鏈式法則可得:
此時我們發現,的計算只依賴於層的計算結果和,太棒了!這樣我們就可以遞推式的計算每一層的了。在算得後,容易得到:,以及:,這就形成了BP網路的四個方程式:
(1)
(2)
(3)
(4)
舉個例子:如果我們在輸出層採用了SoftMax函數,形式如下:
那麼:
因此有:,是不是很簡單呢?
全文完。
推薦閱讀:
※Google黑科技系列 4:自動修正你的靈魂畫作autodraw.com
※可怕!斯坦福AI看臉即知性取向,國外媒體和網友都炸了
※在Windows平台上搭建基於Keras的Python神經網路環境
※深度學習系列3 - CNNs 以及應對過擬合的詳細探討
※從梯度下降到擬牛頓法:盤點訓練神經網路的五大學習演算法