1. 程式人生 > >深度學習 - 模型調優經歷(1)

深度學習 - 模型調優經歷(1)

模型調優經歷(1)

  • 背景

    1. 樣本規模及劃分

      \bullet 二分類問題,正負樣本 1:1,特徵數:20

      \bullet 訓練集:3475;測試集:896;驗證集:1087

    2. 使用模型

      \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.

    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    問題解決。