999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于增強引力搜索和神經網絡的圖像分類

2020-12-28 06:38:10侯小毛趙月愛
計算機工程與設計 2020年12期
關鍵詞:分類

侯小毛,馬 凌,趙月愛

(1.湖南信息學院 電子信息學院,湖南 長沙 410151;2.太原師范學院 計算機系,山西 晉中 030619)

0 引 言

深度神經網絡是一種多層的非線性映射深層網絡結構,能夠完成復雜的非線性函數逼近[1]。在許多工程領域中,深度學習技術的實際性能超越了傳統的機器學習技術[2]。深度神經網絡(deep neural networks, DNN)主要有前饋神經網絡和遞歸神經網絡兩種結構,前饋神經網絡[3]通過逐層學習獲取輸入數據的主要驅動變量,該結構對分類問題和目標檢測問題的性能較好;遞歸神經網絡[4]的每層均含有反饋回路,能夠學習時間無關的數據,如自然語言理解。雖然深度神經網絡具有巨大的性能優勢,但是深度神經網絡含有許多結構參數,針對特定的應用場景確定合適的網絡模型是一個難題。

通過試錯法搜索深度神經網絡的參數需要消耗大量的時間[5],因此快速準確地搜索深度神經網絡的參數成為目前的一個研究熱點。進化神經網絡(evolutionary neural networks, ENN)[6]是將進化計算和神經網絡兩者融合產生的一種全新神經網絡模型,ENN能夠成功實現神經網絡的權重進化處理,但其計算時間較長。拓撲加權進化神經網絡(topology and weight evolving artificial neural network, TWEANN)[7]支持對網絡結構和權重參數同時進行進化處理,該網絡一般包含兩個循環體:測試新網絡結構的結果搜索程序和優化權重的結構開發程序。ENN和TWEANN優化深度神經網絡的過程均需要較長的處理時間。近期文獻[8,9]在保證深度神經網絡性能的前提下,成功降低了網絡參數的搜索時間。evoCNN[8]使用遺傳算法搜索卷積神經網絡(convolutional neural networks, CNN)的網絡結構,該算法設計了新的交叉算子和變異算子,加快了參數搜索的過程。EUDNN[9]使用一個基礎向量編碼神經網絡的權重和連接,在每次迭代中需要對編碼進行多次轉化,導致該算法對于高維數據的處理速度依然較慢。

文獻[10]的研究成果表明,采用粒子群優化算法(particle swarm optimization, PSO)訓練ANN的速度快于遺傳算法,而引力搜索算法(gravitational search algorithm, GSA)的收斂速度優于PSO[11],受此啟發,本文利用GSA訓練CNN網絡。GSA具有收斂速度快的優勢,但是容易陷入局部最優,因此本文設計了GSA的增強機制,采用對數衰減函數建模引力常量,并且設計了交叉算子和變異算子防止陷入局部極值。此外,解的編碼格式對于訓練的效率具有極大的影響,本文設計了直接的深度神經網絡表示形式,并且給出了agent各個屬性的更新方法。最終將訓練的深度卷積神經網絡應用于圖像分類問題,實驗結果表明本文方法在實現較高分類精度的情況下,成功加快了深度神經網絡的訓練速度。

1 問題模型和相關知識

1.1 卷積神經網絡

CNN的數學模型定義為

(1)

式中:i為神經網絡的深度,X為輸入數據,fi()為第i層的激活函數,gi()為第i層的加權算子,Zi為第i層加權運算的結果,Wi為第i層的權重向量,Oi為第i層的輸出。深度神經網絡主要有3種網絡層:卷積層、池化層和全連接層,3種網絡層的輸出為

(2)

卷積層的輸出是輸入和權重卷積(“*”)運算的結果,卷積層一般由卷積核或者卷積濾波器實現。池化層包括最大池化和平均池化兩種類型,對r×c的池化窗口做下采樣處理,減少輸出參數。全連接層的輸出為權重向量和輸入相乘的結果。

訓練神經網絡的目標是最小化訓練目標和網絡預測輸出之間的誤差。卷積神經網絡大多采用交叉熵損失作為評價指標,使用梯度下降法和后向傳播法對交叉熵損失進行最小化處理。CNN存在大量的結構參數,通過試錯法確定CNN結構需要極高的時間成本。

