摘要:為了開發(fā)對科研實驗數(shù)據(jù)的非線性關系精確建模工具,該文討論了將遺傳算法GA和神經(jīng)網(wǎng)絡算法結合,并使用Matlab軟件實現(xiàn)計算過程。針對一個非線性測試函數(shù)逼近問題,設計了Matlab軟件的GA算法的實現(xiàn)過程,并實驗測試分析了GADS工具箱算子選擇和參數(shù)設置。比較了單純GA方法和GA結合Levenberg-Marquardt BP方法局部尋優(yōu)的效果。結果表明實驗中設計的基于Matlab的GA神經(jīng)網(wǎng)絡計算方案是一種有效的高精度模型,算法設計實現(xiàn)過程有指導意義,能為各領域提供有力復雜非線性建模工具。
關鍵詞:神經(jīng)網(wǎng)絡;遺傳算法;非線性函數(shù)逼近;Matlab;GADS
中圖分類號:TP18文獻標識碼:A文章編號:1009-3044(2009)35-10063-03
Nonlinear Function Approximation Based on Genetic Algorithm and Artificial Neural Network Implemented Using Matlab
HE Zheng-da1, XU Mei2
(1.Department of Basic Sciences, China Pharmaceutical University, Nanjing 210009, China; 2.Jiangsu Chia Tal-tianqing Pharmaceutical Co Ltd, Nanjing 210038, China)
Abstract: In order to develop an exact non-linear relationship scientific experimental data modeling tool, the combination of genetic algorithm with artificial neural network and its realizations based on Matlab were discussed in this paper. To solve a nonlinear test function approximation problem, an implementation process of the GA algorithm based on Matlab was designed. GA operators selection and parameter settings of GADS toolbox were evaluated and analyzed. Comparison of pure GA algorithm with Levenberg-Marquardt BP Local optimization after GA method was made. The results demonstrate that the designed hybrid GA–NN method is an effective high-precision model which can be used in many areas for complex non-linear modeling.
Key words: ANN; GA; nonlinear test function approximation; Matlab; GADS;
在科研中遇到的研究對象影響元素和因變量之間呈現(xiàn)高度的非線性關系,由于噪聲影響和內(nèi)在影響機制不明,建立解析式數(shù)學模型是很困難的。人工神經(jīng)網(wǎng)絡ANN采用并行結構和處理機制,具有很強的容錯性以及自學習、自組織及自適應能力,能夠模擬復雜的非線性映射[1-2],是一種優(yōu)秀的函數(shù)逼近建模工具。眾多ANN模型[3]中,多層前向神經(jīng)網(wǎng)絡MLFN(multilayer feed forward neural network)采用反向傳播學習算法(BP算法),廣泛應用于函數(shù)逼近、函數(shù)優(yōu)化、分類與模式識別、控制等。遺傳算法(Genetic Algorithm,簡稱GA)是一種隨機優(yōu)化搜索算法具有全局性、魯棒性強、適于并行處理等優(yōu)點[4]。研究表明,GA與ANN結合可以獲得高精度、更好泛化能力的函數(shù)模型。
遺傳算法結合神經(jīng)網(wǎng)絡[5-6],可以利用遺傳算法進化神經(jīng)網(wǎng)絡的連接權、網(wǎng)絡結構和學習規(guī)則[7-8]。其中GA進化網(wǎng)絡連接權具有較高實用意義。本文采用GA進化ANN連接權。BP等ANN算法是基于梯度算法,要求目標函數(shù)可微,且依賴于初始權值,不當?shù)某跏紮嘀禃е戮W(wǎng)絡收斂速度慢與陷入局部最優(yōu)的缺陷,特別對高維優(yōu)化問題,由于誤差性能面復雜風險更大。GA可克服BP算法的缺陷。GA有優(yōu)良的全局搜索能力,可并行搜索多解在整個解空間找到最優(yōu)解,且有逃離局部優(yōu)解能力。GA不需要目標函數(shù)梯度信息,當目標函數(shù)不可微、多極值、遺傳進化算法具有明顯的優(yōu)勢。但GA自身也有局部搜索能力差的缺陷。
本文用一個非線性測試函數(shù)進行GA和神經(jīng)網(wǎng)絡方法進行函數(shù)逼近試驗。實驗基于Matlab的ANN和GA工具箱。討論了GA算法訓練ANN權值偏置的實現(xiàn)步驟。并測試了Matlab工具箱的GA不同參數(shù)設置的效果,以及函數(shù)逼近的GA和神經(jīng)網(wǎng)絡結合方式的優(yōu)劣。
1 GA學習神經(jīng)網(wǎng)絡的權值的步驟
GA搜尋(訓練)神經(jīng)網(wǎng)絡的權值的一般步驟為:Step1,首先確定神經(jīng)網(wǎng)絡結構,將網(wǎng)絡權值偏置向量編碼成GA算法染色體。Step2,設定合適的遺傳算法群體規(guī)模N。產(chǎn)生N個初始染色體,形成初始種群。Step3,將染色體譯碼后的神經(jīng)網(wǎng)絡代入訓練樣本集計算網(wǎng)絡輸出和誤差目標函數(shù),根據(jù)目標函數(shù)計算個體適應度,適應度標定。根據(jù)標定后的適應度選擇個體。Step4,選擇后的個體進行交叉重組、變異遺傳操作,形成新一代種群。Step5,將新一代種群染色體解碼成神經(jīng)網(wǎng)絡,計算網(wǎng)絡誤差目標函數(shù)。判斷誤差是否滿足要求,不滿足要求轉(zhuǎn)step3,滿足則轉(zhuǎn)step6。Step6,GA算法終止,挑選末代種群中最佳個體解碼成網(wǎng)絡最優(yōu)權值偏置。
2 GA與神經(jīng)網(wǎng)絡結合進行函數(shù)逼近的測試
GA與神經(jīng)網(wǎng)絡結合進行函數(shù)逼近,除了上面指出的一般步驟,具體實現(xiàn)方法和參數(shù)選擇需要研究,本文將針對一個非線性函數(shù)逼近問題對GA參數(shù)選擇設計和GA與ANN算法結合方式進行實驗。
實現(xiàn)和測試都是基于Matlab的神經(jīng)網(wǎng)絡和遺傳算法與直接搜索工具箱(GADS Toolbox)。在GUI界面的GA工具箱中,創(chuàng)建初始種群的主要參數(shù)是數(shù)據(jù)類型(Population type)、種群的大小(Size of population),初始種群取值的范圍(Initial range)等;適應度尺度變換函數(shù)(Fitnness scaling)有:排序(Ranking)、比率(Proportional)、最佳比例(Top)、線性轉(zhuǎn)換(Shift linear)、自定義等;選擇算子Selection function有:隨機均勻分布(Stochastic uniform)、剩余(Remainder)、均勻(Uniform)、輪盤賭(Roulette)、錦標賽(Tournament)等。交叉參數(shù)(Crossover function)有:離散重組(Scattered)、啟發(fā)式重組(Heuristic)、單點交叉(Simple point)等五種交叉方式,Scattered;Single point;Two point;Intermediate等也可以自定義。交叉操作還需設置交叉概率。變異函數(shù)有高斯變異(Gaussian)、均勻變異(Uniform),也可以自定義。
2.1 測試函數(shù)
測試函數(shù)自變量p,定義域為[-3,3],自變量數(shù)據(jù)間隔為0.1,自變量集合[-3,-2.9,-2.8…,2.8,2.9,3]對應的數(shù)據(jù)組號分別為[1,2,3…,58,60,61]。目標函數(shù)為,數(shù)據(jù)集共61個樣本對。函數(shù)圖像類似于一個墨西哥草帽。
2.2 GA學習網(wǎng)絡權值實現(xiàn)和GA參數(shù)選擇測試
MLFN網(wǎng)絡的結構確定為單隱層1-7-1網(wǎng)絡,其中隱層神經(jīng)元數(shù)目參照經(jīng)驗公式[9],并且實驗動態(tài)刪減確定。隱層和輸出層都采用tansig傳輸函數(shù)??紤]輸出層傳輸函數(shù)輸出是有限[-1,1]區(qū)間,另為了避開輸出飽和區(qū),輸入數(shù)據(jù)輸出數(shù)據(jù)都標準化到[-0.7,0.7]中。將數(shù)據(jù)集劃分為:校驗集為樣本集組號(1,10,11,18,21,45,49, 53,59,),測試集為組號(3,4,7,9,24,25,32,34,35,39,41,52),其余數(shù)據(jù)為訓練集。
將選定網(wǎng)絡權值偏置用實數(shù)編碼(選定Population type為Double vector)為長度為22基因的染色體串:
。
這樣省去了編碼解碼過程,提高了運算精度和速度,種群穩(wěn)定性強[10-11],避免了二進制編碼巨大碼長。
種群規(guī)模(Population size)M一般最好是個體基因數(shù)2到5倍。Matlab中默認為20,本實驗中,在GA參數(shù)測試中種群規(guī)模為70,GA與BP算法結合測試中取為110正式計算。Matlab提供的種群初始化有uniform和feasible population以及自定義。由于這里種群初始化實際上就是網(wǎng)絡初始化,所以也可以用神經(jīng)網(wǎng)絡NW方法初始化個體。
遺傳算法評價個體性能的目標函數(shù)設計為訓練集所有40個樣本網(wǎng)絡輸出α與目標輸出t的標準化的均方誤差:
。
由于網(wǎng)絡進化的方向是使均方誤差最小,所以采用目標函數(shù)倒數(shù)1/F作為適應度函數(shù)。然后使用Ranking尺度變換按1/F排序的名次進行適應度的標定,防止算法早熟和進化后期GA算法停滯。
在以上網(wǎng)絡結構,編碼方案,種群初始化確定后,下面對Matlab中GA算子選擇和參數(shù)設置進行測試,每類測試是在其他類參數(shù)設置相同,同樣初始隨機態(tài)的條件下,逐個選用此類算子或參數(shù)中不同方案,各完成100代GA進化,觀察最后代的最佳和平均個體目標函數(shù)值。目標函數(shù)值小的方案為優(yōu)選。
選擇方法測試:實驗確定相同條件下使用Stochastic uniform選擇算子效果良好。Stochastic uniform提供了零偏差和最小個體擴展,是一個有效的選擇方法,效果優(yōu)于根據(jù)適應度的比例進行選擇的輪盤賭方法。
再生策略測試:子代由精英,交叉重組產(chǎn)生個體,變異產(chǎn)生個體組成。精英是選擇最佳適應度的n個個體直接進入子代,這可以使GA算法收斂于最優(yōu)解。相同條件下多次測試2,4,6,8,10不同的精英數(shù)目,發(fā)現(xiàn)精英數(shù)目為2時結果良好。精英數(shù)目過多會導致很多高適應度的個體沒有進行遺傳操作,也就沒有有效進行優(yōu)良基因的擴散與組合。重組概率即多少比例的個體會由重組的方式產(chǎn)生,是一個影響算法性能的重要參數(shù)。在測試中其他參數(shù)相同,同樣初始隨機態(tài)的條件,改變重組概率,實驗結果基本類似。圖1是其中一次實驗的最佳目標函數(shù)值對重組率的圖,具有代表意義。從圖1中可以看出合適的重組率是0.8。
重組與變異測試:重組與變異的方法是關鍵的遺傳操作。在精英數(shù)目為2,重組概率為0.8的參數(shù)設置下測試各種重組和變異方式的組合,每種組合計算100代,觀察最后一代最佳個體解碼后得到的標準化均方誤差目標函數(shù)值。測試結果顯示在表1。
從表1中可以看到離散重組總體效果要比算術重組好些。原因可能是算術重組對基因進行線性運算,使一些好基因來不及反應在高適應度個體里就發(fā)生了變化。從表1中可以看出變異方式中自適應變異的效果比較好。下面分析這種差異的原因。均勻變異是個固定小概率的變異,能夠使在全搜索空間上變換搜索點,但它難以對重點區(qū)域進行局部搜索,搜索效率不能保證。高斯變異逐代減少基因的變異方差,在進化的末期有利于算法收斂,但由于收斂的代數(shù)難以預測,所以有可能過早限制了變異,降低算法效果。這里采用高斯變異的參數(shù)Scale=0.8和Shrink=0.5,相對來說條件比較寬松。從圖2中可以看出高斯變異個體的平均距離逐漸降低,個體范圍的過早縮減也導致了算法進展不大。自適應變異采用動態(tài)變異概率,個體集中時采用高變異率,個體分散時采用低變異率,這樣有效保證了種群的多樣性。另外自適應變異對高適應度優(yōu)良個體采用低變異率,也保證了優(yōu)良個體的存活和繁衍。在圖3中,一旦個體平均距離下降,很快就通過高變異率擴散,加速引進優(yōu)良基因,個體平均距離增加。自適應變異最佳個體目標函數(shù)值持續(xù)下降。
2.3 GA與神經(jīng)網(wǎng)絡結合方式測試
GA與神經(jīng)網(wǎng)絡結合進行權值的學習方式主要有三類:1)完全用遺傳算法替代BP算法,找到網(wǎng)絡的最優(yōu)權值或近似最優(yōu)權值。在這里稱之為單純GA優(yōu)化。2)先用遺傳算法找到網(wǎng)絡的初始權值分布,然后用BP算法局部尋優(yōu)。3)其他方式,有文獻指出可以用GA和BP算法輪流學習網(wǎng)絡權值;還有文獻提出在遺傳操作中加入按一定的概率實現(xiàn)BP算子。
2.3.1 單純GA方式GA計算
根據(jù)上面的測試,確定遺傳算法參數(shù)。種群規(guī)模為110個個體,初始種群基因為[-1,1]中的隨機數(shù),并且初始種群是通過預先搜索產(chǎn)生的較高適應度個體;適應度計算方法為排序方法;選擇方法隨機遍歷抽樣法;精英數(shù)目取2,交叉重組概率為0.8;采用分散重組,自適應變異。遺傳算法代數(shù)設定為500代。
下面是遺傳算法計算的目標函數(shù)值變化圖。從圖4中可以看出平均目標函數(shù)值反復震蕩,說明算法維持很好的種群多樣性。400代后算法最佳個體均方誤差目標函數(shù)值基本趨于收斂,進化很慢。最后種群最佳個體目標函數(shù)值為0.00229。
由于算法是通過訓練集計算的。為提高網(wǎng)絡泛化能力和預測能力,用校驗集樣本來挑選最優(yōu)解,將末代群種個體解碼得到網(wǎng)絡,然后用校驗集代入網(wǎng)絡計算輸出與目標的均方誤差。均方誤差最小的網(wǎng)絡對應的個體就是挑選出來的最優(yōu)解。將此最優(yōu)解解碼成網(wǎng)絡權值和偏置得到的網(wǎng)絡計算輸出與目標函數(shù)值的最小誤差0.0003,最大誤差0.6354,均方誤差0.0866。圖6顯示的是這種方式網(wǎng)絡的計算輸出和實際曲線圖。從圖6中可以看出,純粹采用遺傳算法得到的網(wǎng)絡計算誤差較大,預測精度不高,不能完全體現(xiàn)遺傳神經(jīng)網(wǎng)絡的優(yōu)越性。
2.3.2 GA后LM BP算法局部優(yōu)化
將遺傳算法最后代種群中挑選出來的最佳解,解碼成網(wǎng)絡的初始權值,用BP算法進行訓練,完成局部尋優(yōu)。這里使用Levenberg-Marquardt算法,設置的參數(shù)為μ=10-3,最小梯度為10-10,μ增大乘數(shù)因子為10,μ減小乘數(shù)因子為0.1,最大μ為1010。訓練采用校驗集提前中止法。圖5為GA得到最優(yōu)解解碼成初始狀態(tài)的網(wǎng)絡的訓練圖。
訓練后的網(wǎng)絡計算輸出與目標函數(shù)值的最小誤差0,最大誤差0.0376,均方誤差0.00018。圖7顯示的是這種方式網(wǎng)絡的計算輸出和和實際曲線圖,通過訓練局部尋優(yōu)的網(wǎng)絡函數(shù)擬和效果非常好,誤差小到可以忽略。從圖8中可以看到校驗集和測試集預測誤差很小,兩集的相關系數(shù)達到0.9996和0.99999。局部優(yōu)化的網(wǎng)絡具有良好的泛化能力,網(wǎng)絡預測能力很好。
從單純GA方式和GA后BP算法優(yōu)化兩種方式的對比上可以看出:由于GA算法局部搜索能力差,單純GA方式后期費時長很難達到高精度。先GA,后LM BP的方式可以達到比一般BP算法高的精度。GA可在早期對神經(jīng)網(wǎng)絡的權值偏置解做有效的全面逼進,找到最優(yōu)解空間附近,降低了算法局部最小風險,為后來的BP算法提供一個良好的起點,產(chǎn)生了高精度,高泛化能力。GA后的LM BP算法可在局部迅速尋找最優(yōu)點,提高計算效率。
3 結論
本文用Matlab實現(xiàn)了GA算法學習ANN權值,并且通過測試選定Matlab GADS工具箱算子與參數(shù)設置,對提出的非線性測試函數(shù)有效逼近。該過程對其它領域非線性函數(shù)逼近和優(yōu)化問題也有指導意義。并通過實驗實現(xiàn)和比較了單純GA和GA后LMBP尋優(yōu)方式的效果,顯示GA后LMBP是一種優(yōu)秀的非線性函數(shù)逼近模型。
參考文獻:
[1] 謝承泮.神經(jīng)網(wǎng)絡發(fā)展綜述[J].科技情報開發(fā)與經(jīng)濟,2006(12):156-158.
[2] 汪鐳,周國興,吳啟迪.人工神經(jīng)網(wǎng)絡理論在控制領域中的應用綜述[J].同濟大學學報: 自然科學版,2001,29(3):357-361.
[3] 張劍湖, 葉峰.人工神經(jīng)網(wǎng)絡的模型、特征及其發(fā)展方向[J].現(xiàn)代電子技術,2004(12).
[4] 鄭立平,郝忠孝.遺傳算法理論綜述[J].計算機工程與應用,2003,21(20):50-54.
[5] 趙志剛, 單曉虹.一種基于遺傳算法的RBF神經(jīng)網(wǎng)絡優(yōu)化方法[J].計算機工程,2007(6):211-212.
[6] 郭麗霞,康寶生.基于微種群遺傳算法和RBF神經(jīng)網(wǎng)絡的散亂數(shù)據(jù)重建方法[J].計算機應用與軟件,2008(1):33-35.
[7] 姚望舒,萬瓊,陳兆乾,等.進化神經(jīng)網(wǎng)絡研究綜述[J].計算機科學,2004,31(3):121-129.
[8] Leung Fhf Lam ,Hk Lingsh, et al. Tuning of the structure and parameters of a neural using an improved genetic algorithms .IEEE Transactions on Neural networks, 2003,14(1):79-88.
[9] 袁曾任.人工神經(jīng)元網(wǎng)絡及其應用[M].北京:清華大學出版社,1999.
[10] 范睿,李國斌,景韶光.基于實數(shù)編碼遺傳算法的混合神經(jīng)網(wǎng)絡算法[J].計算機仿真,2006(1):172-175.
[11] 趙青,楊倩.遺傳算法三種編碼策略的比較研究[J].重慶文理學院學報:自然科學版,2008(2):18-19.