趙志成,羅 澤,王鵬彥,李 健
1(中國科學院 計算機網絡信息中心,北京 100190)
2(中國科學院大學,北京 100049)
3(四川臥龍國家級自然保護區管理局,臥龍 623006)
深度神經網絡的出現,使得圖像分類領域取得了一系列的突破.深度神經網絡可以通過多級表示,學習到更加復雜的高級語義特征.在一個端到端的多層模型中,低、中、高不同級別的特征以及分類器被整合起來,特征的等級隨著通過所堆疊層的數量(深度)逐漸豐富[1–5].2012年,Krizhevsky[6]用5個卷積層和3個全連接層的網絡在ILSVRC競賽上取得了38.1%的Top-1和16.4%的Top-5錯誤率.2014年,VGGNet[7]首次將網絡的深度增加到了19層,在ILSVRC競賽上取得了24.7%的Top-1錯誤率和7.3%的Top-5錯誤率.回顧深度卷積神經網絡在圖像識別領域的發展歷史,可以清楚地發現深度神經網絡的表達能力和提取特征的能力隨著網絡的深度的增加而增加[8,9].
然而,網絡的深度并非越深越好.在一定的深度范圍內,隨著網絡層數的增加,模型可以擬合更加復雜的函數,模型性能也可以得到提升.但是在網絡層數增加到一定的數目之后,繼續增加網絡的層數,訓練精度和測試精度迅速下降.研究人員發現,隨著網絡深度的增加,準確率達到飽和后再增加網絡的深度分類的效果反而越來越差.實驗表明,20層以上的深度網絡,繼續疊加增加網絡的層數,分類的精度反而會降低,50層網絡的測試誤差率大概是20層網絡的一倍[10].這種網絡的退化現象表明了直接增加深度的深度學習系統并不是很容易被優化.
為了解決由于深度增加帶來的網絡退化問題,2015年微軟亞洲研究院的He等人[11]提出了深度殘差網絡(deep residual network).在殘差學習(residual learning)的啟發下,網絡中引入了恒等映射的設計,巧妙的緩解了由于深度增加帶來的梯度爆炸或梯度消失以及網絡退化的問題,提升了信息傳遞路徑的數量,使得網絡的深度可以由幾十層推到千層.深度殘差網絡的出現極大的提高了系統的準確率,使得訓練極深的網絡成為可能,是圖像分類領域具有重要意義的突破性進展.
由于深度殘差網絡的優良特性,它被應用到多個領域,例如人臉識別[12]、目標檢測[13]、行人檢測[14]、語義分割[15]、自然語言處理[16]等,取得了很好的效果.本文將以深度殘差網絡在圖像分類領域的進展為線索,簡要闡述其成功的原因,介紹深度殘差網絡在圖像分類領域的一些研究進展,比較這些不同的網絡在圖像分類數據集上的性能表現,探索未來研究的一些方向.
直接增加網絡的深度,會使得深度學習系統很難被優化.假設我們現在有一個淺層的網絡,那么應該存在一個深層的網絡:它是在由淺層網絡的基礎上堆疊了多個x→x(恒等映射)的映射構成的,那么該深層神經網絡的性能至少應該不會比淺層網絡的性能差.然而實驗卻證明找不到這樣一個我們理想當中的深層神經網絡,這種現象說明通過直接疊加深度的方式來擬合這樣一個x→x恒等映射是非常困難的.
在淺層網絡已經達到了飽和之后,通過在它后面再加上恒等映射層(identity mapping),不僅可以使得網絡的深度增加使得模型有更強的表現能力,而且保證了系統的誤差不會隨著深度增加而增加[11].
假設原始神經網絡的一個殘差單元要學習的目標映射為H(x),這個目標映可能很難學習.殘差神經網絡讓殘差單元不直接學習目標映射,而是學習一個殘差F(x)=H(x)?x.這樣原始的映射變成了F(x)+x.原始殘差單元可以看做是由兩部分構成,一個線性的直接映射x→x和一個非線性映射F(x).特別地,如果x→x是最優的學習策略,那么相當于把非線性映射F(x)的權重參數設置為0.恒等映射使得非線性映射F(x)學習線性的x→x映射變得容易很多.
深度殘差網絡的基本組成單元是殘差單元,殘差單元一般由卷積Conv層,批處理歸一化Batchnorm層和非線性激活函數Relu共同構成.圖1給出了原始殘差單元的示意圖,令第l個殘差單元的輸入為xl,那么下一層的輸出為:

