推翻剪枝固有觀點?清華、伯克利提出NN過參數化真的不重要

機器之心報道

機器之心編輯部

剛剛,reddit 上出現了一篇關於論文《Rethinking the Value of Network Pruning》的討論,該論文的觀點似乎與近期神經網絡剪枝方面論文的結論相矛盾。這非常令人驚訝,它甚至會改變我們對神經網絡的固有觀點,即神經網絡的過參數化對模型訓練與擬合是有益的。

針對該論文,一些網友提出了自己的看法。

@jiecaoyu: 這個結果倒蠻有趣。它有助於爲網絡壓縮找到一些新的東西。然而,目前我認爲它不會改變工作流程。因爲基本上,重新訓練仍是必需的,而對訓練好的模型進行剪枝可以減少再次訓練的時間。

@rantana: 對於任何使用該論文「PREDEFINED TARGET ARCHITECTURES」部分所述方法的工作流程來說,訓練大型模型實在沒有必要,因爲目標模型的總訓練時間更少,工作流程總體來說也更簡單。在「Generalizable Design Principles from Pruned Architectures」中,作者構建了針對預定義目標架構和非結構化剪枝方法可以從頭開始訓練的架構。因此,在這兩種情況下,大型的架構都沒有什麼意義(對預定義的情況來說尤其如此)。

也有網友指出了該論文存在的一些問題:

@M4mb0: 我讀了摘要,感覺作者似乎忽略了很重要的一點:在沒做出模型之前,我們並不知道究竟多大的網絡比較合適,因此一種簡單的做法就是先訓練一個過大的網絡,再通過 dropout、剪枝等操作對其進行調整。

在該論文 ICLR 2019 的雙盲審評論區,論文「ThiNet」的一作 Jian-Hao Luo 和論文「通道剪枝」的一作 Yihui He 提出了修改意見。Jian-Hao Luo 分別對錶 2 中 VGG-16 和 ResNet-50 的結果提出了質疑,但同時也認爲這是一篇「Interesting paper」,研究社區應該對「剪枝」方法和「從零開始訓練」方法進行更深入的思考。Yihui He 要求作者修改表 1、表 2 和表 4 中關於 VGG-16 的準確率結果。作者也向他們作出了積極的迴應。

論文 ICLR 2019 地址:https://openreview.net/forum?id=rJlnB3C5Ym

目前該論文提交到了 ICLR 2019 會議,正處於雙盲審階段,但從 arXiv 上我們可以發現該論文是由清華與加州大學伯克利分校的研究者合作的。機器之心對該論文的核心內容進行了介紹,歡迎大家留言探討。

1 引言

過參數化是深度神經網絡的公認特性(Denton et al., 2014; Ba & Caruana, 2014),該特性導致高計算成本和高內存佔用。作爲一種補救措施,神經網絡剪枝(LeCun et al., 1990; Hassibi & Stork, 1993; Han et al., 2015; Molchanov et al., 2016; Li et al., 2017)可以在計算成本有限的情況下,提高深度網絡的效率。網絡剪枝的典型過程包括三步:1)訓練一個大的過參數化模型,2)根據某個標準修剪訓練好的模型,3)微調修剪後的模型,以恢復損失的性能。

圖 1:典型的三步網絡剪枝步驟。

一般來說,剪枝過程背後有兩個共識:一,大家都認爲首先訓練一個大的過參數化模型很重要(Luo et al., 2017),因爲這樣會提供高性能模型(更強的表徵和優化能力),而人們可以安全地刪除冗餘參數而不會對準確率造成顯著損傷。因此,這種觀點很普遍,人們認爲該方法比從頭開始直接訓練更小的網絡(一種常用的基線方法)更優秀。二,剪枝後的架構和相關的權重被認爲是獲得最終高效模型的關鍵。因此大多現有的剪枝技術選擇微調剪枝後的模型,而不是從頭開始訓練它。剪枝後保留下來的權重通常被視爲至關重要,因爲準確地選擇一組重要的權重並不容易。

