本文主要參考Ensemble Methods for Deep Learning Neural Networks一文。
1. 前言
- 神經網絡具有很高的方差,不易復現出結果,而且模型的結果對初始化參數異常敏感。
- 使用集成模型可以有效降低神經網絡的高方差(variance)。
2. 使用集成模型降低方差
- 訓練多個模型,並將預測結果結合到一起,能夠降低方差。
- 多模型集成能起到作用的前提是,每個模型有自己的特點,每個模型預測出的誤差是不同的。
- 簡單的集成方式就是將預測結果取平均,該方法起作用的原因是,不同的模型通常不會在測試集上產生相同的錯誤。
- 結合多個模型使得最終的預測結果添加了一個偏差(bias),而這個偏差又會與神經網絡的方差(variance)相抵消,使得模型的預測對訓練數據的細節、訓練方案的選擇和單次訓練運行的偶然性不太敏感。
- 集成模型的結果會比任意單模型的結果都要好。
3. 如何集成神經網絡模型
- The oldest and still most commonly used ensembling approach for neural networks is called a “committee of networks.”
- 通常選擇多模型的方式:多個相同配置的神經網絡 + 相同的訓練數據集 + 不同的參數隨機初始化
- 集成的模型數量通常比較小,原因如下:
- 考慮計算復雜度。
- 當模型數目達到一定程度,隨着數目的增加,集成模型得到的性能回報變小。
- 集成模型一般考慮如下三種構造方式:
- Trainning Data: 不同單模型使用不同的訓練數據
- Ensemble Models: 選擇不同的單模型
- Combinations: 選擇不同的組合方式
3.1 Varying Training Data
- 一個比較簡單的方法是k折交叉驗證,能夠得到全體訓練集的k個子訓練集,用每個子集單獨去訓練模型。最后將這k個模型做集成。
- 注意,每個子訓練集的大小是\((k-1)/k\)倍的全體訓練集,而不是\(1/k\)倍的全體訓練集。
- 另一種方法是用重采樣(resampling)的方式構建新訓練集。
- 重采樣過程意味着每個訓練數據集的組成是不同的,可能存在重復的例子,從而允許在數據集上訓練的模型對樣本的密度具有稍微不同的期望,並具有不同的泛化誤差(generalization error)。
- 這種方法也叫做bootstrap aggregation,簡稱為bagging,被設計用於未剪枝且具有高方差低偏置(high variance and low bias)的決策樹。
- 與上一個方法等價的采樣方式為欠采樣,即采樣后的訓練集不出現重復,且比全體數據集要少。
- 注意,欠采樣得到的新數據未經過正規化(regularization),這樣可以使得模型訓練的更快(過擬合的更快)。
- Other approaches may involve selecting a random subspace of the input space to allocate to each model, such as a subset of the hyper-volume in the input space or a subset of input features.
3.2 Varying Models
- 對相同配置的模型,使用不同的參數隨機初始化訓練。
- 這種方式在一定程度上可以降低方差,但是可能不會顯著地改善泛化誤差。
- 由於模型都學習了類似的映射函數,因此模型產生的錯誤可能仍然相關性太高。
- 這方式實際上只是受學習算法的影響,即不同隨機參數可能抵達不同的局部最優點,甚至某些參數初始化可以使得模型恰巧抵達全局最優點。
- 另一個方法是變化模型的配置參數,如不同維度的隱狀態向量,不同的神經網絡層數,不同的學習率,不同的學習策略,不同的正則化方式等的。
- 這些模型能夠學習更加異構的映射函數集合,並且在預測和預測誤差方面具有較低的相關性,能夠互相彌補不足。
- Differences in random initialization, random selection of minibatches, differences in hyperparameters, or different outcomes of non-deterministic implementations of neural networks are often enough to cause different members of the ensemble to make partially independent errors.
- 在單個模型可能需要較長訓練時間的時候,另一個備選方案在訓練過程中定期保存最佳模型(called snapshot or checkpoint models),即不同的checkpoints點,然后對保存的模型進行集成。
- 能夠達到同一數據上訓練多個模型的效果,盡管是在單個訓練時間生成的。
- 因為訓練時間長,所以不適用於前面兩種反復訓練模型的方式。
- 這種集成方式還有一個變體,是選定幾個epoch區間,將這些區間的所有模型做集成。(Ensembles from such contiguous sequences of models are referred to as horizontal ensembles.)
- 因為是在選取同一訓練期間的不同檢查點模型,所以也可以在模型的訓練過程中,根據結果的反饋,不斷改變優化方式,如學習率decay等策略,使得后續檢查點能夠得到更加有效的模型。
3.3 Varying Combinations
- 最簡單的組合方式是選擇所有的模型,將預測結果區平均。
- 稍微改進的方法是加權取平均,權重由驗證集提供。這種方法有時也稱為model blending。
- 設計一個新的模型,能夠自動化學習到“加權取平均”過程中,每個單模型所占的權重大小。
- 這種學習新模型的方式,一般被稱為model stacking, 或 stacked generalization。
- model stacking是在第二層特征空間中進行學習的。
- 采用更加復雜的stacking方式,例如boosting(一次添加一個模型以糾正先前模型的錯誤)。
- 另一個結合方式是,先將具有相同結構的多個模型的權重取平均,以得到該模型結構的“最好成績模型”。之后再對不同模型結構的“最好成績模型”進行集成。
4. 總結
- 以上內容,是我閱讀這篇文章得到的總結,感興趣的讀者可以繼續閱讀原文,原文覆蓋了更多的知識點,並提供了許多參考依據,具有權威性。
- 原文章將深度學習的集成方式總結為如下幾點(本人總結了其中大部分方法):
- Varying Training Data
- k-fold Cross-Validation Ensemble
- Bootstrap Aggregation (bagging) Ensemble
- Random Training Subset Ensemble
- Varying Models
- Multiple Training Run Ensemble
- Hyperparameter Tuning Ensemble
- Snapshot Ensemble
- Horizontal Epochs Ensemble
- Vertical Representational Ensemble
- Varying Combinations
- Model Averaging Ensemble
- Weighted Average Ensemble
- Stacked Generalization (stacking) Ensemble
- Boosting Ensemble
- Model Weight Averaging Ensemble
- Varying Training Data
