Learning both Weights and Connections for Efficient Neural Networks
han song NIPS 2015
1.1 What the problems the paper mentioned ?(intro)
本文可以得上是deep compression:的開山之作,在移動(dòng)設(shè)備上運(yùn)行一個(gè)完整的大型DNN網(wǎng)絡(luò)幾乎是不可能的,比如運(yùn)行一個(gè)十億個(gè)連接的DNN,僅僅是DRAM的訪問功耗就達(dá)到了12.8W,通過剪枝量化的方法,在不損失精度的情況下,將網(wǎng)絡(luò)大小(AlexNet, VGG)等網(wǎng)絡(luò)的大小壓縮了10倍左右。
1.2 Summary of major innovations (intro)
提出了一種剪枝的方法,主要通過三個(gè)步驟進(jìn)行網(wǎng)絡(luò)壓縮
訓(xùn)練網(wǎng)絡(luò)找到重要的連接(簡單的認(rèn)為權(quán)值大的為重要)
丟掉不重要的連接
-
重新訓(xùn)練網(wǎng)絡(luò)
1584887362
1.3 How about the important related works/papers?(related work)
Compressingneural networks with the hashing trick arXiv preprint arXiv:1504.04788, 2015. 主要是講了剪枝之后如何存儲(chǔ)權(quán)重矩陣,使得DNN高效的運(yùn)行。
1.4 What are some intriguing aspects of the paper?(design&implementation)
使用L1正則化與L2正則化得到的結(jié)果將會(huì)不同,L1正則化在retrain之前的accuracy比較高,但是retrain之后的結(jié)果沒有L2正則化得到的效果好。
-
L1正則化是指權(quán)值向量www中各個(gè)元素的絕對(duì)值之和
可以產(chǎn)生稀疏矩陣,即結(jié)果中接近0的權(quán)值更多。
-
L2正則化指的是權(quán)值求平方和之后再求平方更
L2正則化可以防止過擬合
節(jié)點(diǎn)所有的權(quán)重連接刪除之后,該節(jié)點(diǎn)也需要進(jìn)行刪除
1.5 How to test/compare/analyze the results?(experiment)
表中從左到右的分別是原始weight的數(shù)量,原來需要浮點(diǎn)運(yùn)算的次數(shù),原始weight中非0的數(shù)量,剪枝之后非0的數(shù)量,實(shí)際浮點(diǎn)操作的百分比,可以看到,剪枝掉的大部分還是fc的權(quán)重,對(duì)于卷積操作的權(quán)重剪掉的很少。

最終得到的是非結(jié)構(gòu)化的網(wǎng)絡(luò),無法在通用GPU上進(jìn)行加速
Deep compression: compressing deep neural networks with pruning, trained quantization and Huffman Coding
han song ICLR 2016
1.1 What the problems the paper mentioned ?(intro)
在上一篇文章的基礎(chǔ)上加上了量化,將AlexNet,VGG分別壓縮了35倍、49倍,分別加速了3倍、4倍,節(jié)能了3倍、7倍。

首先通過剪枝的方法,將網(wǎng)絡(luò)壓縮到原來的9-13倍,之后通過量化的方法,將網(wǎng)絡(luò)壓縮到原來的27-31倍,在通過哈夫曼編碼的方法,最終將網(wǎng)絡(luò)壓縮到原來的35-49倍。
1.2 Summary of major innovations (intro)
將剪枝跟量化結(jié)合再了一起,并使用哈夫曼編碼,發(fā)現(xiàn)了剪枝跟量化之間互不影響的關(guān)系,使得weight得到了極大的壓縮。
1.3 How about the important related works/papers?(related work)
從1.1中圖可以看到,首先使用剪枝的方法不斷的retrain得到一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),然后再將這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)量化,量化的的過程如下所示。

