模型壓縮四大方向,計算機視覺領域的低功耗深度學習前沿技術綜述

深度卷積網絡在許多計算機視覺任務上都獲得了成功。然而,最準確的深度神經網絡需要數百萬的參數和運算,這使得模型的功耗、計算和內存消耗都無比巨大,進而導致在計算資源受限的低功耗設備上,大型深度卷積網絡難以部署。近期業界的一些研究工作主要集中於在不顯著降低模型精確度的情況下,減少內存需求、功耗水平和運算操作的數量。AI前線結合論文A Survey of Methods for Low-Power Deep Leaning and Computer Vision,整理了低功耗深度學習和計算機視覺的發展,並詳細地討論了深度卷積模型壓縮和加速的多種方法。這篇文章分析了每種類別中技術的準確性、優點、缺點和潛在解決方案。此外,論文作者還提出了一種新的評估指標,可以作爲未來研究的參考。本文是AI前線第107篇論文導讀。

1 背景介紹

深度卷積網絡(Deep Neural Networks, DNN)被廣泛用於計算機視覺任務,如目標檢測、分類與分割。DNN往往被設計得很深,從而能在訓練時能夠對大量參數進行微調從而獲得更準確得推理結果。因此,DNN具有計算量大和高功耗等特點。如VGG-16網絡在對單張圖像進行分類時,需要執行150億次運算,同樣,YOLOv3在處理一張圖片時需要進行390億個運算。實現這些計算需要大量的計算資源同時也帶來了巨大的能耗。

那麼,DNN如何才能部署於低功耗的嵌入式系統和移動設備呢?這些設備往往通過電池或者低電流的USB連接供電,並且往往無法使用GPU。將計算任務部署在雲端是一種不錯的解決方案,但是在一些沒有網絡覆蓋或網絡成本過高的情況,DNN應用需要直接在低功耗設備上執行,例如,在無人機或者人造衛星上部署DNN時。

一些低功耗的計算機視覺技術在只損失很少的精確度的情況下,通過移除一些DNN中的冗餘部分可以減少75%的運算和50%的推理時間。爲了將DNN部署在更小的嵌入式計算機中,進行更多的優化十分必要。因此,推進低功耗的深度學習技術的發展具有重要價值和意義。這篇文章重點從四個方面介紹了低功耗計算機視覺方法(注意:這裏主要介紹DNN推理,而不是訓練)。這四個方面分別是:

1)參數量化及剪枝:通過減小模型參數的比特數量來降低內存和計算消耗;

2)卷積核壓縮及矩陣分解:將DNN中較大的層分解爲較小的層來減小內存需求以及多餘的矩陣操作;

3)網絡模型搜索(Network Architecture Search,NAS):通過自動最優的DNN網絡結構達到預期性能;

4)知識蒸餾:訓練一個小型的DNN來模仿大型DNN的輸出、特徵和激活函數。

本文着重介紹基於軟件的低功耗計算機視覺方法,下表1對這些方法進行了一些總結:

2 參數量化及剪枝

2.1 深度神經網絡的量化

減小內存佔用的一個方法是減少DNN網絡參數的數量,已有不少研究顯示這種措施造成的精度損失可忽略不計。圖1對比了採用不同程度量化的DNN結構的功耗和測試誤差。結果顯示,隨着參數佔用位寬的下降,功耗降低的同時也會增大測試誤差。基於這些發現,LightNN、CompactNet和FLightNN等工作在限制精度的前提下,嘗試爲DNN不同類型的參數尋找最佳位寬。也有方法嘗試將參數設置爲不同的整數類型,例如二值化的神經網絡,其中的每個參數被表示成單比特。此外,這些DNN模型也需要更多的層結構以保證高精度。在圖1中,對於一個給定的DNN結構,1-bit量化(二值化神經網絡)具有最小的功耗和最大的誤差。量化反向傳播梯度可以在訓練中實現更好的收斂性,提高二元神經網絡的精度。

