推翻剪枝固有觀點?清華、伯克利提出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 NetworkPruning
論文連結: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,我們使用剪枝後架構每個層階段(具備相同特徵圖大小的層)的平均通道數來構建新的架構集合,我們將該方法稱為「GuidedPruning」;對於非結構化剪枝,我們分析了剪枝後架構的稀疏度模式(圖 4),並用它們構建新的稀疏模型集合,我們將該方法稱為「Guided Sparsifying」,結果見圖 5。可以看到對於 Network Slimming(左)和非結構化剪枝(右),指導設計出的架構(綠色)效能與剪枝後架構(藍色)不相上下。
圖 4:VGG-16 的非結構化剪枝模型中特定層階段的 3×3 卷積核的平均稀疏度模式。顏色越深表示權重被保留的概率越高。
有趣的是,這些指導設計模式可遷移至不同資料集上的不同架構。我們把在 CIFAR-10 上訓練的 VGG-16剪枝後架構的模式提取出來,用於在 CIFAR-100 上設計高效的 VGG-19。這些架構集合被標註為「Transferred GuidedPruning/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/
ofollow,noindex" target="_blank">入門 剪枝 清華大學 伯克利 ICLR 2019
相關資料
Neural Network
(人工)神經網路是一種起源於 20 世紀 50 年代的監督式機器學習模型,那時候研究者構想了「感知器(perceptron)」的想法。這一領域的研究者通常被稱為「聯結主義者(Connectionist)」,因為這種模型模擬了人腦的功能。神經網路模型通常是通過反向傳播演算法應用梯度下降訓練的。目前神經網路有兩大主要型別,它們都是前饋神經網路:卷積神經網路(CNN)和迴圈神經網路(RNN),其中 RNN 又包含長短期記憶(LSTM)、門控迴圈單元(GRU)等等。深度學習是一種主要應用於神經網路幫助其取得更好結果的技術。儘管神經網路主要用於監督學習,但也有一些為無監督學習設計的變體,比如自動編碼器和生成對抗網路(GAN)。
來源:機器之心
Deep neural network
深度神經網路(DNN)是深度學習的一種框架,它是一種具備至少一個隱層的神經網路。與淺層神經網路類似,深度神經網路也能夠為複雜非線性系統提供建模,但多出的層次為模型提供了更高的抽象層次,因而提高了模型的能力。
來源:機器之心 Techopedia
ImageNet
Hyperparameter
在機器學習中,超引數是在學習過程開始之前設定其值的引數。 相反,其他引數的值是通過訓練得出的。 不同的模型訓練演算法需要不同的超引數,一些簡單的演算法(如普通最小二乘迴歸)不需要。 給定這些超引數,訓練演算法從資料中學習引數。相同種類的機器學習模型可能需要不同的超引數來適應不同的資料模式,並且必須對其進行調整以便模型能夠最優地解決機器學習問題。 在實際應用中一般需要對超引數進行優化,以找到一個超引數元組(tuple),由這些超引數元組形成一個最優化模型,該模型可以將在給定的獨立資料上預定義的損失函式最小化。
來源: Wikipedia
Transfer learning
遷移學習是一種機器學習方法,就是把為任務 A 開發的模型作為初始點,重新使用在為任務 B 開發模型的過程中。遷移學習是通過從已學習的相關任務中轉移知識來改進學習的新任務,雖然大多數機器學習演算法都是為了解決單個任務而設計的,但是促進遷移學習的演算法的開發是機器學習社群持續關注的話題。 遷移學習對人類來說很常見,例如,我們可能會發現學習識別蘋果可能有助於識別梨,或者學習彈奏電子琴可能有助於學習鋼琴。
來源:機器之心Pan, S. J., & Yang, Q. (2010). A survey on transfer learning. IEEE Transactions on Knowledge and Data Engineering, 22(10), 1345–1359.
Accuracy
分類模型的正確預測所佔的比例。在多類別分類中,準確率的定義為:正確的預測數/樣本總數。 在二元分類中,準確率的定義為:(真正例數+真負例數)/樣本總數