上圖解釋了量化的過程,使用的k-means聚類方法,將左上weight矩陣分成4類,然后將不同的類別使用聚類中心表示,原矩陣中只保存類別的索引。在權(quán)值更新的時(shí)候,所有的gradients按照weight矩陣的顏色來分組,同一組的gradient做一個(gè)相加的操作,得到是sum乘上learning rate再減去共享的centroids,得到一個(gè)fine-tuned centroids。當(dāng)一次訓(xùn)練完成之后,再重新使用聚類算法,重復(fù)以上過程。
再量化到想要的結(jié)果之后,再對(duì)結(jié)果進(jìn)行哈夫曼編碼,又可以進(jìn)一步壓縮weight
通過以上的三個(gè)步驟,就可以將weight壓縮帶原來的40倍左右。
1.5 How to test/compare/analyze the results?(experiment)
該文章評(píng)價(jià)的比較全面,首先是準(zhǔn)確率與壓縮比方面。
-
再不損失精度的情況下,weight最多可以壓縮49倍
1584970761 -
比較又意思的是,他對(duì)conv與fc使用了不同的精度,并且比較了不同情況下的壓縮比,P表示只是用剪枝,P+Q表示同時(shí)使用剪枝與量化,P+Q+H表示同時(shí)使用三種技術(shù),結(jié)果如下圖所示。
1584970946 -
在只是用pruning或者quantization的情況下,壓縮的原來的8%的情況之下,精度就開始急劇下降,當(dāng)時(shí)同時(shí)使用兩種技術(shù)的情況下,可以壓縮的原來的2%左右才會(huì)導(dǎo)致精度的急劇下降。
1584971094 -
下面證明了剪枝與量化之間并不會(huì)相互的影響,在原來網(wǎng)絡(luò)上使用量化技術(shù)也不會(huì)導(dǎo)致精度損失,在剪枝的結(jié)果上進(jìn)行量化與只使用剪枝的網(wǎng)絡(luò)達(dá)到的是同樣的效果。
1584971285 -
在量化的過程中,聚類中心的確定會(huì)對(duì)結(jié)果造成較大的影響,綜合來看,使用均勻分布模型得到量化中心產(chǎn)生的結(jié)果最好。
1584971469
1.6 My summary
這是一篇對(duì)非結(jié)構(gòu)化剪枝比較詳細(xì)的論文,與近似計(jì)算是兩種不同的技術(shù),量化首先就是不斷的訓(xùn)練weight到指定的bits,不存在近似這一說,其次當(dāng)時(shí)我們使用的網(wǎng)絡(luò)是一個(gè)完全的網(wǎng)絡(luò),存在大量的冗余,我覺得還是得在剪枝后的網(wǎng)絡(luò)上進(jìn)行研究比較有意義。
Dynamic Network Surgery for Efficient DNNs
NIPS 2016 http://arxiv.org/abs/1608.04493
1.1 What the problems the paper mentioned ?(intro)
han song 的工作簡單的認(rèn)為權(quán)重小的weight是不重要的,這其實(shí)是有問題的,而且剪枝掉的weight與節(jié)點(diǎn)可能是錯(cuò)誤的剪枝,在這個(gè)基礎(chǔ)上,作者提出了一種叫做dynamic network的網(wǎng)絡(luò),優(yōu)化了這些問題。實(shí)現(xiàn)了LeNet-5 and AlexNet by a factor of 108× and 17.7× respectively
1.2 Summary of major innovations (intro)
剪枝或者不正確的剪枝會(huì)導(dǎo)致精度的下降,為了解決這樣的問題,加入了反悔的機(jī)制,將剪枝掉的一部分weight加入下一輪的訓(xùn)練,一旦發(fā)現(xiàn)這些weight是重要的話,將這些weight從新加入網(wǎng)絡(luò)

