汪 珺,方振國,嚴 寒,錢成鐸①
(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北 235000)
近年來,群體智能算法被廣泛應(yīng)用于圖像處理、有源濾波器合成和深度學(xué)習(xí)等優(yōu)化問題上.細菌覓食優(yōu)化算法(Bacterial Foraging Optimization Algorithm,BFOA)是Passino[1]于2002年提出的一種群體智能優(yōu)化算法,其生物學(xué)基礎(chǔ)是模擬人類腸道中的大腸桿菌覓食過程.細菌覓食優(yōu)化算法(BFOA)是一種全局優(yōu)化算法[2].BFOA算法模擬細菌群體的過程包括趨向性、復(fù)制、遷徙3個步驟[3-4].國內(nèi)外研究者提出很多優(yōu)化BFOA算法的方法,Mishra等[5]在引入Takagi-Sugeno型模糊推理機制來選擇趨向操作中最優(yōu)步長,提出模糊細菌覓食算法(Fuzzy Bacterial Foraging,F(xiàn)BF).然而,F(xiàn)BF中的模糊規(guī)則和隸屬函數(shù)參數(shù)根據(jù)不同的優(yōu)化對象要進行多次實驗對參數(shù)進行調(diào)整,通用性不高;所以Datta和Mishra等[6]對步長C添加增量因子,對步長進行動態(tài)控制以達到自適應(yīng)調(diào)節(jié)步長目的.該算法通用性得到提高,但是算法對單個細菌進行趨化操作,在某種程度上有一定的局限性;劉小龍[7]提出將高斯分布引入細菌覓食的復(fù)制操作中,根據(jù)適應(yīng)度函數(shù)得到適應(yīng)度值較好的一半進行分布再生,但該算法的收斂性對復(fù)雜的高維函數(shù)效果不明顯;楊萍[8]針對復(fù)雜多峰不規(guī)則函數(shù)優(yōu)化提出將細菌覓食趨化算子引入粒子群算法(Particle swarm optimization,PSO)中,利用細菌之間有吸引度可以快速找到鄰域的最優(yōu)值來優(yōu)化PSO算法,該算法比單一的PSO和BFOA算法收斂精度都有顯著的提高,但在收斂速度方面未得到明顯提高;本文提出改進的混合細菌覓食優(yōu)化算法(BFOA_SGD),將隨機梯度下降算法(SGD)引入BFOA算法趨向操作,BFOA_SGD算法在保留適應(yīng)度值最好的細菌同時,根據(jù)選取批次最優(yōu)細菌的樣本參數(shù)梯度值對參數(shù)進行有針對性更新,提高最優(yōu)解精度并且加快收斂速度,對不同方面的優(yōu)化更具有通用性,從理論和應(yīng)用層面對BFOA_SGD算法進行研究.
BFOA算法模擬生物中菌群覓食的行為,包括趨向、復(fù)制、遷徙3個步驟.趨向操作包括細菌游動和翻轉(zhuǎn)兩個過程,根據(jù)適應(yīng)度值進行調(diào)整,尋找當(dāng)前最適宜細菌生存的方向[9-11];復(fù)制操作,根據(jù)適應(yīng)度值進行排序,消除表現(xiàn)差的細菌,用表現(xiàn)好的細菌樣本進行代替;遷徙操作在全局進行搜索,根據(jù)發(fā)生遷徙的概率(ped)對細菌個體進行判斷,生成新的解空間,跳出局部區(qū)域[12-13].算法的核心內(nèi)容是趨化操作,它對應(yīng)細菌在尋找食物過程中所選取的方向和選擇策略.該步驟影響整體算法的收斂性能.趨化操作中,細菌更新位置公式為:
其中:i,j,k,l=1,2,…,M,F(xiàn)i(j,k,l)為細菌i在第j次趨向性操作、第k次復(fù)制操作和第l次遷徙操作之后的位置.C(i)>0時表示細菌向前移動的步長單位,Φ(j)表示翻轉(zhuǎn)后細菌隨機選擇的前進方向.Φ(j)為:
Δ(i)即產(chǎn)生一個隨機的向量,其中的每個元素都在[-1,1]上隨機產(chǎn)生.
BFOA算法選擇翻轉(zhuǎn)方向向量機制過于隨機,在尋找最優(yōu)解的過程中也比較難以收斂,難以確定一個合適的翻轉(zhuǎn)方向,造成優(yōu)化時間過長.BFOA算法通過所有維度上對細菌位置參數(shù)整體更新,忽略單個細菌樣本位置參數(shù)對整體的影響,導(dǎo)致算法求解精度不高.
對經(jīng)典BFOA算法進行改進,將其與SGD算法結(jié)合形成BFOA_SGD算法.SGD算法用于卷積神經(jīng)網(wǎng)絡(luò)中更新網(wǎng)絡(luò)中模型參數(shù).將訓(xùn)練集分成n個batch,每個batch-size為m,隨機選取一個batch計算出梯度值用來更新整個網(wǎng)絡(luò)的模型參數(shù)[14-15].本文采用SGD算法加入動量因子累積之前梯度值,使更新參數(shù)過程更加快速穩(wěn)定.將SGD算法引入BFOA算法中趨化步驟,利用細菌位置參數(shù)的梯度值來更新細菌的位置參數(shù),細菌的最優(yōu)位置參數(shù)更新則為:
其中:i,j,k,l=1,2,…,M,μ是修正動量的動量因子,vi是動量參數(shù),σ是學(xué)習(xí)率,就是更新的步長,gi是適應(yīng)度函數(shù)對位置參數(shù)求偏導(dǎo),就是梯度變化值.混合算法在趨化步驟時當(dāng)細菌在遇到環(huán)境惡劣的地方時,也就是適應(yīng)度值下降的地方,并不是隨機的選擇方向進行運動.而是選取一部分樣本,利用其梯度信息結(jié)合學(xué)習(xí)率等超參數(shù)進行尋優(yōu),可以快速找到最優(yōu)的位置信息.SGD算法是利用目標函數(shù)也就使細菌覓食算法中的適應(yīng)度函數(shù)對當(dāng)前位置參數(shù)求偏導(dǎo),求得梯度值進行更新,這樣建立適應(yīng)度函數(shù)和單個細菌樣本位置參數(shù)與更新參數(shù)之間的聯(lián)系機制,可以提高收斂的精度,精確找到最優(yōu)的位置信息.引入SGD算法,建立起尋優(yōu)過程中算法與樣本和適應(yīng)度函數(shù)的聯(lián)系.BFOA_SGD算法更加快速和精確地找到最優(yōu)的位置,再通過復(fù)制性和遷徙性將最優(yōu)位置范圍從局部擴充到整體.
改進后的混合算法趨向性操作、賦復(fù)制操作和遷徙操作具體流程為:
步驟1 For i in range(0,M):#趨向性操作;
步驟2 根據(jù)適應(yīng)度值,計算適應(yīng)值函數(shù)L( j,k,l);
步驟3 保存當(dāng)前L( j,k,l),再次向前游動;
步驟4 I(fi=0||fitness(i)<fitness(i-1)):(如果是第一次或者適應(yīng)度小于上一次就進行翻轉(zhuǎn)操作);
步驟6 If(α<Ns):(α為當(dāng)前位置的移動距離,Ns為在該方向移動的最大距離),游動操作:在當(dāng)前位置移動相應(yīng)步長;
本文將混合算法BFOA_SGD算法與BFOA算法、SGD算法以及文獻[8]中基于細菌覓食趨化算子的粒子群算法(BFA-PSO)優(yōu)化高維測試函數(shù),對BFOA_SGD算法、BFOA算法、SGD算法和BFA-PSO算法的收斂性能對比.高維測試函數(shù)選擇如表1所示,測試環(huán)境為MatlabR2020b.
表1 測試函數(shù)
Griewangk函數(shù)在(0,0,0,0,0,0,…,0)處有一個全局最小值,而在其他地方有無數(shù)個局部極小值;SumSquares函數(shù)沒有局部最小值,只有一個全局最小值(0,0,0,0,…);Ackley函數(shù)多峰函數(shù),在一個維度進行多方面尋優(yōu),有大量的局部最優(yōu)點;Drop-Wave函數(shù)是多通道和高度復(fù)雜,在不同維度有局部最小值.
對于BFOA算法,主要參數(shù)有細菌數(shù)M=60,趨向操作次數(shù)Nc=200,復(fù)制操作次數(shù)Nre=10,遷徙操作次數(shù)Ned=5,遷徙概率ped=0.25,步長為0.02(Xmax-Xmin);對于SGD算法,步長為0.02,動量因子為0.09.BFOA_SGD算法,主要參數(shù)有細菌數(shù)M=60,趨向操作次數(shù)Nc=200,復(fù)制操作次數(shù)Nre=10,遷徙操作次數(shù)Ned=5,遷徙概率ped=0.25,步長為0.02,動量因子為0.09、BFA-PSO算法參數(shù)設(shè)置如文獻[8]一致,粒子數(shù)N=40,wmax=0.9,wmin=0.4,學(xué)習(xí)因子c1=c2=2,而細菌趨化算子中Nc=50,步長參數(shù)C隨測試函數(shù)的不同而不同.
本文在理論上從兩個方面分析算法:收斂性能和尋找全局最優(yōu)值.分別用SGD算法、BFOA算法、BFOA_SGD算法以及BFA-PSO算法對上述4種算法在4個函數(shù)中迭代1 000次,輸出每次的最優(yōu)解如圖1、圖2、圖3和圖4所示.
圖1 Griewangk函數(shù)尋優(yōu)對比圖
圖2 SumSquares函數(shù)尋優(yōu)對比圖
圖3 Ackley函數(shù)尋優(yōu)對比圖
圖4 Drop-Wave函數(shù)尋優(yōu)對比圖
從測試結(jié)果可以發(fā)現(xiàn),BFOA_SGD算法相較于BFOA算法、SGD算法以及BFA-PSO算法,在4個高維函數(shù)上都經(jīng)歷更少迭代次數(shù)就可以穩(wěn)定地得到最優(yōu)解,且最優(yōu)解精度高.Griewangk函數(shù),Ackley函數(shù)和Drop-Wave函數(shù)有無數(shù)極小值點,而只有一個最小值點,所以SGD算法就受到限制,而BFOA_SGD算法,因為引入復(fù)制、趨化等操作,彌補隨機梯度下降算法不容易跳出局部最小值的劣勢.而對于SumSquares函數(shù)上的表現(xiàn),因為BFOA算法具有收斂性能較差的特點,所以表現(xiàn)最差,而BFOA_SGD算法則彌補這種劣勢.因此BFOA_SGD算法在收斂性和尋找全局最優(yōu)值的表現(xiàn)要優(yōu)于BFOA算法和SGD算法和BFAPSO算法.
本文采用經(jīng)典的let-net5卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),手寫字體數(shù)據(jù)集來自MNIST標準數(shù)據(jù)集,輸入圖像像素為32*32*3,有兩個卷積層C1和C2,和兩個池化層S1和S2,3個全連接層FC1、FC2和FC3.各層超參數(shù)設(shè)置如表2所示.
表2 卷積神經(jīng)網(wǎng)絡(luò)各層超參數(shù)設(shè)置
在LeNet-5神經(jīng)網(wǎng)絡(luò)模型上分別采用隨機梯度下降算法(SGD)、細菌覓食優(yōu)化算法(BFOA)、混合優(yōu)化算法BFOA_SGD對卷積網(wǎng)絡(luò)的性能進行優(yōu)化.訓(xùn)練數(shù)據(jù)為MINST數(shù)據(jù)集前20 000張,測試數(shù)據(jù)集為1 000張圖片.訓(xùn)練10個世代,每次世代結(jié)束后輸出一次損失率和識別正確率,識別正確率如表3所示,損失率如圖5所示.
圖5 世代損失率對比
表3 各類優(yōu)化算法對MINST數(shù)據(jù)集識別的準確率 %
從實驗結(jié)果可以得出,在10個世代的訓(xùn)練過程中,BFOA_SGD算法表現(xiàn)最為優(yōu)異.從表3中最終識別準確率來看,BFOA_SGD算法的全局尋優(yōu)能力表現(xiàn)更好;由圖5可知,BFOA_SGD算法相較于傳統(tǒng)的BFOA算法和SGD算法而言,快速且穩(wěn)定地降低輸出損失率,BFOA_SGD算法收斂速度更快且精度更高.BFOA_SGD算法作為優(yōu)化算法應(yīng)用在卷積神經(jīng)網(wǎng)絡(luò)上,更好地提升卷積神經(jīng)網(wǎng)絡(luò)性能.
本文提出的BFOA_SGD算法是一種將生物上由細菌覓食的行為衍生出來的細菌覓食算法和隨機梯度下降算法結(jié)合形成的混合算法.將其優(yōu)化測試函數(shù)和應(yīng)用在卷積神經(jīng)網(wǎng)絡(luò)上來研究BFOA_SGD算法的收斂性能以及對卷積神經(jīng)網(wǎng)絡(luò)性能的優(yōu)化.通過4種算法對測試函數(shù)的優(yōu)化,BFOA_SGD算法在收斂性能和尋找全局最優(yōu)值的表現(xiàn)要優(yōu)于一般的BFOA算法、SGD算法以及BFA-PSO算法.將BFOA_SGD算法應(yīng)用在卷積神經(jīng)網(wǎng)絡(luò)上,對3種算法輸出損失率和最終識別準確率和進行對比,BFOA_SGD算法運用在卷積神經(jīng)網(wǎng)絡(luò)上對圖像的識別準確率比單一的BFOA算法和SGD算法識別準確率要高2%左右.提高卷積神經(jīng)網(wǎng)絡(luò)在圖像識別分類上識別精度.從理論和應(yīng)用兩個層面進行研究分析,文中提出的BFOA_SGD算法在全局尋優(yōu)的能力、算法的收斂性能和卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用上均優(yōu)于單一BFOA算法、SGD算法以及BFA-PSO算法.