卷積神經網絡結構優化綜述
?來源:《自動化學報》?,作者林景棟等
摘 要?近年來,卷積神經網絡(Convolutional neural network,CNNs)在計算機視覺、自然語言處理、語音識別等領域取得了突飛猛進的發展,其強大的特征學習能力引起了國內外專家學者廣泛關注.然而,由于深度卷積神經網絡普遍規模龐大、計算度復雜,限制了其在實時要求高和資源受限環境下的應用.對卷積神經網絡的結構進行優化以壓縮并加速現有網絡有助于深度學習在更大范圍的推廣應用,目前已成為深度學習社區的一個研究熱點.本文整理了卷積神經網絡結構優化技術的發展歷史、研究現狀以及典型方法,將這些工作歸納為網絡剪枝與稀疏化、張量分解、知識遷移和精細模塊設計4 個方面并進行了較為全面的探討.最后,本文對當前研究的熱點與難點作了分析和總結,并對網絡結構優化領域未來的發展方向和應用前景進行了展望.
?
關鍵詞?卷積神經網絡,結構優化,網絡剪枝,張量分解,知識遷移
卷積神經網絡(Convolutional neural network,CNNs)作為最重要的深度模型之一,由于具有良好的特征提取能力和泛化能力,在圖像處理、目標跟蹤與檢測、自然語言處理、場景分類、人臉識別、音頻檢索、醫療診斷諸多領域獲得了巨大成功.卷積神經網絡的快速發展一方面得益于計算機性能的大幅提升,使得構建并訓練更大規模的網絡不再受到硬件水平的限制;另一方面得益于大規模標注數據的增長,增強了網絡的泛化能力.以大規模視覺識別競賽(ImageNet large scale visual recognition competition,ILSVRC)的歷屆優秀模型為例,AlexNet[1]?在ILSVRC 2012 上的Top-5識別正確率達到83.6%,隨后幾年卷積神經網絡的性能持續提升[2?4],ResNet-50[5]?在ILSVRC 2015上的Top-5 識別正確率達到96.4%,已經超過人類平均水平.在此之后,卷積神經網絡被進一步應用于其他領域,比如由谷歌DeepMind 公司開發的人工智能圍棋程序AlphaGo 在2016 年戰勝世界圍棋冠軍李世石.
卷積神經網絡的整體架構大體上遵循著一種固定的范式,即網絡前半部分堆疊卷積層,間或插入若干池化層以組成特征提取器,最后連上全連接層作為分類器,構成一個端到端的網絡模型,如圖1 中LeNet-5[6]?所示.卷積神經網絡一般通過增加卷積層數量以增加網絡深度,用這種方式獲得的深度模型在分類任務上有更好的表現[7].從表1 可以看出,卷積神經網絡的性能不斷增長,其在ImageNet 數據集的識別錯誤率不斷降低,同時其時間復雜度和空間復雜度也相應上升.具體地,卷積神經網絡的網絡層數呈持續增加態勢,其訓練參數數量和乘加操作數量也保持在一個較高的水平,例如VGGNet-16 具有高達138 M 參數量,其整體模型規模超過500 M,需要155 億次浮點數操作才能對一張圖片進行分類.
深度卷積神經網絡通常都包含有幾十甚至上百卷積層,訓練參數量動輒上百萬,在GPU 加速支持下仍然需要花費幾天或幾周時間才能完成訓練(如ResNet 需用8 個GPU 訓練2?~3 周時間),制約了其在移動設備、嵌入式系統等資源受限場景下的應用.如表1 所示,過去由于卷積層在網絡訓練階段和預測階段的前向推導過程中涉及大量的浮點數計算操作,而全連接層的神經元之間采用全連接方式,擁有絕大多數訓練參數,所以卷積神經網絡的時間復雜度主要由卷積層決定,空間復雜度主要由全連接層決定.隨著卷積神經網絡逐漸向更深層次發展,卷積層數量急劇增加,在前向推導過程中產生的中間變量會占用大量內存空間,此時卷積層同時決定了網絡的時間復雜度和空間復雜度.因此,降低卷積層和全連接層的復雜度有助于優化卷積神經網絡的結構,對于網絡的壓縮與加速也有重要的促進作用.
針對網絡結構優化的相關研究在90 年代已被提出[8?9],然而由于當時神經網絡大多屬于淺層網絡,對于結構優化的需求尚不強烈,因此未能引起廣泛關注.如今卷積神經網絡的規模日益龐大,而大量應用場景都無法提供相應的必需資源,因此探討在保證網絡精度的前提下壓縮并加速模型是網絡結構優化領域的前沿熱點.隨著對卷積神經網絡結構優化研究的逐漸深入,大量成果不斷涌現,一些學者對這一領域的相關工作進行了歸納與總結,如文獻[10]重點討論了模型壓縮與加速各種方法的優缺點,文獻[11]從硬件和軟件兩方面整理了網絡加速的研究進展,文獻[12]簡要介紹了深度網絡壓縮的典型方法.本文在這些工作的基礎上,結合最新研究進展和成果,全面地梳理與總結了卷積神經網絡結構優化方面的研究工作.其中第1 節到第4 節分別從網絡剪枝與稀疏化、張量分解、知識遷移和精細化結構設計4 個方面歸納了相關研究思想和方法,第5 節綜合卷積神經網絡結構優化領域的研究現狀,對其未來研究趨勢和應用方向進行了展望.
圖1 LeNet-5 網絡結構[6]
Fig.1 Structure of LeNet-5[6]
表1 經典卷積神經網絡的性能及相關參數
Table 1 Classic convolutional neural networks and corresponding parameters
1 網絡剪枝與稀疏化
文獻[13]的研究表明,卷積神經網絡從卷積層到全連接層存在大量的冗余參數,大多數神經元被激活后的輸出值趨近于0,即使將這些神經元剔除也能夠表達出模型特征,這種現象被稱為過參數化.例如ResNet-50 擁有50 層卷積層,整個模型需要95 MB 存儲空間,在剔除75% 的參數后仍然正常工作,而且運行時間降低多達50%[14].因此,在網絡訓練過程中可以尋求一種評判機制,剔除掉不重要的連接、節點甚至卷積核,以達到精簡網絡結構的目的.網絡結構精簡的一個具體表現是網絡的稀疏化,這給模型訓練帶來了三點好處:首先是由于網絡參數的減少,有效緩解了過擬合現象的發生[15];其次,稀疏網絡在以CSR (Compressed sparse row format,CSR)和CSC(Compressed sparse column format)等稀疏矩陣存儲格式存儲于計算機中可大幅降低內存開銷;最后,訓練參數的減少使得網絡訓練階段和預測階段花費時間更少.由于網絡剪枝具有易于實施且效果顯著的優點,目前已成為模型壓縮與加速領域最重要的結構優化技術.
根據卷積神經網絡訓練階段的不同,網絡剪枝與稀疏化方法主要包含訓練中稀疏約束與訓練后剪枝兩個大類[16].對于前者,通過在優化函數添加稀疏性約束,誘導網絡結構趨于稀疏,這種端到端的處理方法不需要預先訓練好模型,簡化了網絡的優化過程.對于后者,通過剔除網絡中相對冗余、不重要的部分,同樣可以使得網絡稀疏化、精簡化.事實上,無論是在訓練中引入稀疏約束還是訓練后剪枝網絡,最終目的都是使網絡的權重矩陣變得稀疏,這也是加速網絡訓練、防止網絡過擬合的重要方式.
對于網絡損失函數中的稀疏約束,主要是通過引入l0或l1正則化項實現的.假設訓練數據集D包含N?個數據對(x1,y1),(x2,y2),···,(xN,yN),訓練參數為θ,則網絡訓練的目標優化函數一般表示為:
其中,
,p=0,1.優化函數的第一項是經驗風險,第二項是正則化項,帶有正則化約束的優化函數在反向傳播時驅使不重要權重的數值變為零,使得訓練后的網絡具有一定的稀疏性和較好的泛化性能.Collins 等[17]?在參數空間中通過貪婪搜索決定需要稀疏化的隱含層,能夠大幅減少網絡中的權重連接,使模型的存儲需求降低了3 倍,并且克服了OBS 與OBD 處理大型網絡面臨的精度下降問題.Jin 等[18]?提出的迭代硬閾值(Iterative hard thresholding,IHT)方法分兩步對網絡進行剪枝,在第一步中剔除隱含節點間權值較小的連接,然后微調(Fine-tune)其他重要的卷積核,在第二步中激活斷掉的連接,重新訓練整個網絡以獲取更有用的特征.相比于傳統方式訓練的網絡,通過IHT 訓練的網絡具有更加優越的泛化能力和極低的內存大小.Zeiler 等[19]?利用前向–后向切分法(Forwardbackward splitting method)處理帶有稀疏約束的損失函數,避免了在反向傳播中需要求取二階導數等計算復雜度較高的運算,加快了網絡訓練速度.Wen 等[20]?認為網絡結構從卷積核到卷積通道都充斥著冗余無用的信息,他們提出的結構化稀疏學習(Structured sparsity learning,SSL)直接學習到的硬件友好型稀疏網絡不僅具有更加緊湊的結構,而且運行速度可提升3 倍至5 倍.Lebedv 等[21]?以分組形式剪枝卷積核輸入,以數據驅動的方式獲取最優感受野(Receptive field),在AlexNet 中獲得8.5倍的速度提升而損失精度不到1%.Louizos 等[22]利用一系列優化措施將不可微分的l0范數正則項加入到目標函數,學習到的稀疏網絡不僅具有良好的泛化性能,而且極大加速了模型訓練和推導過程.
Dropout 作為一種強有力的網絡優化方法,可被視為特殊的正則化方法,被廣泛用于防止網絡訓練過擬合[23?24].Dropout 在每次訓練時隨機使一半神經元暫時失活,相當于在一定時間內訓練了多個不同網絡并將其組合,避免了復雜的共適應現象(Co-adaptation)發生,在圖像分類、語音識別、文件分類和生物計算等任務都有較好表現.然而,由于Dropout 在每次訓練時都會嘗試訓練不同的網絡,這將導致訓練時間的大幅延長.因此,目前也有一些工作針對Dropout 的加速展開研究,如Li 等[25]提出的自適應Dropout 根據特征和神經元的分布使用不同的多項式采樣方式,其收斂速度相對于標準Dropout 提高50%.
訓練后網絡剪枝是從已有模型著手,消除網絡中的冗余信息,這避免了重新訓練網絡帶來的高昂資源花費.根據剪枝粒度的不同,目前主要有層間剪枝、特征圖剪枝、k×k?核剪枝與核內剪枝4 種方式[26],如圖2 所示.層間剪枝一個直接的后果就是減少了網絡的深度,而特征圖剪枝則減少了網絡的寬度.這兩種粗粒度的剪枝方法在減少網絡參數方面效果明顯,但面臨網絡性能下降嚴重的問題.k×k核剪枝與核內剪枝兩種細粒度方法在參數量與模型性能之間取得了一定的平衡,但提高了方法的復雜度.
圖2 四種剪枝粒度方式[26]
Fig.2 Four pruning granularities[26]
事實上,網絡剪枝方法在深度學習流行起來就已被提出,其早在上世紀九十年代即被廣泛用于網絡的優化問題.Hanson 等[27]在誤差函數中引入權重衰減項使網絡趨于稀疏,即減少隱含節點數目以降低網絡復雜度.LeCun 等[8]?提出的最優腦損傷(Optimal brain damage,OBD)通過移除網絡中不重要的連接,在網絡復雜度和訓練誤差之間達到一種最優平衡狀態,極大加快了網絡的訓練過程.Hassibi 等[9]?提出的最優腦手術(Optimal brain surgeon,OBS)與OBD 的最大不同在于損失函數中的Hessian 矩陣沒有約束,這使得OBS 在其他網絡中具有比OBD 更普遍的泛化能力.盡管OBD與OBS 最初取得了較好效果,但由于其損失函數中需要求取二階導數,在處理大型復雜網絡結構時計算量巨大,且面臨著網絡精度損失嚴重的問題,因此探索適合于深度卷積神經網絡的網絡剪枝與稀疏化方法對于網絡結構優化具有重要的研究價值.
網絡剪枝方法使得精簡后的小型網絡繼承了原始網絡的有用知識,與此同時具有與其相當的性能表現,目前已取得一系列卓有成效的成果.Han等[28]?提出的深度壓縮(Deep compression)綜合應用了剪枝、量化、編碼等方法,在不影響精度的前提下可壓縮網絡35?~49 倍,使得深度卷積網絡移植到移動設備上成為可能.Srinivas 等[29]?針對全連接層的神經元而非網絡連接進行剪枝操作,提出的方法擺脫了對于訓練數據的依賴,由于避免了多次重復訓練,極大降低了計算資源需求和花費時間.Guo 等[30]?認為參數的重要性會隨著網絡訓練開始而不斷變化,因此恢復被剪枝的重要連接對于改善網絡性能具有重要作用.他們提出的動態網絡手術(Dynamic network surgery)在剪枝過程中添加了修復操作,當已被剪枝的網絡連接變得重要時可使其重新激活,這兩個操作在每次訓練后交替進行,極大改善了網絡學習效率.Liu 等[31]?針對Winograd最小濾波算法與網絡剪枝方法無法直接組合應用的問題,提出首先將ReLU 激活函數移至Winograd域,然后對Winograd 變換之后的權重進行剪枝,在CIFAR-10、CIFAR-100 和ImageNet 數據集上的乘法操作數分別降低了10.4 倍、6.8 倍和10.8 倍.
近年來針對更高層級的網絡結構剪枝方法層出不窮,有力推動了模型壓縮與加速的發展,對于卷積神經網絡的結構優化也有重要的促進作用.He等[32]?基于LASSO 正則化剔除冗余卷積核與其對應的特征圖,然后重構剩余網絡,對于多分支網絡也有很好的效果.Li 等[33]?發現基于重要度(Magnitudebased)的剪枝方法盡管在全連接層可以取得較好效果,但是對于卷積層就無能無力了.他們直接去除對于輸出精度影響較小的卷積核以及對應的特征圖,以一種非稀疏化連接的方式降低了百分之三十的計算復雜度.Anwar 等[26]?按照粒度大小將剪枝方法劃分為層級剪枝、特征圖剪枝、卷積核剪枝、卷積核內部剪枝4 個層級,結合特征圖剪枝與卷積核剪枝提出的一次性(One-shot)優化方法可獲得60%~70% 的稀疏度.同樣是針對卷積核剪枝,Luo 等[34]?提出的ThiNet 在訓練和預測階段同時壓縮并加速卷積神經網絡,從下一卷積層而非當前卷積層的概率信息獲取卷積核的重要程度,并決定是否剪枝當前卷積核,對于緊湊型網絡也有不錯的壓縮效果.表2 比較了不同網絡剪枝方法對于卷積神經網絡的壓縮效果,可以發現這些方法能夠大幅減少訓練參數而不會顯著影響網絡精度,表明網絡剪枝與稀疏化是一種強有力的網絡結構優化方法.
2 張量分解
由于卷積神經網絡規模逐漸向更深、更大層次發展,卷積操作過程中所需計算資源以及每次卷積后所需存儲資源已成為制約模型小型化、快速化的瓶頸.比如說,ResNet-152 網絡來自于卷積層的參數數量為全部參數的92%,而來自于卷積層的計算量占到總計算量的97%.已有研究結果表明[35],卷積神經網絡僅需很少一部分參數即可準確地預測結果,這說明卷積核中存在大量的冗余信息.張量分解對于去除冗余信息、加速卷積計算是一種極為有效的方法,可以有效壓縮網絡規模并提升網絡運行速度,有益于深度神經網絡在移動嵌入式環境下的高效運行.
表2 網絡剪枝對不同網絡的壓縮效果
Table 2 Comparison of different pruned networks
一般來說,向量稱為一維張量,矩陣稱為二維張量,而卷積神經網絡中的卷積核可以被視為四維張量,表示為K∈Rd×d×I×O,其中,I,d,O?分別表示輸入通道,卷積核尺寸和輸出通道.張量分解的思想即是將原始張量分解為若干低秩張量,有助于減少卷積操作數量,加速網絡運行過程.前常見的張量分解方法有CP 分解、Tucker 分解等,Tucker 分解可將卷積核分解為一個核張量與若干因子矩陣,是一種高階的主成分分析方法,其表達形式為:
其中,K∈Rd×d×I×O?為分解后的核張量,U1∈Rd×r1、U2∈Rd×r2、U3∈RI×r3、U4∈RO×r4?為因子矩陣.CP 分解的表達形式為:
其中,K1∈Rd×r、K2∈Rd×r、K3∈RI×r、K4∈RO×r.CP 分解屬于Tucker 分解的一種特殊形式,其分解過程更為簡單,然而分解矩陣的秩r?的選取是一個NP 難問題,并且可能涉及到分解穩定性問題.值得注意的是,由于全連接層也可以視為二維張量,因此可利用矩陣奇異值分解(Singular value decomposition,SVD)去除全連接層的冗余信息,分解表達式為:
其中,W∈Rm×n?為待分解張量,U∈Rm×m?和V∈Rn×n?是正交矩陣,S∈Rm×n?是對角矩陣.圖3 展示了將一個W∈Rd×d×I×O?張量分解為一個P∈RO×K?張量和一個
∈RK×d×d×I?張量的過程.圖3(a)中W?為原始張量,復雜度為O(d2IO);圖3(b)中P?和
為分解后張量,復雜度為O(OK)+O(d2KI).對于大多數網絡有O(OK)
O(d2KI),所以分解后復雜度為原來的O/K,并且K?值越小,壓縮效果越明顯.
利用張量分解以加速卷積過程已有很長的一段時間,最典型的例子就是將高維離散余弦變換(Discrete cosine transform,DCT)分解為一系列一維DCT 變換相乘,以及將小波系統分解為一系列一維小波的乘積[10].Rigamonti 等[36]?基于字典學習的思想,提出的分離卷積核學習方法(Learning separable filters)能夠將原始卷積核用低秩卷積核表示,減少所需卷積核數量以降低計算負擔.同時,作者認為在構建網絡時不用再精心設計卷積核結構,只需通過分離卷積核學習就可以得到最優的卷積核組合.Jaderberg 等[37]?提出了一種逐層分解方法,每當一個卷積核被分解為若干一階張量,則固定此卷積核并基于一種重構誤差標準以微調其余卷積核,研究結果表明在場景文本識別中可加速網絡4.5 倍而準確度僅降低1%.Denton 等[38]?認為卷積神經網絡的絕大部分冗余參數都位于全連接層,因此主要針對全連接層展開奇異值分解,分解后的網絡網絡參數最多減少13 倍,同時其運行速度可提升2?~3 倍.Lebedev 等[39]?提出了基于CP 分解的卷積核張量分解方法,通過非線性最小二乘法將卷積核分解為4個一階卷積核張量.對于36 類的ILSVRC 分類實驗,該方法在CPU 上可獲得8.5 倍加速,實驗結果同時表明張量分解具有正則化效果.Tai 等[40]?提出了一種帶有低秩約束的張量分解新算法,將非凸優化的張量分解轉化為凸優化問題,與同類方法相比提速明顯.
圖3 張量分解過程
Fig.3 Process of tensor factorization
以上基于張量分解的方法雖然能夠取得一定效果,然而它們僅僅壓縮與加速一層或幾層網絡,欠缺對于網絡整體的考量.Zhang 等[41]?提出了一種非對稱張量分解方法以加速整體網絡運行,例如一個D×D?卷積核可被分解為1×D、D×1 和1×1等張量.此外,文獻[41]還提出了基于PCA 累積能量的低秩選擇方法和具有非線性的重構誤差優化方法,在ImagNet 上訓練的大型網絡可被整體加速4倍.與文獻[41]不同,Kim 等[42]?提出了基于變分貝葉斯的低秩選擇方法和基于Tucker 張量分解的整體壓縮方法.由于模型尺寸、運行時間和能量消耗都大幅降低,使用該方法壓縮的網絡可以移植到移動設備上運行.Wang 等[43]?認為網絡壓縮不能僅僅考慮卷積核,同時要考慮卷積核在網絡運行過程中映射的巨量特征圖.文獻[43]利用循環矩陣剔除特征圖中的冗余信息,獲取特征圖中最本質的特征,進一步重構卷積核以匹配壓縮后的特征圖.實驗結果表明文獻[43]中的方法盡管只有很少參數,但具有與原始網絡相當的性能.Astrid 等[44]?提出了一種基于優化CP 分解全部卷積層的網絡壓縮方法,在每次分解單層網絡后都微調整個網絡,克服了由于CP分解不穩定引起的網絡精度下降問題.
張量分解對于深度網絡的壓縮與加速具有直接作用,可以作為網絡結構優化設計方法的重要補充.然而目前大多數的張量分解方法都是逐層分解網絡,缺乏整體性的考慮,有可能導致不同隱含層之間的信息損失.此外,由于涉及到矩陣分解操作,會造成網絡訓練過程的計算資源花費高昂.最后,由于每次張量分解過后都需要重新訓練網絡至收斂,這進一步加劇了網絡訓練的復雜度.
3 知識遷移
知識遷移是屬于遷移學習的一種網絡結構優化方法,即將教師網絡(Teacher networks)的相關領域知識遷移到學生網絡(Student networks)以指導學生網絡的訓練,完成網絡的壓縮與加速.一般地,教師網絡往往是單個復雜網絡或者是若干網絡的集合,擁有良好的性能和泛化能力,而學生網絡則具有更小的網絡規模,還未獲得充分的訓練.考慮利用教師網絡本身的知識或通過教師網絡學習到的知識去指導學生網絡訓練,使得學生網絡具有與教師網絡相當的性能,但是參數數量大幅降低,同樣可以實現網絡壓縮與加速的效果.
知識遷移主要由教師網絡獲取和學生網絡訓練兩部分內容構成,在教師網絡獲取中,由于教師網絡規模較大,需要用大量標簽數據對其進行訓練以獲得較高的預測準確率.在學生網絡訓練過程中,首先將未標簽數據輸入教師網絡進行預測,然后將預測到的結果與輸入數據人工合成為標簽數據,最后將這些人工合成的標簽數據作為領域知識以指導學生網絡的訓練.由于學生網絡規模較小,因此只需少量的標簽數據即可完成訓練.知識遷移的整體流程如圖4 所示.
圖4 知識遷移過程
Fig.4 Process of knowledge transfer
Bucila 等[45]?首先提出了基于知識遷移的模型壓縮方法,通過人工合成數據訓練學生網絡以完成壓縮與加速.其具體步驟為首先將大型無標簽數據集輸入教師網絡以獲得相應的標簽,獲得人工合成的標簽數據,然后在人工標簽數據集上訓練學生網絡,實驗結果表明學生網絡尺寸減少了1 000 倍,同時運行速度提升了1 000 倍.最初由大型復雜網絡獲得的知識可根據softmax 函數計算的類別概率標簽來表示,相比于one-hot 標簽,類別概率標簽包含了訓練樣本中的相關近似程度,可以更加有效地訓練學生網絡.然而類別概率標簽的大多數概率值在通過softmax 函數后都趨近于0,損失了大量有效信息.Ba 等[46]?提出利用logits (通過softmax 函數前的輸入值,均值為0)來表示學習到的知識,揭露了標簽之間的相對關系和樣本之間的近似度.與文獻[45]類似,Ba 等[46]?將教師網絡獲得數據集的logits標簽作為知識指導學生網絡的訓練,在TIMIT 和CIFAR-10 數據庫上都能夠達到與深度網絡相當的識別精度.Hinton 等[47]?認為類別概率標簽和logits 標簽都是softmax 層的極端輸出,其中T?分別為1 和正無窮.他們提出的知識精餾(Knowledge distilling,KD)采用合適的T?值,可以產生一個類別概率分布較緩和的輸出(稱為軟概率標簽(Soft probability labels)).軟概率標簽揭示了數據結構間的相似性,包含大量的有用信息,可利用軟概率標簽訓練學生網絡以模擬復雜的網絡集合.Romero等[48]?提出的FitNet 不僅利用了教師網絡的輸出,同時也將教師網絡的隱含層輸出作為知識遷移到學生網絡中.通過這種方式訓練的學生網絡相比于教師網絡更深更窄,因此具有更好的非線性變換能力.
與之前基于類別概率標簽的知識遷移不同,Luo等[49]?利用教師網絡的高層神經元輸出來表示需要遷移的領域知識.這種方式不會損失任何信息,但是學生網絡可以獲得更高的壓縮率.Chen 等[50]?基于函數保留變換(Function-preserving transformation)提出的Net2Net 是加速知識遷移流程的有效工具,可以快速地將教師網絡的有用信息遷移到更深(或更寬)的學生網絡.Zagoruyko 等[51]?借鑒知識精餾的思想,提出了一種基于注意力的知識遷移方法.他們使用教師網絡中能夠提供視覺相關位置信息的注意力特征圖來監督學生網絡的學習,并且從低、中、高三個層次進行注意力遷移,極大改善了殘差網絡等深度卷積神經網絡的性能.Lucas 等[52]提出了一種結合Fisher 剪枝與知識遷移的優化方法,首先利用預訓練的高性能網絡生成大量顯著性圖作為領域知識,然后利用顯著性圖訓練網絡并利用Fisher 剪枝方法剔除冗余的特征圖,在圖像顯著度預測中可加速網絡運行多達10 倍.Yim 等[53]?將教師網絡隱含層之間的內積矩陣作為領域知識,不僅能更快更好地指導學生網絡的訓練,而且在與教師網絡不同的任務中也能獲得較好效果.Chen 等[54]結合文獻[47?48]的相關方法,首次提出了基于知識遷移的端到端的多目標檢測框架,解決了目標檢測任務中存在的欠擬合問題,在精度與速度方面都有較大改善.
知識遷移方法能夠直接加速網絡運行而不需要較高硬件要求,大幅降低了學生網絡學習到不重要信息的比例,是一種有效的網絡結構優化方法.然而知識遷移需要研究者確定學生網絡的具體結構,對研究者的水平提出了較高的要求.此外,目前的知識遷移方法僅僅將網絡輸出概率值作為一種領域知識進行遷移,沒有考慮到教師網絡結構對學生網絡結構的影響.提取教師網絡的內部結構知識(如神經元)并指導學生網絡的訓練,有可能使學生網絡獲得更高的性能.
4 精細模塊設計
網絡剪枝與稀疏化、張量分解、知識遷移等方法都是在已有高性能模型基礎上,保證模型性能的前提下降低時間復雜度和空間復雜度.目前還有一些工作專注于設計高效的精細模塊,同樣可以實現優化網絡結構的目的.基于這些精細模塊構造的網絡具有運行速度快、占用內存少、能耗低下的優點,此外,由于采用模塊化的網絡結構優化方法,網絡的設計與構造流程大幅縮短.目前具有代表性的精細模塊有Inception 模塊、網中網和殘差模塊,本節對其進行了詳盡討論與分析.
4.1 Inception 模塊
對于如何設計性能更好的卷積神經網絡,目前的主流觀點是通過增加網絡深度與寬度來擴大模型的規模.但是這會帶來兩個無法避免的問題:1)隨著網絡尺寸的增加,網絡的訓練參數也會大幅增加,這在訓練數據不足時不可避免地會帶來過擬合問題;2)網絡尺寸和訓練參數的增加使得網絡模型占用計算資源和內存資源過高的問題加劇,將會導致訓練速度降低,難以應用于實際工程問題.
為解決以上問題,Szegedy 等[4]?從網中網(Network in network,NiN)[55]?中得到啟發,提出了如圖5 所示的Inception-v1 網絡結構.與傳統卷積神經網絡采用11×11、9×9 等大尺寸卷積核不同,Inception-v1 大量并行使用5×5、3×3 卷積核,有效提升了網絡的寬度,并引入1×1 卷積核為獲取到的特征降維.Inception-v1 結構在增加卷積神經網絡深度和寬度的同時,并沒有增加額外的訓練參數.此外,將不同尺寸的卷積核并行連接能夠增加特征提取的多樣性,而引入的1×1 卷積核則加速了網絡運行過程.
Ioffe 等[56]?認為,卷積神經網絡在訓練時每層網絡的輸入分布都會發生改變,這將會導致模型訓練速度降低.因此,他們在Inception-v1 的基礎上提出了Inception-v2 結構,引入了批標準化(Batch normalization,BN).批標準化一般用于激活函數之前,其最重要的作用是解決反向傳播中的梯度問題(包括梯度消失和梯度爆炸).此外,批標準化不僅允許使用更大的學習速率,而且還簡化了網絡參數的初始化過程,將人們從繁重的調參工作中解放出來.最后,由于批標準化具有正則化效果,在某些情況下還可以減少對Dropout 的需求.
圖5 Inception-v1 結構[4]
Fig.5 Inception-v1 module[4]
為進一步增加網絡深度,Szegedy 等[57]?提出的Inception-v3 網絡借鑒了VGGNet 的卷積核分解思想,除了將7×7、5×5 等較大的卷積核分解為若干連續的3×3 卷積核,還將n×n?卷積核非對稱分解為1×n?和n×1 兩個連續卷積核(當n=7 時,效果最好).Inception-v3 還引入輔助分類器(Auxiliary classifiers)以加速卷積神經網絡訓練的收斂過程,支持了Inception-v2 中的批標準化具有正則化作用的觀點.通過卷積核分解,Inception-v3 不僅能夠提升網絡的深度和寬度,而且有效降低了時間復雜度和空間復雜度.此外,Inception-v3 加速訓練過程并減輕了過擬合,同時還強化了網絡對不同維度特征的適應能力和非線性表達能力.圖6(a)展示了將一個5×5 的卷積核分解為兩個連續3×3 的卷積核后的計算過程,由于一個5×5 卷積核有5×5=25 個參數,而兩個3×3 卷積核只有3×3+3×3=18 個參數,因此參數量降低了28% 而卷積效果相同;圖6(b)展示了將一個3×3 卷積核分解為一個1×3卷積核和一個3×1 卷積核后的計算過程,一個3×3卷積核有3×3=9 個參數,而兩個分解后卷積核有1×3+3×1=6 個參數,參數量降低了33% 而卷積效果相同.
Szegedy 等[58]?將Inception 結構與殘差結構相結合,發現了殘差結構可以極大地加快網絡的訓練速度,提出的Inception-Resnet-v1 和Inception-Resnet-v2 模型在ImageNet 數據集上的Top-5錯誤率分別降低到4.3% 和3.7%.他們還提出了Stem、Inception-A、Inception-B、Inception-C、Reduction-A、Reduction-B 等一系列網絡局部結構,并以此構造出Inception-v4 網絡模型,極大地增加了網絡深度,提高了網絡性能,同時保證了網絡訓練參數數量處于可接受的范圍之內.
Chollet 等[59]?認為傳統的卷積過程同時從二維空間與一維通道進行三維的特征提取,而Inceptionv3 部分地將空間操作與通道操作分離開,使得訓練過程更加容易且有效率.從Inception-v3 中得到啟發,Chollet 認為卷積神經網絡中特征圖的空間維度與通道維度的關聯性可以被完全解耦,基于此他們提出了一種區別于一般卷積(Regular convolution)的Xception(Extremely inception)模塊,并以此構造出Xception 網絡結構.Xception 模塊如圖7 所示,首先用卷積核對輸入特征圖進行卷積操作,對于輸出特征圖的每個通道都用一個卷積核進行卷積操作,最后將所有輸出拼接起來得到新的特征圖.Xception 網絡的訓練參數比Inception-v3 網絡更少,但具有與Inception-v3 網絡相當的識別精度和訓練速度,而且在更大的數據集上性能更加優越.
圖6 卷積核分解示意圖[57]
Fig.6 Process of convolutional filter factorization[57]
圖7 Xception 模塊[59]
Fig.7 Xception module[59]
Inception 結構從Inception-v1 發展到Xception,始終致力于增加卷積神經網絡的尺寸(包括深度和寬度)以提升模型的非線性表達能力.為了避免訓練參數增加而帶來的模型訓練速度降低、易過擬合等問題,Inception 結構提出了批標準化、卷積核分解等方法來優化更深層次的網絡結構,使得加深后的網絡參數量相比于原始網絡不變甚至更少,訓練出來的網絡模型在各種測試數據集上都取得了領先成績.Inception 的成功也進一步證明了增加網絡尺寸是提升網絡性能的可靠方式,這也是卷積神經網絡未來的一種發展方向.
4.2 網中網(Network in network)
傳統卷積神經網絡的卷積核作為一種廣義線性模型(Generalized linear model,GLM),在訓練樣本的潛在特征是線性可分時能夠獲取表達能力較強的高維抽象特征.但在很多任務場景下,獲取到的樣本特征是具有較強非線性的,使用傳統的卷積核不能有效地提取更接近本質的抽象特征.Lin等[55]?提出了一種區別于廣義線性模型的非線性結構—Mlpconv,即在卷積核后面添加一個多層感知機(Multilayer perceptron,MLP).由于多層感知機能夠擬合任何函數,因此Mlpconv 結構增強了網絡對局部感知野的特征辨識能力和非線性表達能力.通過堆疊Mlpconv 層構建出的網絡被形象地稱為網中網(Network in network,NiN),如圖8 所示.
網中網不僅用Mlpconv 結構替代廣義線性模型以處理更為復雜的非線性問題,并且用全局均值池化代替全連接層以減少訓練參數,避免了訓練過程中出現過擬合問題.值得注意的是,Mlpconv 層中的全連接層可以被視為一個1×1 卷積核,后來被廣泛應用于包括Inception 在內的各種網絡中的1×1 卷積核都受到了網中網的啟發.在此基礎上,涌現出了大量針對網中網結構的改進措施.Chang等[60]?認為Mlpconv 層中的ReLU 激活函數會帶來梯度消失的問題,因此提出用Maxout 替代ReLU以解決這一問題,并將這一網絡結構稱為Maxout network in network (MIN).Pang 等[61]?認為由于MLP 本身也包含全連接網絡,這不可避免地會使得訓練參數大幅增加,因此提出用稀疏連接的MLP代替原來的MLP,并且在通道維度上使用分離卷積(Unshared convolution)而在空間維度上使用共享卷積(Shared convolution),這種網絡結構被稱為卷積中的卷積(Convolution in convolution,CiC).Han 等[62]提出的MPNIN (Mlpconv-wise supervised pre-training network in network)通過監督式預處理方法初始化網絡模型的各層訓練參數,并結合批標準化與網中網結構能夠訓練更深層次的卷積神經網絡.
圖8 線性卷積結構與多層感知機卷積結構[55]
Fig.8 Linear convolutional structure and Mlpconv structure[55]
網中網結構一經提出就受到了廣泛的關注和研究,包括GoogLeNet、ResNet 在內的眾多卷積神經網絡都借鑒了這一結構.與傳統GLM 卷積核相比,網中網的Mlpconv 層可以實現跨通道的特征交互與整合,由此發展而來的1×1 卷積核還能實現特征降維與升維的功能,使得網絡模型既能夠提取更加抽象的特征以解決復雜的非線性問題,還可以訓練更深層的網絡而保持訓練參數處于可接受范圍.值得注意的是,由于Mlpconv 結構引入了額外的多層感知機,有可能會導致網絡運行速度降低,對此進行改善將會是未來研究的一個方向.
4.3 殘差模塊
隨著卷積神經網絡逐漸向更深層次發展,網絡將面臨退化問題而不是過擬合問題,具體表現在網絡性能不再隨著深度的增加而提升,甚至在網絡深度進一步增加的情況下性能反而快速下降,此時引入一種稱為旁路連接的(Bypassing connection)結構優化技術可有效解決這一問題.Srivastava 等[63]從長短時記憶模型[64]?(Long short-term memory,LSTM)中得到啟發,引入可學習門限機制(Learned gating mechanism)以調節網絡中的信息傳播路徑,允許數據跨越多層網絡進行傳播,這一模型被形象地稱為高速網絡(Highway network).旁路連接使得反向傳播中的梯度能夠跨越一層或多層傳播,而不至于在逐層運算中擴散甚至消失,在使用隨機梯度下降法(Stochastic gradient descent,SGD)訓練模型時避免了在平層網絡(Plain network)中易出現的梯度消失現象.旁路連接的引入,突破了深度在達到40 層時網絡將面臨退化問題的限制,進一步促進了網絡深度的增加[65].
He 等[5]?提出的殘差網絡(Residual network,ResNet)與Highway network 類似,也是允許輸入信息可以跨越多個隱含層傳播.區別在于殘差網絡的門限機制不再是可學習的,也即始終保持信息暢通狀態,這極大地降低了網絡復雜度,加速了網絡訓練過程,同時突破了由網絡退化引起的深度限制.殘差模塊如圖9 所示,殘差模塊的輸入定義為X,輸出定義為H(X)=?F(X)+X,殘差定義為F(X),在訓練過程中網絡學習殘差F(X),這比直接學習輸出H(X)更加容易.
圖9 殘差模塊[5]
Fig.9 Residual module[5]
殘差網絡的提出標志著卷積神經網絡發展到了一個新階段,之后又有大量研究針對殘差結構進行改進.Huang 等[66]?利用隨機深度法(Stochastic depth)在訓練過程中隨機地剔除,某些隱含層并用殘差結構連接剩余部分,訓練出一個1 202 層的極深殘差網絡,同時表明原始的殘差網絡含有大量的冗余結構.He 等[67]?發現前置激活函數(Preactivation)不僅使得模型優化更加容易,而且,在一定程度上緩解了過擬合.作者以此訓練了一個1 001層的殘差網絡,在CIFAR-10 數據集上的錯誤率降至4.62%.Larsson 等[65]?提出的分形網絡(Fractal-Net)在寬度和深度上進一步擴展殘差結構,并用一種稱為Drop-path 的方法優化網絡訓練,在圖片分類測試中的正確率超過了殘差網絡.Xie 等[68]?提出的ResNeXt 借鑒了Inception 模塊的思想,通過增加旁路連接的數量以進一步擴寬網絡,在不增加網絡復雜度的前提下提高識別準確率,同時還減少了超參數的數量.
文獻[69]認為殘差網絡僅僅是若干淺層網絡的組合體,其寬度相比于深度更為重要,訓練超過50 層的網絡是毫無必要的,因此目前存在大量研究工作從網絡寬度出發優化殘差網絡的結構.Zagoruyko 等[70]?認為ResNet 在訓練時無法充分地重用特征(Feature reuse),具體表現在梯度反向傳播時不能流經每一個殘差模塊(Residual block),只有很少的殘差模塊可以學習到有用的特征表示.作者提出的寬殘差網絡(Wide residual network,WRN)通過增加網絡寬度并減少網絡深度,訓練速度相較于殘差網絡提升了2 倍,但網絡層數減少了50 倍.Targ 等[71]?提出了一種將殘差網絡和標準卷積神經網絡并行組合的泛化殘差網絡,在保留有效特征表達的同時剔除了無效信息,改善了網絡的表達能力,在CIFAR-100 數據集上效果顯著.Zhang等[72]?為殘差網絡添加額外的旁路連接,通過增加寬度以提高網絡的學習能力,提出的Residual networks of residual networks (RoR)可以作為構造網絡的通用模塊.Abdi 等[73]通過實驗支持了殘差網絡是若干淺層網絡融合得到的假說,作者提出的模型通過增加殘差模塊中殘差函數的數量以增強模型的表達能力,得到的多殘差網絡在CIFAR-10 和CIFAR-100 的分類準確率均得到極大改善.
4.4 其他精細模塊
在網絡結構的設計空間探索方面,還有大量工作針對精細模塊設計展開研究,取得了一系列成果.為減少全連接層的訓練參數,文獻[55]首先提出用全局均值池化(Global average pooling,GAP)替代全連接層,相當于在整個網絡結構上做正則化防止過擬合.全局均值池化在特征圖與輸出類別標簽之間建立聯系,相比于全連接層更具有可解釋性,隨后的網中網以及GoogLeNet 都采用這一結構獲得了性能提升.
Huang 等[74]?認為極深網絡的成功來源于旁路連接的引入,他們提出的密集模塊(Dense block)在任何兩層網絡之間都有直接連接.對于任意網絡層,它的輸入來源于前面所有網絡層的輸出,而它的輸出都要作為后面所有網絡層的輸入.這種密集連接改善了網絡中信息與梯度的流動,對于網絡具有正則化的作用,避免在小數據集上訓練的過擬合問題.密集連接的另一個優點是允許特征重用,訓練出來的DenseNet 具有結構緊湊、精度高的優點.張婷等[75]?提出的跨連卷積神經網絡允許第二個池化層跨過兩層直接與全連接層相連接,在10 個人臉數據集上的性別分類效果都不低于傳統網絡.李勇等[76]將LeNet-5 網絡的兩個池化層與全連接層相結合,構造的分類器結合了網絡結構提取的低層次特征與高層次特征,在人臉表情識別中取得較好效果.
Howard 等[77]提出的MobileNet 將傳統卷積過程分解為深度可分離卷積(Depthwise convolution)和逐點卷積(Pointwise convolution)兩步,在模型大小和計算量上都進行了大量壓縮,由此構造的輕量型網絡能夠在移動嵌入式設備上運行.Sandler等[78]將殘差模塊與深度可分離卷積相結合,提出了帶有線性瓶頸的反向殘差模塊(Inverted residual with linear bottleneck),由此構造的MobileNet v2在速度和準確性上都優于MobileNet.Zhang 等[79]在MobileNet 的基礎上進一步提出了基于逐點群卷積(Pointwise group convolution)和通道混洗(Channel shuffle)的ShuffleNet,在圖像分類和目標檢測任務中均獲得極大提速.
5 結束語
隨著硬件條件的飛速發展和數據集規模的顯著增長,深度卷積神經網絡目前已成為計算機視覺、語音識別、自然語言處理等研究領域的主流方法.具體地,更深的網絡層數增強了模型的非線性擬合能力,同時大規模數據增強了模型的泛化能力,而較高水平的硬件設施條件則保證了模型運行所需要的計算能力和存儲要求.深度卷積神經網絡已在諸多領域證明了強大的特征學習和表達能力,但高昂的時間復雜度和空間復雜度制約其在更廣闊領域的實施與應用.在時間維度上,大型復雜網絡計算量巨大,在圖形處理單元(Graphic processing unit,GPU)加速運算的支持下,仍不能滿足自動駕駛汽車等一些強實時場景的要求.在空間維度上,隨著模型規模日益龐大特別是網絡深度劇增,對模型的存儲提出了更高的要求,這制約了深度卷積神經網絡在移動手機、嵌入式設備等資源受限環境的應用.
為加快以卷積神經網絡為代表的深度學習技術的推廣及應用,進一步強化在安防、移動設備、自動駕駛等多個行業的優勢,學術界和工業界對其結構的優化展開了大量研究.現階段常用的網絡結構優化技術包括網絡剪枝與稀疏化、張量分解、知識遷移和精細模塊設計,前三種方法通常是在已有高性能模型的基礎上改進并加以創新,在不損害精度甚至有所提高的前提下盡可能降低模型復雜度和計算復雜度.精細模塊設計方法從網絡構造的角度出發,創造性地設計高效模塊以提升網絡性能,從根本解決深度卷積神經網絡面臨的時間復雜度和空間復雜度過高的問題.筆者整理了近幾年的研究成果,根據自己的理解總結了該領域以下的難點問題以及發展趨勢:
1)網絡剪枝與稀疏化能夠穩定地優化并調整網絡結構,以較小精度損失的代價壓縮網絡規模,是應用最為廣泛的網絡結構優化設計方法.目前大多數的方法是剔除網絡中冗余的連接或神經元,這種低層級的剪枝具有非結構化(Non-structural)風險,在計算機運行過程中的非正則化(Irregular)內存存取方式反而會阻礙網絡進一步加速.一些特殊的軟硬件措施能夠緩解這一問題,然而會給模型的部署帶來額外的花銷.另一方面,盡管一些針對卷積核和卷積圖的結構化剪枝方法能夠獲得硬件友好型網絡,在CPU 和GPU 上速度提升明顯,但由于剪枝卷積核和卷積通道會嚴重影響下一隱含層的輸入,有可能存在網絡精度損失嚴重的問題.
2)目前主流的精細模塊設計方法仍然依賴于設計者的工程經驗和理論基礎,在網絡構造過程中要考慮到大量因素,如卷積核尺寸、全連接層數、池化層數等超參數(Hyper parameter).不同的選擇對于網絡最終性能有可能造成完全不同的影響,需要進行大量的實驗來論證不同參數的優劣,使得網絡結構設計耗費大量的人力物力,不利于深度模型的快速部署及應用.因此,研究如何自動設計網絡有助于卷積神經網絡的設計空間探索(Design space exploration,DSE),對于加快網絡設計過程和推動深度學習落地于工程化應用具有重要的促進作用.
3)網絡結構優化設計的評價指標.目前對于深度卷積神經網絡的結構優化設計主要側重于準確率、運行時間、模型大小等方面的評價,但使用更加全面的評價指標對于發現不同網絡的優點和缺點是大有裨益的.除了準確率、運行時間、模型大小等傳統指標,有必要將乘加(Multiply-and-accumulate)操作量、推導時間、數據吞吐量、硬件能耗等指標納入評價體系,這為從不同方面評價優化模型提供了更加完備的信息,也有助于解決了不同網絡性能評價指標不統一的問題.
4)在過去,深度卷積神經網絡的結構優化更多著眼于算法的設計與實現,而對于模型的具體部署平臺和硬件設施欠缺考慮.考慮到硬件條件仍是制約著深度模型部署于移動手機、機器人、自動駕駛等資源受限場景下的主要因素,若統籌兼顧網絡模型和硬件設施的優化與設計,使算法與硬件相匹配,不僅能夠進一步提高數據吞吐量與運行速度,還可以減少網絡規模與能耗.因此,設計硬件友好型深度模型將有助于加速推進深度學習的工程化實現,也是網絡結構優化的重點研究方向.
5)本文歸納與總結的網絡結構優化方法有不同的側重點和局限性,其中網絡剪枝與稀疏化方法能夠獲得較大的壓縮比,同時對于網絡精度的影響較小,在需要模型穩定運行的場景下較為適用.張量分解能夠極大加速模型的運行過程,而且端到端的逐層優化方式也使其容易實施,然而該方法不能較好地壓縮模型規模,而且在卷積核尺寸較小時加速效果不明顯.知識遷移方法能夠利用教師網絡的領域知識指導學生網絡的訓練,在小樣本環境下有較高的使用價值.同時,知識遷移和精細模塊設計都面臨網絡結構如何構造的問題,要求設計者具有較高的理論基礎和工程經驗,與其他方法相比其調試周期較長.因此,在使用網絡結構優化技術時應考慮實際情況,綜合應用以上方法以壓縮并加速網絡.
6)深度神經網絡結構優化的遷移應用.本文分析了卷積神經網絡目前存在的挑戰和問題,并且探討了卷積神經網絡結構優化領域的主流方法、思想及其應用.由于目前其他主流的深度網絡(如循環神經網絡、生成對抗網絡)同樣面臨模型規模大、運行速度慢的問題,因此借鑒卷積神經網絡結構優化的思想以優化其模型是一種有效的解決方式.此外,目前很多優化方法一般都是針對圖像分類問題,若將其應用于目標檢測、語義分割等領域也應取得較好效果.
關注微信公眾號:人工智能技術與咨詢。了解更多咨詢!
審核編輯:符乾江
評論
查看更多