爲什麼神經網絡模型在測試集上的準確率高於訓練集上的準確率?

類似下圖:

或者下圖:

來自:吳恩達機器學習Regularization部分。

如上圖所示,有時候我們做訓練的時候,會得到測試集的準確率或者驗證集的準確率高於訓練集的準確率,這是什麼原因造成的呢?經過查閱資料,有以下幾點原因,僅作參考,不對的地方,請大家指正。

(1)數據集太小的話,如果數據集切分的不均勻,或者說訓練集和測試集的分佈不均勻,如果模型能夠正確捕捉到數據內部的分佈模式話,這可能造成訓練集的內部方差大於驗證集,會造成訓練集的誤差更大。這時你要重新切分數據集或者擴充數據集,使其分佈一樣

(2)由Dropout造成,它能基本上確保您的測試準確性最好,優於您的訓練準確性。Dropout迫使你的神經網絡成爲一個非常大的弱分類器集合,這就意味着,一個單獨的分類器沒有太高的分類準確性,只有當你把他們串在一起的時候他們纔會變得更強大。

  因爲在訓練期間,Dropout將這些分類器的隨機集合切掉,因此,訓練準確率將受到影響

  在測試期間,Dropout將自動關閉,並允許使用神經網絡中的所有弱分類器,因此,測試精度提高。

 

References:

https://stackoverflow.com/questions/43979449/higher-validation-accuracy-than-training-accurracy-using-tensorflow-and-keras

 https://www.quora.com/How-can-I-explain-the-fact-that-test-accuracy-is-much-higher-than-train-accuracy

https://www.cnblogs.com/carlber/p/10892042.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章