1.研究背景
- 對模型預測精度無明顯影響
- 壓縮模型的參數數量、深度來降低模型空間復雜度
- 全連接層參數多,模型大小由全連接層主導
- 不顯著提高訓練時間復雜度,降低預測時間復雜度(計算量)
- 卷積層計算量大,計算代價由卷積操作主導
2.方法
2.1.更精細模型的設計
- Aggregated Residual Transformations for Deep Neural Networks
- DenseNet
- Highway
- [2016,Iandola,]SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size
- 思想:
- 將3x3卷積核替換為1x1卷積核(1個1x1卷積核的參數是3x3卷積核參數的1/9,這一改動理論上可以將模型尺寸壓縮9倍)。
- 減小輸入到3x3卷積核的輸入通道數
- 盡可能的將降采樣放在網絡后面的層中
- 借鑒ResNet思想,對原始網絡結構做了修改,增加了旁路分支,將分類精度提升了約3%。
- 作者提出了一個類似inception的網絡單元結構,取名為fire module。一個fire module 包含一個squeeze 卷積層(只包含1x1卷積核)和一個expand卷積層(包含1x1和3x3卷積核)。其中,squeeze層借鑒了inception的思想,利用1x1卷積核來降低輸入到expand層中3x3卷積核的輸入通道數。
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 思想:借鑒factorized convolution的思想,將普通卷積操作分成兩部分
- Depthwise Convolution:每個卷積核濾波器只針對特定的輸入通道進行卷積操作
- Pointwise Convolution:采用1x1大小的卷積核將depthwise convolution層的多通道輸出進行結合
- ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
- 思想:基于MobileNet的group思想,將卷積操作限制到特定的輸入通道。而與之不同的是,ShuffleNet將輸入的group進行打散,從而保證每個卷積核的感受野能夠分散到不同group的輸入中,增加了模型的學習能力。
2.2.模型裁剪/剪枝(Pruning)
- 思路源頭都是來自于Oracle pruning 的方法,即挑選出模型中不重要的參數,將其剔除而不會對模型的效果造成太大的影響。在剔除不重要的參數之后,通過一個retrain的過程來恢復模型的性能。
- 如何找到一個有效的對參數重要性的評價手段,在這個方法中就尤為重要,我們也可以看到,這種評價標準花樣百出,各有不同,也很難判定那種方法更好。
- 目前,基于模型裁剪的方法是最為簡單有效的模型壓縮方式。
2.2.1單個權重(Weight)剪枝——非結構化
定義:任意權重被看作是單個參數并進行隨機非結構化剪枝。
-
[1989,Lecun,NIPS]Optimal brain damage:
- 思想:將網絡中任意參數都看做單個參數
- 結果:有效提高預測準確率,不能減小運行時間,剪枝代價高,適用于小網絡
-
[1993,Hassibi,NIPS]Second Order Derivatives for Network Pruning:Optimal Brain Sugeon:
- 思想:在Optimal brain damage基礎上增加了基于手術恢復權重更新的步驟
- 結果:在準確率、泛化能力上提升,但是計算量大
-
[2015,Srinivas,BMVC]Data-free parameter pruning for deep neural networks:
- 思想:與Optimal Brain Sugeon相似,將剪枝看作是將小權重置零的操作,手術恢復則相當于找到相似權重補償被置零的權重造成的激活值損失。
- 結果:在剪枝時完全不依賴任何訓練數據,只依賴網絡中的權重,因而通過手術恢復準確率時不需要任何訓練數據調優,通過大量推導近似大大減少計算復雜度
-
[2015,Han,NIPS]Learning both Weights and Connections for Efficient Neural Network
- 思想:根據神經元連接權值的大小確定修剪訓練后網絡中的不重要連接(connections),來減少網絡所需要的參數。
[2016,Kadetotad,ICCAD]Efficient memory compression in deep neural networks using coarse-grain sparsification for speech applications
-
[2017,Molchanov,ICLR]Pruning Convolutional Neural Networks for Resource Efficient Transfer Learning Inference
- 思想:從眾多的權重參數中選擇一個最優的組合(組合優化問題),使得被裁剪的模型的代價函數的損失最小。結合貪婪剪枝和基于反向傳播的微調來確保剪枝后的網絡的泛化性。提出了一種基于泰勒展開來近似計算去除部分參數后網絡的損失函數的變化。
-
[2017,Wang,ICLR]Training Compressed Fully-Connected Networks with a Density-Diversity Penalty
- 思想:Density指的是模型參數的冗余度,就是零和極小值的多少;Diversity指的是參數的多樣性,即如果參數能夠聚類成為少數幾個類別,那么就是多樣性低,反之就是多樣性豐富。實際上論文的目的不是通過加入懲罰項直接訓練一個很小的模型,而是通過這么一個懲罰,使得模型在訓練時能夠盡可能冗余,盡可能多樣性低,這樣在后續就可以更大程度低剪枝和量化編碼。
-
缺點:
- 導致網絡連接不規整,需要通過稀疏表達來減少內存占用,進而導致在前向傳播時,需要大量條件判斷和額外空間來標明0或非0參數位置,因此不適合并行計算。
- 非結構化的稀疏性需要使用專門的軟件計算庫或者硬件。
2.2.2核內權重(Intra Kernel Weight)剪枝/核的稀疏化——結構化
- 對權重的更新加以正則項進行限制,使其更加稀疏,使大部分的權值都為0。
- [2016,Wen,]Learning Structured Sparsity in Deep Neural Networks
- 思想:使用Group Lasso(一種類似于L1的正則化方式,可以看成是把weights當成組來對待,以此將成組的weights規約到0附近,實現學習出來的參數的盡可能地結構化稀疏),依次實現網絡預測的加速。
- [2016,Guo,]Dynamic Network Surgery for Efficient DNNs
- [2016,JIN]Training Skinny Deep Neural Networks with Iterative Hard Thresholding Methods
- 思想:通過在目標函數中增加參數的L0范數約束,實現模型的稀疏化,但L0范數求解較困難,因此提出一種階段迭代算法,首先僅更新權值較大的參數,然后恢復所有網絡連接,迭代更新所有參數,在訓練中可實現模型裁剪
- [2017,Anwar,JETC]Structured pruning of deep convolutional neural networks:
- 思想1:定義顯著性變量并進行貪婪剪枝。核內定步長粒度,將細粒度剪枝轉化為粗粒度剪枝。
- 全連接或稠密連接:一般作用到同一輸入特征圖上的Kernel必須采用相同的步長和偏置
- 卷積層不是稠密連接:作用在不同特征圖上的kernel步長與偏置可以不同
- 思想2:使用進化粒子濾波器決定網絡連接重要性
2.2.3卷積核(Kernel)/特征圖(Feature Map)/通道(Channel/ Filter)剪枝——結構化
- 定義:減去第i層的filter,進而減去第i層產生的部分特征圖和第i+1層的部分kernel。
- kernel粒度的顯著性度量可以采用kernel的權重和來判斷
- 采用Filter的權重和來判斷
- 其他
- FeatureMap粒度的顯著性度量確定:
- 采用Filter權重和來判斷
- 其他
- [2015,Polyak,IEEE Access]Channel-Level Acceleration of Deep Face Representations
- InboundPruning方法
- [2017,Li,ICLR]Pruning Filters for Efficient ConvNets
- 全局貪婪剪枝方法
- 思想:選取filter權重和作為顯著性度量,對每一層中的filter從大到小排序,畫出權重和關于排序后下標的曲線,若曲線陡峭,則在這一層減去更多filter。在全部剪枝完成后再通過一次訓練恢復準確率。
- [2017,Hu,ICLR]Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures
- 思想:激活值為0的神經元是冗余的,基于統計的方法刪除對大部分不同輸入都輸出零值的單元,并進行交替重新訓練
- An Entropy-based Pruning Method for CNN Compression
- 思想:作者認為通過weight值的大小很難判定filter的重要性,通過這個來裁剪的話有可能裁掉一些有用的filter。因此作者提出了一種基于熵值的裁剪方式,利用熵值來判定filter的重要性。
- Designing Energy-Efficient Convolutional Neural Networks using Energy-Aware Pruning
- 作者指出一個模型中的能量消耗包含兩個部分,一部分是計算的能耗,一部分是數據轉移的能耗,在作者之前的一片論文中(與NVIDIA合作,Eyeriss),提出了一種估計硬件能耗的工具,能夠對模型的每一層計算它們的能量消耗。然后將每一層的能量消耗從大到小排序,對能耗大的層優先進行裁剪,這樣能夠最大限度的降低模型的能耗,對于需要裁剪的層,根據weight的大小來選擇不重要的進行裁剪,同樣的作者也考慮到不正確的裁剪,因此將裁剪后模型損失最大的weight保留下來。
- Coarse Pruning of Convolutional Neural Networks with Random Masks
- 思想:既然無法直觀上的判定filter的重要性,那么就采取一種隨機裁剪的方式,然后對于每一種隨機方式統計模型的性能,來確定局部最優的裁剪方式。 這種隨機裁剪方式類似于一個隨機mask,假設有M個潛在的可裁剪weight,那么一共就有2^M個隨機mask。假設裁剪比例為a,那么每層就會隨機選取ML*a個filter,一共隨機選取N組組合,然后對于這N組組合,統計裁剪掉它們之后模型的性能,然后選取性能最高的那組作為局部最優的裁剪方式。
- 作者同樣將這種裁剪方式運用在kernel上,對kernel進行裁剪,并將filter級和kernel級的裁剪進行組合,得到了較好的結果。
- [2017,Tian,]Efficient Gender Classification Using a Deep LDA-Pruned Net
- 思想:作者發現,在最后一個卷積層中,經過LDA分析發現對于每一個類別,有很多filter之間的激活是高度不相關的,因此可以利用這點來剔除大量的只具有少量信息的filter而不影響模型的性能
- [2015,]Sparsifying Neural Network Connections for Face Recognition
- 思想:本文應用場景為人臉識別的模型DeepID。作者認為,如果一層中的某個神經元的激活與上一層的某個神經元的激活有很強的相關性,那么這個神經元對于后面層的激活具有很強的判別性。也就是說,如果前后兩層中的某對神經元的激活具有較高的相關性,那么它們之間的連接weight就是非常重要的,而弱的相關性則代表低的重要性。如果某個神經元可以視為某個特定視覺模式的探測器,那么與它正相關的神經元也提供了這個視覺模式的信息,而與它負相關的神經元則幫助減少誤報。作者還認為,那些相關性很低的神經元對,它們之間的連接不一定是一點用也沒有,它們可能是對于高相關性神經元對的補充。
- [2017,Luo,]ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression
- [2017,He,]Channel Pruning for Accelerating Very Deep Neural Networks
- 思想:首先通過Lasso回歸的方法對卷積通道進行選擇性刪除,然后對權重進行學習調
整,利用最小二乘法重構通道刪除之前的網絡響應,在保證模型性能的條件下減少模型參數和計算量。
- 思想:首先通過Lasso回歸的方法對卷積通道進行選擇性刪除,然后對權重進行學習調
- 優點:
- 不依賴任何稀疏卷積計算庫及專用軟件
- 能大大減少測試的計算時間。
2.2.4中間隱層(Layer)剪枝
- 定義:刪除一些層,即改變網絡結構
- [2017,Rueda,GCRP]Neron Pruning for Compressing Deep Networks using Maxout Architectures
- 思想:提出一種最大化輸出單元將多個神經元合并為更復雜的凸函數表達,并根據各個神經元再訓練集上的響應的局部相關性進行選擇。
- DeepRebirth: A General Approach for Accelerating Deep Neural Network Execution on Mobile Devices
- 思想:將網絡層分為權重層(如卷積層和全連接層)和非權重層(如Pooling層、ReLU層等),非權重層的理論計算量較小,但由于內存數據訪問速度等原因,其計算耗時較多,提出將非權重層與權重層進行合并的方法,去除獨立的非權重層后,運行時間顯著減少 。
2.3網絡分解(張量分解)
- 方法:
- 將三維張量鋪展成二維張量,使用標準SVD方法
- 使用多個一維張量外積求和逼近(用三個一維張量外積求和進行K次累加來逼近一個秩為K的三維張量)
- 目的:降低模型的時間復雜度
- 通常基于張量的低秩近似理論和方法,將原始的權重張量分解為兩個或者多個張量,并對分解張量進行優化調整
- 優缺點:
- 低秩方法很適合模型壓縮和加速。
- 低秩方法的實現并不容易,因為它涉及計算成本高昂的分解操作。
- 目前的方法逐層執行低秩近似,無法執行非常重要的全局參數壓縮,因為不同的層具備不同的信息。
- 分解需要大量的重新訓練來達到收斂。
2.3.1CP分解
- [2014,JADERBER]Speeding up convolutional neural networks using fine-tuned CP-decomposition
- 思想:采用CP分解法將一層網絡分解為五層低復雜度的網絡層,但在基于隨機梯度下降法的模型權重微調過程中難以獲取張量分解的優化解.作者利用兩個卷積神經網絡模 型對該方法進行評估,結果表明該方法以較低的性能損失實現更高的計算速度
- [2014,Denton,NIPS]Exploiting linear structure within convolutional netowrks for efficient evalution
- 思想:探索多種張量分解方法,例如二維張量分解可采用奇異值分解法,三維張量可轉化為二維張量進行分解,以及單色卷積分解和聚類法低秩分解等.作者利用 卷 積 參 數 的冗余性獲得 近似計算過程,較大的減少所需的計算量,在保持原始模型浮動1%精度的條件下,基于 CPU和GPU的計算過程均取得近2倍的加速。
2.3.2SVD分解
- [2016,Zhang]Accelerating very deep convolutional networks for classification and detection
- 思想:對參數矩陣進行張量SVD分解進行非線性問題的求解,同時不需要通過隨機梯度下降過程進行優化,并在非對稱重構中考慮前一網絡層的累計重構誤差,在不需要隨機梯度下降(SGD)的情況下,開發了一種有效的非線性優化問題求解方法
- [2015,Jaderberg,BMVC]Speeding up convolutional neural networks with low rank expansions
- 思想:使用秩為1(可以分解為行向量與列向量乘積)的卷積核作用在輸入圖上產生相互獨立的M個基本特征圖,卷積神經網絡大小為k×k 的卷積核分解為1×k 和k×1的卷積核, 然后通過學習到的字典權重利用線性組合重構出輸出特征圖。
- [2017,Tai]Convolutional neural networks with low-rank regularization. (Princeton University, etc.)
- 思想:提出從零開始訓練低秩約束卷積神經網絡模型的方法,不僅速度得到提升,而且在一些情況下模型性能也有所提高.作者提出一種低階張量分解的新算法,用于消除卷積核中的冗余.該算法找 到 矩陣分解 的精神的全局優化器,比迭代方法更有效。
2.3.3Tucker分解
- [2015,Kim,Computer science]Compression of deep convolutional neural networks for fast and low power mobile applications
- 思想:首先進行變分貝葉斯矩陣分解的秩選擇,然后再進行核張量Tucker分解,最后再次對模型進行調整。
2.3.4張量列分解(Tensor Train,TT)
- [2015,NOVIKOV]Tensorizing Neural Networks.
- Ultimate tensorization_compressing convolutional and FC layers alike. (Moscow State University, etc)
2.3.5未歸類
-
[2013,Sainath,ieeeicassp]Low-rank matrix factorization for deep neural network training with high-dimensional output targets
- 思想:
-
[2015,Liu,CVPR]Sparse convolutional neural networks
- 思想:利用通道間和通道內冗余,在通道上進行稀疏分解,然后將高計算代價的卷積操作轉換成矩陣相乘。然后再將矩陣稀疏化,結合微調步驟,最小化含有稀疏性最大化正則項的損失函數
-
[2013,Denil,NIPS]Predicting Parameters in Deep Learning
- 思想:
[2015,Nakkiran,ISCA]Compressing Deep Neural Networks Using a Rank-Constrained Topology
Learning compact recurrent neural networks. (University of Southern California + Google)
Efficient and Accurate Approximations of Nonlinear Convolutional Networks. (@CVPR2015)
Learning with Tensors: Why Now and How? (Tensor-Learn Workshop @ NIPS’16)
[2016,Wang,]Fixed-point Factorized Networks
2.4 權值共享
2.4.1結構化矩陣
- 思想:如果一個 m x n 階矩陣只需要少于 m×n 個參數來描述,就是一個結構化矩陣。通常這樣的結構不僅能減少內存消耗,還能通過快速的矩陣-向量乘法和梯度計算顯著加快推理和訓練的速度。
- Structured Convolution Matrices for Energy-efficient Deep learning. (IBM Research–Almaden)
- Structured Transforms for Small-Footprint Deep Learning. (Google Inc)
- An Exploration of Parameter Redundancy in Deep Networks with Circulant Projections.
- Theoretical Properties for Neural Networks with Weight Matrices of Low Displacement Rank.
2.4.2哈希
- Functional Hashing for Compressing Neural Networks. (Baidu Inc)
- [2015,Chen,ICML]Compressing Neural Networks with the Hashing Trick
- 思想:將參數映射到相應的哈希桶內,在同一個哈希桶內的參數則共享同一值。
2.4.3其他
- [2016,Han,ICLR]Deep compression:compressing deep neural networks with pruning,trained quantization and Huffman coding
- 思想:
- 利用k均值聚類算法計算權重的多個聚類中心,將權重量化為距離最近的聚類中心,通過訓練微調的方式對權重進行補償。
- 首先修剪不重要的連接,重新訓練稀疏連接的網絡。然后使用權重共享連接的權重,再對量化后的權重和碼本(codebook)使用霍夫曼編碼,以進一步降低壓縮率。
- [2014,Gong,]Compressing deep convolutional networks using vector quantization
- 思想:通過使用kmeans算法將全部參數進行聚類,每簇中參數共享中心值。
- Learning compact recurrent neural networks. (University of Southern California + Google)
2.5權重量化(Quantization)
- 思想:通過減少表示每個權重所需的比特數來壓縮原始網絡。
2.5.1定點運算
- [2011,Vanhoucke,NIPS]Improving the speed of neural networks on CPUs
- [2014,Hwang,Journal of Signal Processing Systems]Fixed-point feedforward deep neural network design using weights+1,0,and -1
- [2016,DETTMERS]8-bit approximations for parallelism in deep learning
- 思想:開發并測試8bit近似算法,將32bit的梯度和激活值壓縮到8bit,通過 GPU集群測試模型和數據的并行化性能,在保證模型預測精度的條件下,提出的方法取得兩倍的數 據傳輸加速。
2.5.2二值化、三值化
- [2015,Courbariaux,NIPS]Binarized Neural Networks:Training deep neural networks with weights and activations constrained to+1 or-1
- 思想:二值化的權重策略對網絡的權重進行較為極端的量化,限制權重只能是-1或1。
- [2016,Rastegari,ECCV]Xnornet: Imagenet classification using binary convolutional neural networkSpeeding s
- 思想:網絡權重二值化、輸入二值化,從頭開始訓練一個二值化網絡,不是在已有的網絡上二值化。
- [2017,]Performance Guaranteed Network Acceleration via High-Order Residual Quantization
- 思想:本文是對 XNOR-Networks 的改進,將CNN網絡層的輸入 進行高精度二值量化,從而實現高精度的二值網絡計算,XNOR-Networks 也是對每個CNN網絡層的權值和輸入進行二值化,這樣整個CNN計算都是二值化的,這樣計算速度快,占內存小。
- [2017,Lin]Neural networks with few multiplications
- 思想:
- [2017,Zhou,ICLR]Incremental network quantization:Towards lossless cnns with low-precision weights
- 思想:給定任意結構的全精度浮點神經網絡模型,能將其轉換成無損的低比特二進制模型。增量式網絡量化方法,三種獨立操作:權重劃分、分組量化、再訓練。
- [2017,Guo,CVPR]Network Sketching: Exploiting Binary Structure in Deep CNNs
- [2016,Fengfu,CVPR]Ternary weight networks
- 思想:三值化
2.5.3未分類
-
[2016,Soulie,ICANN]Compression of deep neural networks on the fly
- 思想:在模型學習階段進行壓縮的方法。首先在全連接層損失函數上增加額外的歸一項,使得權重趨向于二進制值,然后對輸出層進行粗粒度的量化。
-
[2015,]Deep learning with limited numerical precision
- 思想:基于隨機修約(stochastic rounding)的 CNN 訓練中使用 16 比特定點表示法(fixed-point representation),顯著降低內存和浮點運算,同時分類準確率幾乎沒有受到損失。
-
[2016,ZHOU]DoReFa-Net:training low bitwidth convolutional neural networks with low bitwidth gradients
- 思想:利用低比特的梯度參數訓練低比特的模型權重,且激活值也為低比特數據,該技術可對訓練和預測過程進行加速。
-
[2016,Wu,CVPR]Quantized convolutional neural networks for mobile devices
- 思想:提 出 一 個 量 化 卷 積 神 經 網 絡 框 架 (CNN),基于k 均值聚類算法加速和壓縮模型的卷積層和全連接層,通過減小每層輸出響應的估計誤差可實現更好的量化結果,并提出一種有效的訓練方案抑制量化后的多層累積誤差。用一個小矩陣(codebook)去量化大矩陣(權重矩陣)
-
ShiftCNN: Generalized Low-Precision Architecture for Inference of Convolutional Neural Networks
- 思想:一個利用低精度和量化技術實現的神經網絡壓縮與加速方案。
- 該量化方法具有碼本小、量化簡單、量化誤差小的優點。
-
Soft weight-sharing for neural network compression
?
?
效果:權重量化的方法比稀疏分解效果更好。
2.6遷移學習/網絡精餾
- 遷移學習:將一個模型的性能遷移到另一個模型上
- 網絡精餾:在同一個域上遷移學習的一種特例。
- [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模型的訓練。
2.7計算加速
- Faster CNNs with direct sparse convolutions and guided pruning
- 思想:提出一種基于向量形式的乘法,實現密集矩陣與稀疏矩陣之間的高效乘法運算。
- [2017,Gysel]Hardware-oriented approximation of convolutional neural networks
- 思想:提出一種模型近似框架 Ristretto,用于分析模型卷積層和全連接層的權重和輸出的數值分辨率,進而將浮點型參數轉化為定點型數值,并通過訓練過程對定點型模型進行微調。
- [2017,,ICML]MEC: Memory-efficient Convolution for Deep Neural Network
- 思想:內存利用率高且速度較快的卷積計算方法
- More is Less: A More Complicated Network with Less Inference Complexitv
- 思想:提前鎖定哪些值將會為0,從而在矩陣乘法時直接避免相應運算。
- Speeding up Convolutional Neural Networks By Exploiting the Sparsity of Rectifier Units
- 思想:由于使用ReLU作為激活函數的網絡,其網絡輸出通常都非常稀疏。本文不計算完整的矩陣乘法,而是只計算非0值導致的輸出。并且,充分利用AVX或者SSE指令完成 (1×1)×(1×4)(1×1)×(1×4)的乘法。
2.8對數據進行變換
- WAE-Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks
- 思想:WAE借助小波分解得思想,將原圖分解成兩個低分辨率圖像,以達到網絡加速的目。