人工智慧–BP演算法
人工智慧之BP演算法
前言:人工智慧機器學習有關演算法內容,請參見公眾號「科技優化生活」之前相關文章。人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下BP演算法。 ^_^
之前介紹的多層網路的訓練需要一種強大的學習演算法,其中成功的代表就是BP反向傳播演算法。
1974年Werboss第一次提出了一個訓練多層神經網路的BP反向傳播演算法,由於該演算法是在一般網路中描述的,它只是將神經網路作為一個特例。因此,在神經網路研究領域內沒有得到廣泛傳播。直到20世紀80年代中期,BP反向傳播演算法才被重新發現並廣泛宣揚。特別是Rumelhart和McClelland等提出了訓練多層神經網路的BP學習演算法,為解決多層神經網路的學習提供了保證。
BP網路是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一,也是ANN人工神經網路的基礎。BP反向傳播演算法在多層神經網路訓練中扮演著舉足輕重的作用,也是迄今最成功的ANN人工神經網路學習演算法。非常有必要值得研究,今天就跟大家介紹一下BP演算法。
BP演算法概念:
BP演算法(error Back Propagation)是由學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。由於多層前饋網路的訓練經常採用誤差反向傳播演算法,人們也常把將多層前饋網路直接稱為BP網路。
BP網路能學習和存貯大量的輸入/輸出模式映射關係,而無需事前揭示描述這種映射關係的數學方程。
BP演算法激活函數
激活函數的作用是將非線性引入神經元的輸出。因為大多數現實世界的數據都是非線性的,希望神經元能夠學習非線性的函數表示,所以這種應用至關重要。
通常選可導的奇函數作為激活函數,譬如非線性sigmoid函數,有兩種形式:1)邏輯函數;2)雙曲正切函數。
1)邏輯函數圖如下:
2)雙曲正切函數圖如下:
BP演算法原理:
BP演算法由信號的正向傳播和誤差的反向傳播兩個過程組成。
1)正向傳播:輸入樣本從輸入層進入網路,經隱層逐層傳遞至輸出層,如果輸出層的實際輸出與期望輸出不同,則轉至誤差反向傳播;如果輸出層的實際輸出與期望輸出相同,結束學習演算法。
2)反向傳播:將輸出誤差(期望輸出與實際輸出之差)按原通路反傳計算,通過隱層反向,直至輸入層,在反傳過程中將誤差分攤給各層的各個單元,獲得各層各單元的誤差信號,並將其作為修正各單元權值的根據。這一計算過程使用梯度下降法完成,在不停地調整各層神經元的權值和閾值後,使誤差信號減小到最低限度。
權值和閾值不斷調整的過程,就是BP網路的學習與訓練過程,經過信號正向傳播與誤差反向傳播,權值和閾值的調整反覆進行,一直進行到預先設定的學習訓練次數,或輸出誤差減小到允許的程度。
BP演算法思想:
BP演算法是一種有監督式的學習演算法,其主要思想是:輸入學習樣本,使用反向傳播演算法對網路的權值和閾值進行反覆調整訓練,使輸出的向量與期望向量儘可能地接近,當網路輸出層的誤差平方和小於指定的誤差時,訓練完成,保存網路的權值和閾值。
BP演算法推導:
BP訓練過程:
BP網路採用有指導的學習方式,其訓練過程大致如下:
1)組成輸入模式由輸入層經過隱含層向輸出層的「模式順傳播」過程。
2)網路的期望輸出與實際輸出之差的誤差信號由輸出層經過隱含層逐層調整權值和閾值的「誤差逆傳播」過程。
3)由「模式順傳播」與「誤差逆傳播」反覆進行的網路記憶訓練過程。
4)網路趨向收斂即網路的總體誤差趨向極小值的學習收斂過程。
在訓練階段中,訓練實例重複通過網路,同時修正各個權值和閾值,改變的目的是最小化訓練集誤差率。繼續網路訓練直到滿足一個特定條件為止,終止條件可以使網路收斂到最小的誤差總數,可以是一個特定的時間標準,也可以是最大重複次數。
BP演算法步驟:
BP演算法步驟大致如下:
1)初始化,用小的隨機數給各權值和閾值賦初值。
2)讀取網路參數和訓練樣本集。
3)歸一化處理。
4)對訓練集中每一樣本進行計算:a) 前向計算:計算隱層、輸出層各神經元的輸出;b) 誤差計算:計算期望輸出與網路輸出的誤差;c) 反向計算:計算修正網路權值和閾值。
5)若滿足精度要求或其他退出條件,則結束訓練,否則轉步驟4)繼續。
6)結果分析與輸出。
BP演算法優點:
1)具有實現任何複雜非線性映射的功能;
2)適合於求解內部機制複雜的問題;
3)尋優具有精確性;
4)具有自適應和自學習能力;
5)泛化和容錯能力強;
6)具有一定的推廣、概括能力。
BP演算法缺點:
1)收斂速度緩慢;
2)容易陷入局部極小值,且對於較大的搜索空間,多峰值和不可微函數不能搜索到全局最優;
3)訓練結果可能未達到預定精度;
4)可能會出現「過擬合」現象;
5)隱含層的層數和單元數的選擇尚無理論上的指導,一般根據經驗值或反覆實驗確定;
6)訓練過程中,學習新樣本時有遺忘舊樣本的趨勢。
針對BP演算法的缺陷,目前已有許多學者對其進行改進。如採用增量可調法,即在誤差曲面曲率較高處,選取較小值,在誤差曲面較平坦處,選取較大值。採用此增量可調法可明顯提高其收斂速度。然而針對其易陷入局部極小的缺陷,目前尚無較好的解決方法。為了擺脫BP演算法易於陷入局部極值,學者們已經嘗試了遺傳演算法、模擬退火演算法、蟻群演算法等與BP演算法相結合進行研究。
BP演算法應用:
BP反向傳播演算法可以逼近任意連續函數,具有很強的非線性映射能力,而且網路的中間層數、各層的處理單元數及網路的學習係數等參數可根據具體情況設定,靈活性很大,所以它在許多應用領域中起到重要作用。它在信息處理、模式識別、智能控制及系統建模等領域得到越來越廣泛的應用。
結語:
BP反向傳播演算法在多層神經網路訓練中扮演著舉足輕重的作用,也是迄今最成功的人工神經網路學習演算法,值得深入研究。BP演算法是由學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。BP演算法應用範圍廣泛,靈活性大,擴展性強。它在信息處理、模式識別、智能控制及系統建模等領域得到越來越廣泛的應用。
------以往文章推薦-----
TAG:科技優化生活 |