李志偉
摘要:BP(BackPropagation)神經(jīng)網(wǎng)絡是一種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伨W(wǎng)絡。本文針對BP神經(jīng)網(wǎng)絡學習速率低、收斂速度慢的問題進行研究,介紹了標準的BP算法和提高收斂速度的動量因子法和變步長法,對比實驗結(jié)果明顯,旨在為研究BP神經(jīng)網(wǎng)絡學習速率提供參考。
關鍵詞:BP神經(jīng)網(wǎng)絡 動量因子法 變步長法 學習速率
1.引言
人工神經(jīng)網(wǎng)絡(Artificial Neural Networks,ANN)是通過對人腦神經(jīng)元建模、聯(lián)結(jié)模擬生物腦或世界系統(tǒng)的網(wǎng)絡模型,是一種具有學習、記憶和模式識別等智能信息處理功能的人工系統(tǒng)。通常研究和使用的十種神經(jīng)網(wǎng)絡模型中,人們較多用的是Hopfield網(wǎng)絡、BP網(wǎng)絡、Kohonen網(wǎng)絡和ART網(wǎng)絡模型。其中的BP神經(jīng)網(wǎng)絡是基于反向傳播(BackPropagation)的網(wǎng)絡,也是神經(jīng)網(wǎng)絡領域中研究最多、應用最廣的網(wǎng)絡模型。它采用最小均方差的學習方式,可用于函數(shù)逼近及語言綜合、識別和自適應控制等。
2.標準BP神經(jīng)網(wǎng)絡算法
BP算法作為前饋網(wǎng)絡的主要學習算法,對神經(jīng)網(wǎng)絡的推廣應用起了舉足輕重的促進作用。標準的BP網(wǎng)絡,優(yōu)化計算的方法很多,比較典型的是采用一階梯度法,即最速下降法。在BP神經(jīng)網(wǎng)絡訓練中,主要是針對一定的輸入,所得到的輸出是否與期望輸出接近,即誤差的代價函數(shù)達到最小。其簡單的實現(xiàn)步驟為:(1)通過網(wǎng)絡輸入反向傳播;(2)通過網(wǎng)絡將敏感性反向傳播;(3)使用近似均方誤差的BP算法更新權(quán)值和偏置值。
標準的BP算法因具有簡單、易行、計算量小及并行性強等優(yōu)點,是目前神經(jīng)網(wǎng)絡訓練采用最多、最成熟的訓練算法。由于BP網(wǎng)絡中待尋優(yōu)的參數(shù)太多,往往導致算法收斂速度慢。對于復雜問題,訓練過程需迭代幾千、幾萬次才能收斂到期望的精度。因此,標準的BP網(wǎng)絡在很大程度上實用性不強,尤其對于實時性很強的系統(tǒng)而言。
3.BP算法的改進
BP多層前饋網(wǎng)絡已成為神經(jīng)網(wǎng)絡的重要模型之一,但實際上的BP多層前饋網(wǎng)絡并不是利用標準的BP算法對網(wǎng)絡進行訓練的,而是對BP算法進行了啟發(fā)式改進。
(1)增加動量因子法
BP算法的神經(jīng)網(wǎng)絡的誤差曲面具有不同的區(qū)域有不同的誤差改變率的特點。假若開始訓練的學習速率較高,那么算法的收斂速度可能很快。但當?shù)M入的區(qū)域包含極小點時,此時算法發(fā)散,來回振蕩,收斂不到極小值點。如果用平均改變參數(shù)的方法進行軌跡的過濾,就可以對震蕩進行平滑并可產(chǎn)生穩(wěn)定的軌跡。當動量濾波器的參數(shù)得到了改變,獲取反向傳播的動量,使用了動量項,可以在保證算法較為穩(wěn)定的前提下,在網(wǎng)絡訓練進入局部最小值時產(chǎn)生一個繼續(xù)向前的正向斜率運動,使得搜索能夠跳出較淺的峰值;當網(wǎng)絡搜索位于誤差曲面平坦區(qū)的區(qū)域時,該方法能夠較快地提高訓練速度。
(2)變步長法
變步長法通過調(diào)整網(wǎng)絡訓練的學習率,故也稱為可變學習速率的方法。BP算法中對連接權(quán)值的調(diào)整,取決于兩個因子,即學習速率和梯度。其中通過調(diào)整學習速率提高算法收斂收率的方法,是當前認為最簡單、有效的方法。學習率不能隨意選取,選得太小,收斂會變慢;選得太大,可能調(diào)整過多,使得算法振蕩或發(fā)散。所以,在對學習率進行調(diào)整時,一般遵循的準則是:首先檢查修正值,看該值是否明顯降低了誤差。如果降低了,則學習率的值選取偏小,可以作為對學習率調(diào)整的參考;否則,學習率值調(diào)整過大,就應該對該值進行減小。增加可變速率參數(shù)后,得到改進的BP算法如下:
①如果整個訓練集上的均方誤差權(quán)值在更新后增加的,且該值超過了預設的某個百分數(shù),如:1%~5%,則不對權(quán)值進行更新。學習速率被乘以一個大于零且小于1的因子,并且動量系數(shù)被設置為0。
②如果均方誤差在權(quán)值更新后變小了,則接受權(quán)值更新。學習速度將被乘以一個大于1的因子。假若學習率被設置為0,則恢復之原來的值。
③如果均方誤差的增長變小,則權(quán)值更新被接受,但學習速度保持不變。如果學習率過去被設置為0,則恢復到以前的值。
4.實驗結(jié)果
分別對目標誤差為0.001的網(wǎng)絡訓練。實驗結(jié)果如下:
(1)采用標準BP網(wǎng)對樣本進行訓練,迭代次數(shù)近5000次尚未收斂。
(2)采用增加動量法,迭代375次,學習過程收斂。
(3)采用變步長法,迭代1728次收斂。
由此可見,未改進的標準BP學習算法存在收斂速度慢的缺陷;改進后的BP學習算法都從不同程度上提高了算法的收斂速度,訓練的次數(shù)大大減小了。對BP算法采用啟發(fā)式改進措施后,明顯提高了學習速度。
5.結(jié)語
BP神經(jīng)網(wǎng)絡最強大的應用之一就是函數(shù)逼近,即從訓練樣本出發(fā),對未知函數(shù)進行非線性逼近。由于網(wǎng)絡的拓撲結(jié)構(gòu)直接影響網(wǎng)絡對函數(shù)的逼近能力和效果,因此,在實際應用中,應根據(jù)具體問題,選擇一個合適的網(wǎng)絡結(jié)構(gòu)。BP網(wǎng)絡的學習算法屬于全局逼近的算法,具有較強的泛化能力,它的主要應用問題是隱層數(shù)及隱層節(jié)點個數(shù)的確定。這個問題有待進一步研究和討論。