搜索推荐炼丹笔记:单网络内部集成学习
Intra-Ensemble in Neural Networks
作者:一元,公眾號:煉丹筆記背景
提高模型效果一直是機器學習(包括深度學習)中的關鍵問題。然而,獨立神經網絡在層數較多的情況下,往往會受到邊緣效應的影響。同時,集成是進一步提高模型效果的有效技術。
- 訓練多個獨立的深度神經網絡需要花費大量的資源。
在本文工作中,我們提出了內部集成,一個端到端的策略與隨機訓練操作,在一個神經網絡訓練多個子網絡同時。額外的參數大小是邊際的,因為大多數參數是相互共享的。同時,隨機訓練增加了權值共享子網絡的多樣性,顯著提高了集成效果。
相關知識
集成學習
網絡結構搜索
Neural architecture search,NAS在設計更小更精確的網絡結構方面有了很大的改進。在仔細設計搜索空間和搜索算法的情況下,
- 搜索結構可以在準確度和延遲之間獲得很好的折衷。
One-shot模型訓練一個笨重的網絡,每個層有不同的可選操作,使用其相應的子網絡來近似估計獨立模型。這項工作啟發我們在保持其子網精度的同時,利用One-shot模型的多樣性和靈活性。DARTS、ProxylessNas和FBNet提出了可微策略,在沒有任何控制器或超網絡的情況下實現對網絡體系結構的有效搜索。
參數共享
在訓練成本最小化的思想指導下,參數共享在減小模型尺寸的同時,成功地提高了模型性能。
在一個網絡中訓練子網絡
集成學習
通過在一個神經網絡中訓練多個子網絡,同時共享大部分權值,可以巧妙地利用參數冗余。
我們先定義寬度比的列表W和通過或跳過不同層的可轉換深度的列表D。
這邊我們設計一種端到端策略,將單個神經網絡M訓練成一組具有不同寬度和深度的子網絡。
寬度Width
對于任何的寬度比,是每層使用的channed的比例,例如,給定一個有n個channel的層,如果,對應的第i層的子網絡使用0.8n的原始網絡的channel,帶有不同寬度的原始的訓練或者增量的訓練對于每個子網絡將會打來非常大效果的下降。
為了解決這個問題,此處借用了可切換批處理規范化(S-BN)思想。利用S-BN算法,我們可以在保持很好的效果的同時,在不同寬度上訓練一個神經網絡,只需稍微增加參數大小即可。
深度Depth
雖然子網絡是使用不同的寬度和深度訓練的,但絕大多數網絡參數是相互共享的。不同寬度的層采用獨立的批量歸一化方法來積累各自的特征統計信息,保證了訓練和推理的穩定性。由于在一個神經網絡中有多個子網絡可用,可以應用內部集成來進一步增強網絡的效果。
使用shuffled的數據加速訓練
以前的工作是每批用相同的數據為每個子網訓練整個網絡。這種原始的訓練是低效和浪費的,因為子網絡彼此共享大部分權重。shuffle數據是處理上述問題的一個特殊技巧。我們對不同的子網使用不同的數據加載器。每個數據加載器的shuffle方式不同,以確保不同的排列。對于混合數據,具有共享權重的子網絡能夠在每一批中學習更多的信息。
一個網絡內的內部集成
原始訓練的子網絡通常會收斂到相似的結果,因為它們彼此共享很大一部分參數。同時,集成需要一套多樣化的模式來實施。因此,提高子網間的多樣性是關鍵。本文使用下面的幾種策略來提升集成效果。
子網絡的隨機訓練
為了降低子網之間的同質性,我們將問題分為廣度和深度兩個方面。不同的寬度為子網絡提供不同的過濾器,而不同的深度允許子網絡通過不同的塊或層。
本文提出三種隨機訓練操作,如圖3所示,以增加子網在寬度上的多樣性,并在深度上進行一種操作。
我們的操作主要是在通道索引上實現的。假設我們有一個總共有c個信道的層l,在這個層中有一個子網包含n個(0<n≤c)濾波器。操作說明如下:
1. Random cut(RC)
2. Random offset(RO)
3. Shuffle channel(SC)
對channel進行Shuffle,隨機選擇chnnel的indexes并且對子網絡層的順序進行shuffle,因為shuffle過了,所以不同的子網絡會使用不同的順序的不同channel進行訓練,這么做可以是diversity得到進一步加強。
4. Depth operation
在深度方面,我們采用兩種技術實現子網的多樣化,random skip(RS)和shuffle layer(SL)。通過RS,每個子網隨機跳過整個網絡的一層或幾層。此操作為子網絡提供不同的深度。SL是指在每個子網絡中,我們部分的shuffle每個階段中的層順序。在我們的實驗中,當子網絡在我們的模型中有不同的深度時,我們總是結合RS確保多樣性。
5. Similarity
子網絡的效果和相似度的trade-off。
在我們的實踐中,我們發現Random cut的效果是最好的。
組合策略
實驗結果
效果
- 在引入少量額外參數的情況下,所有模型的精度都有很大的提高
- Averaging和Stacking的效果都不錯,Stacking略有優勢。
解耦實驗
- 隨著參數size逐漸增大,測試準確率在較高水平上趨于飽和,很難再進一步提高。然而,對于多個獨立訓練的小網絡,集成很容易獲得更好的結果,這對于堆疊更多層或拓寬信道幾乎是不可能的。
- 我們可以使用intra-ensemble的方式獲得和幾個單獨網絡類似的效果但是卻只需要極少的參數。
小結
本文引入了內部集成策略,它將多個不同的子網絡組合在一個神經網絡中以提高最終性能。隨機訓練操作保證了訓練的高精度和多樣性。在加入邊緣參數的情況下,與神經結構搜索方法相比,集成方法在分類任務上取得了有競爭力的結果。大量的實驗表明,我們的方法對各種體系結構和數據集都是有效的。此外,隨著多核計算能力的日益普及,模型并行將變得更加容易。此外,還可以探索更多的技術來提高訓練效率,比如shuffle數據。在這種情況下,我們的IENET可以在有限的資源獲得更好的效果。
總結
以上是生活随笔為你收集整理的搜索推荐炼丹笔记:单网络内部集成学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NN如何在表格数据中战胜GBDT类模型
- 下一篇: 搜索推荐炼丹笔记:Transformer