富宇 李倩 劉澎
(東北石油大學計算機與信息技術學院 大慶 163318)
BP神經網絡是依據類似人腦的神經應對外部干擾的的刺激做出反應的方法,是一種多層前饋型網絡[1~3]。BP神經網絡主要包括三層,即輸入層、隱藏層和輸出層,不同層分別包括多個并行的神經元信號。BP神經網絡利用正向傳播信號并結合誤差的反向調節,尋找各個層級之間神經元的權值,從而構造出神經網絡模型。在正向傳播時,信號經過各層次。反向傳播時,將輸出層與期望輸出的誤差作為所用的信息。
向前傳播和反向調節是BP神經網絡算法的兩大步驟,這兩個步驟相互進行,指導模型的結果逼近期望輸出[4]。
在實際應用中的BP神經網絡會存在一些不足的地方,其層數較多,同時神經元節點較多,連接不同層級神經元間的權值也眾多,由于BP神經網絡受初始權值的約束[5~7],往往陷入局部最優,導致逼近期望輸出失敗。
通過對BP神經網絡研究的過程中發現,有文獻[8]將學習率調整為自適應來加快網絡收斂速度對算法進行改進,該方法是在傳統BP算法上對時變過程參數的神經元網絡學習的改進算法,但是該算法對于BP算法中的局部極小問題沒有解決。有文獻[9]在研究過程中提出利用更新權值時采用最佳學習因子,利用此改進算法在使用過程中的收斂速度,節省BP網絡訓練的步數,但是此改進方法在使用過程中發現針對BP算法中極小點的問題并沒有做出解決,同時發現改進的程度過于局限。在研究過程中發現有文獻[10]提出利用極限學習機的方法來提升BP算法的速度讀,此方法也就是增加結構型反饋網絡。應用此方法的學習速度比傳統的梯度型算法快,但是該算法對于多數訓練數據來說需要更多的隱層節點,這樣會導致計算的速度緩慢。
本文在研究的過程中著重對BP神經網絡在學習過程中收斂速度緩慢和易陷入局部最小值等問題,尋找出將壓縮映射遺傳和BP神經網絡相結合優化的方法,在大群體中找出最優個體來進行BP訓練,用此方法將收斂速度改善,減少訓練步數,降低訓練誤差,在BP算法在個體中的尋找最優和其他個體稱重的最優空間中尋找最優。
在傳統的BP算法的基礎上結合復雜前饋網絡,也就是多層前饋網絡,在使用時,單隱層的神經網絡應用次數比較多,非線性傳輸函數是隱層神經元在BP網絡中具有的特點。而在輸出層則用線性傳輸函數顯現。如果算法使用時,存在隱層的節點比較多的情況時,單隱層前饋網絡可以與任意區間內的連續函數進行靠近。
沒有約束優化是神經網絡訓練的主要存在的問題,訓練過程的目標就是要減少輸出端的均方誤差。在BP網絡中的輸出結果可以利用正向傳播來取得[11~14],如果使用過程中輸出的結果無法達到預期的期望,實踐過程就會進入反向傳播的狀態,并將權值在神經元連接處修改,如果發現算法中輸出層的輸出結果達不到預期的希望,算法就會進入反向傳播狀態,可不斷的調節神經元連接的權值,此過程循環往復的傳播,可以逐漸使誤差達到預期想允許的范圍,權值可修正如下所示:

網絡連接權值權初值的選擇對算法來說至關重要,權值初值的選擇合理化會致使網絡收斂性較好,相反,權值初值的選擇不合理會致網絡出現收斂性較差的情況,但是權值的選擇在BP網絡上的情況具有很大的隨機性,由此可看出算法使用時收斂的情況較為困難。
梯度方法是BP算法過程的重要部分,此方法具有收斂速度慢、容易受局部極小點的束縛[15~17],而此時遺傳算法可彌補BP算法過程中的不足,因此可彌補缺陷。
普通的遺傳算法無法保證整個全局都是收斂的。由此可用壓縮映射遺傳算法利用映射過程中的原理來解決遺傳算法整個全局都是收斂的問題。
設其中一距離空間是(X,d),則有對于每個x,y∈X有d(Ax,Ay)<a d(x,y),其中,a∈(0,1)是常數值,可看做A為X上的某個壓縮映射,此時映射f有唯一點,即有且僅有一個X可以使f(x)=X。
假設構造成員為P,同時設度量空間為X,壓縮映射是具有過程性的,在這個過程中,f都有唯一的確定點。該點是通過f應用于某一初始值P(0)不斷的發展獲出來,同時確定點找好后,就可以在該點上得知算法的收斂性,而與初始選擇的群體關系較小。
本文采用的BP網絡改進方法是將壓縮映射遺傳算法引入到BP網絡中,對BP網絡進行優化,以此來解決傳統BP算法中的缺陷問題。
在BP神經網絡中引入壓縮映射遺傳后的優化方法稱為GA優化,可理解為:GA進行遺傳操作前利用BP訓練對從而降低目標誤差的值,對群體中最優個體和其他不同的個體交叉、變異訓練,致使算法尋找出最優,在不同的個體之間,采用變異子代中找出目前正在運行的算法中最優的個體,用此最優個體進行下一次的BP訓練。
確定點P*在壓縮映射遺傳算法中可看做:

其中,P代表著產生算法使用過程中整個全局最好的群體。
在BP神經網絡中,三層的實驗具有非線性的映射關系,三層實現的非線性映射關系為

其中,訓練樣本用(xj,tk)表示,Nh為隱含元個數,f看做是激勵函數,輸入層和隱含層的連接權值可用w表示,隱含層輸出權值用C表示,隱含層閾值用θ表示。
由此,BP神經網絡訓練目標可如下表示:

