鄧文杰
(四川大學(xué) 計算機(jī)學(xué)院,四川 成都 610065)
基于聚粒子群算法的神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化方法
鄧文杰
(四川大學(xué) 計算機(jī)學(xué)院,四川 成都 610065)
神經(jīng)網(wǎng)絡(luò)作為機(jī)器智能分支中一種優(yōu)秀的分類算法,在圖像分類、人臉識別等領(lǐng)域中都有非常廣泛的應(yīng)用。但由于其參數(shù)過多,所以容易陷入局部最優(yōu)解。針對BP神經(jīng)網(wǎng)絡(luò)易陷入局部最優(yōu)的問題,提出了一種粒子群算法和聚類算法結(jié)合的優(yōu)化神經(jīng)網(wǎng)絡(luò)權(quán)值的方法。該方法通過把神經(jīng)網(wǎng)絡(luò)的權(quán)值作為粒子群算法的初始粒子并利用粒子群算法的隨機(jī)性全局搜索神經(jīng)網(wǎng)絡(luò)的待選初始權(quán)值,然后利用C均值算法找出包含權(quán)值較多的那一類,并把其聚類中心作為BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值。仿真結(jié)果表明,利用這種新的融合算法在防止BP神經(jīng)網(wǎng)絡(luò)易陷入局部最優(yōu)的問題上能比普通的粒子群算法更加優(yōu)秀。
BP神經(jīng)網(wǎng)絡(luò);粒子群優(yōu)化;聚類;權(quán)值;局部最優(yōu)
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANNs)的研究最早可以追溯到19世紀(jì)50年代末。F·Rosenblatt設(shè)計的“感知機(jī)”[1]在當(dāng)時便引發(fā)了神經(jīng)網(wǎng)絡(luò)的研究熱潮,各大實驗室紛紛制作出感知機(jī)模型并應(yīng)用在文字識別、聲音識別等領(lǐng)域。但是,感知機(jī)只有輸出層神經(jīng)元進(jìn)行激活處理,即只擁有一層功能神經(jīng)元(functional neuron),其學(xué)習(xí)能力非常有限。于是科學(xué)家們開始嘗試訓(xùn)練多層網(wǎng)絡(luò),但感知機(jī)的學(xué)習(xí)規(guī)則就捉襟見肘了。為了解決這個問題,以Rumelhart和McCelland為首的科學(xué)家小組于1986年提出了誤差逆?zhèn)鞑?Error Back Propagation)算法[2],現(xiàn)已成為最熱的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。
BP算法通過對網(wǎng)絡(luò)的均方誤差求導(dǎo)得到權(quán)值和閾值的梯度,并依梯度方向修正權(quán)值和閾值,簡單有效卻存在局部最優(yōu)和初值敏感問題[3-4]。為了解決這些問題,學(xué)者們提出通過遺傳算法[5-6]、粒子群算法[7-9]和蟻群算法[10]改進(jìn)神經(jīng)網(wǎng)絡(luò)的參數(shù)和結(jié)構(gòu)。
針對BP神經(jīng)網(wǎng)絡(luò)易陷入局部最優(yōu)的問題,文中提出一種融合K-means[11]與傳統(tǒng)粒子群算法特性的群智能方法—聚粒子群算法,直接得到接近全局最優(yōu)的網(wǎng)絡(luò)權(quán)值,并利用BP使網(wǎng)絡(luò)快速收斂。
給定訓(xùn)練集(xk,yk),k=1,2,…,N,組成了擁有n個輸入神經(jīng)元,m個隱藏神經(jīng)元,l個輸出神經(jīng)元的典型BP神經(jīng)網(wǎng)絡(luò)。其中隱藏層第i個神經(jīng)元的閾值為b1i,輸出層第i個神經(jīng)元的閾值為b2i,輸入層第i個神經(jīng)元和隱藏層第j個神經(jīng)元的權(quán)值為wij,隱藏層第i個神經(jīng)元和輸出層第j個神經(jīng)元的權(quán)值為vij,第j個隱藏層神經(jīng)元接收的輸入和第j個輸出層神經(jīng)元接收的輸入分別為:
(1)
(2)
(3)
因為BP算法基于梯度下降策略,以目標(biāo)梯度的方向?qū)?shù)進(jìn)行調(diào)整,給定學(xué)習(xí)率η,有:
(4)
而根據(jù)求導(dǎo)的鏈?zhǔn)椒▌t有:
(5)
根據(jù)式(1)、(2)和式(5)有:
(6)
將式(6)帶入式(5)再帶入式(4),就得到了BP算法中的權(quán)值更新公式:
Δvij=nhjbi
(7)
同理,可計算出:
Δb2j=-ηhj,Δb1j=-ηej,Δwij=-ηejxi
(8)
其中
(9)
BP神經(jīng)網(wǎng)絡(luò)任意參數(shù)θ的更新公式為:
θ=θ+Δθ
(10)
從以上推導(dǎo)可知,BP神經(jīng)網(wǎng)絡(luò)算法是根據(jù)均方誤差的梯度方向修正權(quán)值和閾值,這就意味著如果初始權(quán)值選擇不當(dāng),BP神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過程中很容易陷入局部最優(yōu),由于均方誤差曲面比較復(fù)雜,故滿足條件的解不唯一,這就使得選擇初始權(quán)值非常困難。
通過PSO確定網(wǎng)絡(luò)權(quán)值的一般思路是:先將神經(jīng)網(wǎng)絡(luò)的性能函數(shù)作為粒子群的性能函數(shù),粒子代表網(wǎng)絡(luò)中的權(quán)值和閾值[12],然后通過式(11)和式(12)分別對粒子的位置和速度進(jìn)行更新。
vij(t+1)=vij(t)+c1×r1j(t)×(pij(t)-xij(t))+c2×r2j(t)×(pgj(t)-xij(t))
(11)
xij(t+1)=xij(t)+vij(t+1)
(12)
其中,i表示第i個粒子;j表示第i個粒子的維度;c1和c2表示學(xué)習(xí)因子;r1和r2表示[0,1]范圍內(nèi)的隨機(jī)數(shù);vij(t)和xij(t)分別表示t時刻i粒子的第j維的速度和位置。
PSO算法雖然能利用自己的隨機(jī)性以大概率將神經(jīng)網(wǎng)絡(luò)的初始權(quán)值定位在全局最優(yōu)值附近,但是其計算出的權(quán)值依然會有部分概率收斂到局部最優(yōu)值[13]。不過經(jīng)以上實驗不難發(fā)現(xiàn),PSO得到的網(wǎng)絡(luò)權(quán)值要大概率靠近全局最優(yōu),小概率靠近局部最優(yōu)。所以,文中采用改進(jìn)的PSO算法(CPSO)。將這種使用CPSO確定神經(jīng)網(wǎng)絡(luò)權(quán)值結(jié)合BP算法的方法稱為CPSO-BP算法。
CPSO-BP算法流程為:
Step1:將網(wǎng)絡(luò)的權(quán)值向量化作為粒子群每個粒子個體;
Step3:按PSO算法更新,并記錄下更新結(jié)束后最優(yōu)的粒子個體;
Step4:重復(fù)N次Step2-Step3并且得到N個粒子個體;
Step5:將N個粒子個體用C均值方法進(jìn)行聚類,并設(shè)聚類中心數(shù)C=log2N+1。將包含結(jié)果較多的類別的聚類中心作為神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值;
Step6:利用Step5計算出的權(quán)值和閾值創(chuàng)建神經(jīng)網(wǎng)絡(luò),然后用BP算法訓(xùn)練神經(jīng)網(wǎng)絡(luò),對其權(quán)閾值進(jìn)行微調(diào);
Step7:輸入測試數(shù)據(jù),驗證網(wǎng)絡(luò)誤差。
為了說明CPSO-BP的優(yōu)越性,對其進(jìn)行仿真實驗,并與BP算法進(jìn)行比較。圖1是一個1-2-1的網(wǎng)絡(luò),具有如下權(quán)值和閾:w1=10,w2=10,w3=1,w4=1,w5=5,w6=-5,w7=-1。輸入P在[-2,2]中采樣。
圖1 1-2-1神經(jīng)網(wǎng)絡(luò)
為做出權(quán)值分布圖,只調(diào)整參數(shù)w1和w3。設(shè)BP算法最大運算步數(shù)為5 000,學(xué)習(xí)速率eta=0.5,目標(biāo)誤差為1e-9。CPSO-BP算法選用的粒子數(shù)為30,迭代次數(shù)為30。圖2顯示了不同算法優(yōu)化出的權(quán)值所處的位置分布,(a)是標(biāo)準(zhǔn)PSO優(yōu)化出的權(quán)值位置,可見依然會陷入局部最優(yōu),而(b)是CPSO算法優(yōu)化出的權(quán)值分布,其很明顯地分布在全局最優(yōu)周圍。
表1是對參數(shù)w1和w2進(jìn)行20次訓(xùn)練后的誤差平均值和平均迭代次數(shù)。
圖2 使用不同算法優(yōu)化出的初始權(quán)值
表1 對參數(shù)w1和w2進(jìn)行20次訓(xùn)練后的平均誤差和平均迭代次數(shù)
當(dāng)訓(xùn)練整個網(wǎng)絡(luò)的參數(shù)時,設(shè)BP算法最大運算步數(shù)為10 000,學(xué)習(xí)速率eta=0.5,目標(biāo)誤差為0.001。CPSO-BP算法選用的粒子數(shù)為30,迭代次數(shù)為30。表2是對整個網(wǎng)絡(luò)進(jìn)行20次訓(xùn)練后得到的誤差平均值和平均迭代次數(shù),圖3為不同優(yōu)化結(jié)果的輸出和期望輸出。
表2 對整個網(wǎng)絡(luò)20次訓(xùn)練得到的誤差平均值和迭代次數(shù)
圖3 使用不同的算法對網(wǎng)絡(luò)的擬合
由上述對比結(jié)果可以看出,CPSO選出的初始權(quán)值明顯優(yōu)于PSO,其訓(xùn)練后的誤差和收斂速度也優(yōu)于普通PSO算法。
針對BP神經(jīng)網(wǎng)絡(luò)容易陷入局部最優(yōu)等缺點,利用CPSO算法將神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值作為粒子進(jìn)行全局優(yōu)化,然后通過C均值算法將粒子族群數(shù)較多的族群的聚類中心作為神經(jīng)網(wǎng)絡(luò)的初始權(quán)值。仿真實驗表明,CPSO-BP算法能極大限度地克服BP神經(jīng)網(wǎng)絡(luò)對初始值敏感,容易陷入局部極小值等缺點。
[1] Rosenblatt F.The perceptron:a probabilistic model for information storage and organization in the brain[J].Psychological Review,1958,65(6):386-408.
[2] Rumelhart D E,Hinton G E,Williams R J.Learning internal representation by back-propagation errors[J].Nature,1986,323(323):533-536.
[3] 余本國.BP神經(jīng)網(wǎng)絡(luò)局限性及其改進(jìn)的研究[J].山西農(nóng)業(yè)大學(xué)學(xué)報:自然科學(xué)版,2009,29(1):89-93.
[4] 王美玲,王念平,李 曉.BP神經(jīng)網(wǎng)絡(luò)算法的改進(jìn)及應(yīng)用[J].計算機(jī)工程與應(yīng)用,2009,45(35):47-48.
[5] 王 晶.蟻群算法優(yōu)化前向神經(jīng)網(wǎng)絡(luò)的一種方法[J].計算機(jī)工程與應(yīng)用,2006,42(25):53-55.
[6] Trelea I C.The particle swarm optimization algorithm:convergence analysis and parameter selection[J].Information Processing Letters,2003,85(6):317-325.
[7] 高海兵,高 亮,周 馳,等.基于粒子群優(yōu)化的神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法研究[J].電子學(xué)報,2004,32(9):1572-1574.
[8] 劉洪波,王秀坤,孟 軍,等.神經(jīng)網(wǎng)絡(luò)基于粒子群優(yōu)化的學(xué)習(xí)算法研究[J].小型微型計算機(jī)系統(tǒng),2005,26(4):638-640.
[9] 王崇駿,于汶滌,陳兆乾,等.一種基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)算法及其應(yīng)用[J].南京大學(xué)學(xué)報:自然科學(xué)版,2003,39(5):459-466.
[10] 翟宜峰,李鴻雁,劉寒冰,等.用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)初始權(quán)重的方法[J].吉林大學(xué)學(xué)報:工學(xué)版,2003,33(2):45-50.
[11] 孫吉貴,劉 杰,趙連宇.聚類算法研究[J].軟件學(xué)報,2008,19(1):48-61.
[12] 楊 維,李歧強(qiáng).粒子群優(yōu)化算法綜述[J].中國工程科學(xué),2004,6(5):87-94.
[13] 吳曉軍,楊戰(zhàn)中,趙 明.均勻搜索粒子群算法[J].電子學(xué)報,2011,39(6):1261-1266.
ANeuralNetworkWeightsOptimizationMethodBasedonClusteringParticleSwarmOptimization
DENG Wen-jie
(School of Computer Science,Sichuan University,Chengdu 610065,China)
Neural network is a kind of excellent classification algorithm in the branch of machine intelligence,which has a wide range of applications in the field of image classification,face recognition and so on.However,because of its excessive parameters,it is easy to fall into the local optimal solution.According to this problem,a method combining particle swarm algorithm and clustering algorithm to optimize the weights of neural networks is proposed,which takes the neural network weights as the initial particle of particle swarm algorithm and uses the random of particle swarm algorithm to search the initial weights of neural network.Then the class contains more weight is found using C-means algorithm and its clustering center is regarded as the initial weights of BP neural network.The simulation results show that it is more excellent than the conventional particle swarm optimization algorithm in preventing the BP neural network from falling into local optimum.
BP neural networks;particle swarm optimization;clustering;weight;local optimum
TP183
A
1673-629X(2017)10-0016-03
2016-10-24
2017-02-15 < class="emphasis_bold">網(wǎng)絡(luò)出版時間
時間:2017-07-19
國家自然科學(xué)基金資助項目(61571312)
鄧文杰(1993-),男,碩士研究生,CCF會員(200051867G),研究方向為神經(jīng)網(wǎng)絡(luò)優(yōu)化。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170719.1109.026.html
10.3969/j.issn.1673-629X.2017.10.004