秦琪怡,郭承湘,吳帥,姚旭藝,陳寧江*,3
(1.廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,廣西南寧530004;2.廣西中醫(yī)藥大學(xué)網(wǎng)絡(luò)和信息化管理辦公室,廣西南寧530200;3.廣西多媒體通信與網(wǎng)絡(luò)技術(shù)重點(diǎn)實(shí)驗(yàn)室,廣西南寧530004)
BP神經(jīng)網(wǎng)絡(luò)是基于梯度搜索技術(shù)尋找期望值與均方誤差最小的多層前饋神經(jīng)網(wǎng)絡(luò),依靠大量數(shù)據(jù)學(xué)習(xí)挖掘潛在規(guī)律以對(duì)未知事件做出合理假設(shè)與預(yù)測(cè)。BP神經(jīng)網(wǎng)絡(luò)算法基于結(jié)構(gòu)優(yōu)化和權(quán)重訓(xùn)練且具有強(qiáng)大的學(xué)習(xí)和搜索能力而被廣泛使用[1],但是傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法常伴有收斂慢、易陷入局部最優(yōu)等問(wèn)題[2]。對(duì)此,不少研究工作從不同角度探討了通過(guò)結(jié)合智能規(guī)劃算法來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò),例如:基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化方法[3],主要解決局部最優(yōu)問(wèn)題,但收斂速度較慢;基于粒子群優(yōu)化算法(particle swarm optimization, PSO)的優(yōu)化方法[4],其前期收斂速度快,但迭代后期搜索能力較弱;基于布谷鳥(niǎo)搜索算法(Cuckoo search, CS)的優(yōu)化方法[5]結(jié)合布谷鳥(niǎo)的巢寄生性與Levy飛行搜索機(jī)制實(shí)現(xiàn)高效尋優(yōu),全局搜索能力較強(qiáng),但收斂速度較慢等。在當(dāng)前不少實(shí)際應(yīng)用領(lǐng)域中,例如產(chǎn)品安全風(fēng)險(xiǎn)預(yù)警應(yīng)用[6],僅使用傳統(tǒng)的單一的BP神經(jīng)網(wǎng)絡(luò)或者簡(jiǎn)單融合智能規(guī)劃算法的優(yōu)化模型,仍在模型的尋優(yōu)效率、準(zhǔn)確率、穩(wěn)定性等方面有提升需求,故近年也有將兩種算法進(jìn)行聯(lián)合優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的研究工作[7-9]。粒子群優(yōu)化算法與布谷鳥(niǎo)搜索算法均為群仿生智能算法,各自在全局搜索能力與收斂速度等方面有不同的表現(xiàn):PSO算法前期收斂速度快,迭代后期搜索能力欠缺;CS算法全局搜索能力足,但收斂速度相對(duì)較慢[10]。
筆者對(duì)將粒子群算法和布谷鳥(niǎo)搜索算法融合的優(yōu)化方法進(jìn)行了探討,提出一種分層的優(yōu)化算法融合的MB-PSO-CS-BP模型,目標(biāo)是減小BP神經(jīng)網(wǎng)絡(luò)初始化的敏感性,減緩其陷入局部最優(yōu)的問(wèn)題,最終提升預(yù)測(cè)效果。
本文設(shè)計(jì)的MB-PSO-CS-BP模型如圖1所示。該模型采用分層優(yōu)化框架,下層為粒子群優(yōu)化(PSO)模型,基于信息共享機(jī)制通過(guò)個(gè)體間競(jìng)爭(zhēng)與協(xié)作相結(jié)合,用于BP神經(jīng)網(wǎng)絡(luò)算法前期搜索優(yōu)化;上層的布谷鳥(niǎo)搜索算法(CS)計(jì)算鳥(niǎo)窩的適應(yīng)度并基于Levy飛行機(jī)制改進(jìn)鳥(niǎo)窩,找到全局適應(yīng)度的最佳鳥(niǎo)窩結(jié)合,轉(zhuǎn)化映射為BP神經(jīng)網(wǎng)絡(luò)對(duì)應(yīng)的權(quán)值與閾值,能夠較好地收斂于全局最優(yōu)解。
圖1 MB-PSO-CS-BP模型框架Fig.1 Framework of MB-PSO-CS-BP model
BP神經(jīng)網(wǎng)絡(luò)算法的核心為梯度下降技術(shù),在此方面尚需優(yōu)化空間,對(duì)此筆者采用Mini-Batch批量計(jì)算[11]的方式提高模型訓(xùn)練效率。Mini-Batch算法是集梯度下降與隨機(jī)梯度下降為一體,將數(shù)據(jù)集切割為多個(gè)小塊計(jì)算的小批量梯度算法[12],在減少計(jì)算量的同時(shí)能夠減小梯度下降的隨機(jī)性。打亂訓(xùn)練集與切分訓(xùn)練集是Mini-Batch梯度下降算法的核心步驟,訓(xùn)練集亂序示意圖如圖2所示。
圖2 Mini-Batch算法中的訓(xùn)練集亂序示意圖Fig.2 Schematic of training set disorder in Mini-Batch algorithm
在圖2所示例中,隨機(jī)變換訓(xùn)練集順序以確保樣本被隨機(jī)分成不同小批次,亂序過(guò)程中訓(xùn)練數(shù)據(jù)X與其對(duì)應(yīng)的訓(xùn)練標(biāo)簽Y保持相對(duì)應(yīng)。之后以2n為單位(本文將Mini-Batch的size設(shè)為64)切分亂序的訓(xùn)練集,切分為數(shù)個(gè)子集的數(shù)據(jù)集分別進(jìn)行梯度下降,訓(xùn)練集切分示意圖如圖3所示。Mini-Batch梯度下降算法中的誤差損失以上下波動(dòng)的方式下降,總體為下降趨勢(shì),能夠大幅提高訓(xùn)練效率。
圖3 訓(xùn)練集切分示意圖Fig.3 Schematic of the training set cutting
綜合以上,MB-PSO-CS-BP模型的基本思想為:隨機(jī)生成2n個(gè)包含神經(jīng)網(wǎng)絡(luò)權(quán)值閾值信息的粒子,使用Mini-Batch算法將初始化粒子隨機(jī)打亂順序[13],并按規(guī)則將粒子群分為多個(gè)小種群;下層運(yùn)行PSO算法局部搜索的優(yōu)勢(shì)優(yōu)化各小種群,將每個(gè)小種群求得的最佳粒子送到上層;上層運(yùn)行CS算法進(jìn)行全局搜索,進(jìn)行深度優(yōu)化,將求得的最優(yōu)解返回到各小種群,將粒子群打亂重新分組;重復(fù)上述步驟。當(dāng)符合終止條件時(shí),將求得的全局最優(yōu)粒子轉(zhuǎn)化為BP神經(jīng)網(wǎng)絡(luò)初始化格式,進(jìn)入BP模型繼續(xù)訓(xùn)練。該模型的執(zhí)行算法流程如圖4所示。
圖4 MB-PSO-CS-BP算法流程Fig.4 Flow chart of MB-PSO-CS-BP algorithm
主要步驟說(shuō)明如下:
Step 1:初始化BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)(本文設(shè)置BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為3層),設(shè)其節(jié)點(diǎn)數(shù)分別為input、hid1、hid2、output。
Step 2:根據(jù)式(1)初始化2n個(gè)粒子,設(shè)置小種群個(gè)數(shù)為n,將適應(yīng)度函數(shù)設(shè)置為BP神經(jīng)網(wǎng)絡(luò)的均方誤差[1],并初始化PSO算法中各參數(shù),設(shè)置粒子個(gè)數(shù)及迭代次數(shù);確定粒子搜索空間維度D,即單個(gè)粒子的規(guī)模,PSO中粒子維度與神經(jīng)網(wǎng)絡(luò)的連接節(jié)點(diǎn)的權(quán)值與閾值相映射,其中包含神經(jīng)網(wǎng)絡(luò)中所有的權(quán)值與閾值。D的計(jì)算如下所示:
D=input×hid1+hid1×hid2+hid2×output+hid2+output。
(1)
設(shè)置初始慣性權(quán)值ω、加速度常數(shù)c1和c2、隨機(jī)初始化粒子群速度r1和r2,并基于抑梯度異常給定解空間范圍[-bound,bound],如下所示:
(2)
Step 3:使用Mini-Bacth算法將粒子群打亂,隨機(jī)分為n個(gè)小粒子種群。
Step 4:計(jì)算各粒子適應(yīng)度作為個(gè)體歷史最優(yōu)值,各小粒子種群的最優(yōu)適應(yīng)度作為小種群全局歷史最優(yōu)值,整個(gè)粒子群的最優(yōu)適應(yīng)度作為全局歷史最優(yōu)解。
Step 5:根據(jù)下述公式更新各粒子的速度與位置,并計(jì)算其適應(yīng)度。
v(t+1)=ω(t)+c1×r1×(pbest-x(t))+c2×r2×(gbest-x(t)),
(3)
x(t+1)=x(t)+v(t+1)。
(4)
Step 6:將粒子當(dāng)前適應(yīng)度與個(gè)體歷史最優(yōu)值對(duì)比,若優(yōu)則替換更新個(gè)體歷史最佳粒子與個(gè)體歷史最佳適應(yīng)度。
Step 7:計(jì)算小種群的最優(yōu)適應(yīng)度,將其對(duì)應(yīng)最佳粒子作為小種群最優(yōu)解。
Step 8:計(jì)算大粒子種群最優(yōu)值,與歷史全局最優(yōu)值比較,若優(yōu)則更新替換全局歷史最優(yōu)值與全局歷史最優(yōu)解。
Step 9:判斷PSO算法是否可終止,若可以則繼續(xù)執(zhí)行step 10,否則返回step 4迭代執(zhí)行。
Step 10:將n個(gè)小粒子種群最優(yōu)解作為CS算法的初始鳥(niǎo)窩,并初始化CS算法中各參數(shù)。
Step 11:計(jì)算各鳥(niǎo)窩適應(yīng)度,并基于Levy飛行機(jī)制遷移鳥(niǎo)窩計(jì)算新窩適應(yīng)度。將新舊鳥(niǎo)窩的適應(yīng)度進(jìn)行比較,若優(yōu)則替代更新。鳥(niǎo)窩改進(jìn)公式如下所示:
(5)
Step 12:CS算法優(yōu)化最優(yōu)解返回各小種群,與小種群歷史最優(yōu)解比較,若優(yōu)則替代更新。
Step 13:判斷是否符合終止條件,符合則執(zhí)行step 13,否則返回step 3迭代執(zhí)行。
Step 14:最后輸出CS算法搜索的最優(yōu)解,映射轉(zhuǎn)化為BP的權(quán)值閾值用于后續(xù)的模型訓(xùn)練。
設(shè)粒子數(shù)為N,小種群數(shù)為n,PSO算法迭代i次,CS算法迭代j次,兩層優(yōu)化迭代m次,則MB-PSO-CS-BP的權(quán)值閾值初始化算法的時(shí)間復(fù)雜度為O(N×i×j×m),該算法保留了PSO算法收斂速度快與CS算法全局搜索能力強(qiáng)的特點(diǎn),但時(shí)間復(fù)雜度較高。
為驗(yàn)證MB-PSO-CS-BP算法的優(yōu)化效果,與分別只用PSO和CS算法來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的方法(分別記為PSO-BP、CS-BP)進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)是以某省食品藥品監(jiān)督部門提供的食品抽樣檢驗(yàn)數(shù)據(jù)為訓(xùn)練數(shù)據(jù),使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)食品安全風(fēng)險(xiǎn)。實(shí)驗(yàn)執(zhí)行的軟硬件環(huán)境基本參數(shù)為:CPU Intel(R) Pentium(R) CPU G640@2.80 GHz,8 GB內(nèi)存,Python 3.7編程,操作系統(tǒng)為Win 10。
在實(shí)驗(yàn)中提取兩組數(shù)據(jù)集(分別命名為Dataset 1、Dataset 2)作為訓(xùn)練數(shù)據(jù),數(shù)據(jù)集Dataset 1與數(shù)據(jù)集Dataset 2均從源數(shù)據(jù)中以2∶1隨機(jī)抽取1 500條數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),從余下數(shù)據(jù)中隨機(jī)抽取375條數(shù)據(jù)作為測(cè)試數(shù)據(jù),分別在數(shù)據(jù)集上放入PSO-BP模型、CS-BP模型與MB-PSO-CS-BP模型各訓(xùn)練多次,從多個(gè)指標(biāo)進(jìn)行對(duì)比。有關(guān)實(shí)驗(yàn)參數(shù)設(shè)置如表1所示。
表1 實(shí)驗(yàn)參數(shù)設(shè)置Tab.1 Experiment parameter setting
基于數(shù)據(jù)集Dataset 1與Dataset 2進(jìn)行訓(xùn)練模型,圖5展示了各個(gè)模型在兩個(gè)數(shù)據(jù)集上訓(xùn)練均方誤差的變化。由圖5可知均方誤差在各模型上都呈下降趨勢(shì)。PSO-BP模型在迭代600次左右收斂開(kāi)始穩(wěn)定,CS-BP模型的均方誤差上下震蕩非常大,PSO-CS-BP模型在迭代500次左右收斂趨于穩(wěn)定。
(a) Dataset 1的PSO-BP模型誤差變化
(b) Dataset 2的PSO-BP模型誤差變化
(c) Dataset 1的CS-BP模型誤差變化
(d) Dataset 2的CS-BP模型誤差變化
(e) Dataset 1的MB-PSO-CS-BP模型誤差變化
(f) Dataset 2的MB-PSO-CS-BP模型誤差變化
表2和表3分別給出各模型在訓(xùn)練集Dataset 1、Dataset 2上的訓(xùn)練結(jié)果,列出實(shí)驗(yàn)的平均值。由表2與表3可見(jiàn),經(jīng)MB-PSO-CS-BP模型搜索的全局最佳粒子對(duì)應(yīng)的全局最佳值,均小于其他模型搜索結(jié)果。從均方誤差、準(zhǔn)確率等維度的參數(shù)上可見(jiàn)該模型的性能更佳,一定程度上避免了BP神經(jīng)網(wǎng)絡(luò)陷入局部最小值,提高了模型精度。此外,從兩組訓(xùn)練數(shù)據(jù)實(shí)驗(yàn)結(jié)果上來(lái)看,PSO-BP模型與CS-BP模型在不同數(shù)據(jù)集上的訓(xùn)練結(jié)果有優(yōu)有劣,其訓(xùn)練效果并不穩(wěn)定,模型使用者需經(jīng)過(guò)多次訓(xùn)練模型擇優(yōu)選取較好的結(jié)果,而MB-PSO-CS-BP模型在不同訓(xùn)練集上均有不錯(cuò)的訓(xùn)練結(jié)果,且多次訓(xùn)練的結(jié)果較穩(wěn)定。
表2 訓(xùn)練集Dataset 1的訓(xùn)練結(jié)果Tab.2 Training results of the training set Dataset 1
表3 訓(xùn)練集Dataset 2的訓(xùn)練結(jié)果Tab.3 Training results of the training set Dataset 2
表4給出了MB-PSO-CS-BP、PSO-BP、CS-BP模型特點(diǎn)比較。
表4 3種模型的特點(diǎn)比較Tab.4 Comparison of the characteristics of the three models
本文提出了一種新的基于粒子群優(yōu)化和布谷鳥(niǎo)搜索融合的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化模型,采用分層優(yōu)化框架,將PSO用于底層多種群局部搜索,將CS用于頂層全局搜索,尋得的最優(yōu)粒子轉(zhuǎn)化作為BP神經(jīng)網(wǎng)絡(luò)的權(quán)值閾值的初始化,結(jié)合Mini-Batch算法,以克服收斂慢、陷入局部等不足。本文在實(shí)際數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)驗(yàn)證和對(duì)比,結(jié)果表明所提出的MB-PSO-CS-BP模型結(jié)合了PSO算法與CS算法的各自優(yōu)點(diǎn),緩解了BP神經(jīng)網(wǎng)絡(luò)陷入局部最小值的困境。下一步的工作將考慮使用基準(zhǔn)函數(shù)等加強(qiáng)測(cè)試所提出模型的普適性,還可考慮分別在PSO與CS層次做進(jìn)一步的深入優(yōu)化以提高整體的性能。