1.2 引力搜索算法

假設一個n維的搜索空間內包含N個agent,第i個解的位置表示為向量Xi

(3)

式中:i=1,2,…,N,每個向量的值表示agenti在該維度的位置。agenti的質量和適應度之間滿足以下的關系

(4)

式中:Mi(t)和fiti(t)分別為第t次迭代agenti的質量和適應度,Agwor(t)表示第t次迭代適應度最低的agent。

GSA根據當前位置和下一次迭代的速度計算agent下一次迭代的位置,計算方法為

Xi(t+1)=Xi(t)+vi(t+1)

(5)

式中:下一次迭代的速度計算為

vi(t+1)=r×vi(t)+ai(t)

(6)

式中:r是(0,1)范圍內的一個隨機變量。agenti的加速度計算為agenti所受的總引力除以其質量

(7)

式中:q為(0,1)范圍內的隨機變量,Fij(t)表示在第t次迭代agentj對agenti的引力。Fij計算為

(8)

式中:G為引力常量,R為agentj和agenti間的距離。G一般設為衰減函數,其初值記為G(G0,t)。算法1所示是GSA的偽代碼。

算法1:GSA優化算法

輸入:Tser[],d,τ,h

輸出:Tpdf[]

(1)初始化候選目標Xi(i=1,2,…,N)

(2)while 未達到結束條件 do

(3) 計算所有目標的適應度

(4) 計算最優解目標Mi和最差目標Mj

(5) 更新重引力因子G(t)

(6) 計算引力Fij; //式(8)

(7) 更新加速度; //式(7)

(8) 更新速度; //式(6)

(9) 更新位置; //式(5)

(10)endwhile

1.3 增強的GSA算法

為增強GSA的局部開發能力和全局搜索能力,本文對GSA提出3點修改:①采用對數衰減函數代替GSA引力常量的線性遞減函數。②設計了交叉算子強化GSA的全局搜索能力。③設計了變異算子防止GSA收斂于局部極值。

(1)加速收斂過程

GSA中引力常量G的作用是權衡全局搜索和局部開發,式(9)是GSA的G值線性變化函數

(9)

開始階段G值較大,agent以較大的步長移動,在迭代過程中逐漸縮小agent的移動步長。迭代次數越多,agent的質量增加,搜索速度變慢,該性質對GSA的收斂速度具有負面的影響。為了解決該問題,采用對數衰減函數

(10)

式中:G0為初始化的引力常量,Gmin和Gmax分別為引力常量的最小值和最大值,ΔG=Gmax-Gmin,a為加速度,t為當前的迭代次數,T為總迭代次數。

(2)交叉算子設計

GSA利用目標質量控制搜索的趨勢,質量大的agent慢于質量小的agent,優質解的移動慢于劣質解,所以低適應度agent搜索未知區域的能力更強。為了提高GSA對未知區域的搜索能力,引入交叉算子來產生新解,增強GSA的全局搜索能力。

首先,為GSA設立一個全局最優agent,記為gopt,gopt類似于灰狼優化算法的頭狼α。每次迭代按適應度值將agent降序排列,將后一半(N/2)的所有agent均和gopt進行交叉操作,產生N/2個新解,種群規模變為N+N/2。然后從(N+N/2)個解中選擇N個最優解作為下一次迭代的種群。交叉算子能夠增強GSA算法的搜索能力,降低早熟收斂的概率,交叉算子的流程如圖1所示,圖中虛線框是本文主要修改的模塊。

圖1 交叉算子的流程

(3)變異算子設計

本文GSA算法記錄每個最優解的迭代次數,檢查是否陷入局部最優。本文設計了變異算子使gopt跳出局部最優,變異算子的流程如圖2所示。變異算子生成一個新的變異解,變異算子對變異agent的處理方式分為3種情況:如果它的適應度超過gopt,那么變異agent變為當前的gopt。每次迭代將種群按照agent的適應度升序排列,X(1)為最優解,X(N)為最差解。變異算子有助于GSA跳出局部極值點,防止陷入早熟收斂。

圖2 變異算子的流程

2 本文算法設計

