BP神經網路

Timmy_Y發表於2016-12-09

    前向神經網路

      前向神經網路其實可以看成是多個邏輯迴歸的組合,只是不再是由輸入直接得到結果,而是要經過隱層。其代價函式也類似邏輯函式代價函式,只不過要對各個類別求和:

  

    誤差逆傳播神經網路

      多層神經網路的訓練需要強大的學習演算法,誤差逆傳播(error BackPropagation,簡稱BP)演算法是傑出代表,該演算法的核心思想是先通過前向神經網路(FP)計算訓練誤差,利用訓練誤差反向作用於隱層神經元,從而調整連線權和每個神經元閾值,不斷更新使得訓練誤差達到最小值。

     現實任務中使用神經網路時,大多是在使用BP演算法進行訓練,不僅可以用於多層前饋神經網路,還可用於其他型別的神經網路,例如訓練遞迴神經網路,但通常說“BP網路”時,一般是指用BP演算法訓練的多層前饋神經網路。

    下圖是一個典型的單隱層網路

   


     BP演算法的推導過程(手寫一遍印象深刻。基本照著書來,只是兩個連線權、兩個閾值都推導了):

   

   

    BP演算法工作流程

(1)先將輸入示例提供給輸入神經元,然後逐層將訊號前傳,直到產生輸出層的結果

(2)計算輸出層誤差,再將逆誤差傳播至隱層神經元

(3)最後根據隱層神經元的誤差來對連線權和閾值進行調整


     累計誤差

     “標準BP演算法”每次僅針對一個訓練樣例更新連線權和閾值,實際中我們希望誤差EK是所有例子共同作用的結果,因此誤差應為累計誤差,相應的BP演算法稱為累積誤差逆傳播(accummulated error backpropagation)演算法。

 

     累積BP演算法將累積誤差最小化,在讀取整個訓練集D一遍後才對引數進行更新,其引數更新頻率低得多。因此,在很多工中,累積誤差下降到一定程度後,進一步下降會很緩慢,此時採用標準BP回更快獲得優質解。


   上面推導其實不是很直觀,幾張圖更好理解BP神經網路

   

(1)前向網路的傳播過程

(2)誤差反向傳播過程

(3)每層權重更新的具體公式


推薦閱讀:比較詳細、直白地介紹了BP神經網路,包括原理以及python程式碼解析

本系列文章面向深度學習研發者,希望通過Image Caption Generation,一個有意思的具體任務,深入淺出地介紹深度學習的知識。本系列文章涉很多深度學習流行的模型,如CNN,RNN/LSTM,Attention等。本文為第6篇。

作者:李理 
目前就職於環信,即時通訊雲平臺和全媒體智慧客服平臺,在環信從事智慧客服和智慧機器人相關工作,致力於用深度學習來提高智慧機器人的效能。

相關文章:

李理:從Image Caption Generation理解深度學習(part I)

李理:從Image Caption Generation理解深度學習(part II)

李理:從Image Caption Generation理解深度學習(part III)

李理:自動梯度求解 反向傳播演算法的另外一種視角

李理:自動梯度求解——cs231n的notes

李理:自動梯度求解——使用自動求導實現多層神經網路


相關文章