深度学习每层的通道数如何计算_模型通道剪枝之DMCP: Differentiable Markov Channel Pruning...
模型壓縮的目的是減小模型計算量(FLOPs or MACC)、減小模型參數量/體積、減小模型的推理時間(latency)。主要方法有知識蒸餾、緊湊網絡設計、剪枝、量化、低秩近似等。今天分享一篇通道剪枝相關的論文。商湯出品,CVPR 2020 Oral。
論文傳送門:http://arxiv.org/abs/2005.03354v1
商湯官方解讀:https://zhuanlan.zhihu.com/p/146721840
Introduction
CNN是過參數化的,通道剪枝可以加速和壓縮模型,去除不重要的通道使得模型更加高效、緊湊。通道剪枝可以被視為在原始網絡中尋找一個最優的子結構的問題。典型的剪枝程式:預訓練大模型 - 通道/權重剪枝 - 微調小模型。有一篇論文指出,剪枝后的模型結構是其性能表現的核心因素,而不是繼承的所謂的重要的權重。這一發現表明通道剪枝的本質是找到良好的剪枝結構,即逐層通道數目。
搜索空間很大,如何高效的搜索?本文提出了DMCP,給定限制條件下可以端到端優化的通道剪枝算法。作者將通道剪枝建模為一個馬爾可夫過程,馬爾可夫過程中的狀態
對應通道k被保留、 到 的轉移概率對應當第k個通道被保留時第k+1個通道的保留概率。各狀態的邊緣概率可以由轉移概率的乘積計算出來,該邊緣概率被視作通道的重要程度。在網絡前饋的時候,邊緣概率作為系數乘以特征圖的對應通道。該方法可以使用SGD來進行端到端的優化。優化結束之后,根據各狀態的邊緣概率對模型進行剪枝,重訓剪枝后的模型來獲得更高的性能。Related Work
神經網絡結構搜索(NAS):一種與此相似的技術是NAS,例如DARTS。DARTS使用一組可學習的權重來設置每個候選操作的概率的參數,層的輸出是概率和相應操作的特征圖的線性組合。訓練后,選擇概率最高的候選操作構成最終架構。但是,DARTS是在小型代理任務上執行,然后將搜索到的結構遷移到大規模目標任務上。ProxylessNAS 通過僅采樣兩條路徑來搜索大規模目標任務上的體系結構,從而避免了使用代理任務。但是DARTS中提出的可微方法并不能直接應用在剪枝過程中,原因在于:兩者的所搜空間是不同的、DARTS總的各個操作是相互獨立的而剪枝中存在一些隱含的邏輯關系。
通道剪枝:可以被分為硬剪枝(直接去除通道)和軟剪枝(通道系數設置為0)。硬剪枝方法間的差異存在于剪枝標準的不同,例如權重標準,輸出中零的平均百分比或每個通道對最終損失的影響。比如一種做法是采用BN中的比例因子作為通道重要程度的度量,稀疏訓練后去除相對不重要的通道。軟修剪方法主要是使修剪的通道為零或接近于零,以減少這些通道的影響。比如一種做法是首先通過層內準則和計算的層比率將一些濾波器置零,然后會逐漸增加置零的濾波器的比例,直到達到給定的計算預算為止。本文的方法可以歸為軟剪枝,與別的方法相比,本文方法最大的區別在于簡化了搜索空間:
。另外的一些相關工作設計一個搜索過程,直接從未剪枝的網絡中搜索最佳子結構。AMC提出采用強化學習的方法來訓練一個控制器,它輸出每層的剪枝率。MetaPruning使用元學習的方法來預測模型權重、結合遺傳算法來搜索子結構。這兩種方法存在的共性問題是:該過程在一個非常大的結構采樣空間里面進行,這些方法的可擴展性受到限制。有關AMC和MetaPruning的簡要介紹參見文尾。Method
本文將通道剪枝建模為馬爾可夫過程,如上圖所示,這是一個有向無環圖。狀態
代表第k個通道被保留;轉移概率 代表:如果第k的通道被保留,那么第 k+1個通道的保留概率。任何一個狀態都可以轉移到終止狀態 , 就預示著剪枝過程的結束。該過程具有以下特性:如果層L保留k個通道,則它們必須是前k個通道,也就是說如果第k個通道保留,那么前k-1個通道也一定要保留。馬爾可夫過程的無記憶性:給定第k個通道被保留,那么第 k+1個通道是否保留與前 k-1個通道是否保留是條件獨立的。注意作者限制每層至少保留一個通道,即 。前 k個通道的保留概率為:那么轉移概率
如何得到呢?作者將該過程看作一個隨機過程,然后通過一組可學習的參數來對轉移概率進行參數化。為了與網絡權重(network weights)相區別,作者將這組可學習參數稱為結構參數(architecture parameters) 。結構參數是直接由網絡學習得到的,轉移概率由結構參數計算得到,邊緣概率由轉移概率計算得到:一些細節:1. 將輸出特征圖的每個通道乘以相應的保留概率,即實現將結構參數整合進未剪枝的模型中;2. 注意,BN會對特征圖做批標準化,ReLU激活特征圖,所以結構參數應該用在它們后面;3. 對于shortcut的處理。殘差結構中的shortcut要求被連接的兩個卷積層具有相同的通道數,作者采用結構參數共享的方法來滿足這一點;4. 作者不為結構參數添加權重衰減,原因:因為當某些通道的保留概率接近于0或1時,可學習參數
的范數將變得非常大,強迫它們接近0會損害優化過程。下面來為結構參數A添加正則項 / 計算損失。首先要明確Budget Regularization. 本文中使用FLOPs作為Budget Regularization。但是FLOPs不能直接使用梯度下降法(GD)來進行優化,作者提出了以下的解決方案。層L的平均通道數通過下式計算:
給定層L的平均輸入通道數E(in)和平均輸出通道數E(out),那么E(FLOPs)可以通過下式計算:
上式中
是輸入特征圖的寬/高, 是卷積核的寬/高, 是padding size,stride是步長。整個模型的 由逐層相加而得。行文至此,損失函數也就水到渠成了。假設是分類任務, 假設
是給定的FLOPs Budget Regularization,那么損失函數可以寫作:注意,為了使得
嚴格低于但又不對其過于敏感,作者為該項損失增加一條邊界,即限制: ,其中 稱為容忍率,默認設置為0.95。DMCP的訓練過程可以分為兩個階段,即未剪枝網絡的權重更新和結構參數更新。在訓練過程中,階段1和階段2被迭代調用。
熱身階段:在迭代階段1和階段2之前,DMCP首先訓練階段1一些epoch以進行預熱,其中子網絡使用的結構參數采樣自隨機初始化的Markov過程。此過程旨在避免由于權重訓練不足而導致更新結構參數時,網絡掉入不良的局部最小值。
階段1:利用
,僅更新未剪枝網絡的權重。作者引入variant sandwich rule來訓練未剪枝的網絡,如上圖(a)所示,以使未剪枝模型中的通道組比緊隨之后的通道組更“重要”,這一訓練方式將同一層中的通道看作是不平等的,此時具有k個通道的層的最佳選擇是前k個通道,而不是其他可能的組合。在此基礎上,引入馬爾可夫建模變得合理。階段2:利用
,僅更新結構參數。為了進一步減少搜索空間,作者將通道均勻地分為幾組(≥10組),每個結構結構參數α負責一組而不是僅一個通道。每層具有相同數量的組。通過Pruned Model Sampling來實現通道剪枝的最終目的:獲得一個緊湊的、復雜度低的模型。在DMCP訓練結束之后,來采樣選擇滿足給定限制條件的模型。作者提出了兩種采樣方法:其一,Direct Sampling (DS),在target FLOPs budget的限制下,根據每一層優化得到的馬爾可夫過程的轉移概率采樣,層間是獨立的;其二,Expected Sampling (ES),將每層的通道數設置為平均通道數,平均通道數由馬爾可夫過程的狀態概率相加而得。作者稱,在實驗中
總是可以優化到0,所以FLOPs的限制是容易滿足的,即Expected Sampling (ES)總是可以滿足FLOPs的限制。最后,從頭訓練獲得的剪枝模型。Experiments
作者利用MobileNetV2和ResNet在ImageNet上進行classification實驗。
消融實驗之可恢復驗證(Recoverability verification)。DMCP應該具有的一個特性是,在沒有FLOPs約束的預訓練模型上進行搜索時,它應該保留幾乎所有通道。作者在MobileNetV2 1.0x上進行實驗,隨機初始化結構參數、無FLOPs約束。訓練過程中freeze網絡的權重,僅僅訓練結構參數,結果如下圖。從圖中可以看到,DMCP具有可恢復性。
消融實驗之Expected sampling和Direct Sampling的對比。作者在MobileNetV2-210M和ResNet50-1.1G(注:ResNet50-1.1G表示未剪枝模型選用ResNet50,target FLOPs=1.1G,其余命名方式類似)上進行實驗。MobilenetV2 0.75x和ResNet50 0.5x的FLOPs分別是210M和1.1G,這兩個baseline的分類精度分別是70.4%和71.9%。對于DS,作者采樣了五個模型。從下述結果可以看到:1.不論哪種方法,都優于baseline;2.ES與DS的最優結果相近。ES具有魯棒性,作者默認采用ES的采樣方式。
消融實驗之Influence of warmup phase。Warmup可以帶來更好的性能。一個可能的原因是,使用預熱使網絡權重在更新結構參數之前得到了足夠的訓練,這使得權重更加可區分,并防止了結構參數陷入不良的局部最小值。作者在補充材料中提到了一個細節:使用預訓練模型代替預熱,精度會下降0.6%。
消融實驗之Impact of the variant sandwich rule。變體與原始的“三明治規則”之間有兩個區別。首先,前者每層中保留通道的比率不同,而后者是固定的。因為剪枝網絡對不同的層可能具有不同的偏好。其次,前者保留通道比率的隨機抽樣服從結構參數分布,而后者服從均勻分布。從實驗結果可以看到,變體的“三明治規則”更適合于當前任務。
消融實驗之Training scheme。在warmup階段之后,第一種設置是:僅根據
更新結構參數;第二種設置是:根據 更新結構參數;第三種設置是:根據 同時更新結構參數和網絡權重。第一個實驗是FLOPs引導的baseline,具有相同FLOPs的層修剪程度也相同,其結果遠比其他實驗差。與第二個實驗相比,可知任務損失可以幫助區分不同層的重要性,即使不同的層具有相同FLOPs它們的重要程度也很可能是不同的。最后,第三個實驗說明當結構參數發生變化時,權重也應進行調整。DMCP與其他SOTA的方法進行對比,包括reinforcement learning method AMC, evolution method MetaPruning, one-shot method AutoSlim, and traditional channel pruning methods SFP and FPGM。從下表中可以看出,在相同的FLOPs限制下,DMCP優于所有其他方法。請注意,AMC,MetaPruning和DMCP通過標準的硬標簽丟失從頭開始訓練修剪的模型, 而AutoSlim采用了知識蒸餾。為了與AutoSlim進行公平比較,作者還使用相同的訓練方法來訓練剪枝后的模型。結果表明,這種訓練方法可以進一步提高性能,并且在不同的FLOPs模型中DMCP都超過了AutoSlim。
最后補充一點:作者在附錄中提到,不用可爾科夫過程建模結構參數,而是用貝努利模型來建模,剪枝后的模型分類精度為70.1%,比DMCP低了2.3%。
Conclusion
小結一下:本文提出了一種新的通道剪枝方法(稱為可微馬爾可夫通道剪枝,DMCP),以解決現有方法需要訓練和評估大量子結構的缺陷。DMCP將通道剪枝建模為馬爾可夫過程,該方法是可微分的,因此可以采用梯度下降法來端到端的優化。優化之后,可以通過簡單的“期望采樣”來采樣所需模型,并從頭訓練以微調。
相關工作補充:
AMC: AutoML for Model Compression and Acceleration on Mobile Devices (ECCV18)
傳統的模型壓縮方法依靠手工設計的啟發式策略,或者領域專家在大的設計空間中對精度、速度、模型體積進行均衡。搜索空間太大引發兩個問題:耗時、結果次優。AMC旨在利用自動機器學習(AutoML)的方法來自動尋找優于 人工設計的、模型特異的 壓縮策略。AMC采用了強化學習的方法。作者發現壓縮后模型的性能對每一層的稀疏度非常敏感,因此需要一個細粒度的動作空間,所以作者提出了一種使用DDPG代理程序的連續壓縮比控制策略,通過懲罰精度損失、反復試驗來學習,同時鼓勵模型壓縮和加速。Actor的內部結構:FC-FC-sigmoid,每個FC含有300個神經單元。具體來說,DDPG代理以分層方式處理網絡。對于每個層Lt,代理接收一個embedding St,該embedding編碼該層的有用特性,然后輸出精確的壓縮比at。在壓縮了層Lt之后,代理將移動到下一層。在沒有微調的情況下評估當前的剪枝模型的精度,這種簡單的近似可以縮短搜索時間。搜索完成后微調搜索到的模型。兩種壓縮模型搜索思路:給定FLOPs, latency或model size搜索最佳精度的模型(通過限制搜索空間實現);給定精度搜索最小的模型(在reward中同時考慮精度和資源限制)。
St如上,其中t是層序號、c*k*k*n是卷積核尺寸、c*h*w是輸入特征圖尺寸、reduced是前面所有層整個的FLOPs削減量、Rest是剩余的FLOPs削減量、at-1屬于(0, 1]是前一層的削減比例。
MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning (ICCV19)
常規的通道剪枝方法主要依靠數據驅動的稀疏性約束或人為設計的策略。最近的AutoML-style的一些方法基于反饋循環或強化學習,以迭代的方式自動剪枝通道。MetaPruning是港科大、曠視、清華、華科一起提出的一種采用元學習(Meta Learning)的方法來自動進行網絡通道剪枝的算法。元學習是在學習學習方式。本文中作者提出訓練一個可以為所有候選的剪枝網絡結構生成權重的PruningNet,這樣就可以通過在驗證數據上評估其準確性來搜索性能良好的結構,非常高效。采用隨機結構采樣的方法來訓練PruningNet。PruningNet會使用相應的網絡編碼矢量(即每一層中的通道數)為剪枝網絡生成權重。通過隨機輸入不同的網絡編碼向量,PruningNet逐漸學會為各種剪枝網絡結構生成權重。訓練完成后,通過遺傳算法來搜索性能良好的剪枝網絡,該方法可以靈活地合并各種約束。 PruningNet由FC-ReLU-FC組成。
總結
以上是生活随笔為你收集整理的深度学习每层的通道数如何计算_模型通道剪枝之DMCP: Differentiable Markov Channel Pruning...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postgresql 安装_CentOS
- 下一篇: dump文件分析工具_使用这个 Pyth