論文 - Rethinking The Value of Network Pruning
ofollow,noindex">這篇文章 是ICLR 2019的投稿文章,最近也引發了大家的注意。在我的部落格中,已經對此做過簡單的介紹,請參考論文總結 - 模型剪枝 Model Pruning 。
這篇文章的主要觀點在於想糾正人們之前的認識誤區。當然這個認識誤區和DL的發展是密不可分的。DL中最先提出的AlexNet是一個很大的模型。後面的研究者雖然也在不斷髮明新的網路結構(如inception,Global Pooling,ResNet等)來獲得引數更少更強大的模型,但模型的size總還是很大。既然研究社群是從這樣的“大”模型出發的,那當面對工程上需要小模型以便在手機等移動裝置上使用時,很自然的一條路就是去除大模型中已有的引數從而得到小模型。也是很自然的,我們需要保留大模型中“有用的”那些引數,讓小模型以此為基礎進行fine tune,補償因為去除引數而導致的模型效能下降。
然而,自然的想法就是合理的麼?這篇文章對此提出了質疑。這篇論文的主要思路已經在上面貼出的博文連結中說過了。這篇文章主要是結合作者開源的程式碼對論文進行梳理:Eric-mingjie/rethinking-network-pruning 。
FLOP的計算
程式碼中有關於PyTorch模型的FLOPs的計算,見compute_flops.py 。可以很方便地應用到自己的程式碼中。
ThiNet的實現
實驗比較
結論
幾個仍然有疑問的地方:
-
作者已經證明在ImageNet/CIFAR等樣本分佈均衡的資料集上的結論,如果樣本分佈不均衡呢?有三種思路有待驗證:
- prune模型需要從大模型處繼承權重,然後直接在不均衡資料集上訓練即可;
- prune模型不需要從大模型處繼承權重, 但是需要先在ImageNet資料集上訓練,然後再在不均衡資料集上訓練;
- prune模型直接在不均衡資料集上訓練(以我的經驗,這種思路應該是不work的)
-
prune前的大模型權重不重要,結構重要,這是本文的結論之一。自動搜尋樹的prune演算法可以看做是模型結構搜尋,但是大模型給出了搜尋空間的一個很好的初始點。這個初始點是否是任務無關的?也就是說,對A任務有效的小模型,是否在B任務上也是很work的?
-
現在的網路搜尋中應用了強化學習/遺傳演算法等方法,這些方法怎麼能夠和prune結合?ECCV 2018中HanSong和He Yihui發表了AMC方法。
總之,作者用自己辛勤的實驗,給我們指出了一個”可能的”(畢竟文章還沒被接收)誤區,但是仍然有很多烏雲漂浮在上面,需要更多的實驗。