其中,F(xl,Wl)是殘差函數,Wl是該殘差函數對應的權重參數;f(?)是非線性激活函數Relu.

圖1 原始殘差學習單元結構圖
深度殘差網絡由多個殘差學習單元堆疊而成.給定輸入的圖像數據,深度殘差網絡首先將輸入數據依次送入卷積層Conv、非線性激活函數層Relu和批處理歸一化層Batchnorm;然后將處理的結果進一步送入到多個殘差單元,再經過批處理歸一化層BN 和多個全連接層;最后得到輸出結果.
在構建”超深”的網絡比如100層以上的網絡時,將多個原始殘差學習模塊直接堆疊起來會造成參數的爆炸.為了在不損失精度的情況下降低深層網絡的的參數量,He等人[10]提出了一種稱為”瓶頸”(bottleneck)的殘差模塊結構,如圖2.這種瓶頸結構的設計主要目的是為了減少參數量從而減少計算量,使得深度殘差網絡的訓練速度加快.

圖2 Bottleneck結構
在原始殘差單元的基礎上,研究者對于Batchnorm[17](批歸一化)和激活函數Relu的放置位置和組合方式進行了不同的探索.研究發現,殘差單元不同的構造方式對于精度、網絡的收斂以及訓練的速度都有影響.He等[10]在2016年提出了Pre-activation (預激活)的殘差單元,提高了模型的泛化能力,減少了過擬合的影響.Han等[18]在此基礎上,對于殘差單元進行了更多的測試,不同殘差單元的結構圖如圖3所示,不同殘差單元在分類任務下的表現結果如表1所示.

圖3 不同殘差單元結構圖

表1 不同殘差單元錯誤率對比(單位:%)
CIFAR-10和CIFAR-100是圖像分類領域常用的比較性能的數據集.CIFAR-10數據集由來自10個類的60 000個32×32彩色圖像組成,其中每個類包含6000個圖像,有50 000個訓練圖像和10 000個測試圖像[19],如圖4.
CIFAR-100數據集是CIFAR-10的擴展數據集,它包含的類別數更多(100個類別),每個類別中有600張圖像(500張訓練圖像和100張測試圖像).除此之外,CIFAR-100中的100個小類還可以被分成20個大類.數據集中的每個圖像都帶有一個“精細”的類別標簽(它所屬的小類)和一個“粗糙”標簽(它所屬的大類).
在原始深度殘差網絡的啟發下,研究者們從不同的角度出發(例如繼續增加網絡的深度、增加的網絡的寬度、更細化的網絡架構設計、引入注意力機制等等),為了增加模型的表示能力和泛化能力,提高模型提取特征的能力,對于深度殘差網絡進行了不同方向的改進,同時在CIFAR-10,CIFAR-100這兩個圖像分類數據集上進行了性能驗證.

圖4 CIFAR10數據集示例圖[19]
Zhang等人[20]的研究表明,不同于以往不斷的疊加網絡的深度,網絡的寬度作為一個重要的維度也需要被關注.隨著模型深度的加深,在梯度進行反向傳播時,并不能保證能夠流經每一個殘差單元(Residual unit)的權重層,絕大多數的殘差單元只能提供很少的信息,只有少數幾個殘差單元能夠學到有用的表達提取到有用的特征[21,22].這里的“寬度”指的是特征映射的通道數,在卷積層中指的式增加卷積核的個數.Sergey等[23]從增加網絡的“寬度”入手,提出了Wide Residual Netork (WRN),使用一種較淺的但是寬度更寬的模型,來更加有效的提升模型的性能.
寬殘差網絡的實驗結果表明,寬度可以提高特征的復用,能夠帶來網絡表現能力和泛化能力的提升,同樣的參數數量,寬的網絡訓練訓練速度也更快.WRN的具體構造如表2所示,不同深度的網絡在數據集上的表現如表3所示.
Veit等人[24]的實驗證明深度殘差網絡其實可以看做是相對較淺網絡的集合.他們的研究表明,從殘差網絡中刪除一個單獨的殘差單元,即只保留一個恒等映射,不會對整體性能產生明顯的影響,經過不同的實驗證明刪除殘差單元相當于刪除集成的網絡中的一些淺層的網絡.但是在普通網絡如 VggNet 和GoogleNet中,刪除任意一個網絡層都會導致網絡的性能的驟降.

表2 k倍寬殘差網絡具體架構設計

