利用蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)_第1頁
利用蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)_第2頁
利用蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)_第3頁
利用蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)_第4頁
利用蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

利用蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)

內(nèi)容摘要:蟻群算法是一種最新提出的新型的尋優(yōu)策略,本文嘗試將蟻群算法用于三層前向神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,建立了相應(yīng)的優(yōu)化模型,進(jìn)行了實際的編程計算,并與加動量項的BP算法、演化算法以及模擬退火算法進(jìn)行比較,結(jié)果表明該方法具有更好的全局收斂性,以及對初值的不敏感性等特點。

關(guān)鍵詞:期貨經(jīng)紀(jì)公司綜合實力主成分分析聚類分析

人工神經(jīng)網(wǎng)絡(luò)是大腦及其活動的一個理論化的數(shù)學(xué)模型,由大量的處理單元互連而成的,是神經(jīng)元聯(lián)結(jié)形式的數(shù)學(xué)抽象,是一個大規(guī)模的非線性自適應(yīng)模型。人工神經(jīng)網(wǎng)絡(luò)具有高速的運算能力,很強(qiáng)的自學(xué)習(xí)能力、自適應(yīng)能力和非線性映射能力以及良好的容錯性,因而它在模式識別、圖像處理、信號及信息處理、系統(tǒng)優(yōu)化和智能控制等許多領(lǐng)域得到了廣泛的應(yīng)用。

人工神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法可以分為:局部搜索算法,包括誤差反傳算法、牛頓法和共軛梯度法等;線性化算法;隨機(jī)優(yōu)化算法,包括遺傳算法、演化算法、模擬退火算法等。

蟻群算法是一種基于模擬螞蟻群行為的隨機(jī)搜索優(yōu)化算法。雖然單個螞蟻的能力非常有限,但多個螞蟻構(gòu)成的群體具有找到蟻穴與食物之間最短路徑的能力,這種能力是靠其在所經(jīng)過的路徑上留下的一種揮發(fā)性分泌物來實現(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ìn)行了比較分析。

前向神經(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ù):

其中輸入層神經(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)}

