楊東旭,賴惠成,班俊碩,王俊南
(新疆大學信息與工程學院,新疆烏魯木齊830046)
近年來,深度卷積神經(jīng)網(wǎng)絡在計算機視覺領域的很多任務中取得了十分顯著的成功,如目標檢測[1,2]人臉識別[3,4],大規(guī)模圖像分類[5]等.國內(nèi)外研究學者針對DCNN模型做了很多研究.例如Shankar[6]等人對網(wǎng)絡模型結構的研究,Goodfellow等人[7]對非線性激活函數(shù)的研究,Raymond等人[8]對池化層采用不同池化方法的研究.而采用SGD(Stochastic Gradient Descent)結合BP(Back Propagation)的方法進行訓練與使用Softmax做分類已經(jīng)成為DCNN模型的默認組成部分.在依靠SGD結合BP的方法優(yōu)化模型時,標準SGD通過鏈式法則來計算和傳播梯度,尤其是訓練深層網(wǎng)絡模型時,使用連續(xù)而完整的梯度進行傳播對網(wǎng)絡模型的表現(xiàn)起到了十分關鍵的作用,因此神經(jīng)元或網(wǎng)絡層出現(xiàn)的飽和問題會影響梯度信息的完整性.He等人[9]使用ReLU和PReLU代替sigmoid激活函數(shù)解決由sigmoid飽和導致的梯度消散問題.為去除神經(jīng)元飽和,Krizhevsky等人[10]提出采用非線性分段函數(shù)代替sigmoid函數(shù).為去除網(wǎng)絡層飽和,Huang等人[11]提出了密集連接網(wǎng)絡,使梯度信息可以在沒有梯度消散的情況下從一層傳播到任意層.研究發(fā)現(xiàn)只有過早的飽和是我們不需要的,而不是所有飽和情況.因此,本文采用注入噪聲的方法來延遲早期飽和.Nair等人[12]的研究是將噪聲加入到ReLU中使前饋網(wǎng)絡產(chǎn)生更完整的梯度信息,Gulcehre等人[13]將噪聲加入到sigmoid激活函數(shù)中,加入自適應權重噪聲[14]和梯度噪聲[15]等方法都可以有效提高模型性能.
Softmax函數(shù)與sigmoid函數(shù)公式結構十分相似,也同樣存在飽和問題.研究者更多關注對DCNN模型特征提取能力的改進,而處在模型最后面的Softmax分類層往往被研究者忽略.在進行標準的SGD過程中,當接收到一個較大的輸入時,Softmax存在的過早飽和問題會使梯度過早消失,導致BP只能反向傳播不夠完整的梯度,從而使模型無法進行更充分的參數(shù)更新.隨著訓練的繼續(xù),輸入樣本對梯度傳播的貢獻逐漸降低,參數(shù)難以更新網(wǎng)絡優(yōu)化停止.這也是模型陷于局部最小的原因之一,同時提高了過擬合出現(xiàn)的幾率.受前人研究啟發(fā),本文通過注入噪聲的方法來改進Softmax分類性能.首先,對Softmax函數(shù)的過早飽和問題做深入探究,然后提出一種延遲Softmax過早飽和的方法.在Softmax函數(shù)中注入噪聲產(chǎn)生更為連續(xù)而完整的梯度用于反向傳播,從而有效延遲過早飽和,使模型逃離局部最小,同時有效避免了過擬合以提高模型的泛化能力.最后,針對參數(shù)隨機初始化訓練困難、耗時長的問題,采用預訓練模型參數(shù)來代替隨機初始化參數(shù),使模型可以在較短時間內(nèi)達到較高的識別率.
在人工神經(jīng)網(wǎng)絡中,神經(jīng)元上的激活函數(shù)定義了神經(jīng)元輸出的映射關系.Bengio教授在ICML2016的文章[13]中給出了激活函數(shù)的定義:激活函數(shù)是映射h:R→R,并且處處可微.激活函數(shù)在網(wǎng)絡中的作用是提供非線性映射的能力,因此激活函數(shù)一般都是非線性函數(shù),并且是訓練深層網(wǎng)絡不可或缺的部分.
對于激活函數(shù)h(x),當稱為右側軟飽和;當稱為左側軟飽和;若同時滿足上述兩種情況就統(tǒng)稱此函數(shù)為軟飽和激活函數(shù),Sigmoid函數(shù)就是軟飽和激活函數(shù).與軟飽和相對的是硬飽和激活函數(shù),即:當|x|>c時h(x)=0,其中c為常數(shù).如果同時滿足右側硬飽和與左側硬飽和,就統(tǒng)稱此激活函數(shù)為硬飽和激活函數(shù).
對于Sigmoid激活函數(shù)來說,由于它的軟飽和性,反向傳播過程中的輸入一旦落入飽和區(qū)域,梯度就會接近于0.這樣的梯度貢獻會導致網(wǎng)絡參數(shù)很難得到有效訓練,從而使網(wǎng)絡的優(yōu)化停止,這種現(xiàn)象被稱為梯度消失.通常情況下,使用Sigmoid激活函數(shù)的網(wǎng)絡在5層內(nèi)就會出現(xiàn)梯度消失的現(xiàn)象.這正是過去很長一段時間里阻礙神經(jīng)網(wǎng)絡發(fā)展的重要原因之一.部分研究學者提出一些優(yōu)化方法得到有效緩解,但梯度消失問題至今仍然存在.
現(xiàn)有比較成功的網(wǎng)絡模型都是依靠大量的標注數(shù)據(jù)來實現(xiàn)它們的性能,而這些數(shù)據(jù)是經(jīng)過了多年的精心收集,通常是有專利的,很少會公開.所以如何利用已經(jīng)學到的知識去完成不同數(shù)據(jù)分布的新任務,成為提高深度學習泛化能力的關鍵.遷移學習就是在解決目標領域具體任務時,無法得到構建模型所需規(guī)模的訓練數(shù)據(jù),故將源領域學習到的知識應用到目標域中去的一種技術.通過使用之前在大數(shù)據(jù)集上經(jīng)過訓練并表現(xiàn)優(yōu)秀的預訓練模型,將其相應的結構和權重應用到目標域中去,這樣不僅大大縮短了訓練時間,還避免了由數(shù)據(jù)規(guī)模過小而引發(fā)的過擬合現(xiàn)象.圖1展示了不同情況下使用預訓練模型的方法.
圖1 不同情況下的預訓練策略
四種預訓練方法如下:
(1)該情況下數(shù)據(jù)集規(guī)模較大,數(shù)據(jù)集相似度較低,由于源領域與目標域數(shù)據(jù)差異較大,使用預訓練模型效果不佳,因此應將模型中的權重全部隨機初始化后在新數(shù)據(jù)集上重頭開始訓練.
(2)該情況下數(shù)據(jù)集規(guī)模較大,并且數(shù)據(jù)集相似度較高,這也是最理想的情況,此時保持預訓練模型中原有的結構和權重不變,然后在新的數(shù)據(jù)集上進行訓練將非常高效.
(3)該情況下數(shù)據(jù)集規(guī)模較小,數(shù)據(jù)集相似度較高,此時只需將輸出層類別個數(shù)改為目標預要求個數(shù),便可達到較高的準確率.
(4)該情況下數(shù)據(jù)集規(guī)模較小,同時數(shù)據(jù)集相似度也較低,此時可以凍結預訓練模型中的前k層的權重,然后重新訓練后面的n?k層,相似度不高依靠重新訓練來彌補,數(shù)據(jù)集規(guī)模太小依靠凍結部分層權重來彌補.
通過一個例子介紹一下Softmax的飽和情況,設輸入的訓練數(shù)據(jù){(x1,y1),···,(xm,ym)},類別標簽yi∈{1,2,···C}.使用SGD訓練數(shù)據(jù)可以得到損失函數(shù)和它的偏導數(shù)如下
其中zj是Softmax輸入向量Z的第j個元素,j∈{1,2,···C}.m輸入數(shù)據(jù)總個數(shù),在yi=j時,1{yi=j}取值為1;在yi/=j時,1{yi=j}取值為0.
為了更直觀的分析,我們將多分類Softmax函數(shù)化簡為二分類的情況,此時類別取值yi∈[1,2],因此我們可以畫出二分類情況下Softmax函數(shù)及其導數(shù),如圖2所示.將橫軸設為z1?z2,縱軸設為概率值.將z1>z2的情況定為類別yi=1(z1<z2定為類別yi=2),此時的值更接近于1.當z1>>z2時,P(yi=1|xi)≈1,梯度此時梯度消失無法繼續(xù)貢獻有用信息給反向傳播,SGD陷入局部最小中,參數(shù)更新結束,模型難以繼續(xù)優(yōu)化.為了更直觀反映梯度消失情況,將軟飽和Softmax函數(shù)在z1?z2=0的鄰域用一階泰勒展開來近似,得到硬飽和Softmax函數(shù)f(z1?z2),公式如下
線性近似如公式(4)所示,再對其求導如圖3所示,在|x|>5的區(qū)域內(nèi),硬飽和Softmax已經(jīng)取值恒為零了.總之,過早的出現(xiàn)飽和會使訓練過早的結束,所以應該避免過早飽和情況的發(fā)生.
圖2 二分類Softmax函數(shù)及其導數(shù)圖
圖3 Softmax函數(shù)泰勒展開近似及硬飽和示意圖
為了解決Softmax的飽和導致的梯度過早消失問題,在Softmax的輸入zyi中加入合適的噪聲來延遲過早飽和.加入噪聲的輸入應該比未加噪聲的輸入zyi要小,從而起到延遲飽和的作用,否則便會加快飽和.因此噪聲n恒為正值,公式如下
其中n=μ+σξ,ξ~N(0,1),n服從均值為μ=0,標準差為σ的分布,故變?yōu)?/p>
讓參數(shù)σ來控制噪聲,訓練開始階段需要較大的噪聲來延遲飽和來增加梯度的取值范圍,而后面需要較小的噪聲來使模型快速收斂.
在DCNN網(wǎng)絡模型中Softmax的輸入zyi也是全連接層的輸出這里Xi是輸入的訓練數(shù)據(jù),Wyi是權重矩陣,byi是偏置向量,由于byi是常數(shù)并且zyi主要依賴于所以這里忽略byi.而WTyiXi=||Wyi||||Xi||cosθyi,θyi為兩向量||Wyi||和||Xi||之間的夾角,Wyi可以看作是類別yi的分類器,隨著訓練的進行損失函數(shù)降低,它與輸入Xi的夾角θyi也逐漸減小,此時需要較小的噪聲有助于模型的收斂.讓參數(shù)σ是一個關于||Wyi||||Xi||和θyi的余弦函數(shù)(當θyi減小時cosθyi增大,噪聲增大訓練將難以收斂,故需要將cosθyi變型為(1?cosθyi)),因此有公式
將(5)式帶入到(4)式可得
公式(5)中超參數(shù)α用于調(diào)整噪聲的范圍,比較z′yi和zyi中的||Wyi||||Xi||大小,利用(1?cosθyi)去自適應降低噪聲的輸入加快模型的收斂.加入噪聲的Softmax交叉熵損失函數(shù)變?yōu)?/p>
使用標準SGD優(yōu)化模型時,加入噪聲和未加噪聲兩種情況在計算前向傳播和反向傳播過程中,只有損失函數(shù)中的zyi存在差別.在兩種傳播中當yi/=j時,計算上沒有差別,而反向傳播中通過鏈式法則計算梯度加入噪聲后變?yōu)?/p>
在反向傳播過程中中的cosθyi用來表示.
MNIST是由紐約大學Courant研究所提供的一個手寫數(shù)字數(shù)據(jù)庫,包含6萬張訓練圖片和1萬張測試圖片,共有10個類別,每張是大小為28×28的灰度圖像.CIFAR-10是由Alex Krizhevsky、Vinod Nair和Geoあrey Hinton收集的,包括10個類別的6萬張32×32的RGB彩色圖像,其中訓練圖像為5萬張,測試圖像為1萬張.
圖4 MNIST和CIFAR-10數(shù)據(jù)集部分圖片
VGG模型已成為DCNN中常用的模型結構,它采用多個小尺寸卷積窗口的級聯(lián)卷積層來代替大尺寸卷積窗口的單個卷積層,這樣降低了模型參數(shù)減小計算復雜度,同時具有比單個卷積層更強的特征提取能力.網(wǎng)絡使用Batch Normalization并采用ReLU作為神經(jīng)元的激活函數(shù),用均值歸一化對數(shù)據(jù)進行了簡單的預處理.所有實驗是在Tensorf l ow1.0.1深度學習框架上進行.
表1 各數(shù)據(jù)集訓練所用的DCNN模型結構
表1中2×conv[3*3,64]表示對輸入做兩次卷積操作,其中卷積核窗口大小為3*3,個數(shù)為64.Max pool
ing[2*2]表示采用最大池化的方法,池化窗口大小為2*2.這里所有卷積操作滑動步長stride=1,擴充padding=1,所有最大池化操作的滑動步長stride=2,擴充padding=0.
對MNIST數(shù)據(jù)集訓練過程中數(shù)據(jù)輸入批次為100,學習率恒為0.1,訓練集完整迭代10次.CIFAR-10數(shù)據(jù)集初始學習率為0.1,當訓練損失趨于穩(wěn)定不再下降時將學習率變?yōu)?.01,訓練集完整迭代20次.模型訓練結束后,數(shù)據(jù)集的測試過程都使用原始未加噪聲的Softmax進行分類評估.
本小節(jié)主要探究公式(5)中減去正噪聲n=σ|ξ|情況對模型訓練的積極影響,并與不加噪聲n=0情況,減去高斯噪聲n=σξ和減去負噪聲n=?σ|ξ|進行比較.本次對比實驗使用CIFAR-10數(shù)據(jù)集,噪聲系數(shù)選取α=0.01,訓練準確率如圖(5)所示.
圖5 不同噪聲情況下訓練準確率
圖6 不同噪聲情況下對應的損失降低變化
從圖5中可以看出,加入無噪聲和負噪聲情況下訓練準確率很快升到了85%左右,這表明此時出現(xiàn)了過早飽和的現(xiàn)象,而加入負噪聲平均準確率又高于無噪聲情況,表明負噪聲使Softmax的輸入變大,這樣一來使飽和更早出現(xiàn),因此模型訓練收斂很快.但從圖6中可以看出,加入負噪聲時損失值最高,此時更早出現(xiàn)飽和阻礙了SGD產(chǎn)生更寬泛完整的梯度,故而導致最終識別率效果不佳.加入高斯噪聲和無噪聲情況下,訓練準確率是比較接近的,因為高斯噪聲服從正態(tài)分布均值為零.n=σ|ξ|時訓練準確率平均值最低、提升最慢,這表明過早飽和得到了有效延遲,測試錯誤率中可以看出,此時測試錯誤率達到了一個更低的值約7.5%,飽和延遲使SGD產(chǎn)生了更為寬泛的梯度,用于反向傳播同時收斂速度也就相對變慢,因此花費更多的時間將會促使網(wǎng)絡找到全局最小,從而進一步降低測試錯誤率.總之,只有在Softmax中加入正噪聲n=σ|ξ|,才能有效延遲飽和并提高網(wǎng)絡模型的整體性能.
前面提過α是控制噪聲大小的超參數(shù).加入噪聲的Softmax函數(shù),當超參數(shù)取值小到α=0時即噪聲為零,等同于未加噪聲的Softmax函數(shù),隨后使用SGD優(yōu)化將收斂到局部最小時難以逃離,如果沒有額外的訓練數(shù)據(jù),容易導致模型出現(xiàn)過擬合現(xiàn)象.當超參數(shù)取值過大,便會導致噪聲覆蓋掉有用的輸入信息,SGD將完全受噪聲影響進行隨機更新,從而使網(wǎng)絡模型無法收斂.因此,超參數(shù)α應選取一個合適的值更有助于模型的訓練.
表2 不同噪聲系數(shù)對識別準確率的影響
使用MNIST數(shù)據(jù)集來探究α不同取值對模型識別效果的影響,如表2所示.當α=0時,z′yi=zyi相當于未加噪聲.α=0.1時在兩個數(shù)據(jù)集上都達到了最低的錯誤率,相比不加噪聲的原始Softmax的準確率有所提高.當α取到1時,準確率相比不加噪聲情況,出現(xiàn)了降低的現(xiàn)象,這是由于噪聲過大淹沒了部分有用信息,并且收斂時間也會增長.綜上所述,證明了選取合適的超參數(shù)α的值,加入的噪聲將有助于提高SGD探索能力,使模型損失收斂至全局最優(yōu),從而改善DCNN模型的準確率.
使用CIFAR-10數(shù)據(jù)集來探究最佳預訓練方法,首先CIFAR-10數(shù)據(jù)集(5萬張圖片)規(guī)模相比ImageNet(120萬張圖像)算是一個小數(shù)據(jù)集,同時ImageNet的1 000類圖片主要來源于我們的日常生活,包括各種動物、家庭用品、通勤工具等,而CIFAR-10只包括4種通勤工具和6種常見動物,因此兩個數(shù)據(jù)集的相似度較低.所以此情況選取2.2節(jié)中介紹的第四種預訓練方法.
情況1:不使用預訓練模型,模型卷積層和全連接層全部參數(shù)進行隨機初始化.
情況2:凍結前4個卷積層,使它們使用預訓練模型中的參數(shù),其余卷積層和全鏈接層隨機初始化后重新訓練.
情況3:凍結前7個卷積層,然后操作與情況2一樣.
情況4:凍結前10個卷積層,然后操作與情況2一樣.
情況5:凍結前13個卷積層,然后操作與情況2一樣.
圖7 五種預訓練策略準確率走勢
圖8 五種預訓練策略損失變化情況
訓練準確率如圖7所示,可以明顯看出各種情況訓練迭代26個epoch后,未使用預訓練模型參數(shù)的情況5準確率提升緩慢最終只有約47%,而其他幾種情況隨著網(wǎng)絡模型凍結的卷積層減少,準確率在穩(wěn)定提高,當模型中所有卷積層都使用預訓練模型參數(shù),而只去訓練全連接層的參數(shù)時準確率達到了最高約92%.五種策略的損失降低情況如圖8所示,最終準確率結果見表3.
不同預訓練策略的耗時情況如圖9所示,這里統(tǒng)計了除情況1的所有情況在CIFAR-10數(shù)據(jù)集上準確率達到90%時所需要的時間.從圖中可以看出,隨著凍結的卷積層越多,達到相同準確率所需時間越少.而情況1是不采用預訓練模型中的參數(shù)進行重新訓練,實驗經(jīng)過30h后準確率只有約60%,但損失仍有下降趨勢,繼續(xù)訓練依然可以提供效果,但需要更長的時間.因此,實驗充分證明了采用預訓練模型可以在提高分類性能的同時縮短訓練時間.
表3 不同預訓練策略在26次迭代后的準確率
圖9 準確率達到90%所需訓練時間
對比NiN、Maxout、DSN方法在MNIST和CIFAR-10數(shù)據(jù)集上的實驗結果如表4所示.本文在MNIST數(shù)據(jù)集上采用表1中網(wǎng)絡結構,學習率為0.001,噪聲系數(shù)取值0.1,經(jīng)過20次的迭代,本文方法達到了99.67%的準確率.在CIFAR-10數(shù)據(jù)集上同樣采用表2中對應的VGG網(wǎng)絡模型,這里學習率為0.005,噪聲系數(shù)取值0.1,采用情況5對應的預訓練策略,經(jīng)過25次迭代后達到了92.35%的準確率,可以看出本文方法在兩個數(shù)據(jù)集上的實驗效果明顯優(yōu)于其他方法.
表4 兩個數(shù)據(jù)集上不同方法對比
本文通過在Softmax中注入噪聲來延遲飽和,使正向傳播過程產(chǎn)生更為連續(xù)和完整的梯度,從而提高隨機梯度下降法SGD找到網(wǎng)絡全局最小的機會;探究了非負噪聲的必要性、最佳噪聲超參數(shù)取值和不同數(shù)量參數(shù)遷移的影響;最后借助遷移學習概念,利用預訓練模型參數(shù)來代替隨機初始化參數(shù),使準確率提高并有效防止了過擬合問題.在公開數(shù)據(jù)集上的實驗結果表明:本文所提改進方法具有良好的識別性能和較強的泛化能力.
參考文獻:
[1]Ren S,He K,Girshick R,et al.Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks[J].IEEE Transactions on Pattern Analysis&Machine Intelligence,2015,39(6):1137-1149.
[2]ˇSevo I,Avramovi A.Convolutional Neural Network Based Automatic Object Detection on Aerial Images[J].IEEE Geoscience&Remote Sensing Letters,2017,13(5):740-744.
[3]Wen Y,Zhang K,Li Z,et al.A Discriminative Feature Learning Approach for Deep Face Recognition[C].European Conference on Computer Vision,2016:499-515.
[4]Ding C,Tao D.Trunk-Branch Ensemble Convolutional Neural Networks for Video-based Face Recognition[J].IEEE Transactions on Pattern Analysis&Machine Intelligence,2017,5:23157-23165.
[5]Simonyan K,Zisserman A.Very Deep Convolutional Networks for Large-Scale Image Recognition[J].Computer Science,2014,2:361-369.
[6]Shankar S,Robertson D,Ioannou Y,et al.Ref i ning Architectures of Deep Convolutional Neural Networks[C].Computer Vision and Pattern Recognition.IEEE,2016:2212-2220.
[7]Goodfellow I J,Warde-Farley D,Mirza M,et al.Maxout Networks[J].Computer Science,2013,28:1319-1327.
[8]Raymond F E,Raymond B W.Fractional Max-Pooling[J].Theoretical Economics Letters,2015,5(2):225-237.
[9]He K,Zhang X,Ren S,et al.Delving Deep into Rectif i ers:Surpassing Human-Level Performance on ImageNet Classif i cation[C].IEEE International Conference on Computer Vision.IEEE,2016:1026-1034.
[10]Krizhevsky A,Sutskever I,Hinton G E.ImageNet classif i cation with deep convolutional neural networks[C].International Conference on Neural Information Processing Systems.Curran Associates Inc,2012:1097-1105.
[11]Huang G,Liu Z,Weinberger K Q.Densely Connected Convolutional Networks[C].Computer Vision and Pattern Recognition.2016:1364-1376.
[12]Nair V,Hinton G E.Rectif i ed linear units improve restricted boltzmann machines[C].International Conference on Machine Learning Omnipress,2010:807-814.
[13]Gulcehre C,Moczulski M,Denil M,et al.Noisy activation functions[C].International Conference on Machine Learning,JMLR org,2016:3059-3068.
[14]Blundell C,Cornebise J,Kavukcuoglu K,et al.Weight Uncertainty in Neural Networks[J].Computer Science,2015,5:324-332.
[15]Neelakantan A,Vilnis L,Le Q V,et al.Adding Gradient Noise Improves Learning for Very Deep Networks[J].Computer Science,2015,12:117-125.
[16]Lin M,Chen Q,Yan S.Network In Network[J].Computer Science,2013,14:482-490..
[17]Lee C Y,Xie S,Gallagher P,et al.Deeply-Supervised Nets[J].EprintArxiv,2014,6:562-570.