神經網絡的反向傳播BP算法

簡介

神經網絡中經典的感知器模型,請參考我寫的這篇博客[ http://blog.csdn.net/ws_20100/article/details/48929383]

本篇博客是在感知器模型之後,討論由1986年由RumelhartMcCelland提出的反向傳播學習算法。

------------------------------------------------------------------------------------------------------------------

反向傳播學習的BP算法

對於感知器模型,最初只能解決兩層神經網絡的學習訓練問題,對於多層網絡(例如三層),便不能確定中間層的參數該如何調整。直到1986年,Rumelhart和McCelland等人提出了基於反向傳播的學習算法,用於前饋多層神經網絡的學習訓練。由於“反向傳播”的英文叫做Back-Propagation,所以這個算法也常常被學者簡稱爲BP算法。後來,人們對BP算法不斷改進,以加快其訓練速度,產生了很多版本的BP算法,例如Levenberg-Marquatdt算法等等。


1.)BP算法原理

如下圖,是一個多層神經網絡的示意圖,網絡相鄰層之間的單元採用全連接方法連接。

每個單元的輸入用U表示,輸出用X表示,權值用W表示。

式一:第k層第i個神經元的輸出,是由該神經元的輸入經過激活函數(Activition Function)得到:


式二:第k層第i個神經元的輸入,是由上一層神經元的輸出和權值向量內積得到:


式三:第m層(最終輸出層)第i個神經元輸出的誤差計算公式,採用LMS方式計算


以下的數學表示中的求導運算,均是由這三個基本公式推導而來。


2.)BP算法的步驟

反向傳播算法分爲兩步進行:

      正向傳播輸入的樣本從輸入層經過隱單元一層一層進行處理,通過所有的隱層之後,傳輸出層。

      反向傳播把誤差信號按原來正向傳播的通路反向傳回,並對每個隱層的各個神經元的權係數進行修改,使誤差信號趨向最小。


3.)BP算法的數學表示

BP算法的實質是,求取誤差函數最小值問題

(1)而採用的方法是非線性規劃中的最速下降法,按照誤差函數的負梯度方向修改權係數。即



所以有,


(2)由於誤差的梯度,僅僅是“記爲”符號,並未給出明確計算公式:


所以,我們將求取上式中第k層第i個單元的誤差梯度:


這需要分類討論:

1.當第k層爲輸出層(k=m)時,


2.當第k層不是輸出層(k<m)時,


(3)所以最終的權係數修改公式:


其中,


(4)有時,爲了加快收斂速度,也考慮上一次權值的修改量:


------------------------------------------------------------------------------------------------------------------

總結

Back Propagation Algorithm,後向傳播算法,可以解決多層神經網絡的訓練問題。但是經過多年的研究顯示也存在着很多瓶頸,比如學習速度過慢,學習率難以確定,可能進入局部極小點,以及過擬合問題等等。


如有任何疑問,歡迎一起討論。

如要轉載本文,請註明出處:http://blog.csdn.net/ws_20100/
發佈了43 篇原創文章 · 獲贊 42 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章