,設(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達(dá)到最小。

誤差反向傳播算法是一種梯度下降算法,具有概念清楚、計算簡單的特點,但是它收斂緩慢,且極易陷入局部極小,且對于較大的搜索空間,多峰值和不可微函數(shù)也不能搜索到全局極小。為此人們提出了很多改進(jìn)的學(xué)習(xí)算法,其中最簡單且容易實現(xiàn)的是加入動量項的變學(xué)習(xí)率BP算法,這種算法一般都比較有效,但是收斂速度還是比較慢,仍是局部搜索算法,從本質(zhì)上仍然擺脫不了陷入局部極小的可能。為了擺脫局部極小,人們已經(jīng)嘗試將可用于非線性優(yōu)化的遺傳算法、演化算法以及模擬退火算法等進(jìn)行前向人工神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。

蟻群算法

蟻群算法簡介

螞蟻在路徑上前進(jìn)時會根據(jù)前邊走過的螞蟻所留下的分泌物選擇其要走的路徑。其選擇一條路徑的概率與該路徑上分泌物的強(qiáng)度成正比。因此,由大量螞蟻組成的群體的集體行為實際上構(gòu)成一種學(xué)習(xí)信息的正反饋現(xiàn)象:某一條路徑走過的螞蟻越多,后面的螞蟻選擇該路徑的可能性就越大。螞蟻的個體間通過這種信息的交流尋求通向食物的最短路徑。蟻群算法就是根據(jù)這一特點,通過模仿螞蟻的行為,從而實現(xiàn)尋優(yōu)。這種優(yōu)化過程的本質(zhì)在于:

選擇機(jī)制:分泌物越多的路徑,被選擇的概率越大。

更新機(jī)制:路徑上面的分泌物會隨螞蟻的經(jīng)過而增長,而且同時也隨時間的推移逐漸揮發(fā)消失。

協(xié)調(diào)機(jī)制:螞蟻間實際上是通過分泌物來互相通信、協(xié)同工作的。

蟻群算法正是充分利用了選擇、更新和協(xié)調(diào)的優(yōu)化機(jī)制,即通過個體之間的信息交流與相互協(xié)作最終找到最優(yōu)解,使它具有很強(qiáng)的發(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上的一個凸包??梢允褂貌坏仁阶儞Q的方法求得包含這個凸包的最小的n維立方體。設(shè)該立方體為

設(shè)系統(tǒng)中有m只螞蟻,我們將解的n個分量看成n個頂點,第i個頂點代表第i個分量,在第i個頂點到第i+1個頂點之間有ki條連線,代表第i個分量的取值可能在ki個不同的子區(qū)間。我們記其中第j條連線上在t時刻的信息量為τij(t)。每只螞蟻要從第1個頂點出發(fā),按照一定的策略選擇某一條連線到達(dá)第2個頂點,再從第2個頂點出發(fā),…,在到達(dá)第n個頂點后,在kn條連線中選取某一條連線到達(dá)終點。每個螞蟻所走過的路徑代表一個解的初始方案,它指出解的每一個分量所在的子區(qū)間。用pijk(t)表示在t時刻螞蟻k由城市i轉(zhuǎn)移到城市j的概率,則

為了確定解的具體值,可在各個子區(qū)間已有的取值中保存若干個適應(yīng)度較好的解的相應(yīng)分量作為候選組,為了加快收斂速度,參考具有變異特征的蟻群算法提出的具有變異特征的蟻群算法,使用遺傳操作在候選組中確定新解的相應(yīng)分量的值。首先可隨機(jī)在候選組中選擇兩個值,然后對他們實行交叉變換、變異變換,以得到新值作為解的相應(yīng)分量。該候選組中的值在動態(tài)的更新,一旦有一個更好的解的分量在該子區(qū)間中,就用這個值替換其中的較差者。

在m只螞蟻得到m個解后,要對它們進(jìn)行評估,本人使用Lagrange函數(shù)作為評估解的優(yōu)劣的適應(yīng)度函數(shù),否則要對每個解進(jìn)行合法性檢查并去除其中的不合法解。然后要根據(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進(jìn)行變異操作。

若gi=2,即候選組里有兩個候選值,則跳過選擇操作,直接對這兩個候選值進(jìn)行交叉、變異等操作。

否則,選擇兩個分量后進(jìn)行交叉、變異操作。

在選擇操作中,根據(jù)候選組里各候選值的適應(yīng)度的大小,用“賭輪”的方法選取兩個值。設(shè)第j個值所在解的適應(yīng)度為fj,則它被選中的概率為

在交叉操作中,設(shè)所選擇的兩個值為wij(1),vij(1)和wij(2),vij(2),其適應(yīng)度分別為f1,f2,且f1>f2,我們以概率Pcross進(jìn)行交叉操作。隨機(jī)產(chǎn)生p∈[0,1],若p>Pcross,則進(jìn)行交叉操作。取隨機(jī)數(shù)r∈[0,1],交叉結(jié)果值

在所有螞蟻都得到解以后,修改邊條上的信息量按式(8)和式(9)相應(yīng)地更新各子區(qū)間上的信息量。但對Δτijk的更新應(yīng)按下式進(jìn)行:

其中W為一個常數(shù),fk為螞蟻k的解的適應(yīng)度。

前向神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程

基于上述的定義,用蟻群算法訓(xùn)練具有三層前向神經(jīng)網(wǎng)絡(luò),可按以下步驟進(jìn)行:

輸入相關(guān)參數(shù):輸入最大迭代次數(shù)number,每次迭代選取的適應(yīng)度最好的解的個數(shù)num,每個分量的ki個子區(qū)間中信息量最大的子區(qū)間被選種的概率q0)。

初始化:通過神經(jīng)網(wǎng)絡(luò)在控制變量可行域內(nèi)隨機(jī)產(chǎn)成m只螞蟻,即產(chǎn)生m組{wij},{wi0},{vki},{vk0},且各個分量均為[-1,1]區(qū)間內(nèi)的隨機(jī)數(shù)。

迭代過程:對于n個分量,分別對m個螞蟻進(jìn)行循環(huán)更新相應(yīng)的信息量τij(t),對候選組中的分量進(jìn)行遺傳操作,計算新解的適應(yīng)度,對各邊的信息量進(jìn)行修改,根據(jù)適應(yīng)度的優(yōu)劣增刪候選組中的值。判斷是否滿足結(jié)束條件,若不滿足則繼續(xù)迭代。

第步的具體算法

whilenot結(jié)束條件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ū)間的信息量進(jìn)行局部更新,對被選中的子區(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é)果

為了評價蟻群算法的性能,筆者做了大量的計算機(jī)模擬試驗,在此給出了兩個函數(shù)COS(X)和SIN(X)函數(shù)的實驗結(jié)果,選擇螞蟻群規(guī)模m=20;每次迭代選取的適應(yīng)度最好的解的個數(shù)num=10;每個分量的ki個子區(qū)間中信息量最大的子區(qū)間被選中的概率q0=;前向神經(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算法相比,蟻群算法具有較快的收斂速度,能夠達(dá)到較小的均方誤差值,因此,此方法收斂過程有比較明顯的優(yōu)勢和穩(wěn)定性。

網(wǎng)絡(luò)訓(xùn)練算法。從試驗結(jié)果分析,與演化算法、模擬退火算法、加動量項的BP算法相比,蟻群算法具有較快的收斂速度,能夠達(dá)到較小的均方誤差值,因此,此方法收斂過程有比較明顯的優(yōu)勢。

參考文獻(xiàn):

1.褚蕾蕾,周夢等.計算智能的數(shù)學(xué)基礎(chǔ)[Z].科學(xué)出版社,2002

2.呂崗,陳小平,趙鶴鳴.一種優(yōu)化多層前向網(wǎng)絡(luò)的IA-BP混合算法[J].計算機(jī)工程與應(yīng)用,

3.王建群,盧志華.三層前向人工神經(jīng)網(wǎng)絡(luò)全局最優(yōu)逼近[J].數(shù)學(xué)的實踐與認(rèn)識,

4.陳陵,沈潔,秦玲.蟻群算法求解連續(xù)空間優(yōu)化問題的一種方法.軟件學(xué)報,2002

,M.,Luca,M.AstudyofsomepropertiesofAnt-Q.TechnicalReport,TR/IRIDIA/1996-4,IRIDIA,UniversityLibredeBruxelles,1996

,,Dorigo,M.Ant-Q:areinforcementlearningapproachtothetravelingsalesmanproblem.In:Prieditis,A.,Russell,S.,eds.Proceedingsofthe12thInternationalConferenceonMachineLearning.Tahoe,CA:MorganKaufmann

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論