神經網絡的BP推導過程
神經網絡的BP推導過程
下面我們從一個簡單的例子入手考慮如何從數學上計算代價函數的梯度,考慮如下簡單的神經網絡,該神經網絡有三層神經元,對應的兩個權重矩陣,為了計算梯度我們只需要計算兩個偏導數即可:
首先計算第二個權重矩陣的偏導數,即
首先需要在之間建立聯系,很容易可以看到的值取決於,而,而又是由取sigmoid得到,最後,所以他們之間的聯系可以如下表示:
按照求導的鏈式法則,我們可以先求對的導數,然後乘以對的導數,即
由於
不難計算
令
上式可以重寫為
接下來僅需要計算即可,由於
忽略前面的
以及正則項
設k=1得到
這裏只對一個example推導,最後累加即可
因此
得到下面的求導過程
由於
,計算如下,得
至此我們得到了
接下去我們需要求的偏導數,的依賴關系如下:
根據鏈式求導法則有
分別計算等式右邊的三項可得
帶入後得
令
上式可以重寫為
將上面的結果放在一起,我們得到對兩個權重矩陣的偏導數為:
觀察上面的四個等式,我們發現
- 偏導數可以由當層神經元向量與下一層的誤差向量相乘得到
- 當前層的誤差向量可以由下一層的誤差向量與權重矩陣的乘積得到
所以可以從後往前逐層計算誤差向量,然後通過簡單的乘法運算得到代價函數對每一層權重矩陣的偏導數。
假設我們有m個訓練example,L層神經網絡,並且此處考慮正則項,即
初始化:設置(理解為對第l層的權重矩陣的偏導累加值,每一個訓練的偏導數累加值,最後再除以樣本數得到均值)
For k=1:m
設置 =
通過前向傳播算法(FP)計算對各層的預測值,其中l=1,2,3,4…,L
計算最後一層的誤差向量,利用後向傳播算法(BP)從後至前逐層計算誤差向量,計算公式為
更新
End//
計算梯度:
附錄:
神經網絡的BP推導過程