本站小編為你精心準備了利用蟻群算法優化前向神經網絡參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
內容摘要:蟻群算法(antcolonyalgorithm,簡稱ACA)是一種最新提出的新型的尋優策略,本文嘗試將蟻群算法用于三層前向神經網絡的訓練過程,建立了相應的優化模型,進行了實際的編程計算,并與加動量項的BP算法、演化算法以及模擬退火算法進行比較,結果表明該方法具有更好的全局收斂性,以及對初值的不敏感性等特點。
關鍵詞:期貨經紀公司綜合實力主成分分析聚類分析
人工神經網絡(ANN)是大腦及其活動的一個理論化的數學模型,由大量的處理單元(神經元)互連而成的,是神經元聯結形式的數學抽象,是一個大規模的非線性自適應模型。人工神經網絡具有高速的運算能力,很強的自學習能力、自適應能力和非線性映射能力以及良好的容錯性,因而它在模式識別、圖像處理、信號及信息處理、系統優化和智能控制等許多領域得到了廣泛的應用。
人工神經網絡的學習算法可以分為:局部搜索算法,包括誤差反傳(BP)算法、牛頓法和共軛梯度法等;線性化算法;隨機優化算法,包括遺傳算法(GA)、演化算法(EA)、模擬退火算法(SA)等。
蟻群算法是一種基于模擬螞蟻群行為的隨機搜索優化算法。雖然單個螞蟻的能力非常有限,但多個螞蟻構成的群體具有找到蟻穴與食物之間最短路徑的能力,這種能力是靠其在所經過的路徑上留下的一種揮發性分泌物(pheromone)來實現的。螞蟻個體間通過這種信息的交流尋求通向食物的最短路徑。已有相關計算實例表明該算法具有良好的收斂速度,且在得到的最優解更接近理論的最優解。
本文嘗試將蟻群算法引入到前向神經網絡的優化訓練中來,建立了基于該算法的前向神經網絡訓練模型,編制了基于C++語言的優化計算程序,并針對多個實例與多個算法進行了比較分析。
前向神經網絡模型
前向人工神經網絡具有數層相連的處理單元,連接可從一層中的每個神經元到下一層的所有神經元,且網絡中不存在反饋環,是常用的一種人工神經網絡模型。在本文中只考慮三層前向網絡,且輸出層為線性層,隱層神經元的非線性作用函數(激活函數)為雙曲線正切函數:
其中輸入層神經元把輸入網絡的數據不做任何處理直接作為該神經元的輸出。設輸入層神經元的輸出為(x1,x2,Λ,xn),隱層神經元的輸入為(s1,s2,Λ,sh),隱層神經元的輸出為(z1,z2,Λ,zh),輸出層神經元的輸出為(y1,y2,Λ,ym),則網絡的輸入-輸出為:
其中{wij}為輸入層-隱層的連接權值,{wi0}隱層神經元的閾值,{vki}為隱層-輸出層的連接權值,{vk0}為輸出層神經元的閾值。網絡的輸入-輸出映射也可簡寫為:
1≤k≤m(5)
前向神經網絡的訓練樣本集為
A={Xi,Tii=1,2,A,n)}
(其中Xi∈Rn,為第i組訓練數據的輸入,Ti∈Rm為與第i組訓練數據的輸入對應的期望輸出,Tki為輸出層第k個神經元的期望輸出),設第i組訓練數據的輸入的實際輸出為Yi∈Rm,Yki為輸出層第k個神經元的實際輸出,則基于該訓練樣本集的誤差函數為
該函數是一個具有多個極小點的非線性函數,則對該前向神經網絡的訓練過程為調整各個神經元之間的連接權值和閥值{wij},{wi0},{vki},{vk0},直至誤差函數E達到最小。
誤差反向傳播算法(BP算法)是一種梯度下降算法,具有概念清楚、計算簡單的特點,但是它收斂緩慢,且極易陷入局部極小,且對于較大的搜索空間,多峰值和不可微函數也不能搜索到全局極小。為此人們提出了很多改進的學習算法,其中最簡單且容易實現的是加入動量項的變學習率BP算法,這種算法一般都比較有效,但是收斂速度還是比較慢,仍是局部搜索算法,從本質上仍然擺脫不了陷入局部極小的可能。為了擺脫局部極小,人們已經嘗試將可用于非線性優化的遺傳算法、演化算法以及模擬退火算法等進行前向人工神經網絡的訓練。
蟻群算法
蟻群算法簡介
螞蟻在路徑上前進時會根據前邊走過的螞蟻所留下的分泌物選擇其要走的路徑。其選擇一條路徑的概率與該路徑上分泌物的強度成正比。因此,由大量螞蟻組成的群體的集體行為實際上構成一種學習信息的正反饋現象:某一條路徑走過的螞蟻越多,后面的螞蟻選擇該路徑的可能性就越大。螞蟻的個體間通過這種信息的交流尋求通向食物的最短路徑。蟻群算法就是根據這一特點,通過模仿螞蟻的行為,從而實現尋優。這種優化過程的本質在于:
選擇機制:分泌物越多的路徑,被選擇的概率越大。
更新機制:路徑上面的分泌物會隨螞蟻的經過而增長,而且同時也隨時間的推移逐漸揮發消失。
協調機制:螞蟻間實際上是通過分泌物來互相通信、協同工作的。
蟻群算法正是充分利用了選擇、更新和協調的優化機制,即通過個體之間的信息交流與相互協作最終找到最優解,使它具有很強的發現較優解的能力。
蟻群算法具體實現
蟻群算法求解連續空間上的優化問題以求解非線形規劃問題為例。考慮如下的非線性規劃問題:minF(x1,x2,Λ,xn),使得,ai1x1+ai2x2+Λ+ainxn≥bi,i=1,2,Λ,r。這里F為任一非線形函數,約束條件構成Rn上的一個凸包。可以使用不等式變換的方法求得包含這個凸包的最小的n維立方體。設該立方體為
設系統中有m只螞蟻,我們將解的n個分量看成n個頂點,第i個頂點代表第i個分量,在第i個頂點到第i+1個頂點之間有ki條連線,代表第i個分量的取值可能在ki個不同的子區間。我們記其中第j條連線上在t時刻的信息量為τij(t)。每只螞蟻要從第1個頂點出發,按照一定的策略選擇某一條連線到達第2個頂點,再從第2個頂點出發,…,在到達第n個頂點后,在kn條連線中選取某一條連線到達終點。每個螞蟻所走過的路徑代表一個解的初始方案,它指出解的每一個分量所在的子區間。用pijk(t)表示在t時刻螞蟻k由城市i轉移到城市j的概率,則(式(7))
為了確定解的具體值,可在各個子區間已有的取值中保存若干個適應度較好的解的相應分量作為候選組,為了加快收斂速度,參考具有變異特征的蟻群算法提出的具有變異特征的蟻群算法,使用遺傳操作在候選組中確定新解的相應分量的值。首先可隨機在候選組中選擇兩個值,然后對他們實行交叉變換、變異變換,以得到新值作為解的相應分量。該候選組中的值在動態的更新,一旦有一個更好的解的分量在該子區間中,就用這個值替換其中的較差者。
在m只螞蟻得到m個解后,要對它們進行評估,本人使用Lagrange函數作為評估解的優劣的適應度函數,否則要對每個解進行合法性檢查并去除其中的不合法解。然后要根據適應度函數值更新各條邊上的信息量。要根據下式對各路徑上的信息量作更新:
Δτijk表示螞蟻k在本次循環中在城市i和j之間留下的信息量。
重復這樣的迭代過程,直至滿足停止條件。
候選組里的遺傳操作若候選組里的候選值的個數gi=0,即候選組里沒有候選值,此時則產生一個[li+(j-1)×length,min(ui,li+j×length]間的隨即數作為解分量的值wij,vij,跳過選擇、交叉、變異等遺傳操作。
若gi=1,即候選組里只有一個候選值wik,vik,則跳過交叉、選擇等操作,直接對這個候選值wik,vik進行變異操作。
若gi=2,即候選組里有兩個候選值,則跳過選擇操作,直接對這兩個候選值進行交叉、變異等操作。
否則,選擇兩個分量后進行交叉、變異操作。
在選擇操作中,根據候選組里各候選值的適應度的大小,用“賭輪”的方法選取兩個值。設第j個值所在解的適應度為fj,則它被選中的概率為
在交叉操作中,設所選擇的兩個值為wij(1),vij(1)和wij(2),vij(2),其適應度分別為f1,f2,且f1>f2,我們以概率Pcross進行交叉操作。隨機產生p∈[0,1],若p>Pcross,則進行交叉操作。取隨機數r∈[0,1],交叉結果值
在所有螞蟻都得到解以后,修改邊條上的信息量按式(8)和式(9)相應地更新各子區間上的信息量。但對Δτijk的更新應按下式進行:
其中W為一個常數,fk為螞蟻k的解的適應度。
基于上述的定義,用蟻群算法訓練具有三層前向神經網絡,可按以下步驟進行:
輸入相關參數:輸入最大迭代次數number,每次迭代選取的適應度最好的解的個數num,每個分量的ki個子區間中信息量最大的子區間被選種的概率q0(其余子區間被選中概率為(1-q0))。
初始化:通過神經網絡在控制變量可行域內隨機產成m只螞蟻,即產生m組{wij},{wi0},{vki},{vk0},且各個分量均為[-1,1]區間內的隨機數。
迭代過程:對于n個分量,分別對m個螞蟻進行循環更新相應的信息量τij(t),對候選組中的分量進行遺傳操作,計算新解的適應度,對各邊的信息量進行修改,根據適應度的優劣增刪候選組中的值。判斷是否滿足結束條件,若不滿足則繼續迭代。
第(3)步的具體算法如下:
whilenot結束條件(如最大迭代次數)do
{fori=1tondo(對n個分量循環)
{fork=1tomdo(對m個螞蟻循環)
{根據q0和概率pijk(t)確定第i個分量的值在第j個子區間;
局部更新第j個子區間的信息量τij(t);
在第j個子區間候選組里通過遺傳操作生成第i個分量值;}
計算新解的適應度函數值;}
修改個條邊上的信息量;
取適應度最好的num個解將其各分量直接插入相應的子區間的候選組中,并淘汰候選組中的較差者。}
上述過程中根據下列公式選取第i個分量的值所在的子區間號j:
由于算法中以q0的概率選擇ki個子區間中信息量最大的子區間,因此信息量最大的那個子區間常常被選中,這就使得新一代解的該分量值集中在這個子區間,容易發生停滯現象。為了避免這種現象,在上述過程中對所選的子區間的信息量進行局部更新,對被選中的子區間立即適當地減少其信息量,使其他螞蟻選中該子區間的概率降低。設第k個個體的第i個分量選中第j個子區間,則按下式局部更新子區間j的信息量:
這樣,更新后的信息量是原來的信息量和有關第i個分量各子區間的最小信息量的凸組合。當信息量最大的子區間被多次選中之后,信息量減少到ki個子區間的信息量的平均水平,從而螞蟻選擇其他子區間的概率增加,增加了所建立解的多樣性,同時也有效減少了停滯現象的發生。
實驗結果
為了評價蟻群算法的性能,筆者做了大量的計算機模擬試驗,在此給出了兩個函數COS(X)和SIN(X)函數的實驗結果,選擇螞蟻群規模m=20;每次迭代選取的適應度最好的解的個數num=10;每個分量的ki個子區間中信息量最大的子區間被選中的概率q0=0.8;前向神經網絡的輸入層有1個神經元,隱層有10個神經元,輸出層有1個神經元,多個方法SIN(X)函數的試驗結果列于表1,多個方法COS(X)函數的試驗結果列于表2。
結論
本文給出了基于蟻群算法的三層前向神經網絡的訓練模型,并建立了一種新的網絡訓練算法。從試驗結果分析,與演化算法、模擬退火算法、加動量項的BP算法相比,蟻群算法具有較快的收斂速度,能夠達到較小的均方誤差值,因此,此方法收斂過程有比較明顯的優勢和穩定性。
網絡訓練算法。從試驗結果分析,與演化算法、模擬退火算法、加動量項的BP算法相比,蟻群算法具有較快的收斂速度,能夠達到較小的均方誤差值,因此,此方法收斂過程有比較明顯的優勢。
參考文獻:
1.褚蕾蕾,周夢等.計算智能的數學基礎[Z].科學出版社,2002
2.呂崗,陳小平,趙鶴鳴.一種優化多層前向網絡的IA-BP混合算法[J].計算機工程與應用,2003.27
3.王建群,盧志華.三層前向人工神經網絡全局最優逼近[J].數學的實踐與認識,2003.7
4.陳陵,沈潔,秦玲.蟻群算法求解連續空間優化問題的一種方法.軟件學報,2002
5.Dorigo,M.,Luca,M.AstudyofsomepropertiesofAnt-Q.TechnicalReport,TR/IRIDIA/1996-4,IRIDIA,UniversityLibredeBruxelles,1996
6.Gambardella,L.M.,Dorigo,M.Ant-Q:areinforcementlearningapproachtothetravelingsalesmanproblem.In:Prieditis,A.,Russell,S.,eds.Proceedingsofthe12thInternationalConferenceonMachineLearning.Tahoe,CA:MorganKaufmann,1995
7.Sheng,Jie,Chen,Ling.Anewapproachtosolvingnonlinearprogramming.JournalofSystemScienceandSystemEngineering,2002
8.Wu,Qing-hong,Zhang,Ji-hui,Xu,Xin-he,Anantcolonyalgorithmwithmutationfeatures.JurnalofComputerResearch&Development,1999