本文主要參考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