看板 DataScience 關於我們 聯絡資訊
請問一下各位高手 關於Validation set 跟 Training set的差別 特別是validation set 的功用是什麼? (這裡的validation set 不是 test data的意思 雖然文獻上這兩個詞也滿常交互使用) 要訓練一個Neural net model, 需要兩組數據, Training set 跟 Validation set. 兩組數據都是*已知數據*, 模組就從這裡學. 我的問題是 為什麼特別區分成兩組呢? 還有印象中黃金比例是 2:1 (train:val) 我自己模模糊糊的理解是 training set 教會大部分的parameter, 再用validation set來微調. 這樣的理解是對的嗎? 如果對的的話 那些parameter是只有在validation 才能調 training set調不了的呢? 這是合理的問題嗎? (小弟我只懂的大方向 跟怎麼用 很多基本的原理還是學的不扎實...慢慢補強...) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.230.60.98 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1521691079.A.014.html ※ 編輯: lucien0410 (68.230.60.98), 03/22/2018 11:59:20
championship: 通常使用cross-validation 03/22 12:46
championship: 會把training set分成幾等分 03/22 12:46
championship: 輪流挑一等分去作validation 03/22 12:46
championship: 其他分去作training的行為 03/22 12:46
championship: 利用這樣去找出好的參數 03/22 12:46
championship: 最後把整個training set拿去training 03/22 12:46
championship: 得到最終的model 03/22 12:46
lucien0410: champ大 感謝! 這招帥耶! 算是oversampling 03/22 12:58
lucien0410: 又不露痕跡 03/22 12:59
siscon: validation是為了避免overfitting 03/22 13:02
我回去查了文獻 (我做的是機器翻譯) 有這段話 (https://arxiv.org/abs/1709.07809 page 18) "A common stopping criteria is to check progress of the model on a validation set (that is not part of the training data) and halt when the error on the validation set does not improve. Training longer would not lead to any further improvements and may even degrade performance due to overfitting. " 這跟siscon大說的相符 (一開始手殘i打成u) 我用的軟體是OpenNMT 這個軟體要求 val set 又自動停在 epoch 13 這樣說的話 是不是OpenNMT搞錯了 validation set 功用呢? (OpenNMT 有個論壇 我可以去抱怨一下) ※ 編輯: lucien0410 (68.230.60.98), 03/22/2018 13:18:20 ※ 編輯: lucien0410 (68.230.60.98), 03/22/2018 13:34:13
truehero: Validation set是為了驗證模型泛用性 03/22 13:49
truehero: Validation loss可以用來作training early stop 03/22 13:51
truehero: 如妳所提如果停在epoch 13,有可能是已經持續一段時間 03/22 13:52
truehero: 模型沒有改善了 03/22 13:53
truehero: 例如training在epoch8 得到val loss最低,又設定5 epoch 03/22 13:55
truehero: 沒改善就停,就會看到epoch13 停止的結果 03/22 13:56
Kazimir: 考試當然是從沒做過的題裡挑來考才會準啊 03/22 14:56
Kazimir: validation是期中考 test set是學測 03/22 14:57
woogee: Google教學有 https://goo.gl/9zRjA9 03/22 15:19
NBAPredictor: 那只是單純hold out吧 C.V要加迴圈? 03/22 17:43
cueroul: Validation set拿來找最好的hyperparameters,比如要用幾 03/22 20:42
cueroul: 層幾個hidden unit。而因這些參數用validation set找, 03/22 20:42
cueroul: 所以最終想知道unbias的未來預測表現,要用test set來看 03/22 20:42
cueroul: 。 03/22 20:42
cueroul: 眼殘。training set單純是拿來算模型的parameters。可以 03/22 20:46
cueroul: 去看hyperparameter和parameter在ML模型裡的差別。 03/22 20:46
EGsux: openNMT沒搞錯 很正常的做法。。。 03/22 20:46
goldflower: 我覺得...你真的該隨便找個線上課程先看過一輪 03/22 20:57
goldflower: 這些基本的通常一般課程上都會提到 03/22 20:58
goldflower: 像我非常確定田神有講cross-validation 03/22 21:03
goldflower: 然後cs231n的筆記也值得一看 03/22 21:04
goldflower: 話說train/val 2:1我覺得蠻奢侈的@@ 03/22 21:07
chchan1111: 這麼基本的也在問 真的有在念相關知識嗎... 03/22 21:32
chchan1111: 而且你說的調整 是調超參數 超參數是人調的 03/22 21:33
chchan1111: 不是讓機器學的 03/22 21:33
chchan1111: 而且驗證集是學界在用的 因為拿測試集來調參數算作弊 03/22 21:36
chchan1111: 因為測試集不能在調參時使用 才會把訓練集切一些出來 03/22 21:36
chchan1111: 藉由訓練時訓練集跟驗證集兩者LOSS的變化 觀察過擬合 03/22 21:38
chchan1111: 什麼時候發生 以及模型收斂情況 03/22 21:38
lucien0410: 這個跟cross-validation 不相關喔 而且OpenNMT的 val 03/22 23:50
lucien0410: set 就是給機器學的 不是用來之後人工調hyperparamet 03/22 23:50
lucien0410: er用的 03/22 23:50
goldflower: 我是看你cross-validation都像發現新大陸才提der 03/23 01:04
goldflower: 我是沒用過openNMT 但你貼的那段根本不是這樣 03/23 01:05
goldflower: 等原來你不是貼doc 我搞錯 03/23 01:07
goldflower: Validation files are required and used to evaluate 03/23 01:10
goldflower: the convergence of the training 03/23 01:10
goldflower: 這是他github上寫的 實在看不出有拿進去學 03/23 01:10
goldflower大 多謝啦 但問一問基本的問題也不錯吧 讓有興趣的但還在學的人也來討論討論 像是教學的blog的性質 這樣的datascience版 也不錯吧 正如你說的 嚴格來說 OpenNMT沒有拿 val set 來調參數 而是拿來評估 overfitting 和 convergence 但這又讓我覺得奇怪了 這樣的話 epoch的數量 應該是自動設定的 converged後 自動停止才對 但OpenNMT的epoch 又是手動設定的 hyperparameter (預設值是13) 另外 結果這個問題 真的有人在論壇上問過: http://forum.opennmt.net/t/validation-data/128 那些OpenNMT的developers 也真的自己出來回答 滿有意思的 Guillaume Klein說實際上來說 val set 可以來讓做為挑選那個epoch的標準 就挑 validation perplexity 最低的那個 ※ 編輯: lucien0410 (68.230.60.98), 03/23/2018 01:32:23
goldflower: 論文被引用幾十次的軟體我是不信會犯這麼初級的錯誤 03/23 01:12
jameszhan: 當然還是要手動設定 你怎麼知道你的model一定會收斂? 03/23 01:42
jameszhan: 不收斂難道要跑到死嗎 基本上都是設定提前結束的條件 03/23 01:43
jameszhan: 要設定終止條件也不是不行 不過訓練前你怎麼知道loss可 03/23 01:48
jameszhan: 以收斂到多低? 03/23 01:48
goldflower: 你就把林軒田的基石看完你會有很多問題不用等人解答 03/23 02:37
goldflower: 這版也不是我的我也沒啥好限制人問題目的 03/23 02:37
lucien0410: 多謝提點:) 但來這裡跟大家互動也很有趣 03/23 03:37
lucien0410: 多謝提點:) 但來這裡跟大家互動也很有趣 03/23 03:37
CNNLayer: 李弘毅的也很不錯 03/26 00:14
KSWang: 田神的課聽一下就知道囉 這部分理論他講得最好 04/05 10:43