模型調優經曆(1)
-
-
-
- 背景
- 遇到問題
- 思路
- 解決辦法
-
-
-
背景
-
樣本規模及劃分
∙ \bullet ∙ 二分類問題,正負樣本 1:1,特征數:20
∙ \bullet ∙ 訓練集:3475;測試集:896;驗證集:1087
-
使用模型
∙ \bullet ∙ 深度學習模型
∙ \bullet ∙ 損失函數使用對數損失函數:binary_crossentropy
∙ \bullet ∙ 優化方法:Adam,lr = 0.0035
-
-
遇到問題
訓練中的損失函數正常下降,測試集中的損失函數正常下降;
訓練中的預測準确率達到 99%
但關鍵問題是:在測試集的損失函數正常下降的情況下,測試集精度非常不穩定!就我以前的認知來講,過拟合,是在訓練集上準确好而測試集上不好,即二者有較大差距,但之前沒有見過測試集上震蕩如此大的情況,一時有些不解。
如圖:
在測試集上的準确度震蕩非常厲害! -
思路
對于損失函數,雖然在下降,但卻是在10左右(後來幾次是 3 左右),距離最優損失值 0 仍有差距。是以我認為,此時情況相當于預測值在 類别 0,與類别 1 周圍的分布較為離散,而距離常用的門檻值 0.5 來說比較接近,當預測值稍微改變,可能就跨過門檻值0.5,成為另一個類别。相當于預測值都在黑色框裡,雖然可以被分類正确,但很容易受影響。對于測試精度不穩定忽高忽低,可以說明泛化能力不穩定,有可能學到噪聲或信号中的幹擾,易受噪聲影響。
另外,不穩定還有可能是學習速率過大引起的,在最優點附近跳躍。
綜上,說明此時的模型預測結果方差大,易受波動,表明是過拟合的,而且學習速率過大。
-
解決辦法
因為使用的資料量不是很大,特征數并不多,是以不需要使用 dropout 或更嚴格的正則化,隻需降低複雜的網絡結構,減少層數,降低神經元結點即可。
在降低模型複雜度後損失函數值與測試準确度完全負相關,在驗證集上正确率為98.6%,損失值為:0.097, 且最終 AUC 達到 0.995.
再降低學習速率,得到較為平滑的學習曲線: 問題解決。