算法2是本文GSA_DNN的總程序,算法的輸入數據包括:訓練數據集和CNN的結構參數。GSA_DNN將GSA的全局最優解作為CNN的結構參數,是一種自動參數優化算法。訓練程序的網絡參數并未重新初始化,而是將優質的參數集由全局最優agent傳遞至下一次迭代中。GSA_DNN包含6個關鍵的模塊:CNN的表示、種群初始化、適應度評價函數、兩個agent間的差異度量、計算agent的速度和更新agent的位置。

算法2:GSA_DNN算法

輸出:CNN的最優網絡結構。

(1)S={P1,…,PN}=initswarm(N,lmax,kmax,nmax,nout);

(2)P1_popt=P1;

(3)P1_loss=computeloss(P1,X,etrain);

(4)P1_popt_loss=computeloss(P1,X,etrain);

(5)gopt=P1; //初始化全局最優解

(6)gopt_loss=P1_loss;

(7)fori=2 toNdo

“您所撥打的手機實名登記機主已被人民法院發布為失信被執行人,請督促其盡快履行生效法律文書確定的義務。”最近,只要有人撥打南昌市民黃某的電話,就會聽到法院為黃某“量身訂制”的彩鈴。

(8)P1_popt=Pi;

(9)P1_loss=computeloss(P1,X,etrain);

(10)P1_popt_loss=computeloss(P1,X,etrain);

(11) ifPi_loss≤goptlossthen

(12)gopt=Pi;

(13) endif

(14)endfor

(15)foriter=1 toitermaxdo

(16) fori=1 toNdo

(17)Pi_vel=update_velocity( );

(18)Pi=updateAgent(Pi);

(19)Pi_loss=computeLoss(Pi,X,etrain);

(20) ifPi_loss≤Pi_popt_lossthen

(21)Pi_popt=Pi;

(22)Pi_popt_loss=Pi_loss;

(23) ifPi_popt_loss≤gopt_lossthen

(24)gopt=Pi;

(25)gopt_loss=Pi_loss;

(26) endif

(27) endif

(28) endfor

(29)endfor

(30)gopt=computeloss(gopt,X,etest);

(31)returngopt;

2.1 卷積神經網絡表示

設計了直接的CNN結構編碼方案。CNN有4種分層:卷積層、最大池化層、平均池化層和全連接層。本文GSA_DNN是4層的神經網絡模型,如圖3所示。

圖3 GSA_DNN的神經網絡模型

假設C、P和FC分別表示卷積層、池化層和全連接層,將神經網絡結構表示為向量形式,向量的每個位置包含了該層的類型及其超參數。向量中卷積層的超參數為輸出特征圖(feature map)的數量,全連接層的超參數為神經元的數量,卷積層或池化層的超參數均為核的大小。本文所設計的agent編碼方法無需將編碼信息轉化為數值形式,直接描述了神經網絡的結構和超參數。

2.2 種群初始化

算法2的initswarm()函數為種群初始化方法,initswarm()函數產生N個隨機CNN結構作為初始化agent。算法3所示是initswarm()函數的偽代碼,每個agent的網絡層數為隨機值,其范圍為[3,lmax]。每個agent的第1層和最后1層分別為卷積層和全連接層。卷積層和池化層之間包含FC層會增加CNN的參數數量,所以初始化程序需要保證FC層之后的每層都是FC層。池化層能夠有效地減少輸出的規模,因此池化層和FC層連接,能夠有效地減少FC層的神經元數量。

算法3:初始化種群算法

輸入:種群大小N,最大層數lmax,特征圖最大數量fmapmax,卷積核大小kmax,全連接層神經元數量nmax,輸出層節點數量nout。

輸出: agent集合S={P1,…,PN}

(1)fori=1 toNdo

(2)Pi_depth=random(3,depth); //隨機確定特征圖數量

(3) forj=1 toPi_depthdo

(4) ifj==1 then

(5)layerlist[j]=addConv(kmax,fmapmax);

(6) else ifj==Pi_depththen

(7)layerlist[j]=addFC(nout);

(8) else iflayerlist[j-1]為全連接層 then

(9)layerlist[j]=addFC(nmax);

(10) else

