中北大學機械工程與自動化學院 葉 超 姚竹亭
時間序列是由一個低維的具有非線性和確定性的動態(tài)系統(tǒng)產(chǎn)生的外表象隨機信號但并非是隨機信號的時間序列,這些序列中存在著一些與產(chǎn)生該序列的非線性動力學系統(tǒng)相關(guān)的固有的確定性和一些幾何拓撲不變性。預(yù)測是人們根據(jù)事物的發(fā)展規(guī)律、歷史和現(xiàn)狀,分析影響其變化的因素,對其發(fā)展前景和趨勢預(yù)先進行的一種推測。對于現(xiàn)實中大量存在的非線性、非平穩(wěn)的復雜動力系統(tǒng)問題,需要確定合適的模型階數(shù),這是比較困難的,為了更好地解決這一困難,本論文通過建立在對人工魚群算法和BP神經(jīng)網(wǎng)絡(luò)算法的掌握及應(yīng)用在時間序列預(yù)測上,提出了基于人工魚群算法和BP神經(jīng)網(wǎng)絡(luò)算法的時間序列預(yù)測系統(tǒng)模型[1]。
無論是在自然科學,還是在社會科學領(lǐng)域的實際工作者和研究人員都要和一系列的觀測數(shù)據(jù)打交道,這些觀測數(shù)據(jù)隨時間變化而相互關(guān)聯(lián),其排列順序與大小體現(xiàn)了不同時刻的觀測值之間的相互聯(lián)系,觀測值之間的這種依賴關(guān)系或相關(guān)性,表征了產(chǎn)生這些數(shù)據(jù)的現(xiàn)象、過程或系統(tǒng)的某些時間變化特征和規(guī)律。我們把這些按照時間順序產(chǎn)生和排列的觀測數(shù)據(jù)序列稱為時間序列。從系統(tǒng)意義上看,時間序列就是某一系統(tǒng)在不同時間(地點、條件等)的響應(yīng)。在時間序列預(yù)測中,BP神經(jīng)網(wǎng)絡(luò)是最常使用的網(wǎng)絡(luò)。BP網(wǎng)絡(luò)是一種非線性神經(jīng)網(wǎng)絡(luò),Robert Hecht Nielson已證明只有一個隱層的神經(jīng)網(wǎng)絡(luò),只要隱節(jié)點足夠多,就可以以任意精度逼近一個非線性函數(shù)[2]。
但是神經(jīng)網(wǎng)絡(luò)方法有它的缺點,比如:
(1)計算速度慢(計算量大,學習算法不成熟,不同的算法針對不同的問題收斂才快些)。
(2)輸入信號與訓練信號相差加大時,可能導致結(jié)果完全錯誤(不同的區(qū)域可能有不同的極值)。
因此可以將人工魚群算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合。人工魚群(Artificial Fish-swarm Algorithm,AFSA)是一種基于模擬魚群行為的優(yōu)化算法,是由李曉磊等于2002年提出的一種新型的尋優(yōu)算法。AFSA是一種新型的思路,從具體的實施算法到總體的設(shè)計理念,都不同于傳統(tǒng)的設(shè)計和解決方法,但同時它又能與傳統(tǒng)方法相融合。因此,AFSA自提出以來,得到了國內(nèi)外學者的廣泛關(guān)注,對算法的研究應(yīng)用已經(jīng)滲透到多個應(yīng)用領(lǐng)域,并由解決一維靜態(tài)優(yōu)化問題發(fā)展到解決多維動態(tài)組合優(yōu)化問題。AFSA己經(jīng)成為交叉學科中一個非?;钴S的前沿性研究問題[3]。
在基本人工魚群算法(AFSA)中,主要是利用了魚群的覓食、聚群和追尾行為,從構(gòu)造單條魚的底層行為做起,通過魚群中各個體的局部尋優(yōu),達到全局最優(yōu)值在群體中突現(xiàn)出來的目的。從目前對人工魚群算法的研究來看,絕大部分集中在如何應(yīng)用AFSA解決實際問題。通過深入研究和實踐發(fā)現(xiàn),AFSA雖然具有很多優(yōu)良的特性,但它本身也還是存在一些問題,如隨著人工魚數(shù)目的增多,將會需求更多的存儲空間,也會造成計算量的增長[4];對精確解的獲取能力不夠,只能得到系統(tǒng)的滿意解域;當尋優(yōu)的區(qū)域較大,或處于變化平坦的區(qū)域時,收斂到全局最優(yōu)解的速度變慢,搜索效率劣化;算法一般在優(yōu)化初期具有較快的收斂性,而后期卻往往收斂較慢。這些算法本身存在的問題,在一定程度上也影響了算法的實際應(yīng)用[5]。
在當今已經(jīng)有許多的研究方向,首先采用人工魚群算法擬合時間序列并求出大量的數(shù)據(jù)訓練神經(jīng)網(wǎng)絡(luò),彌補了歷史數(shù)據(jù)缺乏的問題;然后用訓練好的神經(jīng)網(wǎng)絡(luò)代替?zhèn)鹘y(tǒng)的最小二乘法擬合時間序列因素,從而求出預(yù)測值。仿真結(jié)果表明,此模型能夠有效地改善模型的擬合能力并提高預(yù)測精度。為實現(xiàn)更好的預(yù)測,有時采用神經(jīng)網(wǎng)絡(luò),但前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)難以確定,運用BP算法時又極易陷入局部解。本文將改進人工魚群算法與BP算法相結(jié)合的IAFSA+BP算法,實現(xiàn)了人工魚群算法的全局搜索能力與BP算法的局部尋優(yōu)性能的互補結(jié)合。將所設(shè)計的神經(jīng)網(wǎng)絡(luò)利用MATLAB/SIMULINK進行傳感器控制系統(tǒng)的建模仿真實驗結(jié)果表明,該算法具有良好辨識效果[6]。
圖1 基于人工魚群算法和BP神經(jīng)網(wǎng)絡(luò)的計算流程
圖2 基于BP神經(jīng)網(wǎng)絡(luò)時間序列預(yù)測模型的部分程序
由于BP神經(jīng)網(wǎng)絡(luò)存在對初始參數(shù)要求高、學習收斂速度慢,網(wǎng)絡(luò)性能差,優(yōu)化權(quán)值時容易陷入局部極小值等缺陷。而人工魚群算法具有對初值和參數(shù)要求不高,克服局部極值、更好地協(xié)調(diào)全局和局部搜索能力等優(yōu)點。因此,將人工魚群算法與BP算法相結(jié)合的混合算法訓練人工神經(jīng)網(wǎng)絡(luò),可實現(xiàn)兩種算法的取長補短。
構(gòu)造人工魚個體模型是改進人工魚群算法優(yōu)化訓練BP神經(jīng)網(wǎng)絡(luò)關(guān)鍵,設(shè)人工魚群規(guī)模為N,每個人工魚看為一個前向神經(jīng)網(wǎng)絡(luò),任意兩人工魚個體的和(U1+U2)或差(U1-U2)其中i,j∈{0,1,.,N—l})仍看作不同神經(jīng)網(wǎng)絡(luò):待尋優(yōu)神經(jīng)網(wǎng)絡(luò)的參數(shù)設(shè)有權(quán)值矩陣[wij]和[vki],其中[wij]為第i個隱層神經(jīng)元與第j個輸入神經(jīng)元之間的權(quán)值,[vki]為第k個輸出神經(jīng)元與第i個隱層神經(jīng)元之間的權(quán)值;閾值向量[wio]和[vko],而[wio]為第i個隱層神經(jīng)元的閾值,[vko]為第k個輸出神經(jīng)元的閾值;其參數(shù)也隨著人工魚的迭代進化而不斷優(yōu)化。
設(shè)神經(jīng)網(wǎng)絡(luò)的輸入和輸出節(jié)點分別為S和P,而網(wǎng)絡(luò)隱層節(jié)點數(shù)一般取輸入輸出節(jié)點的平均值,以Sigmoid函數(shù)作為BP網(wǎng)絡(luò)的激勵函數(shù),根據(jù)前向網(wǎng)絡(luò)計算算法求出相應(yīng)每組輸入樣本的網(wǎng)絡(luò)輸出結(jié)果;把網(wǎng)絡(luò)輸出均方誤差的倒數(shù)作為改進人工魚群算法的適應(yīng)函數(shù)(食物濃度)Y來指導人工魚群的進化。通過人工魚群算法的優(yōu)化搜索來訓練神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,當神經(jīng)網(wǎng)絡(luò)輸出均方誤差指標達到最小時,搜索出就是最優(yōu)BP網(wǎng)絡(luò),而該網(wǎng)絡(luò)相應(yīng)的權(quán)值和閾值等參數(shù)也是最佳的。其算法的適應(yīng)函數(shù)表示如下:
基于人工魚群算法的BP網(wǎng)絡(luò)訓練算法流程如下:
步驟一:輸入人工魚群的群體規(guī)模N,最大迭代次數(shù)number,人工魚的可視域VISUAL,人工魚的最大移動步長STEP,擁擠度因子δ。
步驟二:設(shè)置初始迭代次數(shù)num= 0,在控制變量可行域內(nèi)隨機生成N個人工魚個體,形成初始魚群,即產(chǎn)生N組[wij],[wio],[vki],[vko]且各個分量均為[- 1,1]區(qū)間內(nèi)的隨機數(shù)。
步驟三:計算初始魚群各人工魚個體當前位置的食物濃度值FC,并比較大小,取FC為最大值者進入公告板,將此魚賦值給公告板。
步驟四:各人工魚分別模擬追尾行為和聚群行為,選擇行動后FC值較大的行為實際執(zhí)行,缺省行為方式為覓食行為。
步驟五:各人工魚每行動一次后,檢驗自身的FC與公告板的FC,如果優(yōu)于公告板,則以自身取代之。
步驟六:中止條件判斷:判斷num是否已達到預(yù)置的最大迭代次數(shù)number,若是,則輸出計算結(jié)果(即公告板的FC值),否則num+= 1,轉(zhuǎn)步驟一。
基于人工魚群算法和BP神經(jīng)網(wǎng)絡(luò)的計算流程圖如圖1所示。
本論文對建立時間序列預(yù)測的BP神經(jīng)網(wǎng)絡(luò)的過程加以規(guī)范化,建立了基于BP神經(jīng)網(wǎng)絡(luò)的時間序列預(yù)測的通用方法,并通過實例來檢驗該時間序列預(yù)測模型的預(yù)測能力。MATLAB神經(jīng)網(wǎng)絡(luò)工具箱給出了兩種用于提高神經(jīng)網(wǎng)絡(luò)推廣能力的方法,即正則化方法(Regularization)和提前停止(Early stopping)方法,本文的模型建立過程中,用到正則化方法,利用sim函數(shù)可以對訓練后的網(wǎng)絡(luò)進行仿真。sim函數(shù)的常用格式如下:
①[Y,Pf,AL E,perf]=sim(net,P,Pi,Ai,T)
②[Y,Pf,Af,E,perf]=sim(net,{Q,TS},Pi,Ai,T)
③[Y,Pf,Af,E,perf]=sim(net,Q,Pi,Ai,T)
在sim函數(shù)的調(diào)用形式①中,輸入net為神經(jīng)網(wǎng)絡(luò)對象,P為網(wǎng)絡(luò)輸入,Pi為輸入延遲的初始狀態(tài),Ai為層延遲的初始狀態(tài),T為目標矢量。在函數(shù)返回值中,Y為網(wǎng)絡(luò)輸出,Pf為訓練終止時的輸入延遲的初始狀態(tài),Af為訓練終止時的層延遲狀態(tài),E為輸出和目標矢量之間的誤差,perf為神經(jīng)網(wǎng)絡(luò)的性能值。該函數(shù)中的P、T、Pi、Y、E、Pf和Af等參量可以是單元數(shù)組或矩陣。sim函數(shù)的調(diào)用形式②③用于沒有輸入的神經(jīng)網(wǎng)絡(luò),其中,Q為批處理數(shù)據(jù)的個數(shù),TS為神經(jīng)網(wǎng)絡(luò)仿真的時間步數(shù)。此外,神經(jīng)網(wǎng)絡(luò)工具箱還提供了postreg函數(shù),該函數(shù)可對訓練后網(wǎng)絡(luò)的實際輸出(仿真輸出)和目標輸出做線性回歸分析,以檢驗神經(jīng)網(wǎng)絡(luò)的訓練效果。使用MATLAB語言進行程序編寫,實現(xiàn)基于BP神經(jīng)網(wǎng)絡(luò)的時間序列預(yù)測模型,程序片斷如圖2所示。
根據(jù)2.2中提出的方法,在MATLAB軟件中對算法進行編程與實施,得到的仿真結(jié)果如圖3所示。
其中,檢測誤差:SSE=8.0059e-004,rerror21=-0.0054。
圖3 仿真結(jié)果
本文給出了基于人工魚群算法的BP神經(jīng)網(wǎng)絡(luò)的訓練模型,并形成了一種新的BP網(wǎng)絡(luò)訓練算法。從試驗結(jié)果比較分析可見:
(1)該方法具有較好的收斂性、初值不敏感和參數(shù)不敏感等特點;
(2)算法具有較快的收斂速度,算法收斂過程有明顯優(yōu)勢。
(3)算法用于對時間序列的預(yù)測,其結(jié)果表明是可行的。如何更好地將覓食、聚群和追尾三種優(yōu)化行為,體現(xiàn)在算法的處理上,以便使運算更加簡單,還需要進一步提高。
[1]李曉磊,邵之江,錢積新.一種基于動物自治體的尋優(yōu)模式:魚群算法[J].系統(tǒng)工程理論與實踐,2002,22(11):32-38.
[2]張冬,明新國等.基于BP神經(jīng)網(wǎng)絡(luò)和設(shè)備特性的工業(yè)設(shè)備備件需求預(yù)測[J].機械設(shè)計與研究,2010,26(1):72-77.
[3]康進,劉敬偉.非參數(shù)回歸估計與人工神經(jīng)網(wǎng)絡(luò)方法的預(yù)測效果比較[J].統(tǒng)計與決策,2009(23):153-155.
[4]王西鄧.人工魚群算法的改進研究[D].西安:西安建筑科技大學,2007.
[5]李曉磊.一種新型的智能優(yōu)化方法——人工魚群算法[D].杭州:浙江大學,2003.
[6]魏崇輝,金福祿,何亞群.基于粗糙集和神經(jīng)網(wǎng)絡(luò)的空軍航材消耗預(yù)測方法[J].東南大學學報(自然科學版),2004,34(Sup):68-70.
[7]Martin T.Hagan Howard B.Demuth Mark H.Beale.神經(jīng)網(wǎng)絡(luò)設(shè)計[M].戴葵,等譯.北京:機械工業(yè)出版社,2006.