在本研究中,我們認爲上面提到的兩種觀點都未必正確。針對多個數據集及多個網絡架構,我們對當前最優剪枝算法進行了大量實證評估,得出了兩個令人驚訝的觀察結果。首先,對於具備預定義目標網絡架構的剪枝算法(圖 2),從隨機初始化直接訓練小目標模型能實現與使用經典三步流程相同的性能。在這種情況下,我們不需要從訓練大規模模型開始,而是可以直接從頭訓練剪枝後模型。其次,對於沒有預定義目標網絡的剪枝算法,從頭開始訓練剪枝後的模型也可以實現與微調相當甚至更好的性能。

這一觀察結果表明,對於這些剪枝算法而言,重要的是獲得的網絡架構而不是保留的權重,儘管這些目標架構還是需要訓練大模型才能獲得。我們的結果和文獻中結果的矛盾之處在於超參數的選擇、數據增強策略和評估基線模型的計算力限制。

圖 2:預定義和未預定義(自動發現)的目標架構之間的區別。稀疏度 x 是用戶指定的,a、b、c、d 由剪枝算法決定。

該論文的結果表明,我們需要重新審視現有的網絡剪枝算法。第一階段的過參數化似乎不像之前想象得那麼有效。此外,繼承大模型的權重不一定是最優選擇,而且可能導致剪枝後的模型陷入局部極小值,即使這些權重按剪枝標準來看是「重要的」。該論文的結果顯示自動剪枝算法的價值可能在於識別高效結構、執行隱性架構搜索,而不是選擇「重要的」權重。

論文:Rethinking the Value of Network Pruning

論文鏈接:https://arxiv.org/abs/1810.05270

源代碼鏈接: https://github.com/Eric-mingjie/rethinking-network-pruning

摘要:神經網絡剪枝是降低深度模型計算成本的常用方式。典型的剪枝算法分爲三個步驟:訓練(大型模型)、剪枝和微調。在剪枝期間,我們需要根據某個標準修剪掉冗餘的權重,並保留重要的權重以保證模型的準確率。在本文中,我們有許多與以往的研究衝突的驚人發現。我們測試了 6 個當前最優剪枝算法,微調剪枝模型的性能只相當於用隨機初始化權重訓練剪枝模型,有時甚至還不如後者。對於採用預定義目標網絡架構的剪枝算法,可以不用典型三步流程,直接從頭開始訓練目標網絡。我們在多個網絡架構、數據集和任務上對大量剪枝算法的觀察結果是一致的。結果表明:1)訓練過參數化的大型模型不一定會得到高效的最終模型;2)學習大型模型的「重要」權重對於較小的剪枝模型未必有用;3)最終模型的高效率不是由一組繼承的「重要」權重決定的,而是剪枝架構本身帶來的,這表明一些剪枝算法的作用可以被視爲執行網絡架構搜索。

4 實驗

在我們的實驗中,我們使用 Scratch-E 來表示用相同的 epoch 數訓練小型剪枝模型,使用 Scratch-B 來表示用相同的計算預算來訓練(例如,在 ImageNet 上,如果剪枝模型節省了超過兩倍的 FLOPs,我們只需要在訓練 Scratch-B 的時候加倍 epoch 數,這相當於比大型模型訓練有更少的計算預算)。

4.1 預定義的目標架構

表 1:基於通道剪枝(Li et al., 2017)的 L1 範數(準確率)結果。「Pruned Model」指大模型修剪後的模型。模型配置和「Pruned Model」均來自原論文。

表 2:ThiNet(Luo et al., 2017)的(準確率)結果。「VGG-GAP」和「ResNet50-30%」這些模型是按照 Luo 等人 (2017) 論文中定義的配置環境修剪後的模型。爲調節我們的實現所使用框架與原論文框架不同所造成的影響,我們對比了未修剪大型模型的準確率下降程度。例如,對於修剪後的模型 VGG-Conv,−1.23 是相對於左側的 71.03 而言的,71.03 是原論文中未修剪模型 VGG-16 的準確率;−2.75 是相對於左側的 71.51 而言的,71.51 是我們的實現中 VGG-16 的準確率。

4.2 自動發現的目標架構

表 4:Network Slimming (Liu et al., 2017) 的(準確率)結果。「Prune Ratio」表示整個網絡中被剪掉的通道的比例。每個模型的 Prune Ratio 都和原論文一致。

