亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        深度神經網絡模型壓縮綜述*

        2020-09-13 13:53:16耿麗麗牛保寧
        計算機與生活 2020年9期
        關鍵詞:深度方法模型

        耿麗麗,牛保寧

        1.太原理工大學信息與計算機學院,太原 030024

        2.山西財經大學實驗中心,太原 030006

        1 引言

        深度學習作為機器學習領域的分支,近年來在圖像識別與檢索、自然語言處理、語音識別等諸多領域中都展現出非常優(yōu)越的性能。深度學習以人工神經網絡為基本架構,通過對數據表征進行學習,將底層特征表示轉化為高層特征表示,通過多層網絡模型完成學習任務。自2016年AlphaGo擊敗人類頂尖選手,深度學習引起人們普遍關注,同時深度學習的概念也為大眾所熟知。長期以來,深度學習研究人員致力于開發(fā)更深、更大的模型,達到更高的精度和準確度,同時也導致模型具有大量參數(例如VGG16有一億三千多萬個參數),存儲空間占用率高,計算復雜的特性。矩陣運算損耗了龐大的計算資源,并且需要足夠的功率;數十億的網絡參數需要大量的存儲開銷;為了達到優(yōu)越的學習效果,必須使用GPU加速。對硬件的高要求使得深度網絡模型在實際應用中受到限制,諸如手機等便攜式以及嵌入式設備,無法滿足深度學習的大規(guī)模計算要求。因此,在保證網絡模型精度及準確度的條件下,壓縮網絡模型成為一個亟待解決的問題。

        精度和準確度一般作為評價網絡模型的標準,許多文章中將精度和準確度理解為一個概念,實際是有一定差別的。精度指的是數據測量的重復性如何,即多次測量數據值的離散度,多次測量值集中則精度高,測量值分散則精度低。準確度則是評價測量值和真實值之間偏差的一個指標,反映的是測量值與真實值之間的關系。壓縮網絡模型的最終目的是產生小規(guī)模、高精度及準確度的模型。

        壓縮的一般意義是通過減少數據大小以節(jié)省存儲空間和提高傳輸速率。文中模型壓縮是指對深度學習使用的深度網絡進行重構、簡化以及加速的技術。重構即指利用深度網絡的典型模塊重新設計一個簡單的網絡結構;簡化指在現有深度網絡結構上進行參數壓縮、層次以及維度的縮減;加速即是提高深度網絡訓練、預測的速度。

        深度神經網絡(deep neural networks,DNN)模型以卷積神經網絡為代表,得到廣大研究人員的青睞。卷積神經網絡一般是由輸入層、卷積層、激活函數、池化層以及全連接層構成的前饋神經網絡,其中卷積層和全連接層含有大量的參數,網絡經過訓練之后,參數存在大量冗余,這些冗余的參數是不重要的、可以刪除的,去除這些參數并不影響網絡的精度。由于參數減少,網絡的計算得以簡化并且速度大幅提高,從而能提升網絡的整體性能。壓縮網絡這一思想早在文獻[1]中就由LeCun等人提出,利用信息論的思想,通過刪除網絡中不重要的權重,使得神經網絡能夠更好地泛化,提高學習速率,達到壓縮網絡尺寸的目的。Han等[2]發(fā)表的一篇有關模型壓縮方法的綜述型文章,作為2016年ICLR的最佳論文,引起了模型壓縮研究的熱潮。文獻[3-4]對近年來模型壓縮方法進行了綜述。

        2 研究框架

        深度神經網絡模型中的參數決定了模型的復雜程度,因此研究人員將減少網絡參數作為壓縮優(yōu)化模型的主要研究方向。另外,網絡模型的深度也影響計算時間以及存儲空間,因此縮減模型層次也是模型壓縮的一個途徑。

        近年來,許多研究人員在網絡模型壓縮和加速領域進行了大量研究,提出了眾多壓縮方法,本文根據模型壓縮后對網絡結構的影響,將模型壓縮方法分為兩大類:淺層壓縮和深層壓縮。模型壓縮方法框架如圖1描述。

        Fig.1 Model compression classification圖1 模型壓縮分類

        淺層壓縮(見第2章):減少參數和模型層次都不會改變網絡的結構。主要包括濾波器級別的剪枝、知識蒸餾。這些方法不會改變網絡的基本結構,因此將其歸為淺層壓縮。

        Table 1 Comparison of network compression methods表1 網絡壓縮方法對比

        深層壓縮(見第3章):會改變卷積核或者網絡層級結構。包括量化、輕量級網絡設計、結構搜索方法。

        本文分別從淺層壓縮和深層壓縮兩大類對深度神經網絡模型壓縮方法進行分析:首先分析了淺層壓縮方法中模型裁剪以及知識蒸餾的一般壓縮流程。在模型裁剪部分對權重裁剪、通道裁剪、核裁剪、神經元裁剪四種裁剪方法進行對比分析。其次對深層壓縮方法進行分析,并列舉了當前新的研究成果。表1為這幾種壓縮方法的對比描述,列出了各方法的優(yōu)缺點、應用網絡層以及一般適用的網絡模型。

        3 淺層壓縮

        3.1 模型裁剪

        模型裁剪是模型壓縮使用最廣泛的方法。由于卷積神經網絡中有大量的冗余參數,裁剪掉一定比例的參數之后,不影響網絡的性能。傳統意義上的裁剪流程一般包括:預訓練原始模型;按照某種規(guī)則,對濾波器進行排序;保留排序靠前的一定比例濾波器,其余被裁剪;對裁剪后的模型進行微調再訓練,最后達到相同甚至比原模型更高的精度。

        3.1.1 權重裁剪

        權重裁剪一般是通過在目標函數中引入一個正則化項,使權重趨向稀疏化。權重裁剪的基本流程:

        第一步,在網絡損失函數中加入一個正則化項,使得網絡稀疏化;

        第二步,設置一個裁剪閾值,刪除權重低于閾值的所有節(jié)點;

        第三步,對網絡參數進行微調之后再訓練網絡;

        第四步,迭代進行下一輪裁剪。

        裁剪方法一般是迭代進行,逐層裁剪,每裁剪一部分權重對網絡進行一次修復,這樣可以在裁剪過程中保證網絡的精度。

        文獻[5]提出了一種基于熵的方法來評價濾波器的重要性,裁掉不重要的濾波器權重,得到了一個更小的網絡模型。在VGG-16上實現了16.64%壓縮率,在RESNET-50上實現了1.47%壓縮率,同時兩者精度均下降1個百分點。文獻[6]提出一種基于能量感知的卷積神經網絡裁剪算法,直接利用卷積神經網絡的能耗大小排序進行裁剪,這種方法對卷積網絡分層裁剪,每裁剪完一層利用最小二乘法進行局部微調,恢復其精度。裁剪完所有層之后再進行網絡全局調整。采用這種方法使得AlexNet和GoogleNet的能耗分別降低了73%和38%,精度損失小于1個百分點。

        3.1.2 通道裁剪

        通道裁剪是直接將網絡中卷積層的整個通道刪除。與權重刪除相比,通道裁剪屬于粗粒度裁剪,隨著通道的刪除,與之相聯系的神經元也全部被刪除掉,裁剪力度較大,精度損失也相對較大。較之權重裁剪,它的優(yōu)點在于:首先,它不產生稀疏矩陣,因此不需要特殊的軟件或硬件來針對所得到的模型進行計算;其次,在推理階段不需要巨大的磁盤存儲和內存運行時間。

        文獻[7]提出的一種基于遺傳算法的通道裁剪方法,用于對超深卷積神經網絡進行壓縮。根據每一層通道的靈敏度,逐層裁剪網絡模型,之后再進行微調。文中將通道選擇描述為一個搜索問題,用遺傳算法進行求解。在VGG上參數規(guī)模壓縮了80%,浮點數計算壓縮了30%。文獻[8]通過基于LASSO回歸的通道選擇方法和利用最小二乘重構進行有效的網絡裁剪。通過此種方法可以使VGG-16在僅增加0.3%的誤差下達到5倍的加速。

        3.1.3 核裁剪

        卷積神經網絡的核心部分是卷積核,卷積核中包含有大量的參數,裁剪卷積核也是有效的壓縮方法。通過對卷積核參數進行低秩分解,增加稀疏性,減小運算消耗。

        文獻[9]提出一種特征映射核裁剪方法。設計了選擇最小對抗性裁剪掩碼策略,根據這種策略可以隨機生成裁剪模板,并使用驗證集來選擇最佳掩碼對網絡進行裁剪。這種方法與傳統的迭代裁剪相比,消耗的時間更少。權重裁剪往往會造成網絡模型的不規(guī)則稀疏性,不能充分降低卷積層中的計算成本,而對卷積核的低秩分解則可以保證網絡模型稀疏性的同時簡化矩陣計算,降低計算成本。文獻[10]提出一種卷積神經網絡加速方法,通過裁剪濾波器及其連接的特征映射,大大降低了計算成本。與權重裁剪相比,這種方法不會導致不規(guī)則稀疏連接。因此,不需要稀疏卷積庫的支持。文獻[11]提出了一個基于泰勒展開的裁剪準則,基于該準則,在細粒度分類任務中,裁剪后的卷積神經網絡性能優(yōu)越。

        3.1.4 神經元裁剪

        神經網絡在接收到輸入之后,并不是所有的神經元都被激活,相當大一部分神經元的輸出值為零,這些為零的神經元被認為是多余的,刪除它們并不會影響網絡的精度。因此,出現了針對神經元裁剪的研究。

        文獻[12]中對激活值為零的神經元進行裁剪,之后利用裁剪前的權重再初始化網絡,對網絡進行再訓練。裁剪和訓練迭代交替進行,不斷減少網絡中的零激活神經元,可以極大地壓縮網絡規(guī)模,是一種迭代優(yōu)化網絡的方法。在LeNet和VGG-16上的實驗表明,這種方法可以使壓縮率達到2,同時保證模型精度,甚至在裁剪之后可以獲得更高的精度。但是文章中并沒有說明實驗采用的數據類型以及數據規(guī)模,對于大型數據集以及特定類型的數據集是否適用有待進一步驗證。

        另外,在文獻[13]中作者指出,裁剪之后仍能保持模型性能并不是歸功于所選擇的特定裁剪標準,而是由于深層神經網絡的固有可塑性,這種可塑性使得網絡在精調后能夠恢復裁剪造成的精度損失,因此隨機裁剪也可以達到在保證精度的同時極大地壓縮網絡的目標。文中對VGG-16和ResNet-50進行了評估,結果表明,采用一種簡單的隨機裁剪策略,可以顯著提高目標檢測速度,同時保持與原網絡模型相同的精度。采用裁剪方法對模型進行壓縮的相關文獻還包括文獻[14-22]。其中文獻[22]提出一種混合裁剪方法,結合核裁剪以及權重裁剪進行模型壓縮,在精度降低很小的情況下,獲得了較好的壓縮倍率。

        以上裁剪方法都是針對卷積層進行,神經網絡的全連接層同樣包含大量參數,對全連接層進行裁剪能極大地縮小參數量。文獻[23]提出一種基于權值相似性的剪枝方法,通過計算權值矩陣相似性刪除隱含層單元,實現全連接層的壓縮,模型參數減少了76.83%,精度降低只有0.1個百分點。但是該方法沒有降低模型運算量,因為卷積網絡的運算大部分集中于卷積層。表2為模型裁剪方法對比描述。

        表3列舉了幾種典型裁剪壓縮方法的模型性能參數對比,包括模型訓練所使用的數據集、Top-k精度、參數減少量/壓縮率以及浮點運算次數(Flops)減少量/加速率這幾項指標。深度神經網絡模型訓練采用Mnist手寫數字集、ImageNet圖像集、Cifar10/100圖像集居多,此外也有采用目標檢測、語音識別等數據集。Mnist數據集包含60 000張28×28像素的訓練圖像和10 000張測試圖像,是手寫數字的灰度圖像。Cifar10/100數據集共有60 000個32×32像素的彩色圖像,分為50 000個訓練圖像和10 000個測試圖像,10/100個分類。ImageNet數據集是目前深度學習圖像領域應用非常多的一個數據集,關于圖像分類、定位、檢測等研究工作大多基于此數據集展開。ImageNet數據集包含大約1 500萬幅全尺寸圖片,2.2萬個分類。Top-k精度在分類檢測中是指預測向量中排名前k個值的準確率,一般取k為1、5。參數減少量和壓縮率是評價模型參數量的絕對值和相對值,壓縮率為原參數量與壓縮后參數量的比值。Flops是評價模型的運算復雜度以及加速率指標,以每秒浮點運算次數來評價模型效率是模型設計中最常用的方法。

        Table 2 Comparison of cutting and compression methods表2 裁剪壓縮方法總體對比

        Table 3 Comparison of typical cutting and compression methods表3 典型裁剪壓縮方法性能對比

        裁剪對模型精度有一定影響,小規(guī)模網絡模型,壓縮后精度下降要大于大規(guī)模網絡模型,同時也與選用的數據集有關,大數據集的網絡對精度影響要小于小數據集網絡,這也充分說明了大規(guī)模網絡的參數冗余度更高,更適于壓縮。

        3.2 知識蒸餾

        知識蒸餾是另一種常見的模型壓縮方法,Hinton等[24]提出知識蒸餾的概念。這種模型壓縮是一種將大型教師網絡的知識轉移到較小的學生網絡的方法,將復雜、學習能力強的教師網絡學到的特征表示蒸餾出來,傳遞給參數量小、學習能力弱的學生網絡,一般可以提高學生網絡的精度。教師網絡和學生網絡可以是同構也可以是異構的,教師網絡傳遞的知識一般包括概率分布、輸出的特征、中間層特征映射、注意力映射、中間過程,在神經元級別上監(jiān)督學生網絡訓練,提高模型參數的利用率。

        蒸餾模型采用遷移學習,通過將預先訓練好的教師模型輸出作為監(jiān)督信號去訓練另外一個輕量化網絡。將教師模型的泛化能力傳遞給學生模型的一個有效方法是將教師模型產生的分類概率作為訓練學生模型的“軟目標”,以指導學生網絡進行訓練,實現知識遷移。Hinton等[24]認為,最好的訓練目標函數L是軟目標和硬目標兩者的結合。如下公式:

        知識蒸餾不僅僅是縮減網絡的規(guī)模,其重點在于減化網絡結構的同時如何保留網絡中的知識。文獻[25]通過定義卷積神經網絡的注意力機制,強迫學生卷積神經網絡模擬強大的教師網絡注意力映射,從而顯著提高其性能。文中提出基于響應圖和基于梯度兩種利用熱力圖傳輸注意力方法。注意力傳輸的作用是將教師網絡某層的空間注意力映射傳遞給學生網絡,讓學生網絡相應層的空間注意力映射可以模仿教師網絡,從而達到知識蒸餾的目的。文獻[26]提出一種結構稀疏學習(learning structured sparsity,SSL)方法來規(guī)范濾波器、通道、濾波器形狀和網絡層深度。SSL可以從較大的卷積網絡中學習一個緊湊的結構,以降低計算成本,提高分類精度。

        文獻[27]采用教師-學生算法,將深度網絡與隨機森林相結合,生成一個精度高、緊湊性好的學生網絡模型。在訓練過程中使用一個額外的數據集來防止教師模型(T-Model)過擬合,這個新的軟目標數據集能夠捕獲比原始硬目標數據更多的信息。提出一種新的估計行人姿態(tài)方向的方法,實驗結果表明,該算法在姿態(tài)定位方面的分類性能優(yōu)于基于卷積網絡的其他最先進方法。另外,由于模型結構簡單,參數少,所提出的學生模型(S-Model)的計算速度快于其他深度卷積神經網絡。如表4。

        Table 4 Performance analysis of typical knowledge distillation methods表4 知識蒸餾典型方法性能分析

        在文獻[28]中,作者用一種新的知識蒸餾算法對18層卷積神經網絡進行壓縮,得到一個兩層的用于實時SAR(synthetic aperture radar)識別系統的網絡模型。它是一個三元網絡,所有權重都是-1,0,1。系統遵循師生范式,Dcnn是教師網絡,Mcnn是學生網絡。在Mstar數據集上的實驗表明,所提出的Mcnn算法能夠獲得與Dcnn基本相同的高識別率。然而,與Dcnn相比,所提出的Mcnn的內存占用被壓縮了99.45%,計算量減少了92.20%。

        徐喆等[29]將衡量樣本相近關系的比例因子引入知識蒸餾算法,通過調節(jié)神經元參數,增強網絡的泛化能力,在準確率和分類時間上都有所提升。

        4 深層壓縮

        4.1 量化

        量化就是將神經網絡的浮點運算轉換為定點運算。這不僅可以在移動設備上實現網絡的實時運行,同時對部署云計算也有幫助。

        神經網絡中的運算為浮點運算。一般而言,神經網絡模型的參數都是FP32(32位浮點數)表示,可以通過量化,犧牲精度來降低每一個權值所占空間,采用低精度FP16(半精度浮點數)和INT8(8位定點整數)表示,甚至將其量化為INT4(4位定點整數)或INT1(1位定點整數),模型尺寸也隨之縮小。浮點數量化可以分為兩個步驟(以INT8為例):

        第一步,在權重矩陣中找到參數最小值min和最大值max,確定映射區(qū)間xscale和零點量化值xzero_point。

        第二步,將權重矩陣中的每個FP32值轉換為INT8類型值。如下公式:

        量化的常用策略是將32位的權值量化為1位或2位,將極大地減少模型大小并節(jié)省內存。但實驗結果表明,權值量化后的網絡性能明顯下降,這對于性能要求高的任務來說是一大損失。為了平衡網絡規(guī)模和性能之間的矛盾,出現了3位、INT8等新的量化方法,在深度神經網絡性能損失最小的同時盡可能節(jié)省占用空間。

        目前的量化方法主要包括:

        二值化神經網絡:具有二進制權重、激活單元以及參數梯度[30-36]。

        三值化神經網絡:權重為(+1,0,-1)的神經網絡[37]。

        INT8量化:將模型從FP32轉換為INT8,以及使用INT8進行推理[38-40]。

        其他量化[41-48]。

        二值化、三值化網絡基于簡單的矩陣逼近,忽略對精度的影響,因此當處理大型的卷積神經網絡時,這種壓縮后的網絡精度會明顯降低。

        文獻[2]表明量化卷積層通常需要8 bit,全連接層需要4 bit以避免顯著的精度損失。

        表5列舉了典型量化壓縮方法性能參數??梢钥闯鲈贗mageNet大型數據集上進行模型量化壓縮后,精度下降明顯,錯誤率提高,在小型數據集上精度沒有大幅降低,因此量化效果受限于數據集的選擇。對全連接層參數量化,不能顯著降低運算復雜度,因為運算量集中在卷積層。

        4.2 輕量級網絡

        網絡模型壓縮的另一種思路是設計一個輕量級網絡,直接適用于移動和嵌入式設備。一般使用深度可分的卷積結構來構建輕量級深層神經網絡,通過改變或重組網絡結構以及使用高效的計算方法來簡化網絡,使網絡結構更加緊湊。

        Table 5 Weight and network accuracy in quantification表5 量化中的權重位和網絡準確率

        4.2.1 MobileNet

        Google提出的MobileNet[49]網絡模型是適用于移動和嵌入式設備的有效模型。MobileNet模型是基于深度可分離卷積的,其核心思想就是卷積核分解,將標準卷積分解為深度方向卷積和1×1卷積,這樣可以有效減少網絡參數。卷積核分解,實際是將K×K×M的卷積分解成K×K×1的卷積和1×1×M的卷積,其中K是卷積核大小,M是卷積核的通道數。其中K×K×1的卷積稱為深度可分離卷積,它對前一層輸出的特征映射的通道進行K×K的卷積來提取空間特征,然后使用1×1的卷積將通道的信息線性組合起來,1×1卷積也稱為點積。如圖2。

        圖2中K為原始卷積核的大小,F為輸入特征映射尺寸,深度卷積和標準卷積的計算代價可通過以下公式比較,可以看出分解后深度卷積的運算量降至1/K2左右。

        在MobileNet網絡中使用3×3深度卷積,其計算量比標準卷積下降89%左右,同時精度下降很少。此外,算法中還引入了一個寬度因子α來縮減網絡寬度而不是縮減層數。與標準卷積相比,深度分離卷積使得模型在ImageNet數據集上的精度只降低1個百分點,同時參數規(guī)模減少了86%。MobileNet V2[50]模型是對MobileNet的改進,該模型中引入了殘差結構,使用線性激活函數代替ReLU激活函數來減少特征損失,從而提升了MobileNet的性能。

        Fig.2 Decomposition convolution圖2 分解卷積

        4.2.2 ShuffleNet

        雖然分離卷積之后,實現了網絡壓縮的目的,但是1×1卷積的計算消耗還是比較大,MobileNet在1×1的卷積中花費了94.86%的計算時間,并且占有整個網絡模型中75%的參數量。為進一步減少計算量,Zhang等人[51]提出在1×1的卷積上采用分組(group)操作,由于使用1×1卷積的作用是為了整合所有通道的信息,如果使用分組操作就無法使所有通道共享信息,因此又提出了一種channel shuffle的方法。如圖3,雖然對1×1的卷積使用了分組操作,但會產生信息不流通的問題,于是在上一層生成的特征映射中增加一個channel shuffle操作。首先將每個分組中的通道細分為幾個組,然后在下一層中輸入不同的細分組,使得每個分組都可以接受到上一層不同組的特征信息,解決信息互通的問題,同時還降低了模型計算量。如圖3左邊顯示分組卷積之間沒有信息互通。圖3右邊Channle Shuffle操作將特征映射進行細分之后分配給下一層中的不同組卷積。

        Fig.3 Channel Shuffle structure圖3 Channel Shuffle結構

        SuffleNet V2[52]是SuffleNet的改進版,其引入通道分割(channel split)操作,該操作將每個單元的特征通道輸入分為兩個分支,一個分支保持不變,另一個分支由三個卷積操作組成,兩個1×1卷積和一個3×3深度卷積。與ShuffleNet不同的是,這里的1×1卷積不再是組卷積。卷積操作之后,把兩個分支通過Concat操作拼接起來,使通道數量保持不變。然后通過ShuffleNet結構中的Channel Shuffle操作進行分支間的信息互通。Channel Shuffle之后,開始進行下一個單元的運算。

        文中還指出有效的網絡架構設計應該考慮兩個原則。首先,應使用直接度量(如速度),而不是間接度量(如Flops)。僅使用Flops作為計算復雜度的唯一指標是不夠的,在某些如組卷積操作中,內存的訪問成本占很大一部分運行時間,可能成為計算能力強的設備(如GPU)的瓶頸。其次,根據平臺的不同,使用相同的Flops操作其運行時間也不同,應在目標平臺上評估度量網絡能效。

        文章還提出了有效的網絡架構設計需要遵循的4個準則:(1)使用等通道寬度;(2)避免過度使用組卷積,增加內存存取成本;(3)降低網絡碎片化程度,避免因此降低網絡并行度;(4)減少元素級操作。

        4.2.3 SqueezeNet

        介紹SqueezeNet[53]這篇是ICLR 2017的文章,使用的是分類網絡中的代表AlexNet,SqueezeNet將AlexNet模型參數減少了99.79%,只有0.5 MB大小。設計者在網絡結構中引入了稱為Fire Module的模塊,該模塊由Squeeze卷積層和Expand層組成。Squeeze卷積層只使用1×1卷積,Expand層使用1×1卷積和3×3卷積的組合。如圖4,Fire Module模塊中有3個可調參數S1×1、E1×1、E3×3。S1×1是Squeeze卷積層中1×1卷積的個數,E1×1是Expand層1×1卷積的個數,E3×3是Expand層3×3卷積的個數。SqueezeNet使用1×1卷積代替3×3卷積,參數減少了1/9,同時令參數S1×1<E1×1+E3×3,可以限制輸入通道的數量,減少總參數量,在SqueezeNet結構中池化層也有所減少。與MobileNet相比,Top-1降低了1個百分點,GPU速度提高了10%。

        Fig.4 Fire module圖4 Fire模塊

        Xception[54]也是一種經典的輕量級網絡,其認為通道和空間的相關性在卷積操作中是可以分解的,通過分解卷積中的這兩部分,可以減小通道和空間上的運算,從而提高模型性能。

        Xception卷積分解與以上幾種網絡卷積分解的不同之處在于:深度分離卷積是先進行深卷積操作,然后進行點積操作;Xception則與之相反,先進行點積操作,然后進行深卷積操作。

        除了以上幾種經典的輕量級神經網絡,還有許多其他效果不錯的網絡設計。

        文獻[55]介紹了一種用于可視化和時序數據建模的通用的卷積神經網絡EspNetv2。文獻[56]中設計了一種基于注意力機制的輕量級卷積神經網絡TANet。網絡由reduction module、self-attention operation、group convolution三部分組成。其中reduction module可以減少池化操作帶來的信息損失。selfattention operation使模型能夠集中學習圖像中的重要部分,group convolution實現了模型壓縮和多分支融合。該網絡可以在移動設備上進行有效的浮游生物分類。

        文獻[57]提出一種使用迭代硬閾值(iterative hard thresholding,IHT)的方法來訓練瘦深度神經網絡(skinny deep neural networks,SDNN)。SDNN擁有比卷積神經網絡更少的參數,但可以獲得更好的性能。使用IHT方法通過兩個階段來訓練一個SDNN,首先執(zhí)行硬閾值,用小激活降低連接,并微調其他重要的過濾器,之后重新激活凍結的連接,訓練整個網絡以提高其總體識別能力。

        文獻[58]提出一種簡單、高度模塊化的圖像分類網絡體系結構,只需要設置超參數即可重復構造具有相同拓撲變換的塊。揭示了一個稱之為“基數”的新的維度,通過增大基數可以提高分類精度,比構造更深、更寬的網絡更有效。

        文獻[59]提出一種基于輕量級卷積神經網絡資源約束下估計人群計數和生成密度圖的新方法。該網絡由3個組件組成:基本特征提取器(basic feature extractor,BFE)、堆疊的卷積模塊(stacked àtrous convolution module,SACM)和上下文融合模塊(context fusion module,CFM)。BFE用降低的空間分辨率對基本特征信息編碼,通過SACM中的短流水線來生成各種上下文信息。CFM從上述組件中提取特征圖生成上下文融合密度圖,整個網絡以首尾相連的方式進行訓練,并使用壓縮因子來限制其大小。

        文獻[60]提出一個小特征提取網絡(feature distilled network,FDN),通過模仿一個更深的網絡中間表示來進行跟蹤。引入一種移位拼接方法來減少運算,針對提取出來的特征,提出一種尺度自適應鑒別相關濾波器,用于視覺跟蹤,以處理目標的尺度變化。與目前最先進的深度跟蹤器相比,速度提高了5倍。

        表6對比了幾種典型的輕量級網絡模型性能。在ImageNet數據集上Xception的精度較優(yōu),但參數規(guī)模也較大,說明模型精度與規(guī)模之間的正比關系。

        4.3 體系(網絡)結構搜索

        隨著模型壓縮研究的進展,人們逐漸開始關注神經網絡自身的結構問題,深度神經網絡結構在深度學習中是起決定作用的關鍵要素,每一類任務都有其最適合的神經網絡結構,簡化深度神經網絡結構可以極大地壓縮網絡模型,因此關于網絡結構搜索方法的研究引起了研究人員越來越多的關注。

        網絡結構搜索一般采用神經結構搜索方法設計新的基線網絡,通過尋找新的尺度均勻地縮放網絡維度。文獻[61]是關于神經結構搜索(neural architecture search,NAS)算法的一篇綜述文章,體系結構搜索正處于快速發(fā)展階段,不斷涌現出許多新的研究方法。

        NAS是一種自動設計神經網絡的技術,可以通過某種算法自動設計出高性能的網絡結構,有效地降低神經網絡的使用和實現成本,這些神經網絡結構已經在性能上逐漸超過人工設計的網絡結構。

        NAS方法的原理是給定一個搜索空間,用某種搜索算法從中搜索出一個最優(yōu)神經網絡結構,每次迭代產生的神經網絡稱為子網絡,訓練這些子網絡,評估其性能,直到找到最優(yōu)子網絡。其中搜索空間定義了被算法搜索到的神經網絡的結構、大小,也決定了NAS算法的搜索時間。

        文獻[62]用強化學習解決NAS問題,將強化學習算法應用于模型預測,使用循環(huán)神經網絡控制器預測參數,自動產生一個神經網絡,但面臨計算量大的問題,實驗使用了800個GPU。文獻[63]提出了一種稱為NASNet體系結構的方法,利用搜索方法在感興趣的數據集中找到良好的卷積體系結構,通過搜索CIFAR-10數據集上最好的卷積層,預測出基本塊(building block),然后將該塊應用到ImageNet數據集中,方法是將塊的更多副本堆疊在一起,根據每個塊各自的參數設計一個卷積結構,這樣既降低了搜索空間的大小,還增強了網絡結構的泛化性。

        Table 6 Performance comparison of lightweight network表6 輕量級網絡性能對比

        基于離散空間的搜索算法存在計算量大的問題,文獻[64]提出了一種稱為可微結構搜索(differentiable architecture search,DARTS)的算法,將搜索空間轉化為連續(xù)的領域,通過采用梯度下降的方式來進行優(yōu)化,這種方法可以得到更高的精度,節(jié)省計算資源,也可以同時進行卷積和循環(huán)結構的搜索。

        文獻[65]提出了彩票假設:認為網絡中包含中獎網絡即子網(中獎彩票),并設計了一種識別中獎彩票的算法。在訓練時,該網絡在相同的迭代次數中達到與原始網絡相當的測試精度。它們之間的連接權重具有初始權重,這使得訓練特別有效,雖然網絡裁剪技術可以使訓練后的網絡參數減少90%以上,但是裁剪必須是在網絡訓練之后進行,如果直接對網絡進行裁剪,將會極大地影響網絡精度,而中獎彩票網絡則比原來的網絡學習更快,可以達到更高的測試精度。

        文獻[66]提出了一種自動移動神經結構搜索(automated mobile neural architecture search,MNAs)方法,將模型延遲明確地納入到主要目標中,從而使搜索能夠識別出一個在準確性和延遲之間取得良好平衡的模型。通過在移動電話上執(zhí)行模型來直接測量真實世界的推理延遲,而不是通過代理任務來進行學習培訓。文獻[67]也考慮到傳統的神經結構搜索算法計算量過大,需要利用代理,在代理任務上優(yōu)化的體系結構不能保證在目標任務上是最優(yōu)的。提出一種可直接學習大型目標任務體系結構和目標硬件平臺的無代理神經結構搜索,解決了高內存消耗問題,并將計算成本降低到相同水平的常規(guī)訓練。

        Bergomi等人在2019年Nature Machine Intelligence發(fā)文[68]提出根據拓撲數據分析理論(TDA)可以使神經網絡從局部特征理解全局特征,通過TDA選擇過濾器來觀察數據,找到網絡的拓撲特征。研究解決了以下簡單問題:當訓練一個深層次的神經網絡來區(qū)分路徑時,如何告訴網絡,它只需要關心簡單的幾何形狀,比如圓和三角形,它的工作就會容易得多,以便使它探索一個更有限的可能特征空間。

        基于網絡結構搜索的方法實現深度神經網絡壓縮正逐漸成為模型壓縮領域的主流方法。相關文獻還包括文獻[69-83]。

        通過表7中參數的比較,可以看出結構搜索方法所設計的模型精度、參數量指標都較優(yōu),但是運算量很大,計算復雜,搜索時間長是結構搜索方法的瓶頸。

        5 模型壓縮方法存在問題及未來研究方向

        通過以上模型壓縮方法的介紹,目前深度神經網絡模型壓縮主要是針對深度卷積網絡進行簡化。不同的壓縮方法作用網絡層不同,也有各自的優(yōu)缺點。以下對各種壓縮方法的特點進行總結并指出未來的研究方向。

        (1)模型裁剪是深度神經網絡模型壓縮研究方法中使用最多的一種有效方法,但是不同的裁剪方法都針對特定任務的分類,無法適用于多目標任務,由于神經網絡自身的可塑性,裁剪之后幾乎都可以在保證一定精度的同時達到網絡壓縮的效果。傳統裁剪方法需要在多個待測閾值上進行反復迭代,手動設置靈敏度,對參數進行微調,不僅耗時而且計算量大,同時由于權重閾值在網絡所有層共享,因此難以尋找到一個合適的閾值。

        目前大多數已有研究工作都專注于設計用于濾波器排序的準則,排序準則和真實模型分類、檢測的準則是不一樣的,采用分段式獨立的裁剪方式無法得到神經網絡的最優(yōu)性能。在模型壓縮過程中,預訓練、排序和微調是相互獨立的,很難保證最后模型的性能。此外,傳統的裁剪方法都采取統一的裁剪比例,但網絡不同層的參數其冗余程度不一樣,相同的裁剪比例勢必會造成裁剪的過度和欠缺??傊眉艨梢杂行У貕嚎s模型,其關鍵是如何衡量權重對于模型的重要性,如何選擇需要裁剪掉的權重值有眾多策略,但對于深度學習來說,沒有理論解釋哪一種策略是最優(yōu)策略。

        Table 7 Performance comparison of typical NAS networks表7 典型NAS網絡性能對比

        如何對裁剪操作進行形式化描述與推理,以得到一個更加理論化的選擇標準,是下一步亟待解決的問題。

        (2)知識蒸餾方法中教師模型信息的豐富程度在模型訓練過程中起著至關重要的作用。信息越豐富,訓練效果越好,知識蒸餾可以很好地進行小規(guī)模網絡的訓練。但與主流的裁剪、量化等技術相比,還存在一定的差距,學生網絡結構的構造一般是由人工指定的,最后的訓練效果也會因此有很大差異。

        因此,如何根據教師網絡結構來設計一個合理、能夠獲取較高模型性能的學生網絡結構,是未來的一個研究重點。

        (3)參數量化算法,無論是二值量化、三值量化或者多值量化,其本質都是將多個權重映射到一個數值,實現權重共享,從而降低存儲以及運算開銷。參數量化作為一種主流的模型壓縮技術,能夠以很小的精度損失實現模型體積的大幅減小。其不足之處一方面在于量化實現難度大、準確性不穩(wěn)定,網絡經過量化之后,很難再進行其他改變;另一方面,通用性較差,往往需要特定的硬件支持,一種量化方法需要開發(fā)一套專門的運行庫,增加了實現難度和維護成本。

        (4)輕量級網絡因為其設計方法是借鑒已有的深度神經網絡結構,采用經典的網絡模塊重新架構神經網絡,不是對已有網絡模型的簡化,由于其模型簡單、存儲空間占用低、計算簡化等性能將其歸于模型壓縮研究范疇。輕量級網絡的設計也是針對某種特定任務,特別設計適用于移動設備的網絡模型,雖然這種網絡的設計使得深度學習落地,能夠廣泛應用于智能設備,但其具有任務單一、泛化性差的缺點,也使得深度學習這一技術有大材小用之嫌。

        (5)深度網絡模型的訓練十分耗時,雖然直接訓練一個小型輕量級網絡模型省時省力,但是設計結構卻是一項困難的任務,這對于設計者來說,需要足夠豐富的經驗與技術。另外,輕量級網絡由于其參數量小,模型的性能尤其是泛化性不能與大模型相媲美。雖然目前體系結構搜索方法取得了顯著的進展,但其主要應用于有關圖像分類任務的網絡模型壓縮,針對其他領域的算法研究比較少。另外,搜索空間也存在局限性,空間中的部分參數需要人工指定,搜索策略不能實現自動搜索。

        因此,設計能夠適應多領域空間搜索的搜索算法是體系結構搜索方法未來的研究重點。此外,體系結構搜索算法的計算量仍然很大,如何降低計算復雜度、提高搜索效率也是未來研究方向之一。體系結構搜索方法都是采用代理機制,先在小的代理任務上進行搜索性能的測量,然后移植到實際模型,這樣難以保證搜索算法的性能。能否不采用代理機制,直接對大規(guī)模的應用設計體系結構搜索策略也是一個亟待解決的問題。

        一般地,裁剪和知識蒸餾方法用于具有卷積層和全連接層的深度神經網絡中,可以獲得相似的壓縮性能。對于每種壓縮方法,沒有一個標準評價哪一種壓縮效果最好,網絡壓縮效用的評價標準并不統一。目前,幾乎所有的評價標準都是側重于壓縮后和壓縮前模型幾個性能的比較,比如TOP-1、TOP-5、加速比、存儲空間節(jié)省率、壓縮率指標來表示模型壓縮效果。如何選擇合適的壓縮方法,取決于具體的應用需求以及網絡類型。文獻[84]給出了一些針對某項任務如何選擇壓縮方法的建議。

        深度神經網絡模型壓縮方法未來的研究工作會專注于通用性、標準化、壓縮率高、精度損失小等模型綜合性能提升上,最大化壓縮網絡規(guī)模的同時還能提升網絡性能。探索新的模型壓縮方法,將多種壓縮技術進行結合,通過軟硬件協同進行壓縮,提高模型運行速度。

        6 結束語

        本文對近年來深度神經網絡模型壓縮的主流技術方法進行了概括和總結。模型壓縮的主要目標是要在保證準確率的前提下,提高模型壓縮率和模型速度。本文總結了網絡裁剪、知識蒸餾、輕量級網絡設計、量化、體系結構搜索這五個方面的壓縮方法。其中,裁剪方法重點在于對網絡的冗余權值進行修剪,去掉模型中影響因子較小的結構;知識蒸餾則是通過教師網絡的指導去訓練一個精簡的性能相似的學生網絡;輕量級網絡設計側重于設計一個全新的小型網絡,滿足移動設備對于深度學習使用的需求;量化方法是目前最直接有效的壓縮網絡模型的方法,通過對網絡中參數進行低秩量化,減小網絡存儲空間,加快運算速度;體系結構搜索關注深度網絡自身的結構性問題,致力于通過搜索算法的設計找到最優(yōu)子網絡,極大地簡化網絡模型,壓縮網絡結構。通過本文介紹,讀者可以對深度網絡模型壓縮有一個較為全面的了解,并在今后的研究工作中加以利用,找到新的研究方法。

        猜你喜歡
        深度方法模型
        一半模型
        深度理解一元一次方程
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權M-估計的漸近分布
        深度觀察
        深度觀察
        深度觀察
        可能是方法不對
        3D打印中的模型分割與打包
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        亚洲熟女av超清一区二区三区| 亚洲av无码成人精品区狼人影院| 无码国产伦一区二区三区视频| 国产精品亚洲日韩欧美色窝窝色欲| av一区二区三区亚洲| 蜜桃在线观看免费高清| 国产精品久色婷婷不卡| 国产乱码卡二卡三卡老狼| 日韩无套内射视频6| 亚洲欧美日韩国产精品网| 加勒比久草免费在线观看| 真实夫妻露脸爱视频九色网| 国产男女免费完整视频| 亚洲国产成人久久综合一区77| 国产啪精品视频网站免| 亚洲不卡av二区三区四区| 亚洲最大成人综合网720p| 狠狠色噜噜狠狠狠狠米奇777| 婷婷丁香五月亚洲| av熟女一区二区久久| 狠色人妻丝袜中文字幕| 内射人妻视频国内| 欧美白人最猛性xxxxx| 国产 无码 日韩| 免费播放成人大片视频| 亚洲视频在线观看| 成年男女免费视频网站| 国产美女久久久亚洲综合| 一本一道久久综合久久| 人妻少妇精品中文字幕av| 日韩AV无码一区二区三区不卡毛片| 一区二区三区岛国av毛片| 国产高清一区二区三区四区色| 精品深夜av无码一区二区| 国产精品高清视亚洲乱码有限公司| 国产精品亚洲av一区二区三区 | 亚洲色成人网一二三区| 日本黄色特级一区二区三区| 日韩精品无码熟人妻视频| 理论片87福利理论电影| 久久se精品一区二区国产|