深度學習:如何找到優化模型的方向

問題

當訓練的模型的預測準確率(accuracy)不高,如何尋找模型的下一步調優方向?
通過對比訓練集與開發(測試)集的準確率,可以確定模型的偏差(Bias)與方差(Variance)問題,給下一步模型的優化提供方向指導。

訓練/開發/測試集

模型訓練前通常將數據集劃分爲 訓練集(Training set)開發集(Dev set)測試集(Test set)。訓練集、開發集與測試集在數據集中的比例通常爲6:2:2,而測試集與開發集的最大數量可以不用超過10000條:比如整個數據集有1000條,那麼訓練集、開發集與測試集可以分別爲600條:200條:200條;如果整個數據集有10 000 000條數據,那麼訓練集、開發集與測試集可以分別爲:9 980 000條:10 000條:10 000條。
模型使用訓練集中的數據進行參數的訓練,訓練完成後,對開發集與測試集中的數據做驗證。通過模型對訓練集與開發集預測的準確率做統計對比,可以分析當前模型存在的欠擬合(Underfitting)/過擬合(Overfitting)問題,即高偏差(Bias)或者高方差(Variance)

偏差(Bias)與方差(Variance)

假設通過房屋的面積預測價格,對於訓練集,下圖是比較合適的擬合曲線:因爲隨着面積的增加,房價會增加,但是增速會變緩。
在這裏插入圖片描述

偏差(Bias)

下圖的預測與實際的情況存在較高的偏差(Bias),或者說下圖的預測欠擬合(Underfitting),因爲模型的預測與真實的房價存在較大的差距。模型的高偏差或者欠擬合表達的是相同的概念。
在這裏插入圖片描述

方差(Variance)

下圖的預測與實際情況存在較高的方差(Variance),或者說下圖的預測是過擬合(Overfitting),原因是雖然下圖的曲線很好的模擬和訓練集中的數據,但反應到真實的房價上看,面積越大反而價格越便宜,這不太符合實際情況(要是真的就好了:()。
在這裏插入圖片描述

問題定位

實際的模型比較複雜,無法通過上圖中簡單的圖標定位模型的問題。因此,通過對比訓練集與開發集的準確率(accuracy),也可以分析模型存在的問題是高偏差或者是高方差:

  1. 模型對於訓練集和開發集的預測準確率都很高,恭喜模型很完美(下圖右上角)。
  2. 模型對於訓練集和開發集的準確率很低,屬於高偏差問題:即模型無法正常擬合訓練集中的數據,或者說模型對於訓練集中的數據是**欠擬合(Underfitting)**的(左下角)。
  3. 模型對於訓練集中的數據預測的準確率很高,但是對於開發集中的數據預測準確率較低:表明模型可以很好的預測它“看過”的數據,但對於它“沒看過”的數據預測的準確率不高。即模型對於其訓練集存在**過擬合(Overfitting)**問題(左上角)。
  4. 我想應該不會存在模型對訓練集預測不高,對開發集預測很好的實際例子吧(右下角)? 如果存在,我想會不會是我的開發集出了問題?
    在這裏插入圖片描述

高偏差(Bias)的優化

對於高偏差(Bias)或者欠擬合(Underfitting)問題,可以考慮如下優化方向:

  1. 更大/更深的網絡結構,比如增加各層的神經單元,以及增大各神經單元的訓練參數等。
  2. 訓練更長的時間,嘗試找到更優解。
  3. 更換網絡架構,比如Yolo不行的話,試試看Mask RNN。

高方差(Variance)的優化

對於高方差(Variance)問題或者過擬合(Overfitting)問題,可以考慮如下優化方向:

  1. 獲得更多的訓練數據。
  2. 使用正則化(Reguliaztion)防止過擬合問題,如常用的L2 Regulization與Dropout等。
  3. 更換網絡架構。
  4. 使用數據增強(Data Argumentation)。
  5. 早停法(early stop)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章