神經網路——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來源:簡書著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。