這篇文章主要是根據(jù)李宏毅老師介紹的知識(shí)要點(diǎn)進(jìn)行總結(jié)
【機(jī)器學(xué)習(xí)2021】神經(jīng)網(wǎng)路壓縮 (Network Compression) (一) - 類(lèi)神經(jīng)網(wǎng)路剪枝 (Pruning) 與大樂(lè)透假說(shuō) (Lottery Ticket Hypothesis)
【機(jī)器學(xué)習(xí)2021】神經(jīng)網(wǎng)路壓縮 (Network Compression) (二) - 從各種不同的面向來(lái)壓縮神經(jīng)網(wǎng)路
由于很多模型需要移植到硬件設(shè)備上晌块,以及對(duì)模型運(yùn)行效率有比較高的要求堡距,所以我們需要對(duì)我們的模型進(jìn)行剪枝以及壓縮等操作请契。 以下將通過(guò)5個(gè)方面講解模型壓縮知識(shí):
- Network Pruning(剪枝)
- Knowledge Distillation(蒸餾)
- Parameter Quantization(量化)
- Architecture Design(結(jié)構(gòu)設(shè)計(jì))
- Dynamic Computation (動(dòng)態(tài)計(jì)算)
一、Network Purning(剪枝)
通過(guò)上圖可以看出隨著人類(lèi)成長(zhǎng) 步鉴,經(jīng)過(guò)剪枝,我們的神經(jīng)元連接是越來(lái)越少。我們?nèi)绾螌?duì)我們的參數(shù)進(jìn)行剪枝呢蓝丙?我們需要剪枝哪些參數(shù)呢磨淌?
-
參數(shù)
顯而易見(jiàn)的我們可以理解為當(dāng)我們的參數(shù)(權(quán)重)的絕對(duì)值越大疲憋,我們認(rèn)為該參數(shù)(權(quán)重)對(duì)模型影響越重要。 -
神經(jīng)元
當(dāng)然我們也可以根據(jù)神經(jīng)元不為0的次數(shù)判斷其重要性
最終我們的希望的是通過(guò)剪枝我們的模型的準(zhǔn)確率不會(huì)下降太大梁只。剪枝完之后缚柳,我們?cè)偌糁蟮哪P瓦M(jìn)行finetune埃脏,接著在評(píng)價(jià)參數(shù)重要性進(jìn)行剪枝,可以進(jìn)行多輪秋忙,但是切記我們剪枝不要剪枝過(guò)多彩掐,否則網(wǎng)絡(luò)很難還原。
在進(jìn)行
權(quán)重剪枝
的時(shí)候灰追,我們很難將權(quán)重直接干掉如上圖所示堵幽,這樣不僅很難部署,同時(shí)也很難做到GPU加速弹澎。
在進(jìn)行
神經(jīng)元剪枝
的時(shí)候朴下,我們可以很容易的進(jìn)行部署及GPU加速。
為什么要從大的網(wǎng)絡(luò)開(kāi)始訓(xùn)練然后再剪枝呢苦蒿?因?yàn)樾〉纳窠?jīng)網(wǎng)絡(luò)不容易訓(xùn)練殴胧。大的網(wǎng)絡(luò)可以認(rèn)為是很多小的子網(wǎng)絡(luò),子網(wǎng)絡(luò)不一定能訓(xùn)練出來(lái)佩迟,但是眾多子網(wǎng)絡(luò)只要其中一個(gè)人成功团滥,大的網(wǎng)絡(luò)就能成功。
上圖可以得出的結(jié)論:
-
初始絕對(duì)值不重要音五,正負(fù)號(hào)才重要惫撰。
★★★★ Learning Efficient Convolution Network through Network Slimming
二、 知識(shí)蒸餾
先訓(xùn)練大的神經(jīng)網(wǎng)絡(luò)(Teacher
)躺涝,進(jìn)行修剪再訓(xùn)練小的神經(jīng)網(wǎng)絡(luò)(Student
)厨钻。如下圖所示:
學(xué)生訓(xùn)練的label為老師的預(yù)測(cè)的soft label繼續(xù)訓(xùn)練。直接訓(xùn)練小的神經(jīng)網(wǎng)絡(luò)不如從大的神經(jīng)網(wǎng)絡(luò)輸出結(jié)果進(jìn)行訓(xùn)練效果好坚嗜。這里認(rèn)為老師不僅學(xué)習(xí)到本身的label知識(shí)夯膀,還能學(xué)到隱含的知識(shí),比如1
和7
很像苍蔬,老師學(xué)習(xí)的結(jié)果通過(guò)soft label 非one-hot label通過(guò)概率可以知道很相近诱建,學(xué)生更容易去學(xué)習(xí)到,而讓小的神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)是非常難的事情碟绑。
這里該機(jī)制也類(lèi)似于
ensemble
的機(jī)制俺猿,就是組合多個(gè)模型輸出,接著通過(guò)小的網(wǎng)絡(luò)直接訓(xùn)練格仲,往往再很多比賽的時(shí)候使用該機(jī)制押袍。
三、 Parameter Quantization
- using less bits to represent a value(用少bit減少空間存儲(chǔ)參數(shù))
-
weight clustering
- Represent frequent clusters by less bits, represent rare clusters by more bits(
e.g Huffman encoding
)
四凯肋、 Architecture Design
(Depthwise Separable Convolustion)
五谊惭、 Dynamic Computation
The network adjusts the computation it need.