李 劍
(武漢郵電科學(xué)研究院 武漢 430074)
最近的研究中發(fā)現(xiàn),CNN 在用于各類(lèi)識(shí)別、分類(lèi)等任務(wù)當(dāng)中,都能表現(xiàn)出了相當(dāng)好的性能。CNN有許多優(yōu)點(diǎn),其中一個(gè)便是能夠?qū)τ?xùn)練數(shù)據(jù)通過(guò)自動(dòng)學(xué)習(xí)的方法進(jìn)行特征表示,這也是其與傳統(tǒng)的通過(guò)人工來(lái)完成特征表示過(guò)程方法的重要區(qū)別。但是在訓(xùn)練過(guò)程中,CNN模型中有大量的超參數(shù)與權(quán)值需要進(jìn)行優(yōu)化。如何高效地對(duì)參數(shù)進(jìn)行調(diào)優(yōu),提高CNN 模型的整體效果,也成為了CNN 算法模型的重要點(diǎn)與難點(diǎn)之一。在本文的研究當(dāng)中,通過(guò)提出使用PSO 來(lái)對(duì)CNN 中的參數(shù)進(jìn)行有效的優(yōu)化,提高模型對(duì)當(dāng)前任務(wù)的效果。
雖然CNN 模型的功能十分強(qiáng)大,但需要進(jìn)行優(yōu)化的參數(shù)也非常多,其大致分為兩類(lèi),一類(lèi)用于網(wǎng)絡(luò)的模型配置,另一類(lèi)通過(guò)訓(xùn)練進(jìn)行學(xué)習(xí)調(diào)優(yōu)。其中,CNN的識(shí)別能力強(qiáng)烈依賴(lài)于網(wǎng)絡(luò)配置的參數(shù)設(shè)定。許多研究人員正試圖為保證CNN 的優(yōu)越性能建立一個(gè)全面的理論體系,但目前仍未發(fā)現(xiàn)出可以通用各種CNN 架構(gòu)的、優(yōu)秀的參數(shù)優(yōu)化策略。因此,文本嘗試提出了一種通過(guò)PSO 對(duì)CNN 模型參數(shù)進(jìn)行自動(dòng)調(diào)優(yōu)的方法。該項(xiàng)研究的進(jìn)展主要有兩個(gè)方面:首先,這是首次使用進(jìn)化算法來(lái)尋找CNN 模型最佳參數(shù)設(shè)置的試驗(yàn);其次,通過(guò)對(duì)PSO進(jìn)行改進(jìn)使其更符合CNN 相關(guān)模型的訓(xùn)練,使改進(jìn)后的方法在優(yōu)化耗時(shí)上僅比原始方法多出了2%~4%,但模型性能有了明顯提升。
實(shí)驗(yàn)結(jié)果表明,本文提出的通過(guò)PSO進(jìn)行參數(shù)優(yōu)化得到的CNN 模型的識(shí)別精度要優(yōu)于標(biāo)準(zhǔn)CNN模型。同時(shí)可以驗(yàn)證,本文所提出的方法適用于大多數(shù)現(xiàn)有CNN架構(gòu)。
在以前的研究中,優(yōu)化算法已經(jīng)被應(yīng)用于支持向量機(jī)(SVM)、KNN、神經(jīng)網(wǎng)絡(luò)(NN)等算法模型當(dāng)中。在2012 年就已經(jīng)有研究人員利用遺傳算法對(duì)SVM 進(jìn)行優(yōu)化以解決各種現(xiàn)實(shí)問(wèn)題[1]。2014 年,Shao、Ling等通過(guò)多目標(biāo)遺傳算法解決圖像分類(lèi)[2],這是使用優(yōu)化算法來(lái)實(shí)現(xiàn)特征提取,其表現(xiàn)出了比人工進(jìn)行特征表示的方法具有更好的性能。
在之前幾十年的研究中,研究人員都是在討論將優(yōu)化算法用于淺層次神經(jīng)網(wǎng)絡(luò)的優(yōu)化當(dāng)中。Lin C T、Prasad M、Saxena A 等提出了通過(guò)使用遺傳算法(GA)來(lái)替代反向傳播(BP)的方法來(lái)實(shí)現(xiàn)權(quán)重更新[3],以避免訓(xùn)練過(guò)程中出現(xiàn)局部最優(yōu)解的情況。而Hu Z 則通過(guò)將GA 和BP 進(jìn)行組合的方法來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練[4]。
然而,使用優(yōu)化算法來(lái)對(duì)CNN 模型進(jìn)行參數(shù)優(yōu)化的方法還仍未得到廣泛探討,對(duì)CNN 的性能提升仍然依靠于加深網(wǎng)絡(luò)模型或增加卷積窗口等方式。Gupta S 和Singhal A 嘗試通過(guò)PSO 方法來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行優(yōu)化以解決某些特定的問(wèn)題[5];Yu 等則使用CRO 算法來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化[6]。但這些方法都只是簡(jiǎn)單地用優(yōu)化算法將BP算法進(jìn)行替換,無(wú)法很好地移植到CNN 模型上。因此,本文旨在將PSO 算法應(yīng)用到CNN 中,并能夠具有一定的拓展性,可以適用于大多數(shù)CNN 架構(gòu)的模型中。
同時(shí),將優(yōu)化算法應(yīng)用于CNN 模型上會(huì)存在繁重的計(jì)算負(fù)荷的問(wèn)題。本文針對(duì)這個(gè)問(wèn)題提出了相應(yīng)的解決方案。將優(yōu)化算法應(yīng)用于機(jī)器學(xué)習(xí)算法的優(yōu)化當(dāng)中,并降低一定的優(yōu)化成本,是本文的主要工作內(nèi)容。
粒子群優(yōu)化算法(PSO)是由Eberhart和Kenne?dy 開(kāi)發(fā)的一種優(yōu)化方法[7]。這種方法的靈感來(lái)自于昆蟲(chóng)、獸群、鳥(niǎo)群和魚(yú)群等的群集行為,這些群體按照一種合作的方式尋找食物。其中的每個(gè)粒子都代表了一個(gè)潛在的解決方案,正如動(dòng)物群體中的每個(gè)成員會(huì)通過(guò)學(xué)習(xí)它自身的經(jīng)驗(yàn)和其他成員的經(jīng)驗(yàn)來(lái)不斷改變其搜索模式。粒子群算法便是通過(guò)粒子間的協(xié)作與競(jìng)爭(zhēng),實(shí)現(xiàn)了對(duì)復(fù)雜空間中最優(yōu)解的搜索[8]。在PSO 算法中每個(gè)粒子可以看作是解空間中的一個(gè)點(diǎn)。如果粒子的群體規(guī)模為N,則第i(i=1,2,…,N)個(gè)粒子的位置可以記為Xi,速度記為Vi,它所經(jīng)歷過(guò)的“最好”位置記為pbest( )i ,群體中“最好”粒子的位置記為gbest( i )。粒子i 根據(jù)式(1)更新自己的速度和位置:

