Dropout可能要換了,Hinton等研究者提出神似剪枝的Targeted Dropout

選自 arXiv

機器之心編譯

作者:Aidan N. Gomez、Ivan Zhang、Kevin Swersky、Yarin Gal、Geoffrey E. Hinton

參與:思源

Dropout 已經是很多模型的標配,它隨機刪除一些神經元或權重以獲得不同的「架構」。那麼我們在訓練中能「隨機」刪除很弱的連接,或不重要的神經元,因此構建更「重要」的架構嗎?Hinton 等研究者表示這是可以的,這種名爲 Targeted Dropout 的方法類似於將剪枝嵌入到了學習過程中,因此訓練後再做剪枝會有很好性質。

這篇 Targeted Dropout 論文接受爲 NIPS/NeurIPS 2018 關於緊湊神經網絡的 Workshop,該研討會關注構建緊湊和高效的神經網絡表徵。具體而言,其主要會討論剪枝、量化和低秩近似等神經網絡壓縮方法;神經網絡表示和轉換格式;及使用 DNN 壓縮視頻和媒體的方式。

該 Workshop 的最佳論文是機器之心曾介紹過的 Rethinking the Value of Network Pruning ,這篇論文重新思考了神經網絡過參數化的作用,該論文表示剪枝算法的價值可能在於識別高效結構、執行隱性的架構搜索,而不是在過參數化中選擇「重要的」權重。

Workshop地址:https://nips.cc/Conferences/2018/Schedule?showEvent=10941

當然,本文還是重點關注這種 Targeted Dropout,它將剪枝隱性地構建到 Dropout 中,難道也是在隱性地搜索高效神經網絡架構?

目前有很多研究工作都關注訓練一個稀疏化的神經網絡,而稀疏化涉及將神經網絡的權重或整個神經元的激活值配置爲零,並且同時要求預測準確率不能有明顯下降。在學習階段,我們一般能用正則項來迫使神經網絡學習稀疏權重,例如 L1 或 L0 正則項等。當然稀疏性也可以通過後期剪枝實現,即在訓練過程中使用完整模型,訓練完在使用一些策略進行剪枝而實現稀疏化。

理想情況下,給定一些能度量任務表現的方法,剪枝方法會去除對模型最沒有益處的權重或神經元。但這一過程非常困難,因爲數百萬參數的哪個子集對任務最重要是沒辦法確定的。因此常見的剪枝策略側重於快速逼近較優子集,例如移除數量較小的參數,或按照任務對權重的敏感性進行排序,並去除不敏感的權重。

研究者新提出來的 Targeted Dropout 基於這樣的觀察:Dropout 正則化在每次前向傳播中只激活局部神經元,因此它本身在訓練過程中會增加稀疏性屬性。這鼓勵神經網絡學習一種對稀疏化具有魯棒性的表示,即隨機刪除一組神經元。作者假設如果我們準備做一組特定的剪枝稀疏化,那麼我們應用 Dropout 到一組特定的神經元會有更好的效果,例如一組數值接近爲零的神經元。

作者稱這種方式爲 Targeted Dropout,其主要思想是根據一些快速逼近權重重要性的度量對權重或神經元進行排序,並將 Dropout 應用於那些重要性較低的元素。與正則化 Dropout 觀察結果相似,作者表示該方法能鼓勵神經網絡學習更重要的權重或神經元。換而言之,神經網絡學習到了如何對剪枝策略保持足夠的魯棒性。

相對於其它方法,Targeted Dropout 的優點在於它會令神經網絡的收斂對剪枝極其魯棒。它同時非常容易實現,使用 TensorFlow 或 PyTorch 等主流框架只需要修改兩行代碼。此外,該網絡非常明確,我們所需要的稀疏性程度都可以自行設定。

