博客專欄

EEPW首頁 > 博客 > 常見深度學(xué)習(xí)模型集成方法

常見深度學(xué)習(xí)模型集成方法

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

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

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

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

數(shù)據(jù)擴(kuò)充法在訓(xùn)練和測(cè)試階段均適用,可以增強(qiáng)模型的魯棒性。

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

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

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

(2)簡(jiǎn)單集成法

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

簡(jiǎn)單集成法,簡(jiǎn)單說三點(diǎn):

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

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

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

02模型層面

2.1 單模型集成

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

同一模型不同初始化方法,非常適用于小樣本學(xué)習(xí)場(chǎng)景,會(huì)大幅度緩解模型的隨機(jī)性,提升最終任務(wù)的預(yù)測(cè)結(jié)果。

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

·  初始:首先對(duì)同一模型進(jìn)行不同初始化;

·  集成:將得到的網(wǎng)絡(luò)模型結(jié)果進(jìn)行集成;

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

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

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

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

損失函數(shù)是整個(gè)網(wǎng)絡(luò)訓(xùn)練的 “指揮棒”,選擇不同目標(biāo)函數(shù)勢(shì)必讓網(wǎng)絡(luò)學(xué)到不同的特征表示。

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

·  置信度融合:直接對(duì)不同模型預(yù)測(cè)結(jié)果做平均/投****;

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

(4)多層特征融合法

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

一般地,多層特征融合操作可直接將不同層的網(wǎng)絡(luò)特征進(jìn)行級(jí)聯(lián)(concatenate),而對(duì)于特征融合應(yīng)該選取哪些網(wǎng)絡(luò)層,選取的經(jīng)驗(yàn)是:最好使用靠近目標(biāo)函數(shù)的幾層卷積特征,因?yàn)橛顚犹卣靼母邔诱Z義愈強(qiáng),分辨能力也愈強(qiáng)。相反,網(wǎng)絡(luò)較淺層的特征更為普適,用于特征融合反而起不到作用。

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

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

7.png

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

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

1600324090913019.png

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

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

5.png

其中:

·  為初始學(xué)習(xí)率,一般設(shè)置為 0.1 或 0.2;

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

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

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

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

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

2.2 多模型集成

我們可以使用不同架構(gòu)的網(wǎng)絡(luò)訓(xùn)練模型,根據(jù)這些模型結(jié)果做集成。假設(shè)共有N個(gè)模型待集成,對(duì)于某測(cè)試樣本x,其預(yù)測(cè)結(jié)果為N個(gè)維向量:S1,S2,...,Sn(C為數(shù)據(jù)的標(biāo)記空間大?。?。我們介紹常見的四種方法:

(1)直接平均法

直接平均不同模型產(chǎn)生的類別置信度得到最終預(yù)測(cè)結(jié)果。

公式:

微信圖片_20200917142829.png

(2)加權(quán)平均法

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

公式:

4.png

其中,Wi 對(duì)應(yīng)第 i 個(gè)模型的權(quán)重,且必須滿足:

3.png

實(shí)際使用中,權(quán)重 w_i 的取值可以根據(jù)不同模型在驗(yàn)證集上各自單獨(dú)的準(zhǔn)確率而定。簡(jiǎn)單說:準(zhǔn)確率高點(diǎn)的權(quán)重高點(diǎn),準(zhǔn)確率低點(diǎn)權(quán)重就小點(diǎn)。

(3)投****法

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

投****法前,我們先將模型各自預(yù)測(cè)的置信度基于閾值轉(zhuǎn)換為相應(yīng)的類別,那么對(duì)于某次預(yù)測(cè),就有以下兩種情況:

·  某個(gè)類別獲得一半以上模型投****,則將樣本標(biāo)記為該類別;

·  沒有任何類別獲得一半以上投****,則拒絕預(yù)測(cè);

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

(4)堆疊法

堆疊法,一階段,原始模型進(jìn)行訓(xùn)練和預(yù)測(cè),預(yù)測(cè)結(jié)果作為二階段的輸入,非常容易過擬合。

堆疊法分兩步:

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

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

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

03總結(jié)

集成的匯總?cè)缦拢?/p>

1600324277231093.png

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

1600324296630743.png

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


參考

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


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

分頻器相關(guān)文章:分頻器原理


關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