在粒子的搜索過(guò)程中,使如式(2)所示的均方誤差,即適應(yīng)值Fitnessi達(dá)到最小。

其基本粒子群算法流程如下:
1)依照初始化過(guò)程,對(duì)微粒群的隨機(jī)位置和速度進(jìn)行初始設(shè)定;
2)計(jì)算每個(gè)微粒的適應(yīng)度值;
3)對(duì)于每個(gè)微粒,將其適應(yīng)度值與所經(jīng)歷過(guò)的最好位置pbest的適應(yīng)度值進(jìn)行比較,若較好,則將其作為當(dāng)前的最好位置;
4)對(duì)每個(gè)微粒,將其適應(yīng)度值與全局所經(jīng)歷的最好位置gbest的適應(yīng)度值進(jìn)行比較,若較好,則將其作為當(dāng)前的全局最好位置;
5)根據(jù)式(1)更新微粒的速度和位置;
6)如未達(dá)到結(jié)束條件,通常為足夠好的適應(yīng)閾值或達(dá)到一個(gè)預(yù)設(shè)的最大代數(shù)(Gmax),則返回步驟2)。
在卷積神經(jīng)網(wǎng)絡(luò)中,需要進(jìn)行優(yōu)化的相關(guān)參數(shù)包括卷積核大小、卷積窗口的參數(shù)、特征映射的各節(jié)點(diǎn)權(quán)值、池化層的大小和類(lèi)型等。首先使用高位數(shù)的浮點(diǎn)型數(shù)值進(jìn)行參數(shù)搜索,然后對(duì)他們進(jìn)行四舍五入,保留符合要求的位數(shù)。如果參數(shù)超出了設(shè)定的動(dòng)態(tài)范圍,則將其反射回動(dòng)態(tài)范圍內(nèi)。因如果步長(zhǎng)也通過(guò)PSO算法進(jìn)行優(yōu)化,那么會(huì)把需要處理的圖像尺寸變得非常小,這時(shí)用卷積來(lái)提取局部特征的方式就沒(méi)有起到效果。此在本文研究當(dāng)中,沒(méi)有對(duì)卷積層和池化層的步長(zhǎng)參數(shù)進(jìn)行優(yōu)化,這樣可以確保其他參數(shù)有較大的搜索空間。
如果需要優(yōu)化的是網(wǎng)絡(luò)層數(shù)這類(lèi)與網(wǎng)絡(luò)結(jié)構(gòu)相關(guān)的參數(shù),那么使用GA 算法來(lái)優(yōu)化的效果要好一些,因?yàn)镻SO算法中隱含的條件為待識(shí)別的特征維度是固定的,因此其無(wú)法適應(yīng)動(dòng)態(tài)的結(jié)構(gòu)變化[9]。
本文所提出使用PSO 算法對(duì)CNN 進(jìn)行優(yōu)化的流程圖由圖1所示。其中,Y表示滿(mǎn)足條件,而N表示不滿(mǎn)足條件。

