本發(fā)明涉及卷積神經(jīng)網(wǎng)絡(luò)研究領(lǐng)域,具體地,涉及一種卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法。
背景技術(shù):
深度學習是人工智能領(lǐng)域的一個研究熱點。近幾年,深度學習在機器視覺領(lǐng)域取得了突破性進展。在多種深度學習方法中,卷積神經(jīng)網(wǎng)絡(luò)的研究成果最為突出。自Alex等人憑借卷積神經(jīng)網(wǎng)絡(luò)在2012年的ILSVRC圖像識別競賽中以明顯的性能優(yōu)勢超越傳統(tǒng)方法獲得第一名以來,卷積神經(jīng)網(wǎng)絡(luò)在機器視覺領(lǐng)域掀起了研究熱潮。工業(yè)界也投入大量資金,將卷積神經(jīng)網(wǎng)絡(luò)相關(guān)的研究成果應(yīng)用于機器視覺和人工智能相關(guān)的產(chǎn)品中。卷積神經(jīng)網(wǎng)絡(luò)對機器視覺領(lǐng)域相關(guān)的學術(shù)研究和工業(yè)應(yīng)用產(chǎn)生了深遠的影響。
卷積神經(jīng)網(wǎng)絡(luò)由多個交替的卷積層(convolutional layer)、池化層(pooling layer),以及最后的全連接層(fully connected layer)組成。卷積神經(jīng)網(wǎng)絡(luò)通過反向傳播方法(Back Propagation,BP)將網(wǎng)絡(luò)損失傳遞到網(wǎng)絡(luò)的所有層,參數(shù)更新學習過程通過隨機梯度下降(Stochastic Gradient Descent,SGD)算法來實現(xiàn)。卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)最大的區(qū)別在于,其卷積層采用了一種權(quán)值共享局部連接網(wǎng)絡(luò),而不是傳統(tǒng)的權(quán)值獨立全連接網(wǎng)絡(luò),這使得在層數(shù)相同的情況下,卷積神經(jīng)網(wǎng)絡(luò)的連接數(shù)目要遠少于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)。卷積層的二維數(shù)據(jù)結(jié)構(gòu)使得卷積神經(jīng)網(wǎng)絡(luò)非常適合于處理圖像數(shù)據(jù)信息。此外,池化層的加入使得卷積神經(jīng)網(wǎng)絡(luò)對輸入數(shù)據(jù)的幾何變化(平移、縮放、旋轉(zhuǎn)等)具有一定程度的魯棒性。由于其強大的數(shù)據(jù)特征提取能力和非線性學習能力,卷積神經(jīng)網(wǎng)絡(luò)在性能上超越了大多數(shù)傳統(tǒng)的機器視覺算法。目前在圖像分類、目標識別等領(lǐng)研究和應(yīng)用領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)成為主流方法。
卷積層的濾波器是卷積神經(jīng)網(wǎng)絡(luò)的核心部件之一,這些濾波器負責從輸入中提取特征,濾波器的特性可以通過學習算法從數(shù)據(jù)中自動得到。淺層卷積層的濾波器用來提取圖像的細節(jié)信息(邊緣、顏色等),深層卷積層的濾波器用來提取圖像的語義信息(目標類別,目標位置等)。濾波器的特性決定了卷積神經(jīng)網(wǎng)絡(luò)提取到的輸入特征,而這些特征最終會影響到卷積神經(jīng)網(wǎng)絡(luò)的工作性能。雖然卷積神經(jīng)網(wǎng)絡(luò)可以通過自主地從輸入數(shù)據(jù)中學習數(shù)據(jù)特性來更新濾波器,不過這些濾波器中有一定數(shù)量的濾波器提取出來的信息是冗余的,此外還有一些濾波器會提取出不正確或不期望得到的特征。以上這些因素會干擾后面網(wǎng)絡(luò)層的工作,進而影響到卷積神經(jīng)網(wǎng)絡(luò)的性能表現(xiàn)。傳統(tǒng)的網(wǎng)絡(luò)優(yōu)化方法只能通過逐層傳遞誤差值來更新濾波器的參數(shù),這些優(yōu)化方法對于解決剛才提到的濾波器特性具有的問題則無能為力,因而網(wǎng)絡(luò)的性能無法得到進一步提升。
綜上所述,發(fā)明人在實現(xiàn)本申請所闡述的發(fā)明技術(shù)方案的過程中,發(fā)現(xiàn)上述技術(shù)至少存在如下技術(shù)問題:
在現(xiàn)有技術(shù)中,現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)存在性能無法進一步提升的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法,解決了現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)存在性能無法進一步提升的技術(shù)問題,實現(xiàn)了對卷積神經(jīng)網(wǎng)絡(luò)進行了優(yōu)化,提升了卷積神經(jīng)網(wǎng)絡(luò)性能的技術(shù)效果。
為解決上述技術(shù)問題,本申請?zhí)峁┝艘环N卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法,所述方法包括:
步驟1:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),并在卷積神經(jīng)網(wǎng)絡(luò)的末端添加用于計算損失函數(shù)的損失層;
步驟2:構(gòu)建數(shù)據(jù)集,數(shù)據(jù)集包括:訓練集、測試集,并設(shè)定卷積神經(jīng)網(wǎng)絡(luò)參數(shù);
步驟3:開始訓練卷積神經(jīng)網(wǎng)絡(luò),當訓練次數(shù)達到預設(shè)次數(shù)后,暫停訓練,把當前的卷積神經(jīng)網(wǎng)絡(luò)作為第一卷積神經(jīng)網(wǎng)絡(luò)進行存儲;
步驟4:將卷積神經(jīng)網(wǎng)絡(luò)損失層計算得到的損失傳遞到預設(shè)卷積層,然后計算每個濾波器對卷積神經(jīng)網(wǎng)絡(luò)損失的貢獻度;
步驟5:將濾波器對卷積神經(jīng)網(wǎng)絡(luò)損失的貢獻度,按照從小到大的順序進行排序,基于排序結(jié)果,選取出特征提取效果最優(yōu)的濾波器和特征提取效果最差的濾波器;
步驟6:分別從步驟5中選取的每個濾波器中隨機選取出濾波器系數(shù),然后進行濾波器系數(shù)更新;
步驟7:修改卷積神經(jīng)網(wǎng)絡(luò)每一層的學習率縮放因子,對修改之后的卷積神經(jīng)網(wǎng)絡(luò)進行訓練,訓練過程進行預設(shè)次數(shù)后暫停,然后然后存儲修改之后的網(wǎng)絡(luò)為第二卷積神經(jīng)網(wǎng)絡(luò),并分別獲得第一卷積神經(jīng)網(wǎng)絡(luò)和第二卷積神經(jīng)網(wǎng)絡(luò)的損失;
步驟8:通過損失比較第一卷積神經(jīng)網(wǎng)絡(luò)和第二卷積神經(jīng)網(wǎng)絡(luò)的性能,選擇出較優(yōu)的卷積神經(jīng)網(wǎng)絡(luò)。
進一步的,所述構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)具體包括:
構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),將卷積層、池化層和全連接層按照一定的次序進行連接,并設(shè)置參數(shù),具體參數(shù)如下:
卷積層:濾波器大小為[wf,hf],濾波器移動步長為sf,濾波器個數(shù)為nf,濾波器初始化取值為Hinit,濾波器系數(shù)學習率縮放因子為kf;
池化層:池化區(qū)域大小為[wp,hp],池化區(qū)域移動步長為sp;
全連接層:輸出值個數(shù)為nc,連接參數(shù)學習率縮放因子為kc,連接參數(shù)初始化值為Winit。
進一步的,損失函數(shù)選擇softmaxloss,具體計算公式為:
其中,N為計算損失時所用的樣本個數(shù),K為數(shù)據(jù)類別個數(shù),y(n)為第n個樣本的預測類別(標簽);1{y(n)=k}表示當?shù)趎個樣本的預測結(jié)果為第k個類別時,取值為1,否則為0;為網(wǎng)絡(luò)輸出經(jīng)softmax函數(shù)處理之后的取值,的計算公式為:
其中,為網(wǎng)絡(luò)處理第n個樣本時,針對第k個類別的輸出值。
進一步的,設(shè)定卷積神經(jīng)網(wǎng)絡(luò)參數(shù)具體包括:卷積神經(jīng)網(wǎng)絡(luò)的學習率α、卷積神經(jīng)網(wǎng)絡(luò)最大訓練次數(shù)nmax,計算損失時需要使用的數(shù)據(jù)個數(shù)N,以及需要進行濾波器優(yōu)化的卷積層編號lc。
進一步的,將卷積神經(jīng)網(wǎng)絡(luò)損失層計算得到的損失,通過反向傳播方法傳遞到第lc個卷積層,然后計算每個濾波器對網(wǎng)絡(luò)損失的貢獻度,第i個濾波器的貢獻度計算公式為:
其中,|δab|為第i個濾波器中位于第a行、第b列的濾波器系數(shù)的絕對值,X和Y分別為濾波器的行數(shù)和列數(shù),其中,反向傳播方法為BP算法,具體過程是:根據(jù)卷積神經(jīng)網(wǎng)絡(luò)中每個神經(jīng)元之間的連接關(guān)系和連接權(quán)重,仿照卷積神經(jīng)網(wǎng)絡(luò)輸出的計算方法,把卷積神經(jīng)網(wǎng)絡(luò)的損失在不同網(wǎng)絡(luò)層的神經(jīng)元之間進行加權(quán)求和,最終得到每個神經(jīng)元連接權(quán)重的計算誤差,然后利用神經(jīng)元連接已有的權(quán)重值和計算誤差,通過梯度下降法對權(quán)重值進行更新。
進一步的,對濾波器系數(shù)進行更新的具體操作是:將特征提取效果最差的濾波器中選出的系數(shù)替換為特征提取效果最優(yōu)的濾波器中選出的系數(shù)。
進一步的,濾波器系數(shù)更新后修改卷積神經(jīng)網(wǎng)絡(luò)每一層的學習率縮放因子,具體包括:降低第lc層以及l(fā)c層前面所有網(wǎng)絡(luò)層的kf,增大第lc層后面所有網(wǎng)絡(luò)層的kf。降低第lc層以及l(fā)c層前面網(wǎng)絡(luò)層的kf,可以防止第lc層所包含的濾波器系數(shù)更新結(jié)果在后續(xù)的訓練過程中被完全替換掉。增大第lc層后面網(wǎng)絡(luò)層的kf可以使第lc層后面網(wǎng)絡(luò)層的系數(shù)對第lc層的濾波器系數(shù)更新結(jié)果有快速的響應(yīng),這有助于網(wǎng)絡(luò)的加速收斂。
進一步的,通過損失比較第一卷積神經(jīng)網(wǎng)絡(luò)和第二卷積神經(jīng)網(wǎng)絡(luò)的性能,具體包括:
若第一卷積神經(jīng)網(wǎng)絡(luò)的損失大于第二卷積神經(jīng)網(wǎng)絡(luò)的損失,則用第二卷積神經(jīng)網(wǎng)絡(luò)替換第一卷積神經(jīng)網(wǎng)絡(luò),并且更新卷積神經(jīng)網(wǎng)絡(luò)訓練次數(shù)為存儲第二卷積神經(jīng)網(wǎng)絡(luò)時卷積神經(jīng)網(wǎng)絡(luò)的訓練次數(shù);
若第一卷積神經(jīng)網(wǎng)絡(luò)的損失小于第二卷積神經(jīng)網(wǎng)絡(luò)的損失,則保留若第一卷積神經(jīng)網(wǎng)絡(luò),并且更新卷積神經(jīng)網(wǎng)絡(luò)訓練次數(shù)為存儲第一卷積神經(jīng)網(wǎng)絡(luò)時網(wǎng)絡(luò)的訓練次數(shù)。
進一步的,所述方法還包括步驟9:
若卷積神經(jīng)網(wǎng)絡(luò)訓練總次數(shù)達到了最大次數(shù),則停止訓練,將步驟8選擇出的積神經(jīng)網(wǎng)絡(luò)作為最終的輸出;若卷積神經(jīng)網(wǎng)絡(luò)訓練總次數(shù)沒有達到了最大次數(shù),則使用步驟8比較之后保留下來的卷積神經(jīng)網(wǎng)絡(luò)進行進一步訓練,訓練步驟從步驟3開始。
進一步的,所述數(shù)據(jù)集還包括驗證集。本發(fā)明中數(shù)據(jù)集的目的是給卷積神經(jīng)網(wǎng)絡(luò)的訓練過程提供必要信息,使得卷積神經(jīng)網(wǎng)絡(luò)能夠通過學習獲取數(shù)據(jù)中潛在的有價值的內(nèi)容。數(shù)據(jù)集分為訓練集、測試集和驗證集三部分。其中,訓練集用于訓練卷積神經(jīng)網(wǎng)絡(luò);驗證集用來對訓練中的卷積神經(jīng)網(wǎng)絡(luò)進行性能評測;測試集用來對訓練完成的卷積神經(jīng)網(wǎng)絡(luò)進行性能評測。
本發(fā)明的關(guān)鍵點是在優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)時引入了遺傳算法的思想,在使用傳統(tǒng)隨機梯度下降算法(SGD)更新網(wǎng)絡(luò)參數(shù)的同時,對于卷積層的濾波器系數(shù),首先將濾波器按照對網(wǎng)絡(luò)分類誤差的影響程度進行排序,并將濾波器分為對網(wǎng)絡(luò)誤差影響較大的濾波器和對網(wǎng)絡(luò)誤差影響較小的濾波器兩類。然后從這兩類濾波器中分別隨機地挑選一部分系數(shù),用第一類濾波器的系數(shù)替換第二類濾波器的系數(shù)。接下來讓濾波器修改前的網(wǎng)絡(luò)和濾波器修改后的網(wǎng)絡(luò)同時訓練一定的次數(shù),通過比較兩個網(wǎng)絡(luò)的損失決定保留哪一個網(wǎng)絡(luò),并將該網(wǎng)絡(luò)用于后面的訓練過程。
由于本方法針對卷積神經(jīng)網(wǎng)絡(luò)的訓練過程,而訓練過程是其他基于卷積神經(jīng)網(wǎng)絡(luò)的算法和應(yīng)用中不可缺少的部分,因此本方法可以用于任何其他基于卷積神經(jīng)網(wǎng)絡(luò)的算法或產(chǎn)品當中。本發(fā)明所闡述的基于遺傳算法的卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法是一種新穎的優(yōu)化方法,其他的卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法無法針對某一個卷積層進行進一步單獨的優(yōu)化更新,因此本方法具有不可替代性。
本申請?zhí)峁┑囊粋€或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
在卷積神經(jīng)網(wǎng)絡(luò)訓練過程中,首先通過選出效果較差的濾波器組(對網(wǎng)絡(luò)誤差影響較大)和效果較好的濾波器組(對網(wǎng)絡(luò)誤差影響較小),然后通過把較差濾波器組中的部分系數(shù)用較好濾波器組中的部分系數(shù)進行替換,從而實現(xiàn)卷積層濾波器之間的參數(shù)更新;接下來,用修改之后的網(wǎng)絡(luò)進行訓練,訓練一定次數(shù)后,對比修改后和修改前的網(wǎng)絡(luò)產(chǎn)生的誤差大小,判斷先前步驟實現(xiàn)的濾波器參數(shù)更新是否有效,從兩個網(wǎng)絡(luò)中進行選擇,保留性能好的網(wǎng)絡(luò)用于后面的訓練;通過不斷地重復這個過程,最終可以訓練出一個性能優(yōu)異的網(wǎng)絡(luò),該網(wǎng)絡(luò)的特征提取能力比傳統(tǒng)的網(wǎng)絡(luò)要有所提升,所以,本發(fā)明闡述的解決方案能夠有效地解決現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)存在性能無法進一步提升的技術(shù)問題,進而實現(xiàn)了對卷積神經(jīng)網(wǎng)絡(luò)進行了優(yōu)化,提升了卷積神經(jīng)網(wǎng)絡(luò)性能的技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對本發(fā)明實施例的進一步理解,構(gòu)成本申請的一部分,并不構(gòu)成對本發(fā)明實施例的限定;
圖1是本申請中卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法的流程示意圖;
圖2是本申請中濾波器貢獻度計算方法示意圖。
具體實施方式
本發(fā)明提供了一種卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法,解決了現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)存在性能無法進一步提升的技術(shù)問題,實現(xiàn)了對卷積神經(jīng)網(wǎng)絡(luò)進行了優(yōu)化,提升了卷積神經(jīng)網(wǎng)絡(luò)性能的技術(shù)效果。
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式對本發(fā)明進行進一步的詳細描述。需要說明的是,在相互不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述范圍內(nèi)的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。
請參考圖1,本發(fā)明提出一種基于遺傳算法的卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化算法,該算法主要解決卷積神經(jīng)網(wǎng)絡(luò)中濾波器系數(shù)的更新問題,通過將遺傳算法的思想用于濾波器系數(shù)的更新提升卷積神經(jīng)網(wǎng)絡(luò)的特征提取能力,提升網(wǎng)絡(luò)性能。
本發(fā)明的目的可以通過以下的技術(shù)方案來實現(xiàn):(為敘述簡便,后文中將“卷積神經(jīng)網(wǎng)絡(luò)”簡稱為“網(wǎng)絡(luò)”)
一種基于遺傳算法的卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化方法,該算法在CPU和GPU上均可運行。方法的主要步驟包括:
第1步:構(gòu)建一個卷積神經(jīng)網(wǎng)絡(luò),將卷積層、池化層和全連接層按照一定的次序進行連接,并設(shè)置參數(shù),具體參數(shù)如下:
卷積層:濾波器大小[wf,hf],濾波器移動步長sf,濾波器個數(shù)nf,濾波器初始化取值Hinit,濾波器系數(shù)學習率縮放因子kf。
池化層:池化區(qū)域大小[wp,hp],池化區(qū)域移動步長sp,池化方法(區(qū)域最大值max-pooling、區(qū)域平均值average-pooling,二選一)。
全連接層:輸出值個數(shù)nc,連接參數(shù)學習率縮放因子kc,連接參數(shù)初始化值Winit。以上參數(shù)的取值均不為0。
第2步:在卷積神經(jīng)網(wǎng)絡(luò)的末端添加損失層(loss layer),用來計算損失函數(shù)。損失函數(shù)選擇softmaxloss,具體計算公式為:
其中,N為計算損失時所用的樣本個數(shù),K為數(shù)據(jù)類別個數(shù),y(n)為第n個樣本的預測類別(標簽)。1{y(n)=k}表示當?shù)趎個樣本的預測結(jié)果為第k個類別時,取值為1,否則為0。為網(wǎng)絡(luò)輸出經(jīng)softmax函數(shù)處理之后的取值,的計算公式為:
其中,為網(wǎng)絡(luò)處理第n個樣本時,針對第k個類別的輸出值。
第3步:構(gòu)建具有K個類別的數(shù)據(jù)集,并將數(shù)據(jù)集區(qū)分為訓練集、驗證集和測試集??梢愿鶕?jù)需要省略驗證集的構(gòu)建,但訓練集和測試集必須要構(gòu)建。
第4步:設(shè)定網(wǎng)絡(luò)的學習率α、最大訓練次數(shù)nmax,計算損失時需要使用的數(shù)據(jù)個數(shù)N,以及需要進行濾波器優(yōu)化的卷積層編號lc。
第5步:開始訓練網(wǎng)絡(luò)。訓練網(wǎng)絡(luò)達到n次后,暫停訓練。
第6步:把當前網(wǎng)絡(luò)進行存儲,記存儲之后的網(wǎng)絡(luò)為Nnet。存儲后的網(wǎng)絡(luò)會用于第13步的網(wǎng)絡(luò)對比過程。
第7步:把網(wǎng)絡(luò)損失層計算得到的損失通過反向傳播方法(Backpropagation,BP)傳遞到第lc個卷積層,然后計算每個濾波器對網(wǎng)絡(luò)損失的貢獻度。第i個濾波器的貢獻度計算公式為:
其中,|δab|為第i個濾波器中位于第a行、第b列的濾波器系數(shù)的絕對值,X和Y分別為濾波器的行數(shù)和列數(shù)。Ci越大,說明第i個濾波器產(chǎn)生的誤差對整個網(wǎng)絡(luò)性能的影響越大,第i個濾波器的重要性越低。貢獻度的計算圖示可以參考附圖2,濾波器貢獻度計算方法示意圖(以3×3大小的濾波器為例),圖2中的δ代表網(wǎng)絡(luò)誤差在每個濾波器系數(shù)上的具體分配值。
第8步:對第lc個卷積層濾波器的貢獻度按照從小到大的順序進行排序,并從中選出多個特征提取效果最好和特征提取效果最差的濾波器。被選出的濾波器個數(shù)不宜過多,否則濾波器更新后會有大量的濾波器具有相同的系數(shù),這會對網(wǎng)絡(luò)優(yōu)化造成不利影響。此外,選取出來的效果最差的濾波器個數(shù)要偏多一些,這樣可以保證后續(xù)網(wǎng)絡(luò)訓練過程中,效果最差的濾波器對網(wǎng)絡(luò)性能的影響盡可能低。因此,選取最前面1%~2%的濾波器作為特征提取效果最優(yōu)的濾波器,記為選取最后面8%~10%的濾波器作為特征提取效果最差的濾波器,記為
第9步:更新濾波器系數(shù):對于和首先分別從每個濾波器中隨機選取1%~2%的濾波器系數(shù),然后將中挑選出來的系數(shù)替換為中挑選出來的系數(shù)。在這里,挑選1%~2%的系數(shù)進行更新,能夠減輕系數(shù)變更對網(wǎng)絡(luò)性能的影響,使得網(wǎng)絡(luò)的優(yōu)化過程更加平穩(wěn)。
第10步:修改網(wǎng)絡(luò)每一層的學習率縮放因子kf,具體做法是:降低第lc層以及前面網(wǎng)絡(luò)層的kf,增大第lc層后面網(wǎng)絡(luò)層的kf。
第11步:對修改之后的網(wǎng)絡(luò)進行訓練,訓練過程進行m次后暫停,然后存儲修改之后的網(wǎng)絡(luò),記為
第12步:獲得Nnet和兩個網(wǎng)絡(luò)的損失,分別記為Lnet和
第13步:通過損失比較網(wǎng)絡(luò)Nnet和的性能。
如果那么濾波器優(yōu)化后的網(wǎng)絡(luò)性能比優(yōu)化前的網(wǎng)絡(luò)性能好,這樣就用優(yōu)化后的網(wǎng)絡(luò)替換優(yōu)化前的網(wǎng)絡(luò)Nnet,并且更新網(wǎng)絡(luò)訓練次數(shù)為存儲時網(wǎng)絡(luò)的訓練次數(shù)。
如果那么濾波器優(yōu)化后的網(wǎng)絡(luò)性能比優(yōu)化前的網(wǎng)絡(luò)性能差,這樣就丟棄優(yōu)化后的網(wǎng)絡(luò)保留優(yōu)化前的網(wǎng)絡(luò)Nnet,并且更新網(wǎng)絡(luò)訓練次數(shù)為存儲Nnet時網(wǎng)絡(luò)的訓練次數(shù)。
第14步:如果網(wǎng)絡(luò)訓練總次數(shù)達到了最大次數(shù)nmax,那么停止訓練,將第13步得到的網(wǎng)絡(luò)作為最終的輸出。否則使用13步對比之后保留下來的網(wǎng)絡(luò)進行進一步訓練,訓練步驟從第5步開始。
這里以卷積神經(jīng)網(wǎng)絡(luò)相關(guān)應(yīng)用中最常用的AlexNet網(wǎng)絡(luò)結(jié)構(gòu)為例,說明本方法的有效性。方法驗證過程中,使用常用的UIUC-Sports數(shù)據(jù)集對網(wǎng)絡(luò)進行訓練。AlexNet的網(wǎng)絡(luò)設(shè)置如下:
網(wǎng)絡(luò)學習率α=0.0001,最大迭代次數(shù)nmax=300,計算損失所用數(shù)據(jù)個數(shù)N=256,待優(yōu)化的卷積層編號為lc=3。
網(wǎng)絡(luò)每經(jīng)過50次訓練進行一次卷積層內(nèi)部濾波器更新過程。每次將濾波器貢獻度按照從小到大的順序排序,選取前2%作為性能較好的濾波器,選取后10%作為性能較差的濾波器,然后從這些濾波器中分別隨機選取1%的系數(shù)值進行更新。
對修改后的網(wǎng)絡(luò)進行訓練時,第lc卷積層和之前的網(wǎng)絡(luò)層的學習率縮放因子減半,第lc卷積層之后的網(wǎng)絡(luò)層的學習率縮放因子擴大10倍。
經(jīng)過本發(fā)明提出的方法訓練之后的網(wǎng)絡(luò)性能,比使用傳統(tǒng)優(yōu)化方法訓練的網(wǎng)絡(luò)性能要高出4%~5%。這樣的結(jié)果證明了本發(fā)明的有效性。
上述本申請實施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點:
在卷積神經(jīng)網(wǎng)絡(luò)訓練過程中,首先通過選出效果較差的濾波器組(對網(wǎng)絡(luò)誤差影響較大)和效果較好的濾波器組(對網(wǎng)絡(luò)誤差影響較小),然后通過把較差濾波器組中的部分系數(shù)用較好濾波器組中的部分系數(shù)進行替換,從而實現(xiàn)卷積層濾波器之間的參數(shù)更新;接下來,用修改之后的網(wǎng)絡(luò)進行訓練,訓練一定次數(shù)后,對比修改后和修改前的網(wǎng)絡(luò)產(chǎn)生的誤差大小,判斷先前步驟實現(xiàn)的濾波器參數(shù)更新是否有效,從兩個網(wǎng)絡(luò)中進行選擇,保留性能好的網(wǎng)絡(luò)用于后面的訓練;通過不斷地重復這個過程,最終可以訓練出一個性能優(yōu)異的網(wǎng)絡(luò),該網(wǎng)絡(luò)的特征提取能力比傳統(tǒng)的網(wǎng)絡(luò)要有所提升,本發(fā)明闡述的解決方案能夠有效地現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)存在性能無法進一步提升的技術(shù)問題,進而實現(xiàn)了對卷積神經(jīng)網(wǎng)絡(luò)進行了優(yōu)化,提升了卷積神經(jīng)網(wǎng)絡(luò)性能的技術(shù)效果。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。