博客專欄

EEPW首頁 > 博客 > 常見深度學習模型集成方法

常見深度學習模型集成方法

發(fā)布人:計算機視覺工坊 時間:2020-09-17 來源:工程師 發(fā)布文章

歷屆kaggle競賽冠軍的做法,或簡單或復雜,其最后一步必然是集成學習,盡管現(xiàn)有的模型已經很強大了,但是集成學習往往能夠起到錦上添花的作用。一般而言,深度學習的集成有兩大層面:數(shù)據(jù)層面模型層面。下面詳細介紹這些方法。

01數(shù)據(jù)層面

(1)數(shù)據(jù)擴充法

數(shù)據(jù)擴充法在訓練和測試階段均適用,可以增強模型的魯棒性。

常見的數(shù)據(jù)擴充方法有:

·  圖像多尺度(multi-scale):將圖像resize到不同尺寸,分別輸入網(wǎng)絡,對結果進行平均或者加權。

·  隨機扣取(random crop):對測試圖片隨機扣取n張圖像,在測試階段用訓練好的深度網(wǎng)絡模型對n張扣取出來的圖分別做預測,之后將預測的各類置信度平均作為測試圖像最終的測試結果。

(2)簡單集成法

“簡單集成法”是Liu等人提出針對不平衡樣本問題的一種簡單集成學習解決方案,好處在于模型集成的同時還能緩解數(shù)據(jù)不平衡帶來的問題。

簡單集成法,簡單說三點:

1. 對于樣本較多的類采取降采樣(undersampling),每次采樣數(shù)依據(jù)樣本數(shù)量最少的類別而定,這樣每類取到的樣本數(shù)可保持均等;

2. 采樣結束后,針對每次采樣得到的子數(shù)據(jù)集訓練模型,如此采樣、訓練重復進行多次。

3. 最后依據(jù)訓練得到若干個模型的結果取平均/投****。

02模型層面

2.1 單模型集成

(1)同一模型不同初始化

同一模型不同初始化方法,非常適用于小樣本學習場景,會大幅度緩解模型的隨機性,提升最終任務的預測結果。

對于同一個模型來說,不同的參數(shù)初始化方式通過隨機梯度下降方法得到的訓練結果也會不同。具體的做法如下:

·  初始:首先對同一模型進行不同初始化;

·  集成:將得到的網(wǎng)絡模型結果進行集成;

(2)同一模型不同訓練輪數(shù)

同一模型不同訓練輪數(shù)方法,可以有效降低訓練輪數(shù)過多帶來的過擬合風險。

若網(wǎng)絡超參數(shù)設置得當,深度模型隨著網(wǎng)絡訓練的進行會逐步趨于收斂,但不同訓練輪數(shù)的結果仍有不同。無法確定到底哪一輪得到的模型最適用于測試數(shù)據(jù),我們將最后幾輪訓練結果做集成。

(3)不同損失函數(shù)

損失函數(shù)是整個網(wǎng)絡訓練的 “指揮棒”,選擇不同目標函數(shù)勢必讓網(wǎng)絡學到不同的特征表示。

具體的做法如下,以分類任務為例:可將包括交叉熵損失、合頁損失、大間隔交叉熵損失、中心損失等作為損失函數(shù)分別訓練模型。而在測試階段,有兩種做法:

·  置信度融合:直接對不同模型預測結果做平均/投****;

·  特征融合:將不同網(wǎng)絡得到的深度特征抽出后級聯(lián)(concatenate)作為最終特征,然后訓練淺層分類器(如支持向量機)完成預測工作;

(4)多層特征融合法

由于深度卷積神經網(wǎng)絡特征具有層次性的特點,不同層特征富含的語義信息可以相互補充,因而在目標檢測、圖像語義分割、細粒度圖像檢索這些領域常見多層特征融合策略的使用。

一般地,多層特征融合操作可直接將不同層的網(wǎng)絡特征進行級聯(lián)(concatenate),而對于特征融合應該選取哪些網(wǎng)絡層,選取的經驗是:最好使用靠近目標函數(shù)的幾層卷積特征,因為愈深層特征包含的高層語義愈強,分辨能力也愈強。相反,網(wǎng)絡較淺層的特征更為普適,用于特征融合反而起不到作用。

(5)網(wǎng)絡快照法

我們知道深度神經網(wǎng)絡模型復雜的解空間中存在非常多的局部最優(yōu)解,而傳統(tǒng)的Min-batch SGD往往只能收斂到其中一個局部最優(yōu)解,如下所示:

