高新成,李 強(qiáng),王莉利,杜功鑫,柯 璇
(1.東北石油大學(xué) 現(xiàn)代教育技術(shù)中心,黑龍江 大慶 163318; 2.東北石油大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163318; 3.東北石油大學(xué) 地球科學(xué)學(xué)院,黑龍江 大慶 163318)
深度學(xué)習(xí)[1]是一種能夠?qū)W習(xí)層次化特征表達(dá)的表示學(xué)習(xí)方法,通過(guò)無(wú)監(jiān)督或有監(jiān)督的方式,表現(xiàn)出高效強(qiáng)大的分類能力和特征學(xué)習(xí)能力。作為近幾十年來(lái)的研究熱點(diǎn),許多深度學(xué)習(xí)模型相繼被研究開(kāi)發(fā)出來(lái),包括自編碼器模型[2]、受限波爾茲曼機(jī)模型[3]、深度信念網(wǎng)絡(luò)模型[4]、卷積神經(jīng)網(wǎng)絡(luò)模型(Convolutional Neural Networks,CNN)[5]等。CNN作為近年來(lái)深度學(xué)習(xí)的主導(dǎo)技術(shù),在圖像識(shí)別任務(wù)中取得了顯著的成績(jī),并且還在人臉檢測(cè)[6]、語(yǔ)音識(shí)別[7]、表情識(shí)別[8]、情態(tài)意識(shí)識(shí)別[9]、性別識(shí)別[10]等現(xiàn)實(shí)計(jì)算機(jī)視覺(jué)應(yīng)用中表現(xiàn)優(yōu)異。CNN的性能高度依賴于其網(wǎng)絡(luò)模型結(jié)構(gòu)的設(shè)計(jì)[11],自LeNet-5[12]被提出以來(lái),人們研究出了CNN的各種改進(jìn)模型,包括AlexNet[13]、VGGNet[14]、GoogleNet[15]、ResNet[16]、DenseNet[17]等,每一種都有不同的網(wǎng)絡(luò)結(jié)構(gòu),并在圖像分類任務(wù)中顯著提高了分類準(zhǔn)確性。然而,開(kāi)發(fā)研究這樣的網(wǎng)絡(luò)結(jié)構(gòu)并設(shè)置一些重要的參數(shù),需要對(duì)CNN有深入的研究,并且針對(duì)所要解決的問(wèn)題有豐富的經(jīng)驗(yàn)知識(shí)[18]。
為了突破CNN結(jié)構(gòu)設(shè)計(jì)和參數(shù)設(shè)置過(guò)度依賴經(jīng)驗(yàn)知識(shí)的局限性,許多專家學(xué)者針對(duì)進(jìn)化計(jì)算方法在神經(jīng)網(wǎng)絡(luò)上的應(yīng)用展開(kāi)了一系列研究。Esfahanian等人[19]采用了三種獨(dú)立的遺傳進(jìn)化方案進(jìn)行對(duì)比試驗(yàn),驗(yàn)證了遺傳算法優(yōu)化CNN的可行性。Luo等人[20]提出了基于特征提取和遺傳算法增強(qiáng)的自適應(yīng)深度神經(jīng)網(wǎng)絡(luò),并將其成功應(yīng)用于實(shí)際辦公建筑的能源測(cè)量中。Sun等人[21]利用遺傳算法自動(dòng)設(shè)計(jì)CNN結(jié)構(gòu),取得了比人工設(shè)計(jì)CNN更好的圖像分類準(zhǔn)確性。席亮等人[22]提出自適應(yīng)遺傳算法并用于BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化,提高了網(wǎng)絡(luò)模型的收斂性。
基于以上研究,通過(guò)改進(jìn)遺傳算法求解問(wèn)題的過(guò)程,分析CNN結(jié)構(gòu)和參數(shù)對(duì)分類精度的影響,該文提出了基于改進(jìn)遺傳算法(Genetic Algorithm,GA)的自適應(yīng)卷積神經(jīng)網(wǎng)絡(luò)算法(GA-CNN)。CNN結(jié)構(gòu)經(jīng)過(guò)選擇、交叉和變異一系列進(jìn)化過(guò)程后,使網(wǎng)絡(luò)調(diào)優(yōu)過(guò)程自動(dòng)化,特征參數(shù)得到充分有效的訓(xùn)練,最終確定最優(yōu)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),提高了分類準(zhǔn)確性,并且通過(guò)MNIST、Fashion-MNIST、CIFAR-10數(shù)據(jù)集驗(yàn)證了該算法的有效性和可行性。
CNN是一種被設(shè)計(jì)用來(lái)識(shí)別二維圖像的特殊多層感知器模型,在整體架構(gòu)上多采用固定的構(gòu)建模式,將卷積層和池化層作為特征提取器完成圖片不同層次語(yǔ)義的提取,通過(guò)全連接層完成分類,再依靠數(shù)據(jù)樣本的訓(xùn)練不斷擬合調(diào)整網(wǎng)絡(luò)參數(shù)。但對(duì)于當(dāng)前的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),大多數(shù)都需要具有豐富領(lǐng)域知識(shí)的相關(guān)研究人員來(lái)完成,針對(duì)不同的圖像分類任務(wù),無(wú)法自適應(yīng)地調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)分類性能的顯著差異。
該文將卷積神經(jīng)網(wǎng)絡(luò)初始結(jié)構(gòu)設(shè)計(jì)為頭模塊和尾模塊。頭模塊包括兩層卷積層和一層池化層,完成基本的特征提取功能。尾模塊主要由全連接層以及防止過(guò)擬合的網(wǎng)絡(luò)層組成,如Dropout層、Flatten層和BatchNormalization層。
利用改進(jìn)遺傳算法對(duì)卷積神經(jīng)網(wǎng)絡(luò)初始結(jié)構(gòu)進(jìn)行優(yōu)化,逐步自適應(yīng)調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),在自適應(yīng)模塊中進(jìn)行變異操作,確定整個(gè)網(wǎng)絡(luò)中的網(wǎng)絡(luò)層及其參數(shù),最終得到一個(gè)最優(yōu)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
傳統(tǒng)遺傳算法是一種具有自適應(yīng)能力的啟發(fā)式搜索算法,主要模擬了自然環(huán)境中自然選擇、遺傳進(jìn)化的思想,具有充足可靠的理論依據(jù)和良好的全局搜索能力。因此,該文通過(guò)構(gòu)建合理的適應(yīng)度函數(shù),改進(jìn)選擇、交叉和變異策略,以提高最優(yōu)解的質(zhì)量。
1.2.1 編碼和適應(yīng)度函數(shù)選擇
該文采用可變長(zhǎng)編碼策略,直接將整個(gè)卷積神經(jīng)網(wǎng)絡(luò)編碼成一條染色體,在具有多目標(biāo)參數(shù)、大規(guī)模、復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化的過(guò)程中,能充分發(fā)揮算法效率,減少計(jì)算復(fù)雜性,簡(jiǎn)化編碼操作。
適應(yīng)度函數(shù)對(duì)于評(píng)價(jià)個(gè)體優(yōu)劣,驅(qū)動(dòng)遺傳算法尋找最優(yōu)解發(fā)揮著重要作用。該文注重于自動(dòng)調(diào)整卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)來(lái)解決圖像分類問(wèn)題,因此將分類誤差L和網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜度C作為評(píng)價(jià)適應(yīng)度值的依據(jù)。分類交叉熵?fù)p失函數(shù)L的計(jì)算方式如下:
(1)
網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜度C表示如下:
C=Δp/p
(2)
式中,Δp為自動(dòng)調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)過(guò)程中增加的參數(shù)量,p為初始網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)量。
適應(yīng)度函數(shù)表示如下:
Fitness=1/(αL+βC)
(3)
式中,α和β取值范圍為(0,1)區(qū)間,分別表示分類誤差和網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜度所占的權(quán)重。適應(yīng)度值越大,表示卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和分類效果越好。
1.2.2 選擇策略改進(jìn)
遺傳算法的尋優(yōu)過(guò)程是一個(gè)隨機(jī)過(guò)程,在隨機(jī)搜索中保存最優(yōu)的解,通過(guò)不斷迭代逼近函數(shù)的最優(yōu)解。其中,后代選擇策略是影響遺傳算法尋優(yōu)的關(guān)鍵因素。比例選擇和最優(yōu)保存策略是目前被廣泛采用的一種選擇策略[23],但單獨(dú)使用這種策略也有一定的缺陷。一方面,若群體個(gè)體數(shù)量很少,比例選擇生成的隨機(jī)數(shù)將不能很好地反映當(dāng)前個(gè)體的適應(yīng)度值,會(huì)產(chǎn)生一定的誤差。另一方面,最優(yōu)保存根據(jù)適應(yīng)度值尋找最優(yōu)的染色體進(jìn)行交叉變異,容易導(dǎo)致局部收斂,并且不利于改善種群多樣性。
為了提高種群的多樣性和最終種群的平均適應(yīng)度值,該文將比賽選擇、期望值選擇、比例選擇以及最優(yōu)保存策略進(jìn)行結(jié)合。算法進(jìn)行選擇操作時(shí),利用概率隨機(jī)選擇一種方式,避免單一選擇方式使搜索空間陷入局部極小值。
1.2.3 交叉策略改進(jìn)
該算法是對(duì)卷積神經(jīng)結(jié)構(gòu)進(jìn)行編碼操作,在最佳網(wǎng)絡(luò)結(jié)構(gòu)深度未知的情況下,進(jìn)行交叉操作的個(gè)體染色體長(zhǎng)度不一定相同,因此采用可變長(zhǎng)兩點(diǎn)交叉操作。兩點(diǎn)交叉方式操作較簡(jiǎn)單,并且不會(huì)破壞卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的局部完整性。通過(guò)對(duì)個(gè)體進(jìn)行可變長(zhǎng)兩點(diǎn)交叉操作后,得到不同長(zhǎng)度的個(gè)體,即不同深度的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)而提高搜索空間的多解性。
1.2.4 變異策略改進(jìn)
變異算子主要通過(guò)模仿生物界遺傳進(jìn)化中的變異思想,對(duì)個(gè)體的某一部分進(jìn)行改變,防止算法出現(xiàn)早熟,提高群體多樣性以及局部搜索能力。該文提出層變異和變異概率自適應(yīng)[24]的參數(shù)變異兩種方式。首先通過(guò)層變異調(diào)整卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),增強(qiáng)初始進(jìn)化時(shí)的算法全局尋優(yōu)能力,加快進(jìn)化速度。再通過(guò)變異概率自適應(yīng)的參數(shù)變異對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行調(diào)整,以盡量有效保存種群的優(yōu)良個(gè)體。
GA-CNN算法的本質(zhì)是在初始CNN的頭模塊和尾模塊之間增加自適應(yīng)模塊,通過(guò)適應(yīng)度函數(shù)對(duì)分類結(jié)果精度和網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行評(píng)價(jià),利用遺傳算法中改進(jìn)的遺傳操作,結(jié)合層變異和參數(shù)變異不斷調(diào)整網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù),提高特征提取的精度。
自適應(yīng)模塊的設(shè)計(jì)主要通過(guò)層變異和參數(shù)變異對(duì)網(wǎng)絡(luò)進(jìn)行調(diào)整。層變異主要對(duì)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整,通過(guò)在個(gè)體S的編碼中選擇自適應(yīng)模塊,對(duì)其進(jìn)行添加層、移除層和對(duì)修改選擇層操作。層變異的實(shí)現(xiàn)方式如算法1所示。
算法1:層變異
輸入:個(gè)體S
輸出:變異后的個(gè)體S’
從個(gè)體S的編碼中選擇自適應(yīng)模塊A;
隨機(jī)選擇一種層操作方式;
如果執(zhí)行層添加操作:
(1)向塊A中添加卷積層;
(2)向塊A中添加池化層;
如果執(zhí)行層修改操作(從塊A中按概率隨機(jī)選擇層f):
如果隨機(jī)選擇層f是卷積層:
復(fù)制f得到f’,將f’中的特征映射數(shù)量減半,并置于后面;
如果隨機(jī)選擇層f是池化層:
建立步長(zhǎng)為2的新卷積層f’替換f;
如果執(zhí)行層刪除操作:
從塊A中隨機(jī)移除一層網(wǎng)絡(luò)層;
對(duì)選擇層進(jìn)行修改操作,分為以下兩種情況:
(1)如果選擇層為卷積層,則將其特征映射數(shù)量減半,然后進(jìn)行復(fù)制,并放到該層后面;
(2)如果選擇層為池化層,則將其替換為一個(gè)步長(zhǎng)為2的卷積層,完成池化層下采樣的作用;用步長(zhǎng)為2的卷積層替代尺寸2×2的池化層,可以更好地提取圖像特征[25],不會(huì)損失卷積神經(jīng)網(wǎng)絡(luò)的分類效果。算法按概率進(jìn)行層修改操作,在迭代后期網(wǎng)絡(luò)中仍可能保留池化層。
參數(shù)變異可作用于網(wǎng)絡(luò)層(包括頭模塊、自適應(yīng)模塊和尾模塊)中的所有參數(shù)。參數(shù)變異概率可以隨適應(yīng)度進(jìn)行一定的調(diào)整,有助于在迭代后期保存優(yōu)良個(gè)體。自適應(yīng)參數(shù)變異對(duì)于不同類型網(wǎng)絡(luò)層中的參數(shù),表達(dá)效果不同,主要分為以下四種情況:
(1)卷積層參數(shù)變異:對(duì)卷積層中的特征映射數(shù)量擴(kuò)大2倍或減半,改變填充類型(SAME或VALID);
(2)池化層參數(shù)變異:改變池化方式(最大池化或平均池化)以及填充類型(SAME或VALID);
(3)Dropout層參數(shù)變異:對(duì)于其參數(shù)rate值的大小增大或減小0.1;
(4)全連接層參數(shù)變異:將神經(jīng)元數(shù)量擴(kuò)大2倍或減半。
卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建和調(diào)優(yōu)過(guò)程類似黑盒測(cè)試[26],需要根據(jù)網(wǎng)絡(luò)訓(xùn)練的最終結(jié)果,憑借人為經(jīng)驗(yàn)對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行調(diào)參,嚴(yán)重影響網(wǎng)絡(luò)的精度和效率。為此,該文提出GA-CNN算法,改進(jìn)遺傳算法的進(jìn)化操作,自動(dòng)調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù),通過(guò)全局尋優(yōu)能力搜索卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)空間中的最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)。遺傳算法優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的算法步驟如下:
Step1:建立多個(gè)基本卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并初始化卷積神經(jīng)網(wǎng)絡(luò)中各層連接方式以及對(duì)應(yīng)的參數(shù);
Step2:將各個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)編碼為染色體,確定種群個(gè)體;
Step3:初始化種群,使用數(shù)據(jù)集訓(xùn)練各個(gè)神經(jīng)網(wǎng)絡(luò),根據(jù)適應(yīng)度函數(shù)計(jì)算各卷積神經(jīng)網(wǎng)絡(luò)的適應(yīng)度值;
Step4:判斷遺傳代數(shù)和個(gè)體適應(yīng)度是否達(dá)到算法停止條件,若達(dá)到算法停止條件,則執(zhí)行Step5;否則返回Step3,并對(duì)種群繼續(xù)進(jìn)行遺傳算法進(jìn)化操作,獲得子卷積神經(jīng)網(wǎng)絡(luò)群體;
Step5:獲取最優(yōu)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以及訓(xùn)練分類的結(jié)果。
實(shí)驗(yàn)選用Intel Xeon Sliver 4210 CPU 2.20 GHz處理器,GeForce RTX 2080顯卡,顯存容量為8 GB,操作系統(tǒng)為Ubuntu 18.04,采用Tensorflow2.1.0開(kāi)源框架,Python3.6解釋器。
在MNIST、Fashion-Mnist、CIFAR-10數(shù)據(jù)集上對(duì)GA-CNN算法性能進(jìn)行評(píng)估。由于CIFAR-10數(shù)據(jù)集包含現(xiàn)實(shí)世界中的真實(shí)物體,數(shù)據(jù)噪聲大并且特征識(shí)別困難,因此實(shí)驗(yàn)以CIFAR-10數(shù)據(jù)集為例具體展開(kāi)研究。
遺傳算法的有效性取決于參數(shù)的選擇(如種群大小和后代數(shù)量)。在所提出的算法中,實(shí)驗(yàn)參數(shù)的選擇充分考慮了最優(yōu)解的質(zhì)量、可用的計(jì)算資源以及數(shù)據(jù)集大小,在算法尋優(yōu)結(jié)果達(dá)到要求的情況下,盡可能保證算法效率。算法實(shí)驗(yàn)中的參數(shù)設(shè)置如表1所示。
表1 實(shí)驗(yàn)中的參數(shù)設(shè)置
實(shí)驗(yàn)所用的基礎(chǔ)卷積神經(jīng)結(jié)構(gòu)參考了AlexNet和VGGNet兩種網(wǎng)絡(luò)結(jié)構(gòu),在尾模塊中預(yù)添加了Dropout層、Flatten層和BatchNormalization層來(lái)防止卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在優(yōu)化過(guò)程中出現(xiàn)的過(guò)擬合問(wèn)題。實(shí)驗(yàn)使用Relu激活函數(shù)減少計(jì)算量,并在所有卷積層中使用大小3×3 filter尺寸,使用大小為2×2 kernel尺寸的池化層,保持網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)潔的同時(shí)增加網(wǎng)絡(luò)的特征學(xué)習(xí)能力以提升網(wǎng)絡(luò)模型的分類精度。
由于AlexNet和VGGNet10的網(wǎng)絡(luò)深度與GA-CNN相差較小,因此該文使用GA-CNN與AlexNet和VGGNet10進(jìn)行實(shí)驗(yàn)。所有網(wǎng)絡(luò)均采用CIAFAR-10數(shù)據(jù)集訓(xùn)練,得到訓(xùn)練集損失值、驗(yàn)證集損失值、訓(xùn)練集精確度以及驗(yàn)證集精確度四個(gè)曲線的實(shí)驗(yàn)結(jié)果。
圖1為GA-CNN和AlexNet、VGGNet10訓(xùn)練CIFAR-10的實(shí)驗(yàn)效果對(duì)比。在訓(xùn)練集上的對(duì)比結(jié)果如圖1(a)和圖1(c)所示,通過(guò)損失值和精確度曲線可以看出,GA-CNN在迭代10次后損失值和精確度值開(kāi)始趨于穩(wěn)定,并且訓(xùn)練速度比AlexNet和VGGNet10更快,取得了良好的訓(xùn)練效果。圖1(b)和圖1(d)為神經(jīng)網(wǎng)絡(luò)在驗(yàn)證集上的表現(xiàn),通過(guò)損失值曲線可以看出,AlexNet和VGGNet10收斂效果較差,并呈現(xiàn)出過(guò)擬合趨勢(shì)。在驗(yàn)證集精確度上,GA-CNN表現(xiàn)出更優(yōu)秀的特征提取能力,精確度達(dá)到了87.6%,分別比AlexNet和VGGNet10提高了13%和5%左右。
圖1 GA-CNN和VGGNet10、AlexNet的實(shí)驗(yàn)效果對(duì)比
綜上所述,通過(guò)GA-CNN和傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的進(jìn)行實(shí)驗(yàn)對(duì)比,該算法構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)取得了比人工構(gòu)建神經(jīng)網(wǎng)絡(luò)更好的效果。由表2可以看出,在網(wǎng)絡(luò)深度相似的情況下,GA-CNN的抗噪能力和特征提取能力更強(qiáng),并且在訓(xùn)練速度和分類精度上優(yōu)于手動(dòng)調(diào)參的神經(jīng)網(wǎng)絡(luò),證明了該算法在解決不同復(fù)雜度的分類問(wèn)題時(shí)仍具有良好的性能。
表2 3種神經(jīng)網(wǎng)絡(luò)的精確度對(duì)比 %
該文提出了一種利用改進(jìn)遺傳算法構(gòu)建自適應(yīng)卷積神經(jīng)網(wǎng)絡(luò)的算法,針對(duì)遺傳算法中的選擇、交叉和變異策略等進(jìn)行了改進(jìn),并利用算法不斷自動(dòng)調(diào)整網(wǎng)絡(luò)中的卷積層和池化層數(shù)量,優(yōu)化網(wǎng)絡(luò)層中的參數(shù),最終得到最優(yōu)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。通過(guò)在MNIST、Fashion-MNIST和CIFAR-10數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),驗(yàn)證了改進(jìn)遺傳算法優(yōu)化得到的卷積神經(jīng)網(wǎng)絡(luò)分類精度更高。此外,該算法具有較強(qiáng)的靈活性,針對(duì)不同的問(wèn)題和不同的數(shù)據(jù)集均可適用,避免了對(duì)神經(jīng)網(wǎng)絡(luò)反復(fù)調(diào)參的過(guò)程。
然而,當(dāng)利用遺傳算法優(yōu)化非常復(fù)雜和更深層次的卷積神經(jīng)網(wǎng)絡(luò)時(shí),會(huì)偶爾發(fā)生梯度消失的情況,因此在下一步的研究中,考慮加入跳層連接,增加網(wǎng)絡(luò)模型的深度,進(jìn)一步提高網(wǎng)絡(luò)模型的擬合能力和精確度。