回覆列表
  • 1 # Aaron馬艾倫先生

    很好理解,特別是在資料集很大的時候,loss下降很明顯。train loss是平均一個epoch內的所有loss,比如第一個epoch的loss是2.3、2.2、2.1……0.7、0.6平均train loss是1.5,而val的時候使用已經訓練了的一個epoch的model進行測試的。假設擬合的很好驗證集loss平均是0.7左右,那麼肯定這個時候val的平均效果很好了!

    其實ImageNet等大資料集訓練的前期到中期一直有這樣的現象,往往直到最後val才被train acc反超。原因是對training set加了很多data augmentation技巧(rescale,隨機crop等等),而test不加增強,比如直接crop中心。這樣test分佈顯然更好。而最終test時如果使用10-crop等技巧,那麼test acc就更高了!

    data augmentation也會導致這樣的現象。因為data augmentation的本質就是把訓練集變得豐富,製造資料的多樣性和學習的困難來讓network更robust(比如旋轉,隨機crop,scale),但是val和test的時候一般是不對資料進行data augmentation的。(有時候會center crop,如果train的時候有crop的話)

    也有可能是drop out的影響,drop out可以抽象的理解為隨機遮蔽掉一些feature(神經元),只用一部分feature來識別,這樣留下來的這些feature就更強了。等測試/val的時候全部神經元一起上,表現就更好了。不過drop out一般用於fc層中,現在比較少用了。也有dropout2D用在卷基層中,用的也不多。

    順便安利一個paper,直接把影象上的幾塊蓋上,達到和dropout類似的效果。非常straightforward的想法,試了一下還不錯。剛開始訓練集的表現不如驗證集是非常常見和正常的現象,最常見的原因就是最上面的。當然也不排除資料集本身存在問題,甚至有錯誤的資料。

  • 中秋節和大豐收的關聯?
  • 在蘇黎世,如何玩出高性價比?