圖1 PSO-CNN訓(xùn)練流程圖
本研究中會(huì)將卷積神經(jīng)網(wǎng)絡(luò)中需要訓(xùn)練的參數(shù)算作PSO算法中的一個(gè)粒子集,那么粒子集的數(shù)量便是網(wǎng)絡(luò)中需要訓(xùn)練的參數(shù)個(gè)數(shù)。首先對(duì)這些粒子的位置與速度進(jìn)行隨機(jī)初始化,然后根據(jù)實(shí)際輸出與期望輸出間的誤差計(jì)算適應(yīng)度,并利用式(1)求得每個(gè)粒子的全局最優(yōu)位置與當(dāng)前速度,即得到了更新后的網(wǎng)絡(luò)權(quán)值。隨后代入新的權(quán)值參數(shù)再重新訓(xùn)練,以此迭代下去,直到適應(yīng)度收斂到一定閾值范圍內(nèi)時(shí),停止算法[10]。
在理想情況下,所有粒子的性能應(yīng)該在與最終訓(xùn)練階段相同的條件下進(jìn)行評(píng)估,例如相同的ep?och 數(shù)量,相同數(shù)量的訓(xùn)練參數(shù)等。然而這樣并不現(xiàn)實(shí),因?yàn)槿绻W拥臄?shù)量是M 且PSO 優(yōu)化的ep?och次數(shù)是N,則參數(shù)優(yōu)化的時(shí)間即為MN。而神經(jīng)網(wǎng)絡(luò)中,進(jìn)行優(yōu)化的參數(shù)量會(huì)非常大,這就會(huì)造成訓(xùn)練耗時(shí)特別長(zhǎng),需要消耗的系統(tǒng)資源也特別大。并且對(duì)數(shù)據(jù)集大量的重復(fù)訓(xùn)練反而會(huì)導(dǎo)致過(guò)擬合,這在實(shí)際應(yīng)用中便會(huì)產(chǎn)生很多性能問(wèn)題。這里需要注意的一點(diǎn)是,在優(yōu)化過(guò)程中并不需要知道每個(gè)粒子在性能最優(yōu)處的精確值,而是只需要知道哪個(gè)參數(shù)值優(yōu)于其他參數(shù),即其位置為該粒子在性能表現(xiàn)下的最優(yōu)解[11]。因此,本文提出了兩種改進(jìn)方法來(lái)對(duì)優(yōu)化效率進(jìn)行提升,在保持CNN 識(shí)別性能的情況下降低參數(shù)優(yōu)化的epoch 次數(shù),從而縮短訓(xùn)練耗時(shí)。
基于排序相關(guān)性的方法:訓(xùn)練過(guò)程中,參數(shù)的收斂速度取決于數(shù)據(jù)集的大小和質(zhì)量。 即,一旦確定了數(shù)據(jù)集,就可以推算出需要多少次重復(fù)訓(xùn)練得出足夠好的神經(jīng)網(wǎng)絡(luò)模型[12]。 如上所述,本文首先對(duì)CNN 網(wǎng)絡(luò)進(jìn)行多個(gè)回合的訓(xùn)練,然后依據(jù)其展現(xiàn)出來(lái)的識(shí)別性能對(duì)粒子群進(jìn)行排序,最后根據(jù)粒子的排序結(jié)果計(jì)算粒子的斯皮爾曼相關(guān)系數(shù),其計(jì)算公式如下:

