Rethinking the Value of Network Pruning_ICLR2019

近期本小白在公司實習,組內有寫paper reading的優良傳統,一來自己總結,二來便於大家交流。感覺這個習慣非常好,於是乎想了想幹脆同步發到自己博客上來,便於以後自己整理。

 

URL: https://arxiv.org/abs/1810.05270

code:https://github.com/Eric-mingjie/rethinking-network-pruning

TL;DR
這篇文章不同於大多數提出新方法的模型壓縮文章,作者對先前衆多論文中用到的先修剪再微調的channel pruning方法進行深入研究之後,提出了一些重要的發現。
1)訓練一個較大的、過參數化的模型對於得到一個最終的高效模型不是必須的;
2)學習大模型中的重要weights對於所得到的輕量化模型並沒有作用;
3)修剪所得到的模型架構纔是至關重要的,而不是所保留的原始參數,這在某種程度上可以視爲一種隱式模型架構搜索。

Method
爲了驗證自己的結論,作者設計了一系列的驗證策略,另外針對不同的模型修剪方法制定了對應的策略,主要針對預定於目標架構的修剪方法、自動架構修剪和非結構化的架構修剪。
爲了對比的嚴謹性,作者儘量按照原論文中公佈的參數配置進行實驗;同時對於從頭開始訓練的模型,由於模型變得更加輕量化,作者制定了保留原有epoch數和epoch數加倍這兩種策略。

Experiment Detail
作者進行了大量的驗證實驗,並且專門寫了一章和同時間段提出的模型修剪方法“Lottery Ticket Hypothesis”進行了對比,這一波着實有點剛,後來“Lottery Ticket Hypothesis”獲得了best paper,看來是沒剛過,不過這兩篇論文同時都中了ICLR2019。 

作者在論文中對比了之前很多論文中提出來的方法,幾乎把原有的模型修剪方法懟了個遍,其中還包括作者自己在ICCV17上提出的方法,果然大佬狠起來,連自己都害怕。

以下是對比實驗結果。

作者通過對比實驗得出結論:
1)對於有預定義的目標網絡架構的結構化修剪方法,直接訓練一個小網絡可以達到先修剪再微調後相同甚至更好的效果(只是可能需要訓練更多的epoch來實現收斂); 對於自動發現目標架構的結構化修剪方法結論同樣成立
2) 從大模型繼承權重不一定是最優的,並且可能會使得模型陷入不良的局部最小值,即使這些權重是被修剪標準視爲是重要的。自動化結構修剪算法的價值在於識別有效結構並進行隱式架構搜索。對於大多數的結構搜索方法而言,這個相當於搜索每一層的channel數

Thoughts
這篇論文的作者實驗過程中發現了模型修剪過後,微調得到的效果和重新從頭訓練幾乎相同,於是便做了多組實驗證明這一結論,推翻了包括自己的方法在內的很多方法,提出對參數修剪的一個新的認識:參數修剪的實際作用在於得到架構而非權值。這一觀點確實令人眼前一亮,有利於大家後續更好地設計壓縮方法。另外作者也承認小模型不像大模型那樣容易收斂,從頭開始訓練可能需要更多的epoch或者其他的訓練條件,如果已經有訓練好的大模型的話,還是直接壓縮來的快。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章