其中,ω=(w,c,θ)。
通過對算法的深入研究,可將改進后的算法中參數的選擇和計算步驟總結如下:
1)找出應用BP網絡算法所求問題的應輸入樣本和輸出樣本,樣本確立后,對網絡結構做出假設,并假設出隱含層和輸出層過程中的激勵函數。
2)將運行參數設置出固定值,包括對算法中的群體的規模、最大化的代數等的設置。
3)實數編碼在BP網絡應用的過程中較為實用,因此采用實數編碼方式,實數編碼時要減少由二進制編碼造成的數值精度不準確以及取值范圍不確定的問題。
4)對算法評價的函數進行設定。不同的染色體可表示不同的權值,算法運行時把不同的權值發送到不同的網絡結構中去,之前已經有的訓練樣本可作為輸入和輸出,算法在運行之后將返回值作為個體的評價函數。
5)要產生初始群體,產生的過程是隨機的,同時也要計算不同群體中的每個個體的輸出誤差值。
6)判斷最優的個體在相鄰兩代中是否相同,若相鄰兩代最優個體相同,則進行下一步,若相鄰兩代最優個體不相同,則利用BP算法進行訓練。
7)需要判斷最優個體的輸出誤差是否與目標誤差不一致,或大或小。如果差別不大,則可以看做截止訓練,如果得到的值差別過大,則進行下一步。
8)要計算出不同的個體的適應度值。
9)在交叉子代和通過BP網絡訓練后的最優個體中選出當代最優個體進行接下來的BP訓練。
10)在個體中,任意兩個個體可以產生多個新的個體,組成新鮮的個體,采用的方法是交叉方法,將最優個體與群體中的個體相結合。在傳統的BP算法使用過程中,由于均勻變異和正太變異是與進化代數解關系不大,所以遺傳算法缺乏部分的搜索能力,導致算法在應用過程中的變異算子能夠自適應,這這個步驟的局部搜索過程中,搜索的范圍需考慮解的程度,可大幅度提高搜索的能力。
11)在這個步驟中,主要是對每個進化代數都加上1,完成后,對進化代數進行理解,找出進化代數是否能夠達到最大進化代數,如果能達到最大進化代數,可退出BP訓練,如果沒能達到最大進化代數,從步驟6)中心執行下一次的進化。
在上述表述中可知,在BP算法中引入壓縮映射遺傳算法,可以改進傳統BP網絡中的不足,將劣勢彌補,優化BP算法,同時,改進的BP神經網絡能夠大幅度提高使用過程中的收斂速度,可取得良好的訓練成果。
對改進的BP算法的實驗分析主要是通過對壓力、壓差等2000組數據進行仿真測試的。利用仿真測試對實驗數據模擬,可以幫助我們驗證算法的優劣。
本文所做的GA優化BP網絡結構主要分為三層,在BP網絡訓練的過程中采用三層訓練設計,由輔助變量、流動體的流動狀態、溫度、壓力、壓差等輸入神經元,神經元個數在隱層中為10,一個流量估計值和五個校驗值組成輸出神經元,為確保在網絡訓練的過程中無誤,可根據在實際中發生的狀況選取10組數據作為測試的樣本數據,在運行過程中,不斷地改變學習率和動量的因子,可使得目標精度為0.001,最大訓練步數為1998步,交叉率位0.65,變異率為0.07,47為初始種群個數,199是最大遺傳代數。如圖1為傳統的BP網絡訓練結果,圖2為壓縮映射遺傳與BP網絡訓練相結合的訓練結果。
由圖可知,傳統的BP網絡結構的訓練步數為958,其訓練時間為14.9531s。
利用GA優化后的BP網絡來訓練后的結果可知,訓練步數為671,訓練時間為13.9290s。與傳統的BP網絡相比,訓練步數減少了287,訓練時間減少了1.0241s,有較大幅度的提高。

圖1 傳統的BP網絡

圖2 GA優化的BP網絡
在數據文件中任意抽取5組數據用來驗證結果,各組數據為17個樣本,來對GA-BP網絡測試,分別計算出訓練步數、訓練時間。
可在數據文件中隨機抽取5組數據進一步驗證結果,每組數據為17個樣本,對GA-BP網絡進行測試,計算其平均訓練步數和訓練時間。具體比較結果見如表1~3所示,傳統的BP網絡結構為表1、GA優化的BP網絡結構為表2、傳統的BP網絡結構與GA優化的BP網絡為表3。

表1 傳統的BP網絡結構

表2 GA優化的BP網絡

表3 傳統的BP網絡結構與CMGA優化的BP網絡
在上述表中,I代表訓練時間,X代表訓練步數,B代表是否達到訓練精度,F代表是否收斂,P代表均值,N代表訓練次數編號。
通過對表1、表2和表3的統計結果可知,傳統的BP算法訓練過程所用的時間相對較長,訓練步數比較多,平均達到963.6步,但是成功率幾乎達到100%。優化后的BP網絡跟傳統的BP算法訓練過程相比所用的時間較少,平均所用時間為13.6621,同時訓練過程所需要的步數也較少,均值為799步,精度并無發生任何變化。由此可知,優化后的算法對BP網絡訓練所達到的精確程度和收斂程度并不影響,訓練時間和訓練步數相對傳統的BP網絡節省較多。
改進后的BP算法,即利用本文提出的GA優化后的BP神經網絡在保證神經網絡訓練達到全局最優的同時,還可以幫助克服BP算法易陷入局部及小點和BP神經網絡在學習時候權值選擇的這一主要問題。本文也通過最算法在實驗中的仿真數據對優化的BP網絡合理性進行了證實。通過實驗結果可以看到本方法取得了良好的效果,對以后BP神經網絡的研究提供了重要的參考價值。