當前位置:
首頁 > 最新 > Ferenc Huszár:剪枝神經網路兩篇最新論文的解讀

Ferenc Huszár:剪枝神經網路兩篇最新論文的解讀

AiTechYun

編輯:yuxiangyu

我想簡要地介紹兩篇關於修剪神經網路的論文:

Learning Sparse Neural Networks through L0 Regularization – Christos Louizos, Max Welling, Diederik P. Kingma (2018)

鏈接:https://arxiv.org/abs/1712.01312

Faster gaze prediction with dense networks and Fisher pruning – Lucas Theis, Iryna Korshunova, Alykhan Tejani, Ferenc Huszár (2018)

鏈接:https://arxiv.org/abs/1801.05787

我在本文中提到的剪枝(pruning),是指減少或控制非零參數的數量,或者在神經網路中使用很多特徵映射。在高維中,至少有三種方法可以做到這一點,而剪枝就是其中之一:

正則化:修改目標函數或學習問題,所以優化可能會找到一個參數較少的神經網路。第一篇論文選擇了這種方法。

剪枝:取一個大的網路,刪除一些多餘的特徵或參數。第二篇論文選擇了這種方法。

成長(growing):第三種方法,從小型網路開始,通過增加標準逐步增加新的單元。比較少見。


你可能會出於很多目的修建自己的網路。最可能的原因是在保持相同的性能的同時降低計算成本。刪除那些深度網路架構中沒有真正使用的特徵可以加速推理和訓練。你也可以把剪枝看作是一種架構搜索的形式:搞清每層中需要多少特徵才能獲得最佳性能。

其次你可能因為需要通過減少參數數量來增強泛化,減少參數空間的冗餘。正如我們在近期關於深度網路中泛化的研究中所看到的那樣,參數的原始數量(L0範數)實際上不足以預測其泛化能力。也就是說,我們憑經驗去修剪網路往往有助於泛化。同時,社區正在開發新的參數依賴量來預測或描述泛化。在Fisher-Rao範數是這些一個很好的例子。有趣的是,費希爾剪枝(Fisher pruning,第二個論文)被證明與Fisher-Rao範數有細微的聯繫,這可能暗示了修剪,參數冗餘和泛化之間的更深層次的關聯。


我發現Louizos等人的L0論文很有意思,它可以被看作是之前我寫的機器學習文章中,關於機器學習問題轉換的簡單應用。這是一個很好的例子,說明如何使用這些想法,為一個棘手的ML優化問題訂製實際的你可以運行的隨機梯度下降演算法。

鏈接:http://www.inference.vc/design-patterns/

所以我將把論文總結成一系列的步驟,每一步都改變了優化問題:

1. 從理想的損失函數開始,雖然它可能很難優化:通常的訓練損失加參數的L0範數線性結合。在L0範數計算向量中非零項,這是一個不可微分的分段常值函數。這是一個困難的組合優化問題。

2. 應用變分優化將不可微函數轉化為可微函數。通常通過在參數θ中引入概率分布pψ(θ)來進行。即使目標相對於任何θ都不可微分,pψ(θ)以下平均損失可能是可微的,與θ有關。為了找到最佳的ψ,通常可以使用增強(REINFORCE)梯度估計器,從而形成進化策略。但是一般都有很高的方差。

3. 所以,我們將再參量化(reparametrization)技巧應用於pψ,構建一個低方差梯度估計器。但是,這隻適用於連續變數。

4. 為了處理離散變數,我將它轉換成concrete relaxation,它通過一個連續的近似來逼近離散的隨機變數。現在我們有一個較低的方差(與REINFORCE相比)梯度估計器,可以通過反向傳播和蒙特卡羅採樣來計算。你可以在隨即梯度下降((Adam))中使用這些梯度,這也正是論文中的做法。

有趣的是,(3)式和進化策略或變分優化之間的聯繫沒有被提到。取而代之的是,基於spike-and-slab先驗的激勵。我建議閱讀這篇論文,也考慮到這一點。

然後,作者證明這確實是可行的,並且與其他設計用於減少參數數量的方法相比更有優勢。根據這些步驟從一個問題轉換到另一個問題的思考,可以讓你概括或改進這種想法。例如,REBAR或RELAX梯度估計器提供了一個沒有偏見的,低方差的替代concrete relaxation,也可以很好地工作。