1.3 What are some intriguing aspects of the paper?(design&implementation)
里面有句話引用一下However, the parameter importance (i.e., the connection importance) in a certain network is extremely difficult to measure because of the mutual influences and mutual activations among interconnected neurons.
由于神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,因?yàn)橛衅渌倪B接,有些節(jié)點(diǎn)可能是多余的,但是一旦刪除了其他的節(jié)點(diǎn),這些節(jié)點(diǎn)就成了關(guān)鍵節(jié)點(diǎn)。
- Hadamard product,矩陣的內(nèi)積,就兩個(gè)同型矩陣對(duì)應(yīng)元素相乘。

表示的是網(wǎng)絡(luò)的損失函數(shù),Tk表示與Wk同型的矩陣,但是其中的元素只有0,1。0表示刪除,1表示在當(dāng)前這輪迭代是重要的,兩個(gè)矩陣做內(nèi)積,對(duì)應(yīng)Tk為0的地方就不保留了。hk表示W(wǎng)k的連接是否關(guān)鍵。

使用梯度下降與拉格朗日乘子法對(duì)W進(jìn)行更新,hk函數(shù)更新Tk如下所示。

作者還舉了一個(gè)簡單的例子說明情況,如下圖所示是一個(gè)XOR的網(wǎng)絡(luò),T1表示剪枝的情況,白色的表示一直沒有沒剪枝的weight,綠色的表示被錯(cuò)誤剪枝之后加回來的weight,黑色的表示被剪枝掉的weight。值得令人注意的是,圖b中,可以看到weight矩陣的第一行與最后一行的值相近,說明兩個(gè)神經(jīng)元的功能類似那個(gè),在剪枝的過程中,很好的剪掉了功能類似的神經(jīng)元,說明工作還是work的。

1.5 How to test/compare/analyze the results?(experiment)
比較有意思的是他對(duì)比了han song's work訓(xùn)練出的參數(shù)與用他們的方法訓(xùn)練出的參數(shù)個(gè)數(shù),可以看到,相對(duì)與han song 方法參數(shù)規(guī)模要小很多,可以得出的結(jié)論就是錯(cuò)誤的剪枝會(huì)對(duì)網(wǎng)絡(luò)的準(zhǔn)確率照成很大影響

1.6 My summary
這還是非結(jié)構(gòu)化的剪枝,對(duì)硬件的還是不友好。雖然說重新定義了什么是重要的權(quán)重,但是的話總感覺使用的方法太簡單了,還是簡單的認(rèn)為權(quán)重大的比較重要,感覺神經(jīng)元之間的相互關(guān)系還是難以度量,應(yīng)該使用更加復(fù)雜更加系統(tǒng)的方法。
文章還說明了weight之間的相互影響關(guān)系,讓我覺得誤差注入的方法更加復(fù)雜,感覺不同的地方肯定是需要不同的誤差,想要找到理論化的辦法或許很困難,或許需要遍歷搜索的方法。
Automl for model compression and acceleration on mobile devices
ECCV 2018
1.1 What the problems the paper mentioned ?(intro)
propose AutoML for Model Compres-sion, achieved 2.7% better accuracy than the hand-crafted model compression policy for VGG-16 on ImageNet. 使用啟發(fā)式的剪枝方法通常是sub-optimal,使用手動(dòng)剪枝的方法通常會(huì)花費(fèi)大量的時(shí)間。作者還將所做的工作真正的移植到了Android手機(jī)上
啟發(fā)式的剪枝方法通常會(huì)有一些規(guī)則
- 盡可能少的修剪在fist layer層的參數(shù),因?yàn)樗怯脕硖崛〉途暤奶卣?/li>
- 盡可能的再fc層修剪,因?yàn)檫@里所擁有的參數(shù)數(shù)量是最多的
- 對(duì)于剪枝敏感的層也要進(jìn)行盡可能少的修剪。
構(gòu)建了兩種壓縮模型。
- resource-constrained對(duì)應(yīng)的是對(duì)延遲要求很高的應(yīng)用
- accuracy-guaranteed對(duì)應(yīng)的是對(duì)精度要求很高,但是對(duì)延時(shí)要求沒有那么高的應(yīng)用





