在測試集計算損失的時候沒有加dropout和l2正則,但是測試集的loss還是大於訓練集的loss。總共1000209個數據,80%作為訓練集,20%作為測試集,網路是3層神經網路。優化器Adam。


How can you expect a better performance with unseen samples without strong assumptions? The model will always overfit (to some extent) the seened data.


一般來說,模型訓練完成,測試集的誤差是應該略大於訓練集的誤差的,但也不排除一些偶爾的情況,神經網路本身的一些東西還是挺難琢磨的,可能是由於訓練測試本身的數據分布導致的一些差異,也可能是其他原因,得自己去做研究。

從你提供的這張圖來看,測試集的loss基本沒有怎麼降,而訓練集在2,3輪epoch之後,就幾乎不在下降,那麼這樣的訓練對任務來說一般是失敗,建議嘗試:

  1. 更改參數初始化的方式;
  2. 更換優化器;
  3. 更改學習率以及batch_size。

電子書深度學習作者 Ian Goodfellow(伊恩·古德費洛) 等會員專享¥ 107.52去查看?


首先,測試集的loss大於訓練集的loss一般來說是正常現象,因為模型肯定要盡量擬合訓練集的呀!(但是如果採用dropout的話由於強行抑制模型在訓練集上過擬合,則可能會出現測試集的loss小於訓練集的loss的情況)

第二,樓主曲線裡面train loss和test loss的gap比較大,train loss很快收斂到了一個比較大的值上,test loss幾乎不降,感覺可能存在以下問題:1.訓練集和測試集的分布差別較大 2.學習率和batchsize的選取不太合適,收斂到局部最優去了


一般都會這樣,測試略高於訓練,正常


train loss 1輪迭代後就基本上不下降了,test loss 也沒有明顯下降,大概率是模型有bug


提主這樣問是很難得到一個準確的回答的。

直觀來看,測試集的loss只有微小變化,而訓練集的loss有下降。到2-3個epoch之後才開始收斂。

建議提主把每個step之後的loss都打出來比較好定位問題。有可能是正常的,訓練集和測試集分布差距太大,模型在瘋狂過擬合。也有可能是不正常的,這都取決於你的數據和你進行的任務,所以如果你沒有更多信息,很難得到一個準確的回答。


難道你覺得反過來才正常嗎?

你學會了十道題,考試還考這十道題,比考十道全新的題得分高,這不是很正常嗎?


抽取的20是隨機抽取的嗎。。。


常見,如果是常見的定義就是正常。機器學習目前統計學習框架會導致輸入數據分布被改變


淡定,很正常。大多情況下都會如此


網路過於簡單或者有錯誤,或者訓練的學習率太大,嘗試調節以上兩點看看結果差別。

可以把網路部分代碼貼一下。


撇開問題,直接看圖,感覺模型有問題啊


很正常,目前我們使用模型訓練多多少少都會過擬合,訓練集上loss比較小,測試集或者驗證集loss稍微大點,就是典型的模型過擬合表現,一般情況下loss越小模型的準確率越高,理想情況下是訓練集loss和測試集loss相差不大。


這篇文章或許能解決你的問題

一個值得深思的問題?為什麼驗證集的loss會小於訓練集的loss - 雲+社區 - 騰訊雲?

cloud.tencent.com

侵刪


怎麼感覺是訓練的參數沒調好,局部最優了。

2、3個epoch這麼快收斂了但是training loss還是挺大的,肯定可以再降低的,學習率,weight decay可以小一點試試。


推薦閱讀:
相关文章