神經網絡「剪枝」的兩個方法

2020-12-03 騰訊網

  編譯 AI科技大本營

  參與 劉 暢

  編輯 明 明

  【AI科技大本營導讀】本文介紹了兩篇自動學習神經網絡架構方向的最新方法,他們主要是通過計算扔掉一些參數/特徵來實現的。第一篇L0方法看起來像是一個更簡單的優化算法,第二篇Fisher修剪法論文來自於作者及其實驗室。

  第一篇論文:《Christos Louizos, Max Welling, Diederik P. Kingma (2018) Learning Sparse Neural Networks through $L_0$ Regularization》

  論文地址:https://arxiv.org/abs/1712.01312

  第二篇論文:《Lucas Theis, Iryna Korshunova, Alykhan Tejani, Ferenc Huszár (2018) Faster gaze prediction with dense networks and Fisher pruning》

  論文地址:https://arxiv.org/abs/1801.05787

  第二篇論文的標題中提到的修剪,其含義是在神經網絡中減少或控制非零參數的數量,或者是在神經網絡中需要用到的特徵圖數量。從更抽象的層面來看,至少有三種方法可以做到這一點,而修剪方法只是其中之一:

  正則化該方法修改了目標函數/學習問題,因此優化過程中有可能會找到一個帶少量參數的神經網絡。Louizos等(2018)做了這方面的工作。

  修剪該方法是在一個龐大的網絡上,刪除在某種程度上冗餘的特徵或參數。(Theis et al,2018)的工作就可以作為一個例子。

  生長第三種方法知名度比較低,從小型網絡開始,按生長標準逐步增加新的單元。

  為什麼要剪枝?

  修剪網絡有各種各樣的原因。 最顯然的原因是希望保持相同性能的同時能降低計算成本。而且刪除那些在深度網絡中沒有真正使用的特徵,也可以加速推理和訓練過程。你也可以將修剪看作是一種結構探索:即找出在每層中需要多少個特徵才能獲得最佳性能。

  第二個原因是通過減少參數數量,也就是減少參數空間中的冗餘,可以實現提升模型的泛化能力。正如我們在近期關於深度網絡泛化能力的研究中所看到的那樣,參數的原始數量(L_0 norm)實際上並不能預測其泛化能力。也就是說,根據經驗,我們發現修剪網絡有助於提升泛化能力。同時,深度學習社區正在開發新的參數相關量來預測/描述泛化。 Fisher-Rao norm就是一個很好的例子。有趣的是,Fisher修剪(Theis et al,2018)被證明與Fisher-Rao norm之間有很好的相關性,這可能意味著修剪,參數冗餘和泛化之間,有著更深層次的關係。

  L_0 正則化

  我發現Louizos等人(2018年)關於L_0的論文非常有趣,它可以被看作是幾個月前我在機器學習食譜(譯者註:博客作者另外的博文,地址http://www.inference.vc/design-patterns/)中所寫的機器學習問題轉換的直接應用。這是一個很好的例子,說明如何使用這些一般的想法,將一個棘手的機器學習優化問題轉化為可以實際運作的模型。

  所以我將這篇文章總結為以下步驟,每個步驟逐步改變著模型優化問題:

  1、首先從難以優化的損失函數開始:在常用的損失函數上加上L_0範數,兩者線性組合。 L_0範數簡單的計算了向量中的非零項,它是一個不可微分的常量函數。 所以這是一個非常困難的組合優化問題。

  2、應用變分優化方法將不可微的函數轉化為可微函數。這通常是通過在參數$ \ theta $上引入一個概率分布p_ {\ psi}(\ theta)。即使目標對於任何 \ theta 參數都是不可微的,但是在 p_ {\ psi} 下的平均損失可能是可微的w.r.t.$\$ PSI。為了找到最優\ psi ,通常可以使用一個增強(REINFORCE)梯度估計器,從而得到優化的策略。 但是這種方法通常具有高方差,因此我們會用步驟三的方法。

  3、將重構造參數(reparametrization)技巧應用於pψ上,以此構造一個低方差梯度估計器。但是,這隻適用於連續變量。為了處理離散性,我們轉向步驟四。

  4、使用concrete relaxation,通過連續近似逼近離散隨機變量。現在我們有一個較低的方差(與REINFORCE相比)梯度估計器,可以通過反向傳播和簡單的蒙特卡羅採樣來計算。 您可以在SGD(Adam)中使用這些梯度,也正是這篇論文做的工作。

  有趣的是,步驟3並沒有提到優化策略或變分優化之類的東西。取而代之的出發點是基於不同連接的spike-and-slab先驗。我建議閱讀這篇論文時,可以考慮到這一點。

  作者表明這確實在減少參數數量方面起了作用,並且與其他方法相比更有優勢。根據這些步驟,思考從一個問題轉換到另一個問題,讓您也可以概括或改進這個想法。例如,REBAR或RELAX梯度估計器相比其他的估計器,它能夠達到無偏差和低方差的效果,而且這種方法在這個問題上也可以有很好的效果。

  Fisher修剪法

  我想談的第二篇論文是來自我們自己實驗室的。(Theis等人,2018)這篇論文不是純粹的方法,而是關注於具體應用,即如何構建一個快速神經網絡來預測圖像顯著性。修剪網絡的方法來源於在Twitter上裁剪照片的原理。

  我們的目標也是為了降低網絡的計算成本,特別是在遷移學習環境中:當使用預訓練的神經網絡開始構建時,您將繼承解決原始任務所需的大量複雜性計算,而這對於解決你的目標任務可能是多餘的。我們的高級(high-level)修剪方法有一個不同之處:與L0範數或組稀疏度不同,我們用一個稍微複雜的公式來直接估計方法的前向計算時間。這個公式是相鄰層間相互作用的每層參數數量的二次函數。有趣的是,這樣做的結果是網絡結構是厚層和薄層間的交替運算,如下所示:

  我們使用一次去掉一個卷積的特徵圖的方法,來修剪訓練好的網絡。選擇下一個待修剪特徵圖的一個原則是儘量減少由此造成的訓練損失增加。從這個原則出發,利用損失函數的二階泰勒展開式,再做出更多的假設,我們能得到下面關於參數θi的修剪關係:

  Fi表示Fisher信息矩陣的第i個對角線值。雖然上面的公式去除了單個參數,但是我們可以延伸到如何去除整個特徵圖。而修剪是通過去除每個迭代中具有最小Δ的參數或特徵映射,並且在迭代間再重新訓練網絡來實現的。欲了解更多詳情,請參閱論文。

  除了論文中提到的內容之外,我想指出一下Fisher修剪法與我之前在這個博客上討論過的想法之間的一些聯繫。

  Fisher-Rao範數

  第一個聯繫是Fisher-Rao範數。假設某一分鐘Fisher矩陣信息是對角的,在理論上這是一個大而且不合理的假設,但是在應用中簡化了它,就得到了能用於實踐的算法。有了這個假設,θ的Fisher-Rao範數變成:

  用這種形式寫下來,你就能看到FR範數與Fisher修剪法之間的聯繫了。根據所使用的Fisher信息矩陣的特定定義,您可以近似解釋FR範數,如下:

  當刪除一個隨機參數,訓練日誌可能(Fisher經驗信息)會按預期下降

  或者當刪除一個參數,由模型(Fisher模型信息)定義的條件分布的近似變化

  在現實世界中,Fisher信息矩陣並不是對角的,這實際上是理解泛化的一個重要方面。首先,只考慮對角線值使Fisher修剪與網絡的某些參數(非對角線雅可比矩陣)之間有些聯繫。但是也許在Fisher-Rao範數和參數冗餘之間有更深層次的聯繫。

  彈性權重鞏固(Elastic Weight Consolidation)

  使用對角Fisher信息值來指導修剪也與(Kirkpatrick等,2017)提出的彈性權重鞏固有相似之處。在EWC中,Fisher信息值用於確定哪些權重能夠在解決以前的任務中更重要。而且,雖然算法是從貝葉斯在線學習中推導出來的,但是你也可以像Fisher修剪那樣從泰勒展開的角度來決定。

  我用來理解和解釋EWC的一個比喻是共享硬碟。(提醒:與其他所有的比喻一樣,這可能完全沒有意義)。神經網絡的參數就像是某類硬碟或存儲卷。訓練神經網絡的任務過程包括壓縮訓練數據並將信息保存到硬碟上。如果你沒有機制來保持數據不被複寫,那麼該硬碟就將被複寫。在神經網絡中,災難性遺忘是以同樣的方式發生。EWC就像是一份在多個用戶之間共享硬碟的協議,而用戶不需要複寫其它用戶的數據。 EWC中的Fisher信息值可以被看作軟體層面的不複寫標誌。在對第一個任務進行訓練之後,我們計算出Fisher信息值,該值表示該任務的關鍵信息是由哪些參數存儲的。Fisher值較低的是冗餘的參數,其可以被重複使用並用來存儲新的信息。在這個比喻中, Fisher信息值的總和就是衡量了硬碟容量的大小,而修剪實際上就是丟棄了硬碟上不用於存儲任何東西的部分。

  總結

  在我看來,這兩種方法/論文本身都很有趣。 L0方法看起來像是一個更簡單的優化算法,可能是Fisher修剪的迭代,一次刪除一個特徵方法更可取。然而,當你在遷移學習中,從一個大的預訓練模式開始時,Fisher修剪則更適用。

  作者FerencHuszár

  http://www.inference.vc/pruning-neural-networks-two-recent-papers/?nsukey=z6NQe6fC2toltaVCEoqq6242x7AScSRUSIk3%2FLoeKf00ExXKTajTwEDOasmj3OZI0jZbDeeDMHzvIKeD9vp8d%2FyH488zjFxznt3z2vIzLtnhaSVmWtcGHHF9ySKsvx8eBmmJRUjYz2oj2pykWs4mALvrFL%2BDxuKQFZ7xveeDramYMpnf1iHKWfj60GBlO7%2FORv7jpBNOz8hIs2i7pmtw4A%3D%3D

相關焦點

  • 視錯覺,神經網絡的盲點
    實際上,研究人員已經發現有很多方法可以導致人們對顏色、尺寸、相對位置和動作產生誤差。 錯覺本身很有趣,因為它們可以讓人深入理解視覺和感知的本質。所以,通過發現新錯覺的方法來探索這些邊界會大有裨益。     
  • MIT韓松專訪:Once for All 神經網絡高效適配不同硬體平臺
    按照傳統方法,開發者往往會考慮手動設計或使用神經體系結構搜索(Neural Architecture Search,NAS)的方法,但是這需要大量的 GPU hours 和能源消耗
  • 前沿| 「遺忘」在神經網絡中的重要性
    該模型包含特殊的神經網絡,可以通過禁用多餘神經元暫時遺忘不必要的信息,然後激活其他神經元組,以學習和解決某些任務。本研究提出的模型將這項功能遷移到人工神經網絡當中,並定義了具有主動遺忘機制的架構,因此該模型被命名為主動遺忘機器(AFM)。AFM 包含特殊的神經網絡,可以通過禁用多餘神經元暫時遺忘不必要的信息,然後激活其他神經元組,以學習和解決某些任務。
  • 利用深度神經網絡 從低劑量PET演算全劑量影像
    打開APP 利用深度神經網絡 從低劑量PET演算全劑量影像 工程師飛燕 發表於 2018-06-12 09:18:00 為解決此問題,目前有跨國研究小組正在使用深度神經網絡(deep neural network)作為潛在解決方案。 據報導,該研究共同作者、雪梨大學(University of Sydney)的Luping Zhou表示,他們使用稱為3D條件生成對抗網絡(3D c-GANS)的機器學習算法,來從低劑量的PET影像預估高質量全劑量PET影像的結果。
  • NYU Courant 二年級博士生薑仲石:網格曲面的神經網絡
    右邊的點雲表示方法相較於 Mesh 來說存儲的信息量少了很多。比如說有很多工作研究如何在點雲上估計法向量,但網格數據則是自帶了這些數據。所以網格數據是現在圖形學中主要的研究內容之一。二、一種圖神經網絡 (GNN) 的簡要介紹
  • 人工智慧黑盒揭秘:深度神經網絡可視化技術
    深度神經網絡又是最為複雜的機器學習模型,其可解釋性與可視化性更加具有挑戰性。網絡模型為什麼起作用,它是否足夠好,圖像識別是如何抽象出「貓」這個概念的?本段分析了幾種典型深度神經網絡可視化技術,詳盡展示了前沿的可視化原理以及解釋性效果。
  • Transformer新型神經網絡在機器翻譯中的應用|公開課筆記
    產業的興旺離不開背後技術的巨大進步,從今天的課程當中,我會給大家介紹背後技術的神秘面紗,然後對Transformer這個神經網絡做深入的解析。神經網絡機器翻翻譯是目前比較主流的機器翻譯方法,它是「Sequence to Sequence」model,也就是端到端的翻譯框架。
  • 神經網絡如何控制小鼠的行為?
    同時,研究人員運用神經科學技術來分析小鼠的大腦活動,解釋神經網絡如何控制小鼠的行為。 1 基於人工神經網絡的AI小鼠模型 人工神經網絡是一類由多層「神經元」互聯組件構成的機器學習算法,被認為是目前最先進的AI技術。
  • ACL論文 | 深度學習大神新作,神經網絡的自然語言翻譯應用
    這種基於 one-hot 矢量的方法的重要特點是,神經網絡忽視指令的底層語義。對於神經網絡來說,詞彙中的每一個指令,等同於與其他每個指令間的距離。那些指令的語義就是習得的(進入嵌入中),來最大化翻譯質量,或者模型的對數似然函數。這項特性讓我們在選擇指令的單位時獲得了很大的自由度。
  • 基於模擬退火神經網絡的I型FIR數字濾波器設計
    摘要:提出一種基於模擬退火神經網絡設計FIR數字濾波器的方法,是對用神經網絡設計方法的一種改進。由於線性相位FIR數字濾波器的幅頻特性是有限項的傅立葉級數,因此構造了一個三層餘弦基神經網絡模型,並用模擬退火算法進行了優化,然後給出了高階濾波器優化設計的實例。仿真表明經優化設計後的濾波器具有更好的性能和更穩定的效果。
  • MIT開發了一種神經網絡 可以在一秒內完成MRI掃描
    目前,醫生需要對比兩個在不同時間單獨拍攝MRI掃描圖像,以追蹤人體隨著時間推移發生的變化。但是,進行這種對比是既複雜又耗時的,因為這個過程需要仔細排列這兩個圖像以便進行準確測量。醫生需要將圖像上的所有位置處理為3-D圖,而當前的計算機需要花費很多時間來完成此操作。MRI掃描的問題在於其中包含的信息量。
  • BP人工神經網絡實驗,蠓蟲分類(美國1989年建模賽題)
    1、用BP人工神經網絡擬合函數 y=0.12e^(-0.23x)+0.54e^(-0.17x)sin(1.23x).要求給出真實數據點,用*表示,給出BP神經網絡擬合後的曲線。同時用CFTOOL和1stopt驗證。
  • CMU 2020年「神經網絡NLP」課程開課啦
    近日,CMU 2020年「神經網絡 NLP」課程開課啦!對正在學習自然語言處理的同學們來說,這是一份不可多得的好資源。課程內容卡內基梅隆大學語言技術學院將從神經網絡的簡要概述開始,然後花大部分時間演示如何將神經網絡應用於解決自然語言問題。
  • 想要結的葡萄多,關鍵是剪枝,什麼時候剪?怎麼剪才科學?
    對葡萄剪枝非常的重要,通過剪枝增加光照和主枝的營養供應,剪過枝的葡萄能提高產量和質量,增加種植的收益,那什麼時候剪?怎麼剪呢?請往下面閱讀。一、選擇什麼時候修剪葡萄的樹枝。二、冬剪的方法。就是進入初冬的時候,這個時候的葡萄葉子已經落完,新的枝芽還沒有長出,在這個時候進行修剪,對葡萄的影響較小。冬剪的主要方法有4個,就是短截、疏枝、回縮、緩放四個方面。◆進行短截修剪的方法。
  • 蒙特卡洛樹搜索在黑盒優化和神經網絡結構搜索中的應用
    更值得一提的是,在 NAS 方面發表出的很多 search 算法,比如用神經網絡或者圖神經網絡做 predictor,或者 RL,SGD (finite difference 類),並沒有在這次比賽中表現出非常優秀的成績。
  • 看圖猜口袋妖怪屬性,這個神經網絡可能比你強!教程
    通過對生物系統內部運作的簡單模擬,神經網絡能夠通過這些神經元來實現複雜的函數和模式。神經元的最簡單形式只是一個輸入的線性函數,可以通過組合實現非線性激活函數,如下圖:△ 圖9:神經網絡的基本單元然而,通過加深網絡層數,神經網絡能夠在獨立變量和因變量之間構建越來越複雜的對應關係,如下圖:△ 圖10:一個稍微複雜的,具有一個隱藏層的神經網絡結構從1940年開始,就已經有學者研究神經網絡,但是存在局部最優和計算量過大的問題
  • Nat Methods:計算神經網絡驅動下一代「蛋白質預測技術」的誕生
    為了設計蛋白質,科學家們使用了兩種截然不同的方法。其一,在「定向進化」中,通過隨機改變編碼天然蛋白質的胺基酸殘基的一級序列,並篩選具有所需活性的變體。其二,通過「合理設計」,即根據其實際3D結構對蛋白質進行建模,以識別可能影響蛋白質功能的胺基酸。然而,「定向進化」策略只能覆蓋整個蛋白質序列庫的很小一部分,而「合理設計」策略則依賴於蛋白質3D結構的解析,這也是十分困難的部分。
  • 萬字長文|如何直觀解釋卷積神經網絡的工作原理?
    作者:YJango 日本會津大學|人機互動實驗室博士生 量子位 已獲授權編輯發布 該文是對卷積神經網絡的介紹,並假設你理解前饋神經網絡。 如果不是,強烈建議讀完《如何簡單形象又有趣地講解神經網絡是什麼?》
  • 手把手 | 30行JavaScript代碼,教你分分鐘創建神經網絡
    自己搭建神經網絡太複雜?別怕!今天我們將手把手教你如何用30行代碼輕鬆創建一個神經網絡 。在本篇文章中,你將學到如何使用Synaptic.js(https://synaptic.juancazala.com/#/)創建和訓練神經網絡。利用這款工具,我們可以在瀏覽器中用Node.js進行深度學習。
  • 《超智能體》作者講述深層神經網絡設計理念(附PPT+視頻) | 雷鋒網...
    當x代表的是畫面,而y代表的是畫面在大腦中的概念時,神經網絡所完成的就是畫面識別。當x代表說過的話,而y代表將要說的話,那麼神經網絡所完成的就是語言模型,當x代表英語,而y代表中文,神經網絡所完成的就是機器翻譯。神經網絡的就是從很多輸入到輸出的例子中,尋找解釋這兩個空間的關聯。就像y=ax+b這個線性方程,給你兩個例子,讓你確定a和b一樣。