簡介
神經網絡中經典的感知器模型,請參考我寫的這篇博客[ http://blog.csdn.net/ws_20100/article/details/48929383]
本篇博客是在感知器模型之後,討論由1986年由Rumelhart和McCelland提出的反向傳播學習算法。
------------------------------------------------------------------------------------------------------------------
反向傳播學習的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/