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