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