基于相關(guān)系數(shù)可得到預(yù)定的epoch 數(shù)閾值E,即可作為使用PSO 算法對(duì)CNN 優(yōu)化的訓(xùn)練回合次數(shù)值。
基于波動(dòng)率的方法:盡管基于排序相關(guān)性的方法得到的結(jié)果是比較可信的,但這個(gè)過(guò)程依舊需要對(duì)CNN 進(jìn)行大量的重復(fù)訓(xùn)練,這將耗費(fèi)大量運(yùn)行資源。因此,本文提出了另一種方法,即基于波動(dòng)率的方法[13]。在訓(xùn)練的早期階段,由于反向傳播的隨機(jī)性,網(wǎng)絡(luò)模型表現(xiàn)的準(zhǔn)確性不太穩(wěn)定。但隨著訓(xùn)練的進(jìn)行,對(duì)數(shù)據(jù)集訓(xùn)練的回合數(shù)逐漸增加,網(wǎng)絡(luò)模型表現(xiàn)出來(lái)的識(shí)別準(zhǔn)確度也更加穩(wěn)定,趨向于顯示其自身固有的性能。因此,本文可以通過(guò)波動(dòng)來(lái)表達(dá)網(wǎng)絡(luò)模型的穩(wěn)定程度:

其中

這里,accuracyk[ ]k 是第k 階段的第i 個(gè)粒子的分類(lèi)精度。當(dāng)CV 保持不變時(shí),意味著網(wǎng)絡(luò)模型的準(zhǔn)確性變得穩(wěn)定,從而能夠依此比較網(wǎng)絡(luò)模型在各個(gè)回合數(shù)下的性能差異。因此,在波動(dòng)率保持穩(wěn)定時(shí)即可比較分析得出粒子的最優(yōu)解,該方法不需要通過(guò)獲得最終分類(lèi)結(jié)果來(lái)推斷最優(yōu)解,其計(jì)算成本也相對(duì)降低了很多。
本文采用的數(shù)據(jù)集有CIFAR10,CIFAR100 以及可分別劃分為10 類(lèi)、20 類(lèi)和50 類(lèi)的ImageNet 數(shù)據(jù)集。表1 匯總了各個(gè)數(shù)據(jù)集中用于訓(xùn)練和測(cè)試的圖像數(shù)量。本文將使用Alexnet 網(wǎng)絡(luò)模型[14~15]并結(jié)合PSO 算法進(jìn)行參數(shù)優(yōu)化來(lái)對(duì)數(shù)據(jù)集進(jìn)行分類(lèi)測(cè)試。實(shí)驗(yàn)通過(guò)將標(biāo)準(zhǔn)Alexnet 模型作為基礎(chǔ)模型,用以評(píng)估本文提出的幾種優(yōu)化方法的分類(lèi)準(zhǔn)確度的提高程度。

表1 用于實(shí)驗(yàn)的數(shù)據(jù)集的數(shù)據(jù)量
在訓(xùn)練階段需要優(yōu)化的參數(shù)由表2 顯示,其參數(shù)設(shè)定大約有3.6×1020種可能性。因此,即使對(duì)于標(biāo)準(zhǔn)的Alexnet 模型配置,也不能進(jìn)行簡(jiǎn)單直接的搜索。本實(shí)驗(yàn)中PSO 算法的超參數(shù)設(shè)置為cr1=cr2=1.494,ω=0.792。

