訓練集雜訊對於深度學習的影響

綜述:

總所周知,在深度學習的訓練中,樣本的質量和數量都是非常重要的一環。然後在實際的生產過程中,樣本的數量往往可以通過一些手段得到滿足,但是質量卻非常依賴人工的標註,因此往往在訓練中會包含一定數量的標註不正確的數據。一般認為這樣的一些數據,會對於最終的結果造成負面影響,但是具體怎樣影響訓練和最終的模型推廣效果我們來做一個小實驗。

實驗設置

使用工具 :MXNET

數據集:MNIST

訓練集大小:60000

測試集大小:10000

分類類別數目:10 類

實驗流程:

訓練時,將訓練集中的一定比例的樣本重新賦一個標籤值,標籤為[0,9]中的一個隨機數,來模擬訓練集中的臟數據,

訓練超參數:

MXNET默認:初始化學習率:0.05, 在第10個ephos時候降為0.005,20個epochs 停止迭代。優化方法SGD,使用的模型為經典的LeNet。

實驗結果:

訓練集上的準確率:

驗證集上的準確率:

實驗結果分析:

較大學習率下訓練時,可以明顯發現隨著臟數據的增加,訓練集中的準確率降低與臟數據的比例成正相關,且臟數據的比例越大訓練集中的準確率波動也就越大,這些都是符合一般的預期的,即隨著不靠譜的樣本的增加,訓練的難度加大,本身的準確率也沒辦法繼續提高,且波動也會教導。

但是我們很驚奇的發現,在驗證集上較大學習率的情況下,甚至在臟數據佔比達到駭人聽聞的20%的情況下,在一開始的幾個epoch上,準確率都沒有斷崖式的下降,但是隨著迭代的輪數的增加,當比例大於2% 都會出現斷崖式的下降。從這個現象我們可以發現,神經網路的學習能力以及推廣能力還是非常強悍的,在開始的時候學習到的都是雜亂數據中的有效特徵,但是隨著迭代輪數的增加,樣本裡面一些不正確的信息還是會添加到模型中來, 導致推廣能力的下降,即過擬合了。

當學習率降低十分之一後,在訓練集中,大比例臟數據的模型在訓練集上的準確率都得到了明顯的提高,證明當學習率下降後,模型的學習能力得到了提高,會強行學習一些並不一定正確的樣本中的信息,並得到新的區分樣本類別的方法,而且從圖上可以發現,隨著迭代輪數的增加,準確率會不斷的提高,說明學習率較小的情況下,臟數據也是會被模型不斷的學習到的。

當學習率較小時,驗證集上面的結果要比大學習率的情況下變得穩定許多,甚至在臟數據比例高達10%的情況下依舊保持了96%的準確率,並且隨著迭代輪數的增加,基本保持穩定。在此再次感慨下深度學習網路的推廣能力。但是當臟數據的比例達到20% 以上的時候,我們發現隨著學習到的臟數據的不斷增加,模型在驗證集上的能力也會隨之下降,這和我們的直觀感覺也是符合的。

總結和結論:

本文討論了在訓練數據集中混有臟數據的情況下,所得模型在訓練和測試樣本集上的表現情況,發現

  1. 大學習率下,模型會首先學習有效樣本中的特徵信息,然後再學習到臟數據中的信息,並隨著臟數據的增加和迭代次數的增加在驗證集上,識別率出現斷崖式的下降
  2. 調小學習率的情況下,模型的學習會變得穩定許多且受到臟數據的影響明顯減少,也不容易出現斷崖式的下降,但是隨著臟數據的比例不斷的擴大,模型學習到的臟數據的信息也會對於模型的推廣能力造成不可忽視的影響。
  3. 因此在帶有臟數據的數據集上學習,建議使用較小的學習率,同時保證驗證集的準確性,當發現訓練集識別率不斷提高,但是在驗證集上反而下降時,此時就可以懷疑時學習到了臟數據的信息,及時停止訓練應該也可以得到不錯的效果
  4. 最後再次感慨下深度學習變態的推廣能力

推薦閱讀:

TAG:深度學習DeepLearning | 實驗 |