1. 程式人生 > >神經網路——BP演算法

神經網路——BP演算法

一、BP演算法的意義

對於初學者來說,瞭解了一個演算法的重要意義,往往會引起他對演算法本身的重視。BP(Back Propagation,後向傳播)演算法,具有非凡的歷史意義和重大的現實意義。

1.1、歷史意義

1969年,作為人工神經網路創始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一書,論證了簡單的線性感知器功能有限,不能解決如“異或”(XOR )這樣的基本問題,而且對多層網路也持悲觀態度。這些論點給神經網路研究以沉重的打擊,很多科學家紛紛離開這一領域,神經網路的研究走向長達10年的低潮時期。[1]

1974年哈佛大學的Paul Werbos發明BP演算法時,正值神經外網路低潮期,並未受到應有的重視。[2]

1983年,加州理工學院的物理學家John Hopfield利用神經網路,在旅行商這個NP完全問題的求解上獲得當時最好成績,引起了轟動[2]。然而,Hopfield的研究成果仍未能指出明斯基等人論點的錯誤所在,要推動神經網路研究的全面開展必須直接解除對感知器——多層網路演算法的疑慮。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等學者出版的《平行分佈處理:認知的微觀結構探索》一書。書中完整地提出了BP演算法,系統地解決了多層網路中隱單元連線權的學習問題,並在數學上給出了完整的推導。這是神經網路發展史上的里程碑,BP演算法迅速走紅,掀起了神經網路的第二次高潮。[1,2]

因此,BP演算法的歷史意義:明確地否定了明斯基等人的錯誤觀點,對神經網路第二次高潮具有決定性意義。

1.2、現實意義

這一點是說BP演算法在神經網路領域中的地位和意義。

BP演算法是迄今最成功的神經網路學習演算法,現實任務中使用神經網路時,大多是在使用BP演算法進行訓練[2],包括最近炙手可熱的深度學習概念下的卷積神經網路(CNNs)。

二、什麼是BP演算法

2.1、BP神經網路

BP神經網路是這樣一種神經網路模型,它是由一個輸入層、一個輸出層和一個或多個隱層構成,它的啟用函式採用sigmoid函式,採用BP演算法訓練的多層前饋神經網路。

2.2、BP演算法基本思想

BP演算法全稱叫作誤差反向傳播(error Back Propagation,或者也叫作誤差逆傳播)演算法。其演算法基本思想為:在2.1所述的前饋網路中,輸入訊號經輸入層輸入,通過隱層計算由輸出層輸出,輸出值與標記值比較,若有誤差,將誤差反向由輸出層向輸入層傳播,在這個過程中,利用梯度下降演算法對神經元權值進行調整。

2.3、BP演算法數學工具

BP演算法中核心的數學工具就是微積分的鏈式求導法則

2.4、BP演算法的推導[2][3]

[2]
(注1:
注2:

歸根到底,最終演算法的結果是得到各層連線的權重,

即:

1)使用得到梯度(

2)然後使用


中的(3)的策略,得到調整後連線權重

3)經過全部輸入樣本在反向傳播(BP)演算法中的訓練,最終得到各個連線權值。以下為mini batch演算法,

演算法如下:


)

三、BP演算法的缺點

3.1、區域性極小值問題

BP演算法的缺點,首當其衝就是區域性極小值問題。

3.2、演算法訓練非常慢

BP演算法本質上是梯度下降,而它所要優化的目標函式又非常複雜,這使得BP演算法效率低下。

四、參考

[1]、《BP演算法的哲學思考》,成素梅、郝中華著

[2]、《機器學習》,周志華著

作者:Herbert002連結:http://www.jianshu.com/p/c5cda5a52ee4來源:簡書著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。