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