表3 不同配置的寬殘差網絡實驗結果
深度殘差網絡下一般在下采樣殘差單元中將通道數加倍.實驗發現,在深度殘差網絡中分別刪除下采樣功能的殘差單元和非下采樣的殘差單元,刪除下采樣的殘差單元會造成網絡更多的性能下降.為了更好的解決這個問題,Han等人[18]設計了一個“金字塔”殘差網絡(Pyramidal residual Network,PyramidNet).如圖5所示,不同于以往在下采樣單元時網絡突然加倍,該網絡的寬度隨深度的增加而逐漸增加,這種形狀類似于從頂部向下逐漸變寬的金字塔結構.金字塔型殘差網絡具體結構如表4,分類錯誤率對比如表5.

圖5 金字塔型網絡殘差單元

表4 金字塔型殘差網絡具體架構

表5 金字塔型殘差網絡分類錯誤率對比
金字塔殘差網絡的通道數的具體計算公式如式(2),其中k代表第k層,N代表總的層數,Dk代表第k層的通道數,α代表最后一層輸出通道數.

這種網絡設計可以有效的改善過擬合的問題,與其他網絡架構設計相比,它顯示出很好的泛化能力;而且在金字塔型的殘差網絡中,刪除具有下采樣功能的殘差單元不會降低性能.
受到 ResNet 將輸入和輸出相加形成殘差結構的啟發,Huang等人[21]設計出一種將輸出與輸入并聯到一起的網絡架構,實現了每一層都能直接得到之前所有層的輸出的密集型卷積網絡(Densely convolutional Network,DenseNet).該網絡可以有效的緩解梯度消失的問題,增加特征的重用性,并大幅減少參數數量.在這種新型網絡架構中,每層的輸入由所有之前層的特征映射組成,其輸出將傳輸給每個后續層.
在原始的深度殘差網絡中,恒等映射的輸出是通過加法結合起來的.在這種情況下,如果兩個層的特征映射的分布差異性很大的話,這有可能會影響特征的重用同時阻礙信息流的傳播.密集型網絡(DenseNet)(如圖6)通過將特征映射級聯而不是將特征映射直接相加,可以在保留所有特征映射的同時增加輸出的多樣性,促進特征被重用.實驗證明,在相同的參數量下密集型網絡具備更高的參數效率,有更好的收斂效果.表6是不同增長率k下的分類錯誤率.

圖6 密集型網絡結構圖[21]

表6 不同增長率k下分類錯誤率
注意力機制在計算機視覺中也起著重要的作用,注意力機制不止能使得運算聚焦于特定的區域,同時也可以使得該部分區域的特征重要性得到增強.為了在深度殘差網絡中引入注意力的機制,Wang等[22]提出了殘差注意力網絡(Residual Attention Network,RAN).
一個注意力殘差單元如圖7所示,分為兩個分支,右邊的分支就是普通的卷積網絡,即主干分支,叫做Trunk Branch.左邊的分支是為了得到一個掩碼mask,該掩碼的作用是得到輸入特征x的attention map,所以叫做Mask Branch,這個Mask Branch包含down sample和upsample的過程,目的是為了保證和右邊分支的輸出大小一致.
注意單元的計算公式如式(3),其中M(x)為Mask Branch的輸出,F(x)為主分支的輸出.借鑒了ResNet中恒等映射的思想,當掩碼分支M(x)=0時,該層的輸入就等于F(x),所以該層的效果至少不會比原始的F(x)差,殘差單元更容易被優化.同時掩碼分支的設計,使得特征圖可以學習到不同大小的權重值,進而讓主干分支輸出的特征圖中顯著的特征更加顯著,增加了特征的判別性.

圖7 注意力殘差單元結構圖[22]

殘差注意力模型不僅可以提升網絡的性能,還具有很強的擴展性,可以結合到目前的大部分深層網絡中,做到端到端的訓練.因為殘差結構的存在,也可以很容易將網絡擴展到百數層.實驗證明,使用該種策略可以在達到其他大網絡的分類準確率的同時顯著降低計算量(計算量基本上為原始ResNet深層網絡的69%左右),具體的實驗結果如表7所示.