(11)layertype=random(1, 3);

(12) iflayertype==1 then

(13)layerlist[j]=addConv(kmax,fmapmax);

(14) else iflayertype==2 then

(15)layerlist[j]=addPool();

(16) else

(17)layerlist[j]=addFC(nmax);

(18) endif

(19) endif

(20) endfor

(21)Pi_layerlist=layerlist;

(22)endfor

算法3的addConv()函數對agent的網絡結構增加一個卷積層,特征圖的數量是[1,fmapmax]范圍的隨機值,卷積核大小是[3×3,kmax×kmax]范圍的隨機值,kmax表示卷積核的最大值,卷積核的滑動步長固定為1×1。add-Pool()函數隨機選擇一個最大池化層或者平均池化層加入agent的網絡結構,池化窗口大小為3×3,滑動步長為2×2。addFC()函數對agent的網絡結構增加一個全連接層,隱藏神經元的數量為[1,nmax]范圍的隨機值。所有層的激活函數均采用線性整流函數(rectified linear unit, ReLU),池化層的層數受輸入數據的大小約束,如果輸入大小為28×28,最多增加3層池化層。

2.3 適應度評估函數

算法2的computeloss()函數為適應度的評價函數。將agent的網絡結構實現具體的CNN,訓練CNN的所有epo-ch,計算每個agent的損失函數來評價其適應度。本文采用交叉熵損失作為損失函數,算法目標是搜索損失最小的agent。使用Adam方法[12]訓練CNN網絡,使用Xavier方法[13]初始化CNN的權重。

2.4 計算agent之間的差異

針對本文的直接編碼方法設計了專門的agent差異度量方法。圖4是比較agent Ag1和Ag2之間差異,圖中P表示池化層,C表示卷積層,F表示全連接層,0表示無差異,-1表示刪除該層,+F表示增加F層。因為agent網絡結構的卷積層、池化層和全連接層可能不對齊,所以獨立地比較agent的全連接層。考慮4種不同的情況:①如果兩個agent的第2層均為卷積層,那么兩者的差異為0,說明在agent結構的更新過程中,該層的位置不會改變,并且保留兩個agent的超參數。②如果兩個agent的網絡層類型不同,那么將保留前一個agent的超參數。③如果前一個agent的神經層數少于后一個agent,那么對最終的差異-1,表示該位置應當被刪除。④如果前一個agent的神經層數多于后一個agent,那么對最終的差異+L,L表示增加的神經層類型。

圖4 比較agent Ag1和Ag2之間差異

2.5 計算agent的速度

基于全局最優gopt和局部最優lopt之間的差異決定agentAg的速度,因此每次迭代需要計算兩個差異值gopt-Ag和popt-Ag。算法2的update_velocity()函數為agent的速度計算方法。圖5是一個計算agent速度,圖中P表示池化層,C表示卷積層,F表示全連接層,0表示無差異,-1表示刪除該層,+F表示增加F層。第1行和第2行列表分別為gopt-Ag和lopt-Ag。產生一個[0,1)范圍的隨機數r,比較r和閾值Cg的大小,如果r≤Cg,則選擇gopt-Ag,否則,選擇lopt-Ag。閾值Cg的作用是控制agent的收斂速度。

圖5 計算agent速度

因為速度的計算過程僅僅比較了神經層的類型,而一個agent的神經層類型可能和gopt和lopt均完全相同,本文方法計算的速度結果將為一個全0的列表。該情況下本文算法基于Cg從gopt和lopt選擇速度,并將gopt的超參數作為agent的超參數。

2.6 更新agent的網絡結構

算法2的updateagent()函數為更新agent的方法。圖6是更新agent結構,圖中P表示池化層,C表示卷積層,F表示全連接層,0表示無差異,-1表示刪除該層,+F表示增加F層。算法根據agent的速度對agent的網絡結構增加或者刪除神經層。更新過程中需要檢查池化層的數量,使其滿足輸入數據的約束,如果更新的結果中池化層的數量大于約束值,則從最后一個池化層依次刪除,使其滿足約束的層數。

圖6 更新agent結構

3 仿真實驗和結果分析

3.1 實驗方法和對比方法

