(1. 西北工業大學 自動化學院, 西安 710072; 2.陜西工業職業技術學院 工業中心, 陜西 咸陽 712000)
摘要:借鑒分層遞階結構原理和蟻群算法的思想,提出了一種基于信息素的粒子群算法并用來優化前向神經網絡的結構和權值。通過在控制基因中釋放信息素進行粒子控制基因的更新,實現了粒子間信息的共享。粒子群的慣性權重采用指數曲線衰減的形式,給每代最差粒子的速度隨機加入干擾,克服了標準粒子群算法在尋優時出現的粒子早熟現象。仿真結果表明該算法能快速確定神經網絡的結構和權值,表現出良好的收斂性能。
關鍵詞:粒子群算法; 蟻群算法; 信息素; 神經網絡設計
中圖分類號:TP183文獻標志碼:A
文章編號:1001-3695(2008)11-3343-03
Design of feed forward neural network
based on improved particle swarm optimizer
NING Dong-fang1, ZHANG Wei-guo1, TIAN Na2
(1. College of Automation, Northwestern Polytechnical University, Xi’an 710072, China; 2. Industry Center, Shaanxi Polytechnic Institute, Xianyang Shaanxi 712000, China)
Abstract:This paper proposed an improved particle swarm optimizer (PSO)which introduced into hierarchical structure theory and ant colony optimization. The new algorithm updated particles’ control gene by releasing pheromone to achieve information sharing between particles. The inertial weight of PSO decreased as exponential curve and added a random disturb in velo-city of the worst particle by far to resolve the premature problem. This new algorithm shows a good performance in optimizing the topology structure and weights of the feedforward neural network synchronously.
Key words:particle swarm optimization; ant colony optimization; pheromone; neural network design
粒子群優化(particle swarm optimizer,PSO)是一種新興的基于群智能方法的進化優化技術[1,2],其模擬鳥群和魚群等人工生命系統進行搜索。相比于遺傳算法,粒子群優化以其算法簡單、容易實現、調節參數少等特點廣泛應用于各種優化計算領域[3~8]。特別地,將PSO技術引入到神經網絡的設計中,可以克服神經網絡的網絡拓撲結構確定盲目、學習對參數的初始化敏感、容易陷入局部最優等缺點。R.Mendes等人[3~7]分別采用標準PSO和混合PSO(遺傳PSO算法、反向傳播PSO算法)來優化神經網絡,改善了網絡學習精度和學習時間,但它們只是進行了網絡的權值優化,沒有進行網絡拓撲結構的優化。Agrafiotis等人[9]利用二進制PSO進行網絡的結構和權值設計;王俊年等人[10]采用多種群協同進化PSO進行徑向基神經網絡的設計。這些方法都在一定程度上實現了網絡結構和權值的并行優化,但其采用的粒子更新方法不能直觀反映網絡結構與粒子編碼之間的關系,并且忽略了粒子群中粒子間信息的共享。
基于上述思想,借鑒分層遞階結構原理和蟻群算法的路徑選擇思想,本文構造了一種改進的遞階結構粒子群算法。在遞階結構的控制因子的更新中引入了蟻群的思想,根據螞蟻信息素的釋放和揮發來更新粒子群的控制因子,并且將改進后的粒子群算法應用于前向神經網絡的拓撲結構和權值并行優化中,得到了良好的效果。
1神經網絡和粒子群優化算法
11前向神經網絡的基本概念
前向神經網絡結構如圖1所示[7]。一個基本的神經網絡需要確定的參數包括隱層的神經元個數、輸入層到隱層的權值ωik(i=1,…,N;k=1,…,L; N為網絡的輸入個數,L為隱層節點數)、隱層到輸出層的權值ωjk(j=1,…,M;M為網絡的輸出個數)以及隱層閾值bk(k=1,…,L)、輸出層閾值cj(j=1,…,M)。
神經網絡學習時的均方差(mean square error,MSE)為
E=(1/2)∑Pl=1∑Mi=1[yli∧(t)-yli(t)]2(1)
其中:P為樣本數;M為網絡輸出個數;yli∧(t)和yli(t)分別為樣本l第i個輸出節點的期望輸出和實際輸出。
目前,神經網絡的學習采用最多的是BP(back-propagation)學習算法,但BP算法存在對初始值敏感、容易陷入局部最優點、收斂速度慢等缺點。
12粒子群優化算法
粒子群優化算法是Eberhart等人于1995年提出的一種基于群體智能的演化計算理論,源于對鳥群捕食行為的研究[1,2,6]。與遺傳算法類似,PSO是一種基于迭代的優化工具,系統初始化為一組隨機解,通過迭代在解空間搜索最優解。
PSO在求解優化問題時,問題的解對應于空間中一個粒子。每個粒子都有自己的位置和速度(決定飛行的方向和距離),以及一個由被優化函數決定的適應值。在優化過程中,粒子通過跟蹤兩個極值來更新自己,一個是粒子本身找到的最優解——個體極值pbest;另一個是整個種群目前找到的最優解——全局極值gbest。在標準的粒子群算法中,粒子的速度和位置更新方程為[1]
Vt+1id=ωVtid+c1×r1×(pbesttid-xtid)+
c2×r2×(gbesttd-xtid)Xt+1id=Xtid+Vtid
(2)
式中:Vtid、Vt+1id分別為粒子i在t和t+1代中第d維的速度;ω為慣性權重;c1、c2為加速因子,一般取值在2左右;r1、r2為(0,1)中的隨機數;Xtid、Xt+1id分別為粒子i在t和t+1代中第d維的位置;pbesttid為第i個粒子的第t代個體極值的第d維;gbesttid為第t代全局極值的第d維位置。
2基于蟻群信息素的粒子群優化算法
21粒子群優化算法的遞階結構
為了并行優化神經網絡的結構和權值,粒子群的粒子采用遞階結構的編碼方式。粒子群的遞階結構如圖2所示。
粒子的遞階結構由參數基因和控制基因兩部分組成。其中控制基因采用二進制編碼,用來控制隱層節點的有無。當控制基因取“1”時表示其對應的隱層節點被激活,當取“0”時表示其對應的隱層節點不起作用。這樣,控制基因中“1”的個數就代表了網絡隱層節點的實際個數。參數基因采用實數編碼,對應隱層節點的連接權值和閾值。
22粒子遞階結構的更新方法
由于粒子的編碼分為控制基因和參數基因,粒子的位置和速度也采用不同的更新方式。
221粒子的參數基因的更新方法
參數基因的更新方法與基本粒子群算法的更新類似(式(2)),但在本文中加了一些改進措施:
a)慣性權重ω指數曲線衰減。慣性權重ω不是常值,而是隨著粒子群的運算作指數曲線變化,ω的更新式為
ω=ωe+(ωs-ωe)×e-ct/T(3)
式中:ωs 、ωe分別為ω的初始值和終值,本文分別取0.9和0.2;c為指數曲線的控制系數;t為粒子群當前的運算代數;T為最大迭代次數。
從式(3)可以看出,ω是以指數曲線衰減的。在粒子群尋優的初始階段,ω的值比較大,有利于粒子的全局探測能力;隨著粒子群的運算,ω迅速減少(可以通過c來調節指數曲線的衰減速度);在尋優后期,ω的值比較小,這樣有利于粒子群后期的局部開發能力。
b)對最差粒子的速度進行隨機變異。為了防止粒子出現早熟現象,每進行一定的迭代步數后,隨機選取最差粒子的速度向量的某些維,進行變異和反向運算。采用的變異和反向操作公式為
Vw(j)=Vm(j)×(-rand)Vm(j)(4)
式中:Vm(j)為最差粒子的速度向量的第j維,是隨機選取的;rand為(0,1)的隨機數。
222粒子的控制基因的更新方法
粒子的控制基因采用的是二進制編碼,所以不能用式(2)進行更新。在離散粒子群算法中,采用對粒子的速度進行指數函數運算來更新粒子[3]。這種方法不能直觀地反映粒子控制基因與粒子速度之間的關系,且忽略了粒子間信息的共享。
本文引進了蟻群算法中信息素的思想。在蟻群運算中,單個螞蟻會在其走過的路徑上釋放信息素。隨著蟻群算法的進行,最優路徑上的信息素將越來越多,而其他路徑上的信息素隨著時間慢慢揮發掉。在粒子的控制基因中,每個粒子的控制基因的每一維都可以看成一個路徑點,其可選擇的路徑有兩條,即“0”路徑和“1”路徑。粒子群的每一代運算,每個粒子根據其控制基因的取值(0或1),在相應的路徑上釋放一定的信息素。
本文粒子群控制基因的更新就是基于蟻群算法中螞蟻的路徑選擇思想,粒子i的控制基因的第j維包含兩個信息:
a)該控制基因對應的兩條路徑上的信息素ph0ij(路徑0上的信息素)和ph1ij(路徑1上的信息素)。計算式為
ifctrl(i,j)=0 ph0ij(t+1)=ρ×ph0ij(t)+Q/fitiph1ij(t+1)=ρ×ph1ij(t)
ifcrtl(i,j)=1ph0ij(t+1)=ρ×ph0ij(t)ph1it(t+1)=ρ×ph1ij(t+1)+Q/fiti(5)
式中:ctrl(i,j)為粒子i控制基因的第j維的值;ph0ij(t+1)、ph0ij(t)、(ph1ij(t+1)、ph1ij(t))分別為粒子i控制基因的第j維t+1和t代中路徑0(路徑1)對應的信息素;ρ為信息素揮發因子;Q為預先設定的信息釋放因子;fiti為粒子i對應的適應度函數。
b)啟發信息。蟻群算法中,每條路徑的選擇都有一個啟發信息。在本粒子群中,第i個粒子控制基因的第j維的啟發信息為
ifctrl(i,j)=0hi0ij(t+1)=1/fitihi1ij(t+1)=1/fitRjifcrtl(i,j)=1hi0ij(t+1)=1/fitRjhi1ij(t+1)=1/fitj(6)
式中:hi0ij(t+1)(hi1ij(t))為第i個粒子控制基因的第j維路徑0(路徑1)對應的啟發信息;fitRj為第i個粒子控制基因的第j維取反時(即ctrl(i,j)=1-ctrl(i,j))粒子對應的適應度函數值;其他參數的意義與前面的相同。
在確定第t+1代中每個粒子控制基因的信息素和啟發信息以后,就可以求出粒子控制基因每一維所對應的轉移概率[11]為
ifctrl(i,j)=0Pij(t+1)=ph0ij×hi0ij/∑1k=0phkij×hikijifctrl(i,j)=1Pij(t+1)=ph1ij×hi1ij/∑1k=0phkij×hikij(7)
式中:Pij(t+1)為粒子i控制基因的第j維的轉移概率。則粒子i控制基因第j維的更新式為
ctrl(i,j)=ctrl(i,j)ifrand≤Pij(t+1)1-ctrl(i,j)if rand >Pij(t+1)(8)
式中rand為(0,1)的隨機數。
3改進粒子群優化算法在前向神經網絡設計中的應用
將改進的粒子群算法應用于三層BP網絡的拓撲結構和權值的優化中,選取如下的測試函數:
y=sin(10πx)+sin(20πx)(9)
粒子群算法優化BP網絡的結構和權值的詳細步驟如下:
a)初始化網絡的輸入個數N、輸出個數M和最大隱層神經元個數L,則待優化的參數個數為D=N×L+M×L+L+M,并歸一化網絡學習數據。設定粒子群算法的初始參數:粒子數n=25,初始和終止慣性權重ωs=0.9、ωe=0.2,加速因子c1=c2=2.05,誤差精度ε=0.001和最大代數T=2 000。
b)在(0,1)內隨機初始化n×D維的粒子參數基因矩陣XP(D維對應D個待優化的網絡參數)和對應的速度矩陣V;同時隨機初始化Xp對應的n×L維二進制控制基因矩陣Xc和初始信息素矩陣ph=ones(n, L)。
c)對粒子Xi(i=1,…,n),根據式(2)更新其速度Vi和參數基因XPi,根據式(8)更新控制基因Xci,并計算粒子的適應度,即學習樣本的均方差,更新個體極值pbesti和全局極值gbest。
d)如果更新后的全局極值gbest的適應度值滿足誤差精度ε或者已達到最大優化代數T,算法結束,否則重復第c)。
使用帶動量項的自適應BP算法、基本粒子群優化算法(basic PSO,BPSO)和改進的粒子群優化算法(improved PSO,IPSO)優化三層前向網絡的誤差曲線如圖3所示。
從圖3可以看出,改進的粒子群算法260步左右就達到了給定的誤差精度,而基本的粒子群算法和帶有動量項的自適應BP算法分別使用了880步和1 900步左右。結果表明改進的粒子群算法的收斂速度要快得多。需要指出的是,由于BP算法和基本粒子群算法不能夠優化神經網絡的結構,本文的BP算法和基本粒子群優化是在改進的粒子群算法優化得到的網絡結構的基礎上再進行網絡參數優化。
用改進粒子群優化得到的網絡逼近給定的函數,得到的曲線如圖4所示。對優化得到的網絡仿真的輸出結果和目標結果進行線性回歸分析,分析結果如圖5所示。從圖5中可以看出,優化的網絡輸出結果與目標結果的相關系數達到0.999。
為了驗證所提出的改進粒子群算法的有效性,對上述測試函數進行200步優化,反復進行30次測試。三種算法優化得到的網絡均方差的測試結果如表1所示。
表1三種算法對測試函數的網絡均方差結果對比
算法最優MSE最差MSE均值方差
BP0.002 90.033 70.019 51.2132e-004
BPSO0.007 2460.009 0910.008 02.4106e-007
IPSO0.001 5630.001 7110.001 62.1982e-009
表1中的測試結果表明,改進的粒子群優化算法與BP算法、基本粒子群算法相比有效地提高了優化精度和優化效率。
4結束語
本文借鑒分層遞階結構原理,采用遞階結構進行粒子編碼。粒子的參數基因和控制基因的更新分別采用不同的更新方法,控制基因的更新引入了蟻群的思想,基于信息素和啟發信息對控制基因進行更新,從而實現了BP網絡的拓撲結構和參數的并行優化,同時,粒子群算法的慣性權值ω以指數曲線衰減。仿真結果表明引入信息素的粒子群算法效果很好。
參考文獻:
[1]KENNEDY J, EBERHART R. Particle swarm optimization[C]//Proc of IEEE Int’l Conf on Neural Networks. 1995:1942-1948.
[2]EBERHART R C, KENNEDY J. A new optimizer using particle swarm theory[C]//Proc of the 6th International Symposium on Micro Machine and Human Science. 1995:39-43.
[3]MENDES R, CORTEZ P,MENDES. Particle swarms for feedforward neural network training[C]//Proc of International Joint Conference on Neural Networks. 2002:1985-1899.
[4]JUANG C F. A hybrid of genetic algorithm and particle swarm optimization for recurrent network design[J].IEEE Trans on Systems, Man, and Cybernetics,2004,34(2)::997-1005.
[5]ZHANG Jing-ru, ZHANG Jun, LOK T, et al. A hybrid particle swarm optimization back propagation algorithm for feedforward neural network training[C]//Proc of Applied Mathematics and Computation.New York:Elsevier, 2007:1026-1037.
[6]邵信光, 楊慧中, 陳剛. 基于粒子群優化算法的支持向量機參數選擇及其應用[J]. 控制理論與應用, 2006,23(5):740-748.
[7]熊偉麗, 徐保國. 改進QDPSO算法在BP網絡訓練中的應用[J]. 系統仿真學報,2005,17(9):2078-2081.
[8]韓江洪,李正榮,魏振春. 一種自適應粒子群優化算法及其仿真研究[J]. 系統仿真學報,2006,18(10):2969-2971.
[9]AGRAFIOTIS D K, CEDENO W. Feature selection for structure-activity correlation using binary particle swarm[J].Journal of Medicinal Chemistry,2002,45(5):1098-1107.
[10]王俊年,申群太,周少武,等. 基于種群小生境微粒群算法的前向神經網絡設計[J]. 控制與決策,2005,20(9):981-985.
[11]李士勇. 蟻群算法及其應用[M]. 哈爾濱: 哈爾濱工業大學出版社,2004:22-24.