參數量化也經常和模型壓縮一同使用來減小DNN的內存需求。首先將參數量化爲離散段,再通過Huffman編碼壓縮接近89%的模型大小,精度幾乎不受影響。

這種方法的優勢在於,參數約束能夠對訓練過程起到正則化作用,因此當參數的位寬下降時,DNN網絡的性能保持不變。除此以外,當對DNN設計自定義硬件時,量化爲使用平移或者異或非門操作來替代高功耗的乘積累加運算創造了條件,從而減小了迴路區域大小和功耗需求。

其劣勢在於,經過量化的DNN需要進行多次重複訓練,降低訓練成本能夠使得該技術更易於實踐。此外,DNNs內的不同層結構對不同特徵較爲敏感,對各層採用同樣的位寬則會有較差的性能。可在訓練過程中採用不同的方式表示精度值,從而爲DNN中的網絡連接選擇不同的參數精度。

2.2 剪枝參數與連接

從DNNs中去除掉不重要的參數和網絡連接能夠減少內存訪問的次數。Hessian加權變形測量法(Hessian-weighted distortion measure)可以評估DNN中參數的重要性,從而刪除冗餘的參數以減小網絡規模。但這種基於測量的剪枝方法只適用於全連接層。

爲了將剪枝擴展到卷積層,Anwar等人使用粒子濾波定位可剪枝的參數;Polyak使用樣本輸入數據,並刪掉稀疏激活的連接;Han等人使用一個全新的損失函數學習參數和連接;Yan等人利用算法衡量每個參數對最終輸出的重要程度。通過結合剪枝、量化和編碼的方式,最大可將模型大小縮小95%。

儘管這些技術能夠識別不重要的連接,但同時也造成了不必要的網絡稀疏性。而稀疏矩陣需要特定的數據結構,也很難映射到現代GPU中。爲了解決這一問題,也有方法在剪枝的同時進行稀疏性的限制。

優勢在於,如表2所示,剪枝可以和量化與編碼結合以實現更好的性能。當三種方法結合時,VGG-16模型可以減少至原始大小的2%。剪枝也能夠降低DNNs的複雜度從而減少過擬合的情況。

但剪枝也會造成訓練時間的增加,同時使用剪枝和量化時訓練時間會增加600%。當使用稀疏約束的剪枝時,這個問題會更加嚴重。此外,只有當使用自定義硬件或者用於稀疏矩陣的特定數據結構時,剪枝的優勢才得以顯現。通道層面的剪枝是一個潛在的改進方向,相較於現有的連接層剪枝,它無需特殊數據結構,也不會產生不必要的矩陣稀疏。

3 卷積核壓縮及矩陣分解

3.1 卷積核壓縮

較小卷積核的參數量和計算成本遠小於更大的卷積核。然而,刪除掉所有的大型卷積層意味着影響DNN的平移不變性,會降低準確度。有些研究通過識別冗餘的卷積核並替換爲較小的卷積核。例如SqueezeNet就通過三種策略用11的卷積核替換33的卷積核來減小參數。

表3對比了不同卷積核壓縮技術的性能:相比於AlexNet,SqueezeNet的參數減少了98%,但增加了大量的操作;MobileNet在瓶頸層(bottleneck layers)使用深度可分離卷積減小計算量、延遲和參數量;在使用深度可分離卷積時,通過保留較小的特徵,只擴展到較大的特徵空間,實現了較高的精度。

瓶頸層的卷積核極大程度地減小了DNN的內存和延遲需求。對大多數計算機視覺任務來說,這些技術能夠達到SOTA準確度。卷積核壓縮方法與剪枝和量化之間互不影響,三者可以同時使用來進一步減少功耗。

但這種方法的劣勢是,在小型DNN中,1*1的卷積核由於計算成本高會導致較差的性能。此外,由於深度可分離卷積運算強度過低,無法有效利用硬件。可以通過提高管理內存的效率增強深度可分離卷積的運算強度,優化緩存中參數的時間和空間侷限性以減少內存訪問次數。

3.2 矩陣分解

