1. 程式人生 > >神經網絡學習筆記二——反向傳導

神經網絡學習筆記二——反向傳導

操作 nbsp 算法 oid 輸入 atl 防止 反向 ...

參考自 http://deeplearning.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95

神經網絡的代價函數

假設我們有一個固定樣本集技術分享圖片。當使用批量梯度下降法求解時,單個樣例的代價函數為:

技術分享圖片

這是個方差代價函數,對於整體的代價函數則為:

技術分享圖片

後面的項為規則化項,目的是防止過擬合

我們的目標是針對參數W,和b(其實可以設定一個x0=1以及W0來把b規避掉)來求其函數J(W,b)的最小值。這裏的處理方式與普通的線性回歸和邏輯回歸不同,參數的初始化不能再簡單的全部置0,而是使用隨機值,比如使用正態分布 Normal(0,ε2

)生成的隨機值,ε取0.01,然後再使用梯度下降法。否則會法制最後所有隱藏單元最終會得到與輸入值有關的、相同的函數

使用梯度下降法中每一次叠代都按照如下公式對參數W和b進行更新:

技術分享圖片α是學習速率

其關鍵在於計算偏導數,這裏有一種有效的方法,就是後向傳播算法(BP)

後向傳播算法

後向傳播的實質是在求各層的損失函數的導函數時,由於每一層的輸入是前一層的輸出的線性組合,所以該層的導函數一定與前一層的損失函數的導數相關相關

具體來說,各層的代價函數的導函數如下:

技術分享圖片

下面少一項是因為規則項不作用於常數項上

反向傳播的具體執行思路為,

1)先進行前導計算,算出直到最後一層(輸出層)的激活值(輸出值)

2)最後一層的每個輸出單元i,根據以下公式計算殘差:

技術分享圖片

(其實和普通的線性回歸沒差)

3)對於l = nl-1,nl-2,nl-3...的各層,第l層的第i個節點的殘差計算方法如下:

技術分享圖片

推導公式如下(以nl和nl-1層為例,其他的類推即可)

技術分享圖片

4)計算我們需要的偏導數,方法為:

技術分享圖片

以上步驟寫作向量形式為:

1)前向計算

2)對於輸出層

技術分享圖片 中間的大黑點表示matlab中.*的運算

3)對於輸出層前面的各層

技術分享圖片

4)計算最終需要的偏導數值:

技術分享圖片

若f(z)是sigmoid的函數,且我們在前向計算中已經算到了技術分享圖片。我們可以利用前面的結論得到

技術分享圖片

最後整個算法可以表示如下:

1)對於所有l,有技術分享圖片技術分享圖片(設為全零向量或全零矩陣)這是為了存儲所有的損失函數導函數

2)對於i = 1 to m(所有訓練樣本)

  a.使用反向傳播算法計算技術分享圖片技術分享圖片

  b.計算技術分享圖片

  c.計算技術分享圖片

3)更新權重參數:

技術分享圖片

這只是一次叠代的操作,反復進行該操作,以減小代價函數(損失函數)J,最終求解該神經網絡

  

  

神經網絡學習筆記二——反向傳導