采用GPU處理器Nvidia GTX 1080測試GSA_DNN,GPU的顯存為8 GB,該顯存足夠容納兩百萬個神經網絡的參數。采用分類準確率和分類錯誤率作為圖像分類性能的評價指標。

采用4個基于深度學習的圖像分類算法作為對比方法:RandNet-2[14]、evoCNN[15]、MCCNN[16]、HEp-2[17],Rand-Net-2和evoCNN是兩個經典的神經網絡參數優化算法,MCCNN和HEp-2則是近期圖像分類領域性能較為突出的兩個神經網絡模型。RandNet-2將主成分分析和卷積神經網絡結合,具有較強的非線性學習能力,本文模型也以卷積神經網絡為基礎,通過RandNet-2能夠反映本文方法對卷積神經網絡的優化效果。evoCNN是一種基于遺傳算法的卷積神經網絡演化優化方法,該方法得到了廣泛的應用。MCCNN設計了多通道的卷積神經網絡來提取具有時空域不變性的特征,對圖像進行分類處理。HEp-2針對細胞圖像設計了半自動的CNN參數搜索方案,并且在一般的圖像分類數據集上也完成了性能驗證。

3.2 實驗數據集

采用5個圖像分類領域內常用的公開數據集完成仿真實驗:MNIST、MNIST-RD、MNIST-RB、MNIST-BI、MNIST-Fashion。圖7是5個圖像數據集的實例,表1是5個數據集的基本屬性。MNIST數據集由250個人手寫的數字構成,MNIST-RD數據集由旋轉的手寫數字構成,MNIST-RB數據集的背景加入了隨機噪聲,MNIST-BI數據集在背景加入了圖像,MNIST-Fashion數據集包含了10種不同的服裝。

圖7 5個實驗圖像數據集的實例

表1 實驗數據集的基本屬性

3.3 實驗的參數設置

GSA_DNN的參數分為3組:GSA相關參數、CNN初始化參數和CNN訓練的相關參數。表2是本文實驗的具體參數取值。

表2 實驗的參數設置

3.4 實驗結果和分析

本文GSA_DNN模型獨立地訓練10次,將10次的CNN模型對測試數據集獨立地進行分類實驗,統計10次實驗結果的平均分類準確率和平均分類錯誤率。RandNet-2、evoCNN、MCCNN和HEp-2均提供了平均分類錯誤率結果,因此首先比較了GSA_DNN的分類錯誤率,如圖8所示。本文方法對于MNIST、MNIST-RD、MNIST-RB、MNIST-BI這4個數據集的錯誤率均明顯地低于RandNet-2、MCCNN和HEp-2這3個模型,略低于evoCNN模型。MNIST-Fashion數據集類別之間的界限更為明顯,所以5個深度神經網絡對MNIST-Fashion數據集的分類錯誤率均較低,其中GSA_DNN和evoCNN的結果幾乎相等,可見本文方法獲得了理想的分類性能。

圖8 圖像平均分類錯誤率

根據相關研究人員的分析[18],分類錯誤率即可以反映圖像分類的準確性,RandNet-2、evoCNN、MCCNN和HEp-2未提供圖像分類準確率的數據,因此本文僅統計了GSA_DNN的分類準確率,如圖9所示。圖中可看出,GSA_DNN對MNIST、MNIST-RD、MNIST-RB和MNIST-Fashion的分類準確率均高于0.97,對MNIST-BI數據集的分類準確率接近0.94,實現了理想的分類性能。

圖9 GSA_DNN的圖像平均分類準確率

3.5 GSA的優化結果

表3是本文GSA算法訓練5個數據集所獲得的最佳網絡結構參數。

表3 GSA_DNN搜索的最佳網絡參數

運用群體智能算法搜索CNN的最佳參數是一個極為耗時的任務,因此,本文的核心目標是在保證優化效果的前提下,提高CNN模型的訓練效率。文獻[19]的實驗結果顯示,evoCNN訓練MNIST數據集需要大約4天,該實驗采用的NVIDIA Tesla P100 GPU是極為強大的服務器集群處理器。本文GSA_DNN對MNIST數據集獨立地完成了10次訓練,最優訓練時間、平均訓練時間和最差運行時間分別為9.67 h、14.89 h和22.33 h,而且本文實驗的Nvidia GTX 1080 GPU計算能力也大幅度地弱于NVIDIA Tesla P100 GPU,所以本文設計的GSA_DNN方法成功加快了深度神經網絡的訓練時間。