張量分解和矩陣分解以和-積的形式加速DNN操作,通過將多維張量分解爲更小的多個矩陣來消除冗餘計算。一些因式分解方法能夠將DDNs提速至四倍,因爲它們創建了更密集的參數矩陣,能夠避免非結構化稀疏乘法的局部問題。爲了最小化精度損失,每次只實現單層的矩陣分解。首先對一層的參數進行分解,隨後根據重構誤差來分解後續層。這種按層分解的方法難以應用到大型的DNNs中,因爲隨着DNN深度的增加,因式分解的超參數將會呈指數級增長。爲了將這種方法在大型DNNs中實現,Wen等人使用了緊湊的核形狀和深層結構來減小分解超參數的數量。

因式分解的方法衆多,大多數都可以應用於DNN的加速,但有些方法無法在精度和計算複雜度之間實現最佳的平衡。例如,典型聚並分解(Canonical Polyadic Decompo[1]sition, CPD)和批量歸一化分解(Batch Normalization Decomposition, BMD)在精度上能夠取得很好的表現,但Tucker-2分解和奇異值分解的精度就較差。典型聚並分解比批量歸一化分解具有更好的壓縮效果,但是批量歸一化分解取得的準確性要優於典型聚並分解。除此以外,典型聚並分解的優化問題有時並不可解,而批量歸一化分解的解卻始終存在。

這種技術的優勢在於,卷積層和全連接層可以使用相同的矩陣分解方法,通過CPD和BMD均能夠取得不錯的性能。但由於理論理解的限制,難以說明爲什麼有些分解方法的效果能夠達到較好的精度,有些方法卻不能。此外,由於矩陣分解造成及計算開銷常常與減小操作量獲得的性能抵消。同時隨着DNNs深度的增加,應用矩陣分解的訓練時間整體會呈指數級增長,因此很難應用於大型網絡。而這是由於在空間內搜索以尋找正確分解超參數的時間過大,可以在訓練過程中學習超時參數,而非在整個空間內進行搜索,從而加速對大型DNN的訓練。

4 網絡模型搜索

設計低功耗計算機視覺應用是可以考慮很多不同的DNN模型以及優化方法。當有多種可行的網絡模型時,爲一個特定任務手動設計最優的DNN通常十分困難。網絡模型搜索( Network Architecture Search, NAS)是一項爲各類任務自動尋找DNN模型方案的技術。其使用遞歸神經網絡(Recurrent Neural Network, RNN)進行控制,通過強化學習創建候選DNN的結構。對這些候選模型進行訓練並且在驗證集上測試,驗證準確度作爲一個回報函數來優化控制器對下一個候選模型的構建。爲了能夠自動給移動設備尋找有效的DNNs,MNasNet在控制器中使用多目標回報函數來實現期望的精度和延遲需求。MNasNet相比NASNet加速2.3倍,同時參數減少4.8倍,操作更是減少10倍。此外,MNasNet也更爲精確。然而大多數NAS算法具有很高的計算強度,例如MNasNet需要50000GPU時才能在ImageNet數據集上尋找到一個有效的DNN模型。

爲減小NAS相關的計算成本,一些研究者提出通過代理任務和回報來搜索候選模型。FBNet通過在較小的數據集上進行優化,比MNasNet快420倍。也有研究表示在代理任務上的優化無法確保在目標任務上是最優結果,從而提出Proxyless-NAS方法克服這一問題。該方法使用路徑層面的剪枝減少候選模型的數量,並通過基於梯度的方法解決延遲等目標,最終只需要300GPU時便可尋找到有效的模型結構。Single-Path NAS更是將搜索時間減小至4小時。而這些加速的代價是準確度的降低。

NAS能夠通過空間內搜索所有可能的模型在精度、內存和延遲之間取得平衡,無需人爲干涉,這種方法在許多移動設備上都取得了精度和功效上目前最佳的性能。但由於計算量的要求,NAS算法很難應用到大型數據集中,對各個模型訓練並進行性能評估所花費的時間和計算成本是巨大的。爲減小訓練時間,候選DNNs可以在不同的子訓練集中進行同步訓練,由各子訓練集得到的梯度可以合併產生一個訓練好的DNN。然而這種平行訓練通常會造成較低的準確度,在保持高速收斂的同時,使用自適應學習率可以提高精度。