4.3 向目標檢測任務的遷移學習

表 7:剪枝在檢測任務上的(mAP)結果。剪枝後的模型來自於 Li et al. (2017)。Prune-C 指在分類預訓練權重上剪枝,Prune-D 指在遷移至檢測任務之後的權重上進行剪枝。Scratch-E/B 表示從頭開始在分類任務上預訓練剪枝後的模型,然後遷移至檢測任務。

5 用網絡剪枝進行架構搜索

圖 3:不同方法的剪枝後架構,所有模型都是從頭訓練的,平均運行 5 次。自動剪枝方法(左:Network Slimming (Liu et al., 2017),右:非結構化剪枝 (Han et al., 2015))獲得的架構比在整個網絡中均勻修剪通道或稀疏權重的方法具備更高的參數效率。

剪枝後架構的設計原則

如果自動發現的架構參數效率更高,研究者可能會想:可以從中得出如何設計更好架構的普遍原則嗎?爲解答該問題,我們分別對 Network Slimming 和非結構化剪枝進行了兩次實驗,使用的數據集分別是 VGG-19 和 CIFAR-100。

對於 Network Slimming,我們使用剪枝後架構每個層階段(具備相同特徵圖大小的層)的平均通道數來構建新的架構集合,我們將該方法稱爲「Guided Pruning」;對於非結構化剪枝,我們分析了剪枝後架構的稀疏度模式(圖 4),並用它們構建新的稀疏模型集合,我們將該方法稱爲「Guided Sparsifying」,結果見圖 5。可以看到對於 Network Slimming(左)和非結構化剪枝(右),指導設計出的架構(綠色)性能與剪枝後架構(藍色)不相上下。

圖 4:VGG-16 的非結構化剪枝模型中特定層階段的 3×3 卷積核的平均稀疏度模式。顏色越深表示權重被保留的概率越高。

有趣的是,這些指導設計模式可遷移至不同數據集上的不同架構。我們把在 CIFAR-10 上訓練的 VGG-16 剪枝後架構的模式提取出來,用於在 CIFAR-100 上設計高效的 VGG-19。這些架構集合被標註爲「Transferred Guided Pruning/Sparsifying」。從下圖中我們可以看這些架構(紅褐色)的性能比直接在 VGG-19 和 CIFAR-100 上剪枝的架構(藍色)稍差,比均勻修剪/稀疏化(紅色)的架構性能好得多。在這種情況下,研究者不必在目標數據集上訓練大模型來找到高效模型,因爲可遷移的設計模式能夠幫助我們直接獲得高效架構。

圖 5:不同方法的剪枝後架構,所有模型都是從頭訓練的,平均運行 5 次。

6 討論及結論

我們建議未來的剪枝方法基於強大的基線模型進行評估,尤其是在目標剪枝架構已經被預定義的情況下。除了高準確率,從頭訓練預定義目標模型還具備以下優勢:

  • 由於模型較小,我們可以使用更少的 GPU 內存來訓練,可能比訓練原始的大型模型更快。
  • 剪枝標準與步驟有時需要逐層微調 (Luo et al., 2017),或針對不同的網絡架構進行調整,現在這些都不必要。
  • 我們避免了調整剪枝步驟中涉及的額外超參數。

我們的結果支持使用剪枝方法尋找高效架構或稀疏度模式,可以通過自動剪枝方法來進行。此外,在有些案例中,傳統的剪枝方法仍然比從頭開始訓練模型快得多,比如以下兩種情況:

  • 給定預訓練的大模型,且幾乎沒有訓練預算的情況;
  • 需要獲取不同大小的多個模型,在這種情況下研究者可以訓練一個大模型,然後按不同比例進行修剪。

總之,我們的實驗展示了從頭訓練小型剪枝後模型幾乎總能得到與按照經典「訓練、剪枝、微調」步驟訓練出的模型相當或更高的準確率。這改變了我們對過參數化必要性、繼承權重有效性的理解。我們進一步展示了自動剪枝算法的價值,它可以用於尋找高效架構和提供架構設計原則。

參考內容:https://www.reddit.com/r/MachineLearning/comments/9q5t92/r_recent_rethinking_the_value_of_network_pruning/

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