表7 注意力殘差網絡錯誤率對比
深度殘差網絡的由于網絡更深或者更寬,網絡的參數量很大,往往非常容易造成過擬合,模型在訓練集上表現很好,在測試集上卻表現很差.為了解決過擬合的問題,同時受到Dropout思想的啟發,隨機深度殘差網絡(ResDrop)[25]在訓練時使用伯努利隨機變量,隨機使得一部分的殘差單元”失活”,使得網絡不依賴于某個特定的殘差單元,起到一部分正則化的效果.和Dropout類似,在進行測試時使用整個網絡進行預測.
在訓練期間,隨機深度殘差網絡的深度會減小,進而會導致前向傳播和反向傳播的深度變短,所以其訓練時間不會隨著深度殘差網絡的深度而線性地增加.
此外,訓練期間網絡深度的減少會增強前邊層參數的梯度更加有利于梯度的傳播,這將使得1000層以上的隨機深度殘差網絡能夠正常訓練.隨機深度的殘差網絡可以被看做不同深度網絡的集成[24],與恒定深度的深度殘差網絡相比不易過擬合.隨機深度殘差網絡在CIFAR-10和CIFAR-100上分別取得了5.25%和24.98%的錯誤率.
深度殘差網絡一直是圖像分類領域研究的熱點.自從深度殘差網絡被提出以來,研究者們為了提升深度殘差網絡的表征能力和泛化能力,提高在分類任務上的表現,研究出了多個改進的版本[26–28].這些改進或變體可以大體可以分成基于殘差單元的優化改進,基于整體網絡結構的設計的改進、加入attention機制3種.
基于殘差單元的改進主要是通過修改殘差單元的不同層的擺放位置和修改殘差單元的殘差函數.Zhang在殘差單元中加入Dropout[29]層取得了更好的表現,Xie等人[30]引入了一個“基數”的超參數通過增加殘差單元獨立路徑的數量提高了準確率,在此基礎上Gastaldi提出Shake-Shake正則化殘差網絡[31],采用隨機仿射組合替換并行分支的標準求和來提高多分支網絡的泛化能力.
基于整體網絡結構設計的改進的研究是指改變網絡結構的整體框架.通過改進深度殘差網絡的架構使得梯度更加容易傳播,模型的表示能力更強,殘差網絡更容易優化.Zhang等人[32]在原始殘差網絡的基礎上增加了一個層級的快捷連接構建了一個多級網絡,Yamada等人[33]進一步把隨機深度引入到“金字塔”殘差網絡框架中,提出了PyramidSepDrop網絡模型.
將Attention機制引入深度殘差網絡是目前研究的熱點方向之一.Squeeze and excitation networks[34]認為不同的特征映射通道的重要性不同,在他們的壓縮和激勵模塊中,他們使用全局平均池化(Global Average Pooling)來計算通道的注意力(權重值).Woo等人[35]在此基礎上,提出了卷積注意力模塊CBAM (Convolutional Block Attention Module),利用一個有效的結構設計來結合空間(feature map)和通道的注意力,通過將空間注意力和通道注意力結合取得了在不同的數據集上取得了更好的性能.
此外,還有一些研究者將3種方法混合也取得了很好的效果,例如Tan等人[36]通過混合改進在CIFAR-10和CIFAR-100上分別取得了1.1%和8.3%的錯誤率,不同的深度殘差網絡性能表現如表8所示.

表8 深度殘差網絡性能對比
深度殘差網絡的出現,極大的提高了深度學習的表征能力和學習能力,成為圖像分類領域研究的熱點方向.
本文分析了深度殘差網絡和其變體,比較不同模型在常用圖像分類數據集上的性能表現,通過分析可見在圖像分類領域深度殘差網絡已有一定的研究成果.鑒于目前深度殘差網絡和其變體還存在收斂速度慢、訓練時間長、網絡參數冗余、網絡設計復雜、對于數據需求量大依賴人為標注等缺點,未來的研究方向在于:
(1)減少深度殘差網絡的參數,在不損失精度的情況下對于深度殘差網絡進行有效的壓縮.深度殘差網絡由于在寬度和深度上增加了很多,會產生很多的冗余參數,如何在不損失性能的情況下減少深度殘差網絡的參數量從而提高深度殘差網絡的計算性能是個具有現實意義的問題.
(2)在數據量較小的情況下,獲得更好的性能.目前在圖像分類領域深度殘差網絡的精度仍然依賴于數據集樣本的多少,數據增強的策略等.在數據標注不足的情況下,如何獲得相同的性能也是一個值得關注的問題.更少的依賴有監督學習和人類的先驗標注信息,將無監督學習或者強化學習和深度殘差網絡結合值得我們不斷的探索.
(3)增強深度殘差網絡的學習能力和泛化能力.深度殘差網絡的參數量往往很大,模型往往在訓練集上效果效果很好,在測試集上效果很差,如何防止過擬合使得模型可以很好地泛化是一個值得研究的問題.另外,在現有基礎上,改進殘差單元和殘差網絡的結構、引入注意力機制以及混合改進等,使得深度殘差網絡在分類任務上取得更高的準確率是值得深入探索的核心問題.