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