我想談的第二篇文章是來自我們自己的實驗室。不是純粹的方法論文,而著重於建立輕便的神經網路來預測圖像顯著性的具體應用。修剪後的網路現在提供了支持在Twitter上裁剪照片的邏輯。

我們的目標也是降低網路的計算成本,特別是在遷移學習環境中:當在預訓練完成的神經網路的基礎上構建時,你將繼承解決原始源任務所需的大量複雜度,這對於解決你的目標任務是多餘的。我們的高級修剪目標不同的地方在於:不像L0範數或組稀疏,我們用一個稍微複雜的公式來直接估計方法的正向通道運行時間。這是每個層的參數個數與相鄰層之間的相互作用的二次函數。有趣的是,這會導致架構傾向於交替厚層和薄層,如下所示:

我們「貪婪」地剪掉訓練好的網路,每次去掉一個卷積特徵映射。選擇下一個修剪特徵映射去剪枝的一個原則是盡量減少由此造成的訓練損失的增加。從這個標準出發,使用損失的二階泰勒展開,做更多的假設,我們得到下面的剪枝表達式(pruning signal)來保持參數θi。

Δi∝Fiθi2

其中Fi表示費希爾信息矩陣的ith對角項。上面的公式刪除的是單個參數,但是我們可以拓展它,刪除全部特徵映射。通過刪除每次迭代具有最小Δ的參數或特徵映射進行修剪,並在迭代之間對網路進行再訓練網路。

這本文中,我項支出費希爾剪枝與我之前曾發的博客中的觀點之間的聯繫。


第一個聯繫是Fisher-Rao範數(FR-norm)。假設費希爾信息對角 – 理論上是一個不合理的假設,但是實際上的簡化在實踐中產生了有用的演算法。因為這個假設,關於θ的變為:

用這種形式寫下來,你可以希望看到Fisher-Rao範數和費希爾修剪標準之間的聯繫。根據所使用的費希爾信息的特定定義,可以近似解釋FR-norm:

當你刪除一個隨機參數時,訓練日子的可能性(費希爾經驗信息)下降。

或者當移除一個參數時,模型(費希爾信息模型)定義的條件分布近似變化。

在現實世界中,Fisher信息矩陣並不對角,這實際上對理解泛化非常重要。舉個例子,只考慮對角項使得費希爾剪枝對網路的某些重新參數化(非對角線雅可比行列式)敏感。但是也許在Fisher-Rao範數和參數的冗餘之間有更深的聯繫。


利用對角費希爾信息值,引導剪枝與彈性權重鞏固( EWC,elastic weight consolidation) 。在EWC中,費希爾信息值用於確定權重對於解決以前的任務的重要程度。這個演算法是從貝葉斯在線學習的角度推導出來的,但你也可以從泰勒展開的角度來激發它,就像費希爾剪枝一樣。

為了解釋EWC你可以把他看作共享硬碟(只是比喻)。神經網路的參數就像一個硬碟驅動器或某種存儲卷。在任務中訓練神經網路包括壓縮訓練數據並保存信息到硬碟。如果你沒有防止數據被覆蓋的機制,那麼它將會被覆蓋:在神經網路中,災難性的遺忘會以同樣的方式發生。EWC就像一個在多個用戶之間共享硬碟的協議,用戶不會覆蓋對方的數據。EWC中的費希爾信息值可以被看作軟的不覆蓋的標誌。在對第一個任務進行訓練之後,我們計算出費希爾信息值,該值表示哪些參數存儲任務的關鍵信息。較低的費希爾值是冗餘的,可以重複使用來存儲新的信息。在這個比喻中,我們可以想到費希爾信息值的總和能衡量硬碟驅動器滿載的程度,而剪枝就像丟棄了實際上沒有存儲任何東西的驅動器部分。


我記述了兩個通過計算出哪些參數或特徵可以扔掉來自動學習神經網路架構的方法。在我看來,這兩種方法或者說論文本身都很有趣。L0方法似乎是一種更簡單的優化演算法,可能比費希爾剪枝的迭代,每次刪除一個特徵的性質更可取。然而,當你從一個大的預訓練模式開始,費希爾修剪更適用於,在遷移學習的環境中,從大的預訓練模型開始的這種情況。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 ATYUN訂閱號 的精彩文章:

正則化貪心森林的入門簡介,含案例研究
神經網路使我們能夠以新的方式「讀懂人臉」

TAG:ATYUN訂閱號 |