1.研究背景
- 對模型預(yù)測精度無明顯影響
- 壓縮模型的參數(shù)數(shù)量、深度來降低模型空間復(fù)雜度
- 全連接層參數(shù)多,模型大小由全連接層主導(dǎo)
- 不顯著提高訓(xùn)練時(shí)間復(fù)雜度,降低預(yù)測時(shí)間復(fù)雜度(計(jì)算量)
- 卷積層計(jì)算量大,計(jì)算代價(jià)由卷積操作主導(dǎo)
2.方法
2.1.更精細(xì)模型的設(shè)計(jì)
- 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個(gè)1x1卷積核的參數(shù)是3x3卷積核參數(shù)的1/9,這一改動理論上可以將模型尺寸壓縮9倍)。
- 減小輸入到3x3卷積核的輸入通道數(shù)
- 盡可能的將降采樣放在網(wǎng)絡(luò)后面的層中
- 借鑒ResNet思想,對原始網(wǎng)絡(luò)結(jié)構(gòu)做了修改,增加了旁路分支,將分類精度提升了約3%。
- 作者提出了一個(gè)類似inception的網(wǎng)絡(luò)單元結(jié)構(gòu),取名為fire module。一個(gè)fire module 包含一個(gè)squeeze 卷積層(只包含1x1卷積核)和一個(gè)expand卷積層(包含1x1和3x3卷積核)。其中,squeeze層借鑒了inception的思想,利用1x1卷積核來降低輸入到expand層中3x3卷積核的輸入通道數(shù)。
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 思想:借鑒factorized convolution的思想,將普通卷積操作分成兩部分
- Depthwise Convolution:每個(gè)卷積核濾波器只針對特定的輸入通道進(jìn)行卷積操作
- Pointwise Convolution:采用1x1大小的卷積核將depthwise convolution層的多通道輸出進(jìn)行結(jié)合
- ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
- 思想:基于MobileNet的group思想,將卷積操作限制到特定的輸入通道。而與之不同的是,ShuffleNet將輸入的group進(jìn)行打散,從而保證每個(gè)卷積核的感受野能夠分散到不同group的輸入中,增加了模型的學(xué)習(xí)能力。
2.2.模型裁剪/剪枝(Pruning)
- 思路源頭都是來自于Oracle pruning 的方法,即挑選出模型中不重要的參數(shù),將其剔除而不會對模型的效果造成太大的影響。在剔除不重要的參數(shù)之后,通過一個(gè)retrain的過程來恢復(fù)模型的性能。
- 如何找到一個(gè)有效的對參數(shù)重要性的評價(jià)手段,在這個(gè)方法中就尤為重要,我們也可以看到,這種評價(jià)標(biāo)準(zhǔn)花樣百出,各有不同,也很難判定那種方法更好。
- 目前,基于模型裁剪的方法是最為簡單有效的模型壓縮方式。
2.2.1單個(gè)權(quán)重(Weight)剪枝——非結(jié)構(gòu)化
定義:任意權(quán)重被看作是單個(gè)參數(shù)并進(jìn)行隨機(jī)非結(jié)構(gòu)化剪枝。
-
[1989,Lecun,NIPS]Optimal brain damage:
- 思想:將網(wǎng)絡(luò)中任意參數(shù)都看做單個(gè)參數(shù)
- 結(jié)果:有效提高預(yù)測準(zhǔn)確率,不能減小運(yùn)行時(shí)間,剪枝代價(jià)高,適用于小網(wǎng)絡(luò)
-
[1993,Hassibi,NIPS]Second Order Derivatives for Network Pruning:Optimal Brain Sugeon:
- 思想:在Optimal brain damage基礎(chǔ)上增加了基于手術(shù)恢復(fù)權(quán)重更新的步驟
- 結(jié)果:在準(zhǔn)確率、泛化能力上提升,但是計(jì)算量大
-
[2015,Srinivas,BMVC]Data-free parameter pruning for deep neural networks:
- 思想:與Optimal Brain Sugeon相似,將剪枝看作是將小權(quán)重置零的操作,手術(shù)恢復(fù)則相當(dāng)于找到相似權(quán)重補(bǔ)償被置零的權(quán)重造成的激活值損失。
- 結(jié)果:在剪枝時(shí)完全不依賴任何訓(xùn)練數(shù)據(jù),只依賴網(wǎng)絡(luò)中的權(quán)重,因而通過手術(shù)恢復(fù)準(zhǔn)確率時(shí)不需要任何訓(xùn)練數(shù)據(jù)調(diào)優(yōu),通過大量推導(dǎo)近似大大減少計(jì)算復(fù)雜度
-
[2015,Han,NIPS]Learning both Weights and Connections for Efficient Neural Network
- 思想:根據(jù)神經(jīng)元連接權(quán)值的大小確定修剪訓(xùn)練后網(wǎng)絡(luò)中的不重要連接(connections),來減少網(wǎng)絡(luò)所需要的參數(shù)。
[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
- 思想:從眾多的權(quán)重參數(shù)中選擇一個(gè)最優(yōu)的組合(組合優(yōu)化問題),使得被裁剪的模型的代價(jià)函數(shù)的損失最小。結(jié)合貪婪剪枝和基于反向傳播的微調(diào)來確保剪枝后的網(wǎng)絡(luò)的泛化性。提出了一種基于泰勒展開來近似計(jì)算去除部分參數(shù)后網(wǎng)絡(luò)的損失函數(shù)的變化。
-
[2017,Wang,ICLR]Training Compressed Fully-Connected Networks with a Density-Diversity Penalty
- 思想:Density指的是模型參數(shù)的冗余度,就是零和極小值的多少;Diversity指的是參數(shù)的多樣性,即如果參數(shù)能夠聚類成為少數(shù)幾個(gè)類別,那么就是多樣性低,反之就是多樣性豐富。實(shí)際上論文的目的不是通過加入懲罰項(xiàng)直接訓(xùn)練一個(gè)很小的模型,而是通過這么一個(gè)懲罰,使得模型在訓(xùn)練時(shí)能夠盡可能冗余,盡可能多樣性低,這樣在后續(xù)就可以更大程度低剪枝和量化編碼。
-
缺點(diǎn):
- 導(dǎo)致網(wǎng)絡(luò)連接不規(guī)整,需要通過稀疏表達(dá)來減少內(nèi)存占用,進(jìn)而導(dǎo)致在前向傳播時(shí),需要大量條件判斷和額外空間來標(biāo)明0或非0參數(shù)位置,因此不適合并行計(jì)算。
- 非結(jié)構(gòu)化的稀疏性需要使用專門的軟件計(jì)算庫或者硬件。
2.2.2核內(nèi)權(quán)重(Intra Kernel Weight)剪枝/核的稀疏化——結(jié)構(gòu)化
- 對權(quán)重的更新加以正則項(xiàng)進(jìn)行限制,使其更加稀疏,使大部分的權(quán)值都為0。
- [2016,Wen,]Learning Structured Sparsity in Deep Neural Networks
- 思想:使用Group Lasso(一種類似于L1的正則化方式,可以看成是把weights當(dāng)成組來對待,以此將成組的weights規(guī)約到0附近,實(shí)現(xiàn)學(xué)習(xí)出來的參數(shù)的盡可能地結(jié)構(gòu)化稀疏),依次實(shí)現(xiàn)網(wǎng)絡(luò)預(yù)測的加速。
- [2016,Guo,]Dynamic Network Surgery for Efficient DNNs
- [2016,JIN]Training Skinny Deep Neural Networks with Iterative Hard Thresholding Methods
- 思想:通過在目標(biāo)函數(shù)中增加參數(shù)的L0范數(shù)約束,實(shí)現(xiàn)模型的稀疏化,但L0范數(shù)求解較困難,因此提出一種階段迭代算法,首先僅更新權(quán)值較大的參數(shù),然后恢復(fù)所有網(wǎng)絡(luò)連接,迭代更新所有參數(shù),在訓(xùn)練中可實(shí)現(xiàn)模型裁剪
- [2017,Anwar,JETC]Structured pruning of deep convolutional neural networks:
- 思想1:定義顯著性變量并進(jìn)行貪婪剪枝。核內(nèi)定步長粒度,將細(xì)粒度剪枝轉(zhuǎn)化為粗粒度剪枝。
- 全連接或稠密連接:一般作用到同一輸入特征圖上的Kernel必須采用相同的步長和偏置
- 卷積層不是稠密連接:作用在不同特征圖上的kernel步長與偏置可以不同
- 思想2:使用進(jìn)化粒子濾波器決定網(wǎng)絡(luò)連接重要性
2.2.3卷積核(Kernel)/特征圖(Feature Map)/通道(Channel/ Filter)剪枝——結(jié)構(gòu)化
- 定義:減去第i層的filter,進(jìn)而減去第i層產(chǎn)生的部分特征圖和第i+1層的部分kernel。
- kernel粒度的顯著性度量可以采用kernel的權(quán)重和來判斷
- 采用Filter的權(quán)重和來判斷
- 其他
- FeatureMap粒度的顯著性度量確定:
- 采用Filter權(quán)重和來判斷
- 其他
- [2015,Polyak,IEEE Access]Channel-Level Acceleration of Deep Face Representations
- InboundPruning方法
- [2017,Li,ICLR]Pruning Filters for Efficient ConvNets
- 全局貪婪剪枝方法
- 思想:選取filter權(quán)重和作為顯著性度量,對每一層中的filter從大到小排序,畫出權(quán)重和關(guān)于排序后下標(biāo)的曲線,若曲線陡峭,則在這一層減去更多filter。在全部剪枝完成后再通過一次訓(xùn)練恢復(fù)準(zhǔn)確率。
- [2017,Hu,ICLR]Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures
- 思想:激活值為0的神經(jīng)元是冗余的,基于統(tǒng)計(jì)的方法刪除對大部分不同輸入都輸出零值的單元,并進(jìn)行交替重新訓(xùn)練
- An Entropy-based Pruning Method for CNN Compression
- 思想:作者認(rèn)為通過weight值的大小很難判定filter的重要性,通過這個(gè)來裁剪的話有可能裁掉一些有用的filter。因此作者提出了一種基于熵值的裁剪方式,利用熵值來判定filter的重要性。
- Designing Energy-Efficient Convolutional Neural Networks using Energy-Aware Pruning
- 作者指出一個(gè)模型中的能量消耗包含兩個(gè)部分,一部分是計(jì)算的能耗,一部分是數(shù)據(jù)轉(zhuǎn)移的能耗,在作者之前的一片論文中(與NVIDIA合作,Eyeriss),提出了一種估計(jì)硬件能耗的工具,能夠?qū)δP偷拿恳粚佑?jì)算它們的能量消耗。然后將每一層的能量消耗從大到小排序,對能耗大的層優(yōu)先進(jìn)行裁剪,這樣能夠最大限度的降低模型的能耗,對于需要裁剪的層,根據(jù)weight的大小來選擇不重要的進(jìn)行裁剪,同樣的作者也考慮到不正確的裁剪,因此將裁剪后模型損失最大的weight保留下來。
- Coarse Pruning of Convolutional Neural Networks with Random Masks
- 思想:既然無法直觀上的判定filter的重要性,那么就采取一種隨機(jī)裁剪的方式,然后對于每一種隨機(jī)方式統(tǒng)計(jì)模型的性能,來確定局部最優(yōu)的裁剪方式。 這種隨機(jī)裁剪方式類似于一個(gè)隨機(jī)mask,假設(shè)有M個(gè)潛在的可裁剪weight,那么一共就有2^M個(gè)隨機(jī)mask。假設(shè)裁剪比例為a,那么每層就會隨機(jī)選取ML*a個(gè)filter,一共隨機(jī)選取N組組合,然后對于這N組組合,統(tǒng)計(jì)裁剪掉它們之后模型的性能,然后選取性能最高的那組作為局部最優(yōu)的裁剪方式。
- 作者同樣將這種裁剪方式運(yùn)用在kernel上,對kernel進(jìn)行裁剪,并將filter級和kernel級的裁剪進(jìn)行組合,得到了較好的結(jié)果。
- [2017,Tian,]Efficient Gender Classification Using a Deep LDA-Pruned Net
- 思想:作者發(fā)現(xiàn),在最后一個(gè)卷積層中,經(jīng)過LDA分析發(fā)現(xiàn)對于每一個(gè)類別,有很多filter之間的激活是高度不相關(guān)的,因此可以利用這點(diǎn)來剔除大量的只具有少量信息的filter而不影響模型的性能
- [2015,]Sparsifying Neural Network Connections for Face Recognition
- 思想:本文應(yīng)用場景為人臉識別的模型DeepID。作者認(rèn)為,如果一層中的某個(gè)神經(jīng)元的激活與上一層的某個(gè)神經(jīng)元的激活有很強(qiáng)的相關(guān)性,那么這個(gè)神經(jīng)元對于后面層的激活具有很強(qiáng)的判別性。也就是說,如果前后兩層中的某對神經(jīng)元的激活具有較高的相關(guān)性,那么它們之間的連接weight就是非常重要的,而弱的相關(guān)性則代表低的重要性。如果某個(gè)神經(jīng)元可以視為某個(gè)特定視覺模式的探測器,那么與它正相關(guān)的神經(jīng)元也提供了這個(gè)視覺模式的信息,而與它負(fù)相關(guān)的神經(jīng)元則幫助減少誤報(bào)。作者還認(rèn)為,那些相關(guān)性很低的神經(jīng)元對,它們之間的連接不一定是一點(diǎn)用也沒有,它們可能是對于高相關(guān)性神經(jīng)元對的補(bǔ)充。
- [2017,Luo,]ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression
- [2017,He,]Channel Pruning for Accelerating Very Deep Neural Networks
- 思想:首先通過Lasso回歸的方法對卷積通道進(jìn)行選擇性刪除,然后對權(quán)重進(jìn)行學(xué)習(xí)調(diào)
整,利用最小二乘法重構(gòu)通道刪除之前的網(wǎng)絡(luò)響應(yīng),在保證模型性能的條件下減少模型參數(shù)和計(jì)算量。
- 思想:首先通過Lasso回歸的方法對卷積通道進(jìn)行選擇性刪除,然后對權(quán)重進(jìn)行學(xué)習(xí)調(diào)
- 優(yōu)點(diǎn):
- 不依賴任何稀疏卷積計(jì)算庫及專用軟件
- 能大大減少測試的計(jì)算時(shí)間。
2.2.4中間隱層(Layer)剪枝
- 定義:刪除一些層,即改變網(wǎng)絡(luò)結(jié)構(gòu)
- [2017,Rueda,GCRP]Neron Pruning for Compressing Deep Networks using Maxout Architectures
- 思想:提出一種最大化輸出單元將多個(gè)神經(jīng)元合并為更復(fù)雜的凸函數(shù)表達(dá),并根據(jù)各個(gè)神經(jīng)元再訓(xùn)練集上的響應(yīng)的局部相關(guān)性進(jìn)行選擇。
- DeepRebirth: A General Approach for Accelerating Deep Neural Network Execution on Mobile Devices
- 思想:將網(wǎng)絡(luò)層分為權(quán)重層(如卷積層和全連接層)和非權(quán)重層(如Pooling層、ReLU層等),非權(quán)重層的理論計(jì)算量較小,但由于內(nèi)存數(shù)據(jù)訪問速度等原因,其計(jì)算耗時(shí)較多,提出將非權(quán)重層與權(quán)重層進(jìn)行合并的方法,去除獨(dú)立的非權(quán)重層后,運(yùn)行時(shí)間顯著減少 。
2.3網(wǎng)絡(luò)分解(張量分解)
- 方法:
- 將三維張量鋪展成二維張量,使用標(biāo)準(zhǔn)SVD方法
- 使用多個(gè)一維張量外積求和逼近(用三個(gè)一維張量外積求和進(jìn)行K次累加來逼近一個(gè)秩為K的三維張量)
- 目的:降低模型的時(shí)間復(fù)雜度
- 通常基于張量的低秩近似理論和方法,將原始的權(quán)重張量分解為兩個(gè)或者多個(gè)張量,并對分解張量進(jìn)行優(yōu)化調(diào)整
- 優(yōu)缺點(diǎn):
- 低秩方法很適合模型壓縮和加速。
- 低秩方法的實(shí)現(xiàn)并不容易,因?yàn)樗婕坝?jì)算成本高昂的分解操作。
- 目前的方法逐層執(zhí)行低秩近似,無法執(zhí)行非常重要的全局參數(shù)壓縮,因?yàn)椴煌膶泳邆洳煌男畔ⅰ?/li>
- 分解需要大量的重新訓(xùn)練來達(dá)到收斂。
2.3.1CP分解
- [2014,JADERBER]Speeding up convolutional neural networks using fine-tuned CP-decomposition
- 思想:采用CP分解法將一層網(wǎng)絡(luò)分解為五層低復(fù)雜度的網(wǎng)絡(luò)層,但在基于隨機(jī)梯度下降法的模型權(quán)重微調(diào)過程中難以獲取張量分解的優(yōu)化解.作者利用兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)模 型對該方法進(jìn)行評估,結(jié)果表明該方法以較低的性能損失實(shí)現(xiàn)更高的計(jì)算速度
- [2014,Denton,NIPS]Exploiting linear structure within convolutional netowrks for efficient evalution
- 思想:探索多種張量分解方法,例如二維張量分解可采用奇異值分解法,三維張量可轉(zhuǎn)化為二維張量進(jìn)行分解,以及單色卷積分解和聚類法低秩分解等.作者利用 卷 積 參 數(shù) 的冗余性獲得 近似計(jì)算過程,較大的減少所需的計(jì)算量,在保持原始模型浮動1%精度的條件下,基于 CPU和GPU的計(jì)算過程均取得近2倍的加速。
2.3.2SVD分解
- [2016,Zhang]Accelerating very deep convolutional networks for classification and detection
- 思想:對參數(shù)矩陣進(jìn)行張量SVD分解進(jìn)行非線性問題的求解,同時(shí)不需要通過隨機(jī)梯度下降過程進(jìn)行優(yōu)化,并在非對稱重構(gòu)中考慮前一網(wǎng)絡(luò)層的累計(jì)重構(gòu)誤差,在不需要隨機(jī)梯度下降(SGD)的情況下,開發(fā)了一種有效的非線性優(yōu)化問題求解方法
- [2015,Jaderberg,BMVC]Speeding up convolutional neural networks with low rank expansions
- 思想:使用秩為1(可以分解為行向量與列向量乘積)的卷積核作用在輸入圖上產(chǎn)生相互獨(dú)立的M個(gè)基本特征圖,卷積神經(jīng)網(wǎng)絡(luò)大小為k×k 的卷積核分解為1×k 和k×1的卷積核, 然后通過學(xué)習(xí)到的字典權(quán)重利用線性組合重構(gòu)出輸出特征圖。
- [2017,Tai]Convolutional neural networks with low-rank regularization. (Princeton University, etc.)
- 思想:提出從零開始訓(xùn)練低秩約束卷積神經(jīng)網(wǎng)絡(luò)模型的方法,不僅速度得到提升,而且在一些情況下模型性能也有所提高.作者提出一種低階張量分解的新算法,用于消除卷積核中的冗余.該算法找 到 矩陣分解 的精神的全局優(yōu)化器,比迭代方法更有效。
2.3.3Tucker分解
- [2015,Kim,Computer science]Compression of deep convolutional neural networks for fast and low power mobile applications
- 思想:首先進(jìn)行變分貝葉斯矩陣分解的秩選擇,然后再進(jìn)行核張量Tucker分解,最后再次對模型進(jìn)行調(diào)整。
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
- 思想:利用通道間和通道內(nèi)冗余,在通道上進(jìn)行稀疏分解,然后將高計(jì)算代價(jià)的卷積操作轉(zhuǎn)換成矩陣相乘。然后再將矩陣稀疏化,結(jié)合微調(diào)步驟,最小化含有稀疏性最大化正則項(xiàng)的損失函數(shù)
-
[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 權(quán)值共享
2.4.1結(jié)構(gòu)化矩陣
- 思想:如果一個(gè) m x n 階矩陣只需要少于 m×n 個(gè)參數(shù)來描述,就是一個(gè)結(jié)構(gòu)化矩陣。通常這樣的結(jié)構(gòu)不僅能減少內(nèi)存消耗,還能通過快速的矩陣-向量乘法和梯度計(jì)算顯著加快推理和訓(xù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
- 思想:將參數(shù)映射到相應(yīng)的哈希桶內(nèi),在同一個(gè)哈希桶內(nèi)的參數(shù)則共享同一值。
2.4.3其他
- [2016,Han,ICLR]Deep compression:compressing deep neural networks with pruning,trained quantization and Huffman coding
- 思想:
- 利用k均值聚類算法計(jì)算權(quán)重的多個(gè)聚類中心,將權(quán)重量化為距離最近的聚類中心,通過訓(xùn)練微調(diào)的方式對權(quán)重進(jìn)行補(bǔ)償。
- 首先修剪不重要的連接,重新訓(xùn)練稀疏連接的網(wǎng)絡(luò)。然后使用權(quán)重共享連接的權(quán)重,再對量化后的權(quán)重和碼本(codebook)使用霍夫曼編碼,以進(jìn)一步降低壓縮率。
- [2014,Gong,]Compressing deep convolutional networks using vector quantization
- 思想:通過使用kmeans算法將全部參數(shù)進(jìn)行聚類,每簇中參數(shù)共享中心值。
- Learning compact recurrent neural networks. (University of Southern California + Google)
2.5權(quán)重量化(Quantization)
- 思想:通過減少表示每個(gè)權(quán)重所需的比特?cái)?shù)來壓縮原始網(wǎng)絡(luò)。
2.5.1定點(diǎn)運(yùn)算
- [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
- 思想:開發(fā)并測試8bit近似算法,將32bit的梯度和激活值壓縮到8bit,通過 GPU集群測試模型和數(shù)據(jù)的并行化性能,在保證模型預(yù)測精度的條件下,提出的方法取得兩倍的數(shù) 據(jù)傳輸加速。
2.5.2二值化、三值化
- [2015,Courbariaux,NIPS]Binarized Neural Networks:Training deep neural networks with weights and activations constrained to+1 or-1
- 思想:二值化的權(quán)重策略對網(wǎng)絡(luò)的權(quán)重進(jìn)行較為極端的量化,限制權(quán)重只能是-1或1。
- [2016,Rastegari,ECCV]Xnornet: Imagenet classification using binary convolutional neural networkSpeeding s
- 思想:網(wǎng)絡(luò)權(quán)重二值化、輸入二值化,從頭開始訓(xùn)練一個(gè)二值化網(wǎng)絡(luò),不是在已有的網(wǎng)絡(luò)上二值化。
- [2017,]Performance Guaranteed Network Acceleration via High-Order Residual Quantization
- 思想:本文是對 XNOR-Networks 的改進(jìn),將CNN網(wǎng)絡(luò)層的輸入 進(jìn)行高精度二值量化,從而實(shí)現(xiàn)高精度的二值網(wǎng)絡(luò)計(jì)算,XNOR-Networks 也是對每個(gè)CNN網(wǎng)絡(luò)層的權(quán)值和輸入進(jìn)行二值化,這樣整個(gè)CNN計(jì)算都是二值化的,這樣計(jì)算速度快,占內(nèi)存小。
- [2017,Lin]Neural networks with few multiplications
- 思想:
- [2017,Zhou,ICLR]Incremental network quantization:Towards lossless cnns with low-precision weights
- 思想:給定任意結(jié)構(gòu)的全精度浮點(diǎn)神經(jīng)網(wǎng)絡(luò)模型,能將其轉(zhuǎn)換成無損的低比特二進(jìn)制模型。增量式網(wǎng)絡(luò)量化方法,三種獨(dú)立操作:權(quán)重劃分、分組量化、再訓(xùn)練。
- [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
- 思想:在模型學(xué)習(xí)階段進(jìn)行壓縮的方法。首先在全連接層損失函數(shù)上增加額外的歸一項(xiàng),使得權(quán)重趨向于二進(jìn)制值,然后對輸出層進(jìn)行粗粒度的量化。
-
[2015,]Deep learning with limited numerical precision
- 思想:基于隨機(jī)修約(stochastic rounding)的 CNN 訓(xùn)練中使用 16 比特定點(diǎn)表示法(fixed-point representation),顯著降低內(nèi)存和浮點(diǎn)運(yùn)算,同時(shí)分類準(zhǔn)確率幾乎沒有受到損失。
-
[2016,ZHOU]DoReFa-Net:training low bitwidth convolutional neural networks with low bitwidth gradients
- 思想:利用低比特的梯度參數(shù)訓(xùn)練低比特的模型權(quán)重,且激活值也為低比特?cái)?shù)據(jù),該技術(shù)可對訓(xùn)練和預(yù)測過程進(jìn)行加速。
-
[2016,Wu,CVPR]Quantized convolutional neural networks for mobile devices
- 思想:提 出 一 個(gè) 量 化 卷 積 神 經(jīng) 網(wǎng) 絡(luò) 框 架 (CNN),基于k 均值聚類算法加速和壓縮模型的卷積層和全連接層,通過減小每層輸出響應(yīng)的估計(jì)誤差可實(shí)現(xiàn)更好的量化結(jié)果,并提出一種有效的訓(xùn)練方案抑制量化后的多層累積誤差。用一個(gè)小矩陣(codebook)去量化大矩陣(權(quán)重矩陣)
-
ShiftCNN: Generalized Low-Precision Architecture for Inference of Convolutional Neural Networks
- 思想:一個(gè)利用低精度和量化技術(shù)實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)壓縮與加速方案。
- 該量化方法具有碼本小、量化簡單、量化誤差小的優(yōu)點(diǎn)。
-
Soft weight-sharing for neural network compression
?
?
效果:權(quán)重量化的方法比稀疏分解效果更好。
2.6遷移學(xué)習(xí)/網(wǎng)絡(luò)精餾
- 遷移學(xué)習(xí):將一個(gè)模型的性能遷移到另一個(gè)模型上
- 網(wǎng)絡(luò)精餾:在同一個(gè)域上遷移學(xué)習(xí)的一種特例。
- [2006,Bucila,SIGKDD]Model Compression
- 思想:通過集成強(qiáng)分類器標(biāo)注的偽數(shù)據(jù)訓(xùn)練了一個(gè)壓縮模型,并再現(xiàn)了原大型網(wǎng)絡(luò)的輸出結(jié)果。
- 缺點(diǎn):僅限于淺層網(wǎng)絡(luò)。
- [2014,Hinton,NIPS]Distilling the Knowledge in a Neural Network
- 思想:這個(gè)復(fù)雜的網(wǎng)絡(luò)是提前訓(xùn)練好具有很好性能的網(wǎng)絡(luò),學(xué)生網(wǎng)絡(luò)的訓(xùn)練含有兩個(gè)目標(biāo):一個(gè)是hard target,即原始的目標(biāo)函數(shù),為小模型的類別概率輸出與label真值的交叉熵;另一個(gè)為soft target,為小模型的類別概率輸出與大模型的類別概率輸出的交叉熵,在soft target中,概率輸出的公式調(diào)整如下,這樣當(dāng)T值很大時(shí),可以產(chǎn)生一個(gè)類別概率分布較緩和的輸出。作者認(rèn)為,由于soft target具有更高的熵,它能比hard target提供更加多的信息,因此可以使用較少的數(shù)據(jù)以及較大的學(xué)習(xí)率。將hard和soft的target通過加權(quán)平均來作為學(xué)生網(wǎng)絡(luò)的目標(biāo)函數(shù),soft target所占的權(quán)重更大一些。 作者同時(shí)還指出,T值取一個(gè)中間值時(shí),效果更好,而soft target所分配的權(quán)重應(yīng)該為T^2,hard target的權(quán)重為1。 這樣訓(xùn)練得到的小模型也就具有與復(fù)雜模型近似的性能效果,但是復(fù)雜度和計(jì)算量卻要小很多。
- [2014,Ba,NIPS]Do deep nets really need to be deep
- 思想:設(shè)計(jì)了更淺卻更寬的學(xué)生模型,同時(shí)保證兩者的網(wǎng)絡(luò)參數(shù)相同。
- [2017,Romero,ICLR]Hints for the deep nets
- 思想:設(shè)計(jì)了更深的更窄的學(xué)生模型,同時(shí)保證兩者的網(wǎng)絡(luò)參數(shù)相同,采用Hints方式。
- [2016,Chen,ICLR]Net2net:Accelerating learning via knowledge transfer
- 思想:一種網(wǎng)絡(luò)生長的方法來獲得學(xué)生模型的網(wǎng)絡(luò)結(jié)構(gòu)
- [2016,Li,ECCV]Learning without forgetting
- 思想:分別從寬度和深度上進(jìn)行網(wǎng)絡(luò)生長,然后利用網(wǎng)絡(luò)蒸餾方法訓(xùn)練學(xué)生模型
- Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer
- 思想:本文將attention map作為知識從teacher模型遷移到student模型。注意力機(jī)制很早就被用在NLP中,后來被證明將attention應(yīng)用在CNN中也可以取得不錯的效果。作者提出attention map的原因是feature map的做法太多生硬,表現(xiàn)不佳。定義attention map的做法是將feature map不同通道的feature plane取絕對值然后相加。損失函數(shù)也做了改變,即在原損失函數(shù)的基礎(chǔ)上加上teacher和student模型的attention maps之間的歐氏距離。attention map的做法可以看作全激活feature map的summary,所以擬合attention map的效果略好于feature map也是容易理解的。雖然比feature map的做法有進(jìn)步,但是仍然存在要人為選取中間層的問題。
- [2016,Sau,]Deep model compression:distilling knowledge from noisy teachers
- Sequence-Level Knowledge Distillation. (Harvard University)
- [2016,Cohen,]Group equivariant convolutional networks
- 思想:等變?nèi)赫摚╡quivariant group theory)。使 x 作為輸入,Φ(·) 作為網(wǎng)絡(luò)或?qū)?,T (·) 作為變換矩陣。即使用變換矩陣 T (·) 轉(zhuǎn)換輸入 x,然后將其傳送至網(wǎng)絡(luò)或?qū)应?·),其結(jié)果和先將 x 映射到網(wǎng)絡(luò)再變換映射后的表征結(jié)果一致。
- 缺陷:將遷移信息應(yīng)用到卷積濾波器的方法需要解決幾個(gè)問題。首先,這些方法的性能可與寬/平坦的架構(gòu)(如 VGGNet)相媲美,但是無法與較窄/特殊的架構(gòu)(如 GoogleNet、Residual Net)相比。其次,遷移假設(shè)有時(shí)過于強(qiáng)大以致于無法指導(dǎo)算法,使得在某些數(shù)據(jù)集上的結(jié)果不穩(wěn)定。
- [2015,Romero]Fitnets:hints for thin deep nets
- 思想:在模型的網(wǎng)絡(luò)層較深時(shí),讓學(xué)生網(wǎng)絡(luò)直接模擬教師網(wǎng)絡(luò)的輸出比較困難,文中提出Fitnets模型,在深度神經(jīng)網(wǎng)絡(luò)模型的中間添加監(jiān)督學(xué)習(xí)的信號,要求學(xué)生模型和教師模型的中間層激活響應(yīng)盡可能一致.訓(xùn)練過程分為兩階段,首先利用教師網(wǎng)絡(luò)中間層信息訓(xùn)練學(xué)生模型前部參數(shù),再利用教師模型的最終輸出信息訓(xùn)練學(xué)生模型的全部參數(shù)。
- Knowledge Projection for DNN
- 思想:這篇文章的做法和fitnet的做法幾乎完全相同,兩點(diǎn)改變:中間層的選取上采用了迭代選擇的方案,選擇標(biāo)準(zhǔn)是聯(lián)合loss最?。籺eacher模型的中間輸出不只監(jiān)督student模型的底層,也被繼續(xù)利用監(jiān)督student模型的高層訓(xùn)練。
- [2016,Huang]Like what you like:knowledge distill via neuron selectivity transfer
- 思想:認(rèn)為Fitnets方法要求學(xué)生模型模仿教師模型的全部特征圖,該設(shè)定過于嚴(yán)格,由于學(xué)生模型與教師模型的能力存在較大差異,F(xiàn)itnets的限制條件可能不利于參數(shù)學(xué)習(xí)過程的收斂和模型性能,因此利用學(xué)生-教師模 型 網(wǎng)絡(luò)激活 分 布 的 一 致 性 指導(dǎo)學(xué)生模型的訓(xùn)練過程,使用最大平均差異作為損失函數(shù),優(yōu)化該損失函數(shù)促使學(xué)生模型和教師模型的網(wǎng)絡(luò)響應(yīng)分布盡可能相似。
- [2017,YIM]A gift from knowledge distillation:fast optimization,network minimization and transfer learning
- 思想:引 導(dǎo) 學(xué) 生 模 型 學(xué) 習(xí) 教 師模型網(wǎng)絡(luò)層之間的數(shù)據(jù)流信息,該信息定義為層與
層之間的內(nèi)積,兩個(gè)多通道網(wǎng)絡(luò)層的數(shù)據(jù)流關(guān)系可用FSP(Flow of Solution Procedure)矩陣表示,在教師-學(xué)生框架中,優(yōu)化目標(biāo)函數(shù)為教師-學(xué)生模型對應(yīng)層之間FSP差異的L2范數(shù).該方法促使學(xué)生模型學(xué)習(xí)教師模型層與層之間的抽象關(guān)系,取得較好效果,并可用于其他遷移學(xué)習(xí)任務(wù)。
- 思想:引 導(dǎo) 學(xué) 生 模 型 學(xué) 習(xí) 教 師模型網(wǎng)絡(luò)層之間的數(shù)據(jù)流信息,該信息定義為層與
- [2017,,NIPS]Sobolev training for neural network
- 思想:在sobolev空間中近似兩個(gè)函數(shù),即不光match兩個(gè)函數(shù)的輸出,還match輸出對于輸入的梯度,即梯度也提供了非常豐富的信息。把teacher和student模型分別看作兩個(gè)函數(shù),采用sobolev訓(xùn)練的方式比只match輸出要好很多。
- DarkRank: Accelerating Deep Metric Learning via Cross Sample Similarities Transfer
- 思想:之前的工作都是考慮teacher模型和student模型的輸出以及中間結(jié)果的匹配,insight來源于Hinton的soft target,即讓student模型學(xué)習(xí)teacher模型的不同樣本之間的排序關(guān)系。假設(shè)1個(gè)batch有7個(gè)樣本進(jìn)來,輸出端得到7張feature map,但這7張feature map是有親疏遠(yuǎn)近關(guān)系的,對于類別6, 樣本0到它的距離小于5到它的距離。換句話說,在teacher模型中這7個(gè)樣本在類別6上的排序關(guān)系也可以作為知識傳遞給student模型。
- Learning loss for knowledge distillation with conditional adversarial networks
- 思想:這篇文章將GAN和KD做了一個(gè)結(jié)合,取得了不錯的效果。作者認(rèn)為student模型的容量遠(yuǎn)小于teacher模型,讓student模型完全匹配teacher的做法有點(diǎn)困難,而且采用l2損失逼近的方式一定程度上限制了student模型的自主學(xué)習(xí)空間。學(xué)生網(wǎng)絡(luò)是生成器,判別器是一個(gè)多層感知機(jī)網(wǎng)絡(luò),生成器和判別器迭代優(yōu)化,生成器的目標(biāo)是生成讓判別器無法辨別的logits。某種程度上,這個(gè)工作也可以理解成對損失函數(shù)做了改進(jìn)。
- Rocket Launching: A Universal and Efficient Framework
- 思想:在定義知識上沒有大的創(chuàng)新,使用的仍然是logits,但是在學(xué)習(xí)框架上和之前有所不同。它不用預(yù)訓(xùn)練teacher模型,而是student和teacher模型同時(shí)訓(xùn)練;另外一點(diǎn)是共享網(wǎng)絡(luò)參數(shù),共享一部分參數(shù)相當(dāng)于火箭發(fā)射點(diǎn)火助推器的作用。所以student模型不是向一個(gè)已經(jīng)完全學(xué)好的teacher模型學(xué)習(xí),每次都去學(xué)習(xí)一個(gè)相對正確的輸出,而是和teacher模型一起學(xué)習(xí)成長,連同teacher模型犯錯后糾錯的過程也一并學(xué)習(xí)了。
- Mimicking Very Efficient Network for Object Detection
- 思想:在檢測任務(wù)中,直接擬合logits或者feature map都是不可行的。所以作者采用匹配proposal的做法。
- Cross Modal Distillation for Supervision Transfer
- 思想:作者提出跨模態(tài)遷移知識的做法,即在RGB數(shù)據(jù)集學(xué)習(xí)到的知識也能遷移到深度場景中來。
- Face Model Compression by Distilling Knowledge from Neurons
- 思想:人臉識別中,遷移的知識更具針對性,選擇特定的特征去擬合,盡量做到特征選擇的均勻性。
- Data-free knowledge distillation for deep neural networks
- 思想:這篇文章的應(yīng)用場景是當(dāng)訓(xùn)練數(shù)據(jù)由于隱私等問題對于student模型不可用的時(shí)候,如何通過extra metadata的方式解決。
- Using Knowledge Distillation To Improve Low-Precision Network Accuracy
- 思想:本文將KD和網(wǎng)絡(luò)量化做了一個(gè)結(jié)合,用高精度teacher模型指導(dǎo)低精度student模型的訓(xùn)練。網(wǎng)絡(luò)參數(shù)精度下降后準(zhǔn)確率勢必會受到影響,在獲得teacher模型的知識之后或許可以從一個(gè)壞的局部最優(yōu)點(diǎn)爬上來。作者提出了3種思路:teacher模型和量化后的student模型聯(lián)合訓(xùn)練;預(yù)訓(xùn)練的teacher模型指導(dǎo)量化的student模型從頭開始訓(xùn)練;teacher模型和student模型均進(jìn)行了預(yù)訓(xùn)練,不過student模型在全精度權(quán)重基礎(chǔ)上做了量化,然后student在teacher模型的指導(dǎo)下進(jìn)行finetuning。
- Moonshine: Distilling with Cheap Convolutions
- 思想:這篇工作將KD和設(shè)計(jì)輕便的網(wǎng)絡(luò)結(jié)構(gòu)方法做了結(jié)合。當(dāng)復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)被簡化的卷積模塊替換的時(shí)候,計(jì)算更加高效,精度勢必受到影響。此時(shí),將原網(wǎng)絡(luò)作為teacher模型,簡化之后的網(wǎng)絡(luò)作為student模型,然后通過teacher模型指導(dǎo)student模型的訓(xùn)練。
2.7計(jì)算加速
- Faster CNNs with direct sparse convolutions and guided pruning
- 思想:提出一種基于向量形式的乘法,實(shí)現(xiàn)密集矩陣與稀疏矩陣之間的高效乘法運(yùn)算。
- [2017,Gysel]Hardware-oriented approximation of convolutional neural networks
- 思想:提出一種模型近似框架 Ristretto,用于分析模型卷積層和全連接層的權(quán)重和輸出的數(shù)值分辨率,進(jìn)而將浮點(diǎn)型參數(shù)轉(zhuǎn)化為定點(diǎn)型數(shù)值,并通過訓(xùn)練過程對定點(diǎn)型模型進(jìn)行微調(diào)。
- [2017,,ICML]MEC: Memory-efficient Convolution for Deep Neural Network
- 思想:內(nèi)存利用率高且速度較快的卷積計(jì)算方法
- More is Less: A More Complicated Network with Less Inference Complexitv
- 思想:提前鎖定哪些值將會為0,從而在矩陣乘法時(shí)直接避免相應(yīng)運(yùn)算。
- Speeding up Convolutional Neural Networks By Exploiting the Sparsity of Rectifier Units
- 思想:由于使用ReLU作為激活函數(shù)的網(wǎng)絡(luò),其網(wǎng)絡(luò)輸出通常都非常稀疏。本文不計(jì)算完整的矩陣乘法,而是只計(jì)算非0值導(dǎo)致的輸出。并且,充分利用AVX或者SSE指令完成 (1×1)×(1×4)(1×1)×(1×4)的乘法。
2.8對數(shù)據(jù)進(jìn)行變換
- WAE-Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks
- 思想:WAE借助小波分解得思想,將原圖分解成兩個(gè)低分辨率圖像,以達(dá)到網(wǎng)絡(luò)加速的目。
轉(zhuǎn)載于:深度學(xué)習(xí)模型壓縮方法(1)-----綜述