表2 待優(yōu)化參數(shù)及其范圍
本文對(duì)PSO 算法基于排序相關(guān)性和基于波動(dòng)率的兩種改進(jìn)方法所優(yōu)化的CNN 模型,其改進(jìn)效果如圖2 所示。由圖中可以觀察到,當(dāng)排序相關(guān)性超過(guò)0.8時(shí),波動(dòng)率也會(huì)逐漸穩(wěn)定下來(lái),兩者都能夠有效地反應(yīng)訓(xùn)練回合次數(shù)對(duì)模型識(shí)別性能的影響情況。但基于波動(dòng)率的方法不需要通過(guò)實(shí)現(xiàn)對(duì)數(shù)據(jù)集大量的重復(fù)訓(xùn)練來(lái)進(jìn)行對(duì)比,相較而言,更適合神經(jīng)網(wǎng)絡(luò)的優(yōu)化改進(jìn)。根據(jù)圖2 顯示,后續(xù)的實(shí)驗(yàn)將對(duì)CIFAR10 數(shù)據(jù)集的重復(fù)訓(xùn)練回合數(shù)設(shè)置為5,CIFAR100數(shù)據(jù)集的訓(xùn)練回合數(shù)設(shè)為10。通過(guò)對(duì)訓(xùn)練回合數(shù)的有效限制,使用改進(jìn)后的PSO算法優(yōu)化的計(jì)算負(fù)荷相較于原始PSO算法能降低很多。
實(shí)驗(yàn)通過(guò)本文所提出的基于PSO 算法對(duì)參數(shù)優(yōu)化的CNN 模型的分類(lèi)準(zhǔn)確率與迭代次數(shù)的相關(guān)性由圖3 所示。此模型種需要優(yōu)化的參數(shù)數(shù)量為21 個(gè)??紤]到訓(xùn)練時(shí)的運(yùn)行成本問(wèn)題,設(shè)定每個(gè)參數(shù)的初始粒子數(shù)為15個(gè),迭代次數(shù)為0 ~60。圖3 中的“最佳”和“平均”分別對(duì)應(yīng)于15 個(gè)粒子中的最佳和平均性能。由圖3可以觀察到,Alexnet網(wǎng)絡(luò)模型對(duì)圖像的識(shí)別性能隨著迭代次數(shù)的增加也變得越來(lái)越優(yōu)秀。但在此值得注意的是,由于初始粒子的隨機(jī)性,PSO 算法只能使網(wǎng)絡(luò)模型盡可能接近性能最優(yōu)的情況,并不能保證找到的就是全局最佳參數(shù)。

圖2 波動(dòng)率和排名相關(guān)系數(shù)變化圖
在表3 中,給出了通過(guò)使用PSO 算法進(jìn)行參數(shù)優(yōu)化的Alexnet 模型和標(biāo)準(zhǔn)的Alexnet 模型的圖像分類(lèi)性能比較。在多種不同的數(shù)據(jù)集測(cè)試情況下,使用PSO 算法進(jìn)行優(yōu)化后的網(wǎng)絡(luò)模型的分類(lèi)準(zhǔn)確度都得到了不同程度的提高,而這只比以前常用的BP 訓(xùn)練方法多花費(fèi)了2%~4%的處理成本。同時(shí)這也說(shuō)明了,因?yàn)镻SO算法本質(zhì)上是一個(gè)基于隨機(jī)分配的優(yōu)化過(guò)程,所以并沒(méi)有哪種數(shù)據(jù)集一定是最好的,只是在大量的訓(xùn)練中找到相對(duì)貼近模型本質(zhì)效果的訓(xùn)練結(jié)果。此外,隨著PSO算法對(duì)參數(shù)的進(jìn)一步重復(fù)訓(xùn)練,模型的識(shí)別性能也可能會(huì)不斷提高。

圖3 各數(shù)據(jù)集在不同迭代下的識(shí)別性能

表3 PSO-Alexnet與標(biāo)準(zhǔn)Alexnet的性能比較
本文針對(duì)卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中容易因?yàn)閰?shù)量大陷入局部最小值的問(wèn)題,提出了一種通過(guò)粒子群優(yōu)化算法對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)優(yōu)化的方法。在設(shè)計(jì)過(guò)程中,本文還討論了如何通過(guò)有效裁剪數(shù)據(jù)集和控制訓(xùn)練迭代次數(shù)在保證足夠優(yōu)秀的識(shí)別性能的情況下盡可能降低計(jì)算負(fù)荷。本文通過(guò)實(shí)驗(yàn)證明了,使用PSO 算法進(jìn)行優(yōu)化的Alexnet 模型在圖像識(shí)別準(zhǔn)確率上要比傳統(tǒng)訓(xùn)練方法得到的模型提高了1.3% ~5.7%。同時(shí),本文所提出方法并沒(méi)有針對(duì)Alexnet網(wǎng)絡(luò)模型中特有的結(jié)構(gòu)進(jìn)行特殊處理,所以該方法是通用的,可以應(yīng)用到大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)中。