4 結束語

本文為GSA設計了交叉算子和變異算子,利用增強的GSA解決深度卷積神經網絡的訓練問題。本文為CNN結構設計了直接編碼策略,使其和GSA算法實現了較好地結合。實驗結果表明,本文的GSA_DNN僅需要30個agent和20次迭代即可搜索出最佳的CNN結構,明顯快于基于遺傳算法的evoCNN方法。雖然本文實驗在圖像分類問題上進行了驗證,但是GSA_DNN能夠應用于其它的復雜學習任務。

GSA_DNN中每個agent均需要對全部的訓練集進行完整訓練,這是導致訓練時間長的關鍵原因。未來將研究把本文GSA應用于殘差神經網絡、遞歸神經網絡等模型的訓練工作,并針對不同類型的網絡,調節每個agent的訓練量,從而進一步降低訓練的時間。

猜你喜歡
分類
2021年本刊分類總目錄
分類算一算
垃圾分類的困惑你有嗎
大眾健康(2021年6期)2021-06-08 19:30:06
星星的分類
我給資源分分類
垃圾分類,你準備好了嗎
學生天地(2019年32期)2019-08-25 08:55:22
分類討論求坐標
數據分析中的分類討論
按需分類
教你一招:數的分類
主站蜘蛛池模板: 亚洲中文字幕在线观看| 91国内视频在线观看| 青青青伊人色综合久久| 欧洲一区二区三区无码| 在线看片免费人成视久网下载| 中文字幕欧美日韩高清| www.91中文字幕| 中文字幕亚洲无线码一区女同| 亚洲成人在线网| 国产成人综合日韩精品无码不卡| 内射人妻无码色AV天堂| 国产Av无码精品色午夜| 九九热精品视频在线| 亚洲国产精品VA在线看黑人| 欧美国产日韩在线| 国产v精品成人免费视频71pao| 亚洲日本www| 国产91丝袜在线播放动漫| 国产一区二区色淫影院| 国产成人亚洲欧美激情| www中文字幕在线观看| 欧美综合区自拍亚洲综合天堂| 国产成人无码综合亚洲日韩不卡| 国产欧美网站| 日韩欧美高清视频| 亚洲区一区| 在线观看精品自拍视频| 免费99精品国产自在现线| 国产va欧美va在线观看| 国产成人91精品免费网址在线| 18禁黄无遮挡网站| 永久免费无码成人网站| 婷婷色中文网| 国产欧美在线观看精品一区污| 波多野结衣久久高清免费| 国产成人精彩在线视频50| 色香蕉网站| 2019国产在线| 性激烈欧美三级在线播放| 四虎影视国产精品| 国产午夜一级毛片| 青青草原偷拍视频| 国产综合色在线视频播放线视| 97国产成人无码精品久久久| 色成人亚洲| 青青操视频在线| 亚洲第一页在线观看| 5555国产在线观看| 久久福利片| 中文字幕乱妇无码AV在线| 成人国产免费| 久久人人爽人人爽人人片aV东京热| 亚洲精品无码人妻无码| 国产高潮流白浆视频| 免费观看国产小粉嫩喷水| 午夜国产小视频| 亚洲一区毛片| 日韩一级二级三级| 91精品久久久无码中文字幕vr| 日韩中文无码av超清| 午夜福利视频一区| 91精品视频播放| 久久精品aⅴ无码中文字幕 | 亚洲欧美人成人让影院| 欧美色综合网站| 久久亚洲天堂| 欧美日本中文| 国产农村1级毛片| 国产男女免费视频| 婷婷五月在线| 最新日韩AV网址在线观看| 亚洲bt欧美bt精品| 国产精品自在线天天看片| 国产精品爆乳99久久| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲精品综合一二三区在线| 欧美日韩免费在线视频| 日韩A∨精品日韩精品无码| 色婷婷天天综合在线| 香蕉网久久| 免费av一区二区三区在线| 国产成人在线小视频|