第九章 多模型融合
簡介:通過一些科學的方法對優秀的模型進行融合,以突破單個模型對未知問題的泛化能力的瓶頸,并且綜合各個模型的優點得到同一個問題的最優解決方法,這就是多模型融合。多模型融合的宗旨就是通過科學的方法融合各個模型的優勢,以獲得對未知問題的更強的解決能力。
1.多模型融合入門
使用多模型融合方法融合神經網絡模型的過程中會遇到的問題:
首先,在使用融合神經網絡模型的過程中遇到的第1個問題就是訓練復雜神經網絡非常耗時,因為優秀的模型一般都是深度神經網絡模型,這些網絡模型的特點是層次較深、參數較多,所以對融合了多個深度神經網絡的模型進行參數訓練,會比我們使用單一的深度神經網絡模型進行參數訓練所耗費的時間要多上好幾倍。
兩種解決辦法:挑選一些結構比較簡單、網絡層次較少的神經網絡參與到多模型融合中;如果還想繼續使用深度神經網絡模型進行多模型融合,就需要使用遷移學習方法來輔助模型的融合,以減少訓練耗時。
其次,在對各個模型進行融合時,在融合方法的類型選擇上也很讓人頭疼,因為在選擇不同的模型融合方法解決某些問題時其結果的表現不同,而且可以選擇是針對模型的過程進行融合,還是針對各個模型輸出的結果進行融合,這都是值得我們思考的。
本章在實踐模型融合的實例中選取了相對簡單的結果融合法。 結果融合法是針對各個模型的輸出結果進行的融合,主要包括多數表決、結果直接平均和結果加權平均這三種主要的類型。在結果融合法中有一個比較通用的理論,就是若我們想通過多模型融合來提高輸出結果的預測準確率,則各個模型的相關度越低,融合的效果會更好,也就是說各個模型的輸出結果的差異性越高,多模型融合的效果就會越好。
(1)結果多數表決
結果多數表決有點類似于我們現實生活中的多人投票表決,但是需要注意:在使用這個方法的過程中最好保證我們融合的模型個數為奇數,如果為偶數,則極有可能會出現結果無法判斷的情況。
需要注意:進行多模型融合并不一定能取得理想的效果,需要使用不同的方法不斷地嘗試。
(2)結果直接平均
結果直接平均追求的是融合各個模型的平均預測水平,以提升模型整體的預測能力,但是與結果多數表決相比,結果直接平均不強調個別模型的突出優勢,卻可以彌補個別模型的明顯劣勢,比如在參與融合的模型中有一個模型已經發生了過擬合的問題,另一個模型卻發生了欠擬合的問題,但是通過結果直接平均的方法能夠很好地綜合這兩個模型的劣勢,最后可預防融合模型過擬合和欠擬合的發生。
雖然結果直接平均的方法追求的是“平均水平”,但是使用結果直接平均的多模型融合在處理很多問題時取得了優于平均水平的成績。
結果直接平均的最大不足:融合的模型在單個數據的預測能力上并沒有完勝其他三個模型。
(3)結果加權平均
我們可以將結果加權平均看作結果直接平均的改進版本,在結果加權平均的方法中會新增一個權重參數,這個權重參數用于控制各個模型對融合模型結果的影響程度。簡單來說,我們之前使用結果直接平均融合的模型,其實可以被看作由三個使用了一樣的權重參數的模型按照結果加權平均融合而成的。所以結果加權平均的關鍵是對權重參數的控制,通過對不同模型的權重參數的控制,可以得到不同的模型融合方法,最后影響融合模型的預測結果。
**調節各個模型的權重參數對最后的融合模型的結果影響較大。**所以在使用權重平均的過程中,我們需要不斷嘗試使用不同的權重值組合,以達到多模型融合的最優解決方案。
2.PyTorch之多模型融合實戰
這里使用的是多模型融合方法中的結果加權平均,其基本思路是首先構建兩個卷積神經網絡模型,然后使用我們的訓練數據集分別對這兩個模型進行訓練和對參數進行優化,使用優化后的模型對驗證集進行預測,并將各模型的預測結果進行加權平均以作為最后的輸出結果,通過對輸出結果和真實結果的對比,來完成對融合模型準確率的計算。
使用VGG16架構和ResNet50架構的卷積神經網絡模型參與本次模型的融合,然后按照結果加權平均的方法分別對這兩個模型提前擬定好會使用到的權重值。
首先通過代碼models.vgg16和models.resnet50得到我們想要遷移的兩個卷積神經網絡模型,并分別將其賦值到model_1和model_2上。因為使用的是之前的貓狗數據,所以最后的輸出結果仍然是兩個,對模型也需要進行相應的調整,同時我們搭建的模型使用GPUs來計算參數。
接下來進行模型訓練。通過觀察輸出結果的準確率會發現,通過結果加權平均得到的融合模型在預測結果的準確率上優于VGG16和ResNet50,所以我們進行多模型融合的方法是成功的。
總結
- 上一篇: logistic 函数(logistic
- 下一篇: 计算机ppt要求,计算机信息化培训总要求