1. 程式人生 > >深度學習模型壓縮與加速 綜述

深度學習模型壓縮與加速 綜述

  • 遷移學習:將一個模型的效能遷移到另一個模型上
  • 網路精餾:在同一個域上遷移學習的一種特例。
  • [2006,Bucila,SIGKDD]Model Compression 
    • 思想:通過整合強分類器標註的偽資料訓練了一個壓縮模型,並再現了原大型網路的輸出結果。
    • 缺點:僅限於淺層網路。
  • [2014,Hinton,NIPS]Distilling the Knowledge in a Neural Network 
    • 思想:這個複雜的網路是提前訓練好具有很好效能的網路,學生網路的訓練含有兩個目標:一個是hard target,即原始的目標函式,為小模型的類別概率輸出與label真值的交叉熵;另一個為soft target,為小模型的類別概率輸出與大模型的類別概率輸出的交叉熵,在soft target中,概率輸出的公式調整如下,這樣當T值很大時,可以產生一個類別概率分佈較緩和的輸出。作者認為,由於soft target具有更高的熵,它能比hard target提供更加多的資訊,因此可以使用較少的資料以及較大的學習率。將hard和soft的target通過加權平均來作為學生網路的目標函式,soft target所佔的權重更大一些。 作者同時還指出,T值取一箇中間值時,效果更好,而soft target所分配的權重應該為T^2,hard target的權重為1。 這樣訓練得到的小模型也就具有與複雜模型近似的效能效果,但是複雜度和計算量卻要小很多。
  • [2014,Ba,NIPS]Do deep nets really need to be deep 
    • 思想:設計了更淺卻更寬的學生模型,同時保證兩者的網路引數相同。
  • [2017,Romero,ICLR]Hints for the deep nets 
    • 思想:設計了更深的更窄的學生模型,同時保證兩者的網路引數相同,採用Hints方式。
  • [2016,Chen,ICLR]Net2net:Accelerating learning via knowledge transfer 
    • 思想:一種網路生長的方法來獲得學生模型的網路結構
  • [2016,Li,ECCV]Learning without forgetting 
    • 思想:分別從寬度和深度上進行網路生長,然後利用網路蒸餾方法訓練學生模型
  • Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer 
    • 思想:本文將attention map作為知識從teacher模型遷移到student模型。注意力機制很早就被用在NLP中,後來被證明將attention應用在CNN中也可以取得不錯的效果。作者提出attention map的原因是feature map的做法太多生硬,表現不佳。定義attention map的做法是將feature map不同通道的feature plane取絕對值然後相加。損失函式也做了改變,即在原損失函式的基礎上加上teacher和student模型的attention maps之間的歐氏距離。attention map的做法可以看作全啟用feature map的summary,所以擬合attention map的效果略好於feature map也是容易理解的。雖然比feature map的做法有進步,但是仍然存在要人為選取中間層的問題。
  • [2016,Sau,]Deep model compression:distilling knowledge from noisy teachers
  • Sequence-Level Knowledge Distillation. (Harvard University)
  • [2016,Cohen,]Group equivariant convolutional networks 
    • 思想:等變群論(equivariant group theory)。使 x 作為輸入,Φ(·) 作為網路或層,T (·) 作為變換矩陣。即使用變換矩陣 T (·) 轉換輸入 x,然後將其傳送至網路或層Φ(·),其結果和先將 x 對映到網路再變換對映後的表徵結果一致。
    • 缺陷:將遷移資訊應用到卷積濾波器的方法需要解決幾個問題。首先,這些方法的效能可與寬/平坦的架構(如 VGGNet)相媲美,但是無法與較窄/特殊的架構(如 GoogleNet、Residual Net)相比。其次,遷移假設有時過於強大以致於無法指導演算法,使得在某些資料集上的結果不穩定。
  • [2015,Romero]Fitnets:hints for thin deep nets 
    • 思想:在模型的網路層較深時,讓學生網路直接模擬教師網路的輸出比較困難,文中提出Fitnets模型,在深度神經網路模型的中間新增監督學習的訊號,要求學生模型和教師模型的中間層啟用響應儘可能一致.訓練過程分為兩階段,首先利用教師網路中間層資訊訓練學生模型前部引數,再利用教師模型的最終輸出資訊訓練學生模型的全部引數。
  • Knowledge Projection for DNN 
    • 思想:這篇文章的做法和fitnet的做法幾乎完全相同,兩點改變:中間層的選取上採用了迭代選擇的方案,選擇標準是聯合loss最小;teacher模型的中間輸出不只監督student模型的底層,也被繼續利用監督student模型的高層訓練。
  • [2016,Huang]Like what you like:knowledge distill via neuron selectivity transfer 
    • 思想:認為Fitnets方法要求學生模型模仿教師模型的全部特徵圖,該設定過於嚴格,由於學生模型與教師模型的能力存在較大差異,Fitnets的限制條件可能不利於引數學習過程的收斂和模型效能,因此利用學生-教師模 型 網路啟用 分 布 的 一 致 性 指導學生模型的訓練過程,使用最大平均差異作為損失函式,優化該損失函式促使學生模型和教師模型的網路響應分佈儘可能相似。
  • [2017,YIM]A gift from knowledge distillation:fast optimization,network minimization and transfer learning 
    • 思想:引 導 學 生 模 型 學 習 教 師模型網路層之間的資料流資訊,該資訊定義為層與  層之間的內積,兩個多通道網路層的資料流關係可用FSP(Flow of Solution Procedure)矩陣表示,在教師-學生框架中,優化目標函式為教師-學生模型對應層之間FSP差異的L2範數.該方法促使學生模型學習教師模型層與層之間的抽象關係,取得較好效果,並可用於其他遷移學習任務。
  • [2017,,NIPS]Sobolev training for neural network 
    • 思想:在sobolev空間中近似兩個函式,即不光match兩個函式的輸出,還match輸出對於輸入的梯度,即梯度也提供了非常豐富的資訊。把teacher和student模型分別看作兩個函式,採用sobolev訓練的方式比只match輸出要好很多。
  • DarkRank: Accelerating Deep Metric Learning via Cross Sample Similarities Transfer 
    • 思想:之前的工作都是考慮teacher模型和student模型的輸出以及中間結果的匹配,insight來源於Hinton的soft target,即讓student模型學習teacher模型的不同樣本之間的排序關係。假設1個batch有7個樣本進來,輸出端得到7張feature map,但這7張feature map是有親疏遠近關係的,對於類別6, 樣本0到它的距離小於5到它的距離。換句話說,在teacher模型中這7個樣本在類別6上的排序關係也可以作為知識傳遞給student模型。
  • Learning loss for knowledge distillation with conditional adversarial networks 
    • 思想:這篇文章將GAN和KD做了一個結合,取得了不錯的效果。作者認為student模型的容量遠小於teacher模型,讓student模型完全匹配teacher的做法有點困難,而且採用l2損失逼近的方式一定程度上限制了student模型的自主學習空間。學生網路是生成器,判別器是一個多層感知機網路,生成器和判別器迭代優化,生成器的目標是生成讓判別器無法辨別的logits。某種程度上,這個工作也可以理解成對損失函式做了改進。
  • Rocket Launching: A Universal and Efficient Framework 
    • 思想:在定義知識上沒有大的創新,使用的仍然是logits,但是在學習框架上和之前有所不同。它不用預訓練teacher模型,而是student和teacher模型同時訓練;另外一點是共享網路引數,共享一部分引數相當於火箭發射點火助推器的作用。所以student模型不是向一個已經完全學好的teacher模型學習,每次都去學習一個相對正確的輸出,而是和teacher模型一起學習成長,連同teacher模型犯錯後糾錯的過程也一併學習了。
  • Mimicking Very Efficient Network for Object Detection 
    • 思想:在檢測任務中,直接擬合logits或者feature map都是不可行的。所以作者採用匹配proposal的做法。
  • Cross Modal Distillation for Supervision Transfer 
    • 思想:作者提出跨模態遷移知識的做法,即在RGB資料集學習到的知識也能遷移到深度場景中來。
  • Face Model Compression by Distilling Knowledge from Neurons 
    • 思想:人臉識別中,遷移的知識更具針對性,選擇特定的特徵去擬合,儘量做到特徵選擇的均勻性。
  • Data-free knowledge distillation for deep neural networks 
    • 思想:這篇文章的應用場景是當訓練資料由於隱私等問題對於student模型不可用的時候,如何通過extra metadata的方式解決。
  • Using Knowledge Distillation To Improve Low-Precision Network Accuracy 
    • 思想:本文將KD和網路量化做了一個結合,用高精度teacher模型指導低精度student模型的訓練。網路引數精度下降後準確率勢必會受到影響,在獲得teacher模型的知識之後或許可以從一個壞的區域性最優點爬上來。作者提出了3種思路:teacher模型和量化後的student模型聯合訓練;預訓練的teacher模型指導量化的student模型從頭開始訓練;teacher模型和student模型均進行了預訓練,不過student模型在全精度權重基礎上做了量化,然後student在teacher模型的指導下進行finetuning。
  • Moonshine: Distilling with Cheap Convolutions 
    • 思想:這篇工作將KD和設計輕便的網路結構方法做了結合。當複雜網路結構被簡化的卷積模組替換的時候,計算更加高效,精度勢必受到影響。此時,將原網路作為teacher模型,簡化之後的網路作為student模型,然後通過teacher模型指導student模型的訓練。