常見(jiàn)深度學(xué)習模型集成方法
歷屆kaggle競賽冠軍的做法,或簡(jiǎn)單或復雜,其最后一步必然是集成學(xué)習,盡管現有的模型已經(jīng)很強大了,但是集成學(xué)習往往能夠起到錦上添花的作用。一般而言,深度學(xué)習的集成有兩大層面:數據層面和模型層面。下面詳細介紹這些方法。
01數據層面
(1)數據擴充法
數據擴充法在訓練和測試階段均適用,可以增強模型的魯棒性。
常見(jiàn)的數據擴充方法有:
· 圖像多尺度(multi-scale):將圖像resize到不同尺寸,分別輸入網(wǎng)絡(luò ),對結果進(jìn)行平均或者加權。
· 隨機扣取(random crop):對測試圖片隨機扣取n張圖像,在測試階段用訓練好的深度網(wǎng)絡(luò )模型對n張扣取出來(lái)的圖分別做預測,之后將預測的各類(lèi)置信度平均作為測試圖像最終的測試結果。
(2)簡(jiǎn)單集成法
“簡(jiǎn)單集成法”是Liu等人提出針對不平衡樣本問(wèn)題的一種簡(jiǎn)單集成學(xué)習解決方案,好處在于模型集成的同時(shí)還能緩解數據不平衡帶來(lái)的問(wèn)題。
簡(jiǎn)單集成法,簡(jiǎn)單說(shuō)三點(diǎn):
1. 對于樣本較多的類(lèi)采取降采樣(undersampling),每次采樣數依據樣本數量最少的類(lèi)別而定,這樣每類(lèi)取到的樣本數可保持均等;
2. 采樣結束后,針對每次采樣得到的子數據集訓練模型,如此采樣、訓練重復進(jìn)行多次。
3. 最后依據訓練得到若干個(gè)模型的結果取平均/投****。
02模型層面
2.1 單模型集成
(1)同一模型不同初始化
同一模型不同初始化方法,非常適用于小樣本學(xué)習場(chǎng)景,會(huì )大幅度緩解模型的隨機性,提升最終任務(wù)的預測結果。
對于同一個(gè)模型來(lái)說(shuō),不同的參數初始化方式通過(guò)隨機梯度下降方法得到的訓練結果也會(huì )不同。具體的做法如下:
· 初始:首先對同一模型進(jìn)行不同初始化;
· 集成:將得到的網(wǎng)絡(luò )模型結果進(jìn)行集成;
(2)同一模型不同訓練輪數
同一模型不同訓練輪數方法,可以有效降低訓練輪數過(guò)多帶來(lái)的過(guò)擬合風(fēng)險。
若網(wǎng)絡(luò )超參數設置得當,深度模型隨著(zhù)網(wǎng)絡(luò )訓練的進(jìn)行會(huì )逐步趨于收斂,但不同訓練輪數的結果仍有不同。無(wú)法確定到底哪一輪得到的模型最適用于測試數據,我們將最后幾輪訓練結果做集成。
(3)不同損失函數
損失函數是整個(gè)網(wǎng)絡(luò )訓練的 “指揮棒”,選擇不同目標函數勢必讓網(wǎng)絡(luò )學(xué)到不同的特征表示。
具體的做法如下,以分類(lèi)任務(wù)為例:可將包括交叉熵損失、合頁(yè)損失、大間隔交叉熵損失、中心損失等作為損失函數分別訓練模型。而在測試階段,有兩種做法:
· 置信度融合:直接對不同模型預測結果做平均/投****;
· 特征融合:將不同網(wǎng)絡(luò )得到的深度特征抽出后級聯(lián)(concatenate)作為最終特征,然后訓練淺層分類(lèi)器(如支持向量機)完成預測工作;
(4)多層特征融合法
由于深度卷積神經(jīng)網(wǎng)絡(luò )特征具有層次性的特點(diǎn),不同層特征富含的語(yǔ)義信息可以相互補充,因而在目標檢測、圖像語(yǔ)義分割、細粒度圖像檢索這些領(lǐng)域常見(jiàn)多層特征融合策略的使用。
一般地,多層特征融合操作可直接將不同層的網(wǎng)絡(luò )特征進(jìn)行級聯(lián)(concatenate),而對于特征融合應該選取哪些網(wǎng)絡(luò )層,選取的經(jīng)驗是:最好使用靠近目標函數的幾層卷積特征,因為愈深層特征包含的高層語(yǔ)義愈強,分辨能力也愈強。相反,網(wǎng)絡(luò )較淺層的特征更為普適,用于特征融合反而起不到作用。
(5)網(wǎng)絡(luò )快照法
我們知道深度神經(jīng)網(wǎng)絡(luò )模型復雜的解空間中存在非常多的局部最優(yōu)解,而傳統的Min-batch SGD往往只能收斂到其中一個(gè)局部最優(yōu)解,如下所示:
圖1 SGD:傳統SGD方法只能收斂到一個(gè)局部最優(yōu)解
相反的,網(wǎng)絡(luò )快照法通過(guò)循環(huán)調整學(xué)習率,使得網(wǎng)絡(luò )依次收斂到不同的局部最優(yōu)解,利用這些最優(yōu)解對模型進(jìn)行集成,示意圖如下所示:
圖2 快照法:通過(guò)循環(huán)調整學(xué)習率,使得網(wǎng)絡(luò )依次收斂到不同的局部最優(yōu)解
具體的做法如下,將網(wǎng)絡(luò )學(xué)習率設置為隨模型迭代輪數t改變的函數:
其中:
· 為初始學(xué)習率,一般設置為 0.1 或 0.2;
· t為模型迭代輪數;
· T為模型總的批處理訓練次數;
· M為“循環(huán)退火”次數,對應于模型將收斂到的局部最優(yōu)解的個(gè)數;
注:退火原先是材料加工的一個(gè)特有名詞,指將金屬加熱到某個(gè)再結晶溫度并維持一段時(shí)間,再將其緩慢冷卻的過(guò)程。這里退火指網(wǎng)絡(luò )模型學(xué)習率從初始學(xué)習率逐漸減緩到0的過(guò)程。
學(xué)習率從0.1*1 隨著(zhù)t增長(cháng)逐漸減緩到0,之后將學(xué)習率重新放大,從而跳出該局部最優(yōu)解,如此往復,分別得到不同權重參數的同一模型。測試階段,一般我們挑選最后個(gè)模型“快照”用于集成,這些模型“快照”可以采用“直接平均法”。
2.2 多模型集成
我們可以使用不同架構的網(wǎng)絡(luò )訓練模型,根據這些模型結果做集成。假設共有N個(gè)模型待集成,對于某測試樣本x,其預測結果為N個(gè)維向量:S1,S2,...,Sn(C為數據的標記空間大?。?。我們介紹常見(jiàn)的四種方法:
(1)直接平均法
直接平均不同模型產(chǎn)生的類(lèi)別置信度得到最終預測結果。
公式:
(2)加權平均法
在直接平均法的基礎上加入權重來(lái)調節不同模型輸出間的重要程度。
公式:
其中,Wi 對應第 i 個(gè)模型的權重,且必須滿(mǎn)足:
實(shí)際使用中,權重 w_i 的取值可以根據不同模型在驗證集上各自單獨的準確率而定。簡(jiǎn)單說(shuō):準確率高點(diǎn)的權重高點(diǎn),準確率低點(diǎn)權重就小點(diǎn)。
(3)投****法
投****法,少數服從多數,投****數最多的類(lèi)別作為最終預測結果。
投****法前,我們先將模型各自預測的置信度基于閾值轉換為相應的類(lèi)別,那么對于某次預測,就有以下兩種情況:
· 某個(gè)類(lèi)別獲得一半以上模型投****,則將樣本標記為該類(lèi)別;
· 沒(méi)有任何類(lèi)別獲得一半以上投****,則拒絕預測;
但是這樣有個(gè)問(wèn)題,就是模型拒絕預測時(shí)候怎么辦?一般我們采用相對多數投****法,很簡(jiǎn)單,少數服從多數,即投****數最多的類(lèi)別即作為最終預測結果。
(4)堆疊法
堆疊法,一階段,原始模型進(jìn)行訓練和預測,預測結果作為二階段的輸入,非常容易過(guò)擬合。
堆疊法分兩步:
1. 原始模型訓練、預測:樣本x作為模型的輸入,Si為第i個(gè)模型的類(lèi)別置信度輸出;
2. 預測結果作為二階段輸入:講這些輸出置信度進(jìn)行級聯(lián),作為新的特征,基于這些特征訓練一個(gè)新的分類(lèi)器進(jìn)行訓練;
注意此時(shí)的學(xué)習器可以為任何學(xué)習算法模型,如支持向量機、隨機森林等。不過(guò)在此需要指出的是,堆疊法真的非常非常容易過(guò)擬合!
03總結
集成的匯總如下:
留大家一個(gè)作業(yè),回顧我們的課程,然后用思維導圖或者表格整理出這些方法的優(yōu)缺點(diǎn)。下面,我有一個(gè)之前自己學(xué)習筆記整理的(不完全):
還有,請大家思考,我們實(shí)戰中怎么用模型集成來(lái)提升最終預測準確率?下期我們用實(shí)戰來(lái)講模型集成到底怎么用?
參考
更詳細的請大家參閱魏秀參博士的《魏秀參——解析深度學(xué)習:卷積神經(jīng)網(wǎng)絡(luò )原理與視覺(jué)實(shí)踐 - 第13章 - 模型集成方法》。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。
分頻器相關(guān)文章:分頻器原理