評審員對該方法總體是肯定的,但對其收斂性,也提出了質疑。由於對神經元(權重)重要性的估計,是基於 Dropout(剪枝)前的情況,而不是實際 Dropout(剪枝之後,這樣估值誤差有可能在優化迭代過程中累積,最終導致發散的結果。論文作者承諾,在最終版的附錄中,會給出更詳細的證明。

最後,Hinton 等研究者開源了實驗代碼,感興趣的讀者可以參考源代碼:

項目地址:https://github.com/for-ai/TD/tree/master/models

在項目中,我們會發現對 Dropout 重要的修正主要是如下代碼。其中模型會對權重矩陣求絕對值,然後在根據 targ_rate 求出要對多少「不重要」的權重做 Dropout,最後只需要對所有權重的絕對值進行排序,並 Mask 掉前面確定具體數量的「不重要」權重。

 norm = tf.abs(w)

 idx = tf.to_int32(targ_rate * tf.to_float(tf.shape(w)[0]))

 threshold = tf.contrib.framework.sort(norm, axis=0)[idx]

 mask = norm < threshold[None, :]

確定哪些權重不重要後,接下來的 Dropout 操作就和和一般的沒什麼兩樣了。下面,我們具體看看這篇論文吧。

論文:Targeted Dropout

論文地址:https://openreview.net/pdf?id=HkghWScuoQ

神經網絡因爲其有大量參數而顯得極爲靈活,這對於學習過程而言非常有優勢,但同時也意味着模型有大量冗餘。這些參數冗餘令壓縮神經網絡,且還不會存在大幅度性能損失成爲可能。我們介紹了一種 Targeted Dropout,它是一種用於神經網絡權重和單元后分析(Post hoc)剪枝的策略,並直接將剪枝機制構建到學習中。

在每一次權重更新中,Targeted Dropout 會使用簡單的挑選準則確定一組候選權重,然後再將 Dropout 應用到這個候選集合以進行隨機剪枝。最後的神經網絡會明確地學習到如何對剪枝變得更加魯棒,這種方法與更復雜的正則化方案相比非常容易實現,同時也容易調參。

2 Targeted Dropout

2.1 Dropout

我們的研究工作使用了兩種最流行的伯努利 Dropout 技術,即 Hinton 等人提出的單元 Dropout [8, 17] 和 Wan 等人提出的權重 Dropout[20]。對於全連接層,若輸入張量爲 X、權重矩陣爲 W、輸出張量爲 Y、Mask 掩碼 M_io 服從於分佈 Bernoulli(α),那麼我們可以定義這兩種方法爲:

單元 Dropout 在每一次更新中都會隨機刪除單元或神經元,因此它能降低單元之間的相互依賴關係,並防止過擬合。

權重 Dropout 在每一次更新中都會隨機刪除權重矩陣中的權值。直觀而言,刪除權重表示去除層級間的連接,並強迫神經網絡在不同的訓練更新步中適應不同的連接關係。

2.2 基於數量級的剪枝

目前比較流行的一類剪枝策略可以稱之爲基於數量級的剪枝,這些策略將 k 個最大的權重數量級視爲最重要的連接。我們一般可以使用 argmax-k 以返回所有元素中最大的 k 個元素(權重或單元)。

單元剪枝 [6],考慮權重矩陣列向量的 L2 範數:

權重剪枝 [10],若 top-k 表示相同卷積核中最大的 k 個權值,考慮權重矩陣中每一個元素的 L1 範數:

其中權重剪枝一般能保留更多的模型準確度,而單元剪枝能節省更多的計算力。

2.3 方法

若有一個由θ參數化的神經網絡,且我們希望按照方程 (1) 和 (2) 定義的方法對 W 進行剪枝。因此我們希望找到最優參數θ*,它能令損失函數ε(W(θ*)) 儘可能小的同時令|W(θ* )| ≤ k,即我們希望保留神經網絡中最高數量級的 k 個權重。一個確定性的實現可以選擇最小的 |θ| − k 個元素,並刪除它們。

但是如果這些較小的值在訓練中變得更重要,那麼它們的數值應該是增加的。因此,通過利用靶向比例γ和刪除概率α,研究者將隨機性引入到了這個過程中。其中靶向比例(targeting proportion)表示我們會選擇最小的γ|θ|個權重作爲 Dropout 的候選權值,並且隨後以丟棄率α獨立地去除候選集合中的權值。

這意味着在 Targeted Dropout 中每次權重更新所保留的單元數爲 (1 − γ · α)|θ|。正如我們在後文所看到的,Targeted Dropout 降低了重要子網絡對不重要子網絡的依賴性,因此降低了對已訓練神經網絡進行剪枝的性能損失。

如下表 1 和表 2 所示,研究者的權重剪枝實驗表示正則化方案的基線結果要比 Targeted Dropout 差。並且應用了 Targeted Dropout 的模型比不加正則化的模型性能更好,且同時參數量還只有一半。通過在訓練過程中逐漸將靶向比例由 0 增加到 99%,研究者表示我們能獲得極高的剪枝率。

表 1:ResNet-32 在 CIFAR-10 的準確率,它會使用不同的剪枝率和正則化策略。上表展示了權重剪枝策略的結果,下表展示了單元剪枝的結果。

表 2:比較 Targeted Dropout 和 ramping Targeted Dropout 的 Smallify。實驗在 CIFAR-10 上使用 ResNet-32 完成。其中左圖爲三次 targeted 中最好的結果與 6 次 smallify 中最好結果的對比,中間爲檢測出最高的剪枝率,右圖爲 ramp targ 檢測出的更高剪枝率。

3 結語

我們提出了一種簡單和高效的正則化工具 Targeted Dropout,它可以將事後剪枝策略結合到神經網絡的訓練過程中,且還不會對特定架構的潛在任務性能產生顯著影響。最後 Targeted Dropout 主要的優勢在於簡單和直觀的實現,及靈活的超參數設定。

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