張瑩杰,張樹群
(暨南大學(xué)信息科學(xué)技術(shù)學(xué)院,廣東廣州510632)
近年來,Hinton教授等人[1]提出深度置信網(wǎng)絡(luò)DBN(Deep Belief Network),掀起了深度學(xué)習(xí)DL(Deep Learning)的熱潮。而最早的人工神經(jīng)網(wǎng)絡(luò)(又稱神經(jīng)網(wǎng)絡(luò))又重新引起了許多學(xué)者的關(guān)注,其中BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型。BP神經(jīng)網(wǎng)絡(luò)有著并行處理、魯棒性、自適應(yīng)組織等特點,非常適合解決復(fù)雜的非線性問題,在模式識別、故障測試、圖像處理等領(lǐng)域有著廣泛的應(yīng)用。
近年來,隨著智能優(yōu)化算法的發(fā)展,更多的智能優(yōu)化算法被用于解決規(guī)模大、維數(shù)高的復(fù)雜工程問題,如粒子群優(yōu)化算法[2-5]、螢火蟲算法[6-8]、蟻群算法[9]?;谡`差反向傳播算法的BP神經(jīng)網(wǎng)絡(luò)存在收斂速度慢、易陷于局部極小值的問題,和智能算法相結(jié)合優(yōu)化BP神經(jīng)網(wǎng)絡(luò)已成為一個研究熱點。
雞群算法CSO(Chicken Swarm Optimization)[10]是一種基于雞群搜索行為的群智能算法,它模擬雞群等級制度和雞群行為,將雞群分為若干子群,每個子群由一只公雞、若干母雞和小雞組成,不同種類的雞遵循不同的移動規(guī)律,每個子群中的個體都圍繞這個子群中的公雞尋找食物,而公雞隨機移動。CSO具有良好的全局收斂性和魯棒性,在工程中得到了廣泛的應(yīng)用。Ahmed等人[11]基于雞群優(yōu)化算法提出一種自適應(yīng)方法,更好地解決了復(fù)雜社會網(wǎng)絡(luò)中的社區(qū)發(fā)現(xiàn)問題。Hafez等人[12]提出了一種基于雞群優(yōu)化算法的特征選擇系統(tǒng),取得了更好的分類精度。然而,雞群算法兼具這些優(yōu)點的同時不免也會有自己的缺陷,例如在求解多極值優(yōu)化問題時易陷入局部最優(yōu)、收斂速度較慢等問題。針對在高維問題求解中,CSO算法容易陷入局部最優(yōu)的問題,提出了一種改進的CSO算法,在高維情況下,通過大量的測試函數(shù)進行相關(guān)參數(shù)分析和優(yōu)化能力驗證。
本文針對雞群算法存在的收斂速度較慢及易陷入局部最優(yōu)[13-15]等問題,提出了一種改進約束雞群算法ICCSO(Improved Constrained Chicken Swarm Optimization),從約束函數(shù)和進化機制兩方面對基本雞群算法進行了改進,提高了算法的收斂速度和全局搜索能力,并以幾個標(biāo)準(zhǔn)測試函數(shù)和BP神經(jīng)網(wǎng)絡(luò)為例進行了仿真實驗,結(jié)果表明,該算法在收斂速度、全局搜索能力上優(yōu)于基本雞群算法、改進雞群算法。
在基本雞群優(yōu)化算法中,雞群被分為若干子群,每個子群由帶頭公雞、若干母雞和小雞組成。雞群中,適應(yīng)度最好的若干個體作為帶頭公雞,適應(yīng)度最差的一些個體作為小雞,剩余的個體作為母雞。母雞隨機選擇公雞,母雞與小雞的母子關(guān)系也是隨機建立的,且這種等級制度、支配關(guān)系和母子關(guān)系一旦建立就保持不變,直至數(shù)代以后才開始更新。每個子群中的個體都圍繞這個子群中的公雞尋找食物,而公雞隨機移動,迭代進行群體更新以獲取目標(biāo)。
在解決優(yōu)化問題時,雞群中的每個個體都對應(yīng)優(yōu)化問題的一個解。假設(shè)雞群中所有個體數(shù)為N,公雞、母雞、小雞和媽媽母雞的個數(shù)分別為 NR、NH、NC和 NM。xti,j(i∈[1,N],j∈[1,D])表示個體i第t次迭代時在j維搜索空間的位置。
雞群中雞的類型有3種,不同類型的雞的位置更新公式不同。公雞是雞群中適應(yīng)度最好的一群個體,它們在更廣泛的空間尋找食物,公雞所對應(yīng)的位置更新公式如下:其中,randn(0,σ2)是均值為0、標(biāo)準(zhǔn)差為σ2的一個高斯分布;ε是一個很小的常數(shù)。k(k∈[1,N],k≠i)為公雞中不為i的任一個體,是從所有非雞群子群的公雞中隨機選擇的。f為個體x對應(yīng)的適應(yīng)度值。
母雞所對應(yīng)的位置更新公式如下:
其中,rand為[0,1]的隨機數(shù);r1為第i只母雞自身所在子群中的公雞;r2為隨機選取的任意公雞或者母雞個體,且 r1≠r2。
小雞所對應(yīng)的位置更新公式如下:
其中,m為第i只小雞對應(yīng)的母雞;FL(FL∈[0,2])為跟隨系數(shù),表示小雞跟隨其對應(yīng)母雞尋找食物。
基本雞群算法存在收斂速度較慢及易陷入局部最優(yōu)等問題,本文從約束函數(shù)和進化機制兩方面對基本雞群算法進行了改進。
2.2.1 約束函數(shù)的改進
在基本雞群算法中,如果個體超出搜索范圍,個體將從最接近的邊界重新開始搜索。數(shù)學(xué)描述如下:
其中,Lbj、Ubj分別表示第j維的下邊界、上邊界。
雞群算法用相應(yīng)的上下界替代約束值,收斂速度較慢。本文提出用當(dāng)前種群中最優(yōu)秀群體相應(yīng)值的隨機移動替換約束值,以提高算法的收斂速度。描述如下:
其中,w1為步長,randn(0,1)為標(biāo)準(zhǔn)正態(tài)分布,是從當(dāng)前最優(yōu)的Nwell(Nwell=NR)個個體中隨機選擇的,為從當(dāng)前較優(yōu)的 Ngood(Ngood=N -NC)個個體中隨機選擇的。
2.2.2 進化機制的改進
由基本雞群算法3種類型的雞的位置更新公式可知,每個子群中的個體都圍繞這個子群中的公雞尋找食物,而公雞隨機移動。如果公雞陷入局部最優(yōu),則整個子群也可能陷入局部最優(yōu);而且公雞間相互沒有信息交流,收斂速度較慢。針對這些缺點,我們增加了整個雞群最優(yōu)個體對公雞和母雞的牽引作用,以提高算法的收斂速度和全局搜索能力。
改進后的公雞所對應(yīng)的位置更新公式如下:
其中
其中,w2為自適應(yīng)調(diào)整因子,wmin、wmax分別為調(diào)整因子的最小值和最大值;M為迭代的最大次數(shù)。
改進后的母雞所對應(yīng)的位置更新公式如下:
改進后的算法步驟如下所示:
步驟1初始化。確定初始參數(shù) N、NR、NH、NC、NM、M等,在解空間內(nèi)隨機生成雞群各個個體的初始位置x,計算其適應(yīng)度,初始化個體當(dāng)前最好位置Pbest和雞群全局最好位置Ibest。
步驟2如果滿足更新雞群關(guān)系條件,對雞群的適應(yīng)度值進行排序,建立雞群的等級制度、支配關(guān)系和母子關(guān)系。
步驟3分別由公式(9)、公式(11)、公式(6)更新公雞、母雞和小雞的位置并計算其適應(yīng)度值。
步驟4更新雞群的個體當(dāng)前最好位置和雞群全局最好位置。
步驟5步驟2~步驟4為一次迭代過程,完成后判斷是否達到最大迭代次數(shù),如果是,則終止循環(huán),否則繼續(xù)循環(huán)。
BP神經(jīng)網(wǎng)絡(luò)是按誤差反向傳播算法進行學(xué)習(xí)的多層前饋神經(jīng)網(wǎng)絡(luò),BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一般為3層:輸入層、隱含層和輸出層(層內(nèi)無連接、層間全連接)。BP神經(jīng)網(wǎng)絡(luò)通過誤差函數(shù)梯度反方向下降調(diào)整權(quán)值和閾值,反復(fù)訓(xùn)練學(xué)習(xí)權(quán)值和閾值使誤差函數(shù)達到最小。
結(jié)合雞群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)[16-18]的基本原理是:神經(jīng)網(wǎng)絡(luò)中的權(quán)值和閾值作為雞群個體,誤差函數(shù)作為雞群算法的適應(yīng)函數(shù),通過迭代更新找到整個雞群最優(yōu)個體,再將最優(yōu)個體返還回神經(jīng)網(wǎng)絡(luò)進行誤差結(jié)果測試。具體步驟如下:
步驟1根據(jù)實際要求初始化BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):每層神經(jīng)網(wǎng)絡(luò)的節(jié)點數(shù)、權(quán)值、閾值等;
步驟2將權(quán)值和閾值視為雞群個體,初始化雞群算法參數(shù);
步驟3計算個體當(dāng)前最好位置Pbest和雞群全局最好位置Ibest,建立雞群的等級制度、支配關(guān)系和母子關(guān)系;
步驟4更新公雞、母雞和小雞的位置,計算其適應(yīng)度值,并更新雞群的個體當(dāng)前最好位置和雞群全局最好位置;
步驟5進行雞群算法迭代更新:搜索雞群最優(yōu)個體;
步驟6將最優(yōu)個體傳回BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練并用測試數(shù)據(jù)進行驗證。
本文采用表1所列出的5個標(biāo)準(zhǔn)測試函數(shù)來分析和驗證ICCSO算法的實際性能效果,并將結(jié)果與ICSO[19]和CSO算法進行了對比。
Table 1 Standard test functions for testing algorithm performance表1 用于測試算法性能的標(biāo)準(zhǔn)測試函數(shù)
本實驗中,ICCSO算法的種群大小N為100,維數(shù)D為10,最大迭代次數(shù)M 為1 000。NR、NH、NC、NM分別為0.2N、0.6N、0.1N、0.1NH,F(xiàn)L 為[0.4,1]的隨機數(shù),G=10,wmin=0.8,wmax=1.0。每個測試函數(shù)分別獨立運行50次,以消除隨機性,將計算出的最優(yōu)值、最差值、平均值、標(biāo)準(zhǔn)差值與CSO和ICSO的計算結(jié)果相比較,如表2所示和圖1所示。
(1)F1函數(shù):由表2可以看出,ICCSO算法的平均值和最優(yōu)值精度比ICSO算法和CSO算法的提高了40多個數(shù)量級,而ICSO算法的平均值和最優(yōu)值精度只是比CSO算法的多一個數(shù)量級。圖1a中ICCSO在迭代次數(shù)為24左右時就收斂,而ICSO和CSO算法曲線還未收斂,向最優(yōu)值收斂靠攏,ICCSO算法的收斂曲線比 ICSO、CSO算法的收斂曲線更平滑陡峭,說明ICCSO算法能夠更快速收斂,而CSO和ICSO算法出現(xiàn)了最優(yōu)解停滯現(xiàn)象。在迭代次數(shù)相同時,ICCSO算法比ICSO、CSO算法的適應(yīng)度值更優(yōu)。
(2)F2函數(shù):F2函數(shù)在高維情況下存在眾多極值點,CSO算法和ICSO算法在運算過程中都沒有避免這個問題,陷入了局部最優(yōu)值;而ICCSO算法避免了陷入局部最優(yōu),并且取得了較高的收斂精度。從表2中看出,ICCSO算法的最優(yōu)值和平均值精度都要比ICSO、CSO算法的更優(yōu)。圖1b顯示ICCSO算法迭代15次左右時就收斂了,下降速度比ICSO算法、CSO算法更快,說明ICCSO算法能夠快速收斂,并且相比較其他兩個算法,每一次迭代ICCSO算法的適應(yīng)度值更好。
Table 2 Comparison of test results among the algorithms表2 算法的測試結(jié)果對比
(3)F3函數(shù):從表2可以看出,ICCSO算法的最優(yōu)值和平均值精度要比ICSO算法、CSO算法的精度高40~50個數(shù)量級。圖1c中ICCSO算法能在迭代15次以后達到收斂,比其他兩個算法更快速找到最優(yōu)值,并保持了較好的速度和精度。
(4)F4函數(shù):從表2中可以看出,ICCSO算法的最優(yōu)值精度和平均值精度都要比ICSO算法、CSO算法高出45個左右數(shù)量級。圖1d中ICCSO算法的收斂曲線要更平滑陡峭,收斂速度比其他算法更快一些。
(5)F5函數(shù):表2中ICCSO算法的最優(yōu)值、平均值精度要達到e-170左右,而ICSO、CSO算法的精度卻只有e-120左右。圖1e中ICCSO算法收斂速度要更快一些,能快速找到最優(yōu)值并進入收斂狀態(tài)。
綜上所述,對于這5個標(biāo)準(zhǔn)測試函數(shù),尤其是對于存在眾多極值點的問題,ICCSO算法都取得了比CSO算法和ICSO算法更令人滿意的結(jié)果。仿真結(jié)果表明,ICCSO算法在全局搜索能力和收斂速度、收斂精度方面都優(yōu)于CSO算法和ICSO算法。
本仿真實驗是對某型齒輪箱故障[20,21]樣本進行識別,分別從正常運行、點蝕、磨損、斷齒、點蝕磨損混合、斷齒磨損混合6種齒輪狀態(tài)隨機抽取80個樣本作為訓(xùn)練集,再從6種狀態(tài)中選取20個樣本作為測試集。用測試樣本的測試誤差作為衡量網(wǎng)絡(luò)的優(yōu)劣,再通過誤差計算個體的適應(yīng)度值,個體的誤差越小,適應(yīng)度越好,則該個體越優(yōu)[22]。將基本雞群算法的BP神經(jīng)網(wǎng)絡(luò)、改進雞群算法的BP神經(jīng)網(wǎng)絡(luò)以及改進約束雞群算法的BP神經(jīng)網(wǎng)絡(luò)進行對比,其中BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)均為輸入層9個節(jié)點、隱含層19個節(jié)點、輸出層6個節(jié)點。3種算法的神經(jīng)網(wǎng)絡(luò)測試結(jié)果如表3所示。
從表3可以看出,ICCSO算法改進的BP神經(jīng)網(wǎng)絡(luò)的測試誤差為4.133 3e-08,相比ICSO算法、CSO算法改進的BP神經(jīng)網(wǎng)絡(luò)的測試誤差精度提高了2個數(shù)量級,也就是說,ICCSO算法能夠比ICSO算法、CSO算法改進的BP神經(jīng)網(wǎng)絡(luò)更準(zhǔn)確地識別齒輪箱的6種狀態(tài),表示ICCSO算法改進的BP神經(jīng)網(wǎng)絡(luò)具有更好的故障識別精度以及較強的適應(yīng)能力,也從側(cè)面反映出本文提出的ICCSO算法的收斂速度、全局搜索能力確實得到了改進,驗證了其應(yīng)用于齒輪箱故障診斷的可行性與正確性。
基本雞群算法有收斂精度高和魯棒性好等優(yōu)點,但存在收斂速度較慢及易陷入局部最優(yōu)等問題,通過改進基本雞群算法,并結(jié)合BP神經(jīng)網(wǎng)絡(luò),對齒輪箱故障進行識別,結(jié)果表明改進約束雞群算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)比改進雞群算法、基本雞群算法有著更好的識別效果。