5 知識遷移和蒸餾

大型DNNs比小型DNNs具有更好的精度,因爲更多數量的參數能夠使網絡學習更復雜的函數。一些方法通過用小模型模仿大型預訓練網絡來實現這一目的。首先是知識遷移(Knowledge Tansfer, KT),這種方法將大模型中的“知識”遷移到小模型中,早期的KT方法被普遍用於網絡模型壓縮。關鍵思想是經過大模型標註的數據會包含大量對小模型有用的信息。例如在多分類問題中,如果大模型對輸入圖片在一些類中輸出較高的概率,那意味着這些類可能共享一些視覺特徵。通過讓小模型模擬這些概率,可以學習到比訓練集可用信息更多的知識。

而Hinton等人提出了另一類叫做知識蒸餾(Knowledge Distillation, KD)的方法,訓練過程比KT簡化許多。這種方法以學生-教師的模式進行訓練,小模型作爲學生,一組特定的DNNs作爲教師。在這項工作中,研究者們發現學生模擬教師輸出的方式,會使得小模型存在一定的精度損失。爲提高模型精度,Li等人最小化教師和學生之間特徵向量的歐氏距離,FitNet用類似的方法構建輕量DNN,讓學生模型的每層都模擬教師的特徵圖。但以上兩種方法對學生模型結構具有嚴格的假設,爲解決這一問題並提高泛化能力,可以使用指標間的相關性作爲訓練過程的優化問題。

基於KT和KD的方法能夠有效地減小大型預訓練DNNs的計算成本。研究表明,KD的思想也可以應用於計算機視覺之外的領域,如半監督學習、自適應域等。但是由於這種方法對學生模型的結構和大小具有嚴格的假設,難以泛化到更多的應用中。除此以外,目前的KD方法嚴重依賴於softmax輸出,而無法在其他輸出層起作用。如果學生能夠學習到教師模型中被激活神經元的信息,將會使學生模型具有更靈活的網絡結構,並且減少對softmax輸出層的依賴。

6 討論

6.1 低功耗計算機視覺指南

沒有哪項技術能夠單獨構建有效的DNN結構,大多數可應用的技術能夠互相結合以取得更高的功效。對於低功耗的計算機視覺任務,可以得出以下五點結論:

  1. 量化和減小參數精度能夠很大程度上降低模型大小與運算複雜度,但在多數機器學習庫上難以手動實現量化。英偉達的TensorRT庫能夠爲這類量化提供良好的接口;

  2. 剪枝和模型壓縮對優化大型預訓練DNNs是有效的選擇;

  3. 當從頭訓練新的DNN時,可以使用壓縮卷積核與矩陣分解來降低模型大小和計算量;

  4. NAS可以爲單個設備尋找最佳模型,多分支的DNNs在覈心的啓動以及GPU與CPU的同步上需要巨大的成本;

  5. 知識蒸餾可以用於較小或中等大小的數據集,因爲這樣對學生和教師的DNN模型有較少的假設,從而有更高的準確度。

6.2 評估準則

對於計算機視覺任務使用的低功耗DNNs的性能,應該從多方面來評估,而不僅僅是準確度。以下是可以考慮的主要準則:

  1. 應在大型數據集(如ImageNet、CIFAR、COCO等)中評估測試準確度,在訓練集較小的情況下,進行多層面的交叉驗證十分必要;

  2. 通常內存的尋求與模型參數數量相關,應該運用量化和剪枝時多個準則的對比;

  3. 通過評估操作數量來確定計算成本,當使用低精度DNNs是,每次操作的成本都會降低。在這種情況下,衡量能量損耗也很重要;

  4. 參數和操作數量並不總是與模型的能量損耗成正比,因此應當將DNNs部署到連接功率計的設備上,以確定模型的能量損耗。

論文原文:

https://arxiv.org/pdf/2003.11066

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章