7.png

圖1 SGD:傳統(tǒng)SGD方法只能收斂到一個局部最優(yōu)解

相反的,網(wǎng)絡快照法通過循環(huán)調整學習率,使得網(wǎng)絡依次收斂到不同的局部最優(yōu)解,利用這些最優(yōu)解對模型進行集成,示意圖如下所示:

1600324090913019.png

圖2 快照法:通過循環(huán)調整學習率,使得網(wǎng)絡依次收斂到不同的局部最優(yōu)解

具體的做法如下,將網(wǎng)絡學習率設置為隨模型迭代輪數(shù)t改變的函數(shù):

5.png

其中:

·  為初始學習率,一般設置為 0.1 或 0.2;

·  t為模型迭代輪數(shù);

·  T為模型總的批處理訓練次數(shù);

·  M為“循環(huán)退火”次數(shù),對應于模型將收斂到的局部最優(yōu)解的個數(shù);

注:退火原先是材料加工的一個特有名詞,指將金屬加熱到某個再結晶溫度并維持一段時間,再將其緩慢冷卻的過程。這里退火指網(wǎng)絡模型學習率從初始學習率逐漸減緩到0的過程。

學習率從0.1*1 隨著t增長逐漸減緩到0,之后將學習率重新放大,從而跳出該局部最優(yōu)解,如此往復,分別得到不同權重參數(shù)的同一模型。測試階段,一般我們挑選最后個模型“快照”用于集成,這些模型“快照”可以采用“直接平均法”。

2.2 多模型集成

我們可以使用不同架構的網(wǎng)絡訓練模型,根據(jù)這些模型結果做集成。假設共有N個模型待集成,對于某測試樣本x,其預測結果為N個維向量:S1,S2,...,Sn(C為數(shù)據(jù)的標記空間大?。N覀兘榻B常見的四種方法:

(1)直接平均法

直接平均不同模型產生的類別置信度得到最終預測結果。

公式:

微信圖片_20200917142829.png

(2)加權平均法

在直接平均法的基礎上加入權重來調節(jié)不同模型輸出間的重要程度。

公式:

4.png

其中,Wi 對應第 i 個模型的權重,且必須滿足:

3.png

實際使用中,權重 w_i 的取值可以根據(jù)不同模型在驗證集上各自單獨的準確率而定。簡單說:準確率高點的權重高點,準確率低點權重就小點。

(3)投****法

投****法,少數(shù)服從多數(shù),投****數(shù)最多的類別作為最終預測結果。

投****法前,我們先將模型各自預測的置信度基于閾值轉換為相應的類別,那么對于某次預測,就有以下兩種情況:

·  某個類別獲得一半以上模型投****,則將樣本標記為該類別;

·  沒有任何類別獲得一半以上投****,則拒絕預測;

但是這樣有個問題,就是模型拒絕預測時候怎么辦?一般我們采用相對多數(shù)投****法,很簡單,少數(shù)服從多數(shù),即投****數(shù)最多的類別即作為最終預測結果。

(4)堆疊法

堆疊法,一階段,原始模型進行訓練和預測,預測結果作為二階段的輸入,非常容易過擬合。

堆疊法分兩步:

1. 原始模型訓練、預測:樣本x作為模型的輸入,Si為第i個模型的類別置信度輸出;

2. 預測結果作為二階段輸入:講這些輸出置信度進行級聯(lián),作為新的特征,基于這些特征訓練一個新的分類器進行訓練;

注意此時的學習器可以為任何學習算法模型,如支持向量機、隨機森林等。不過在此需要指出的是,堆疊法真的非常非常容易過擬合!

03總結

集成的匯總如下:

1600324277231093.png

留大家一個作業(yè),回顧我們的課程,然后用思維導圖或者表格整理出這些方法的優(yōu)缺點。下面,我有一個之前自己學習筆記整理的(不完全):

1600324296630743.png

還有,請大家思考,我們實戰(zhàn)中怎么用模型集成來提升最終預測準確率?下期我們用實戰(zhàn)來講模型集成到底怎么用?


參考

更詳細的請大家參閱魏秀參博士的《魏秀參——解析深度學習:卷積神經網(wǎng)絡原理與視覺實踐 - 第13章 - 模型集成方法》。


*博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

分頻器相關文章:分頻器原理


關鍵詞:

相關推薦

技術專區(qū)

關閉