[問題] neural net MT 的 Validation set 到底在做什麼?

看板DataScience作者 (lucein)時間6年前 (2018/03/22 11:57), 6年前編輯推噓19(19040)
留言59則, 14人參與, 6年前最新討論串1/1
請問一下各位高手 關於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

03/22 12:46, 6年前 , 1F
通常使用cross-validation
03/22 12:46, 1F

03/22 12:46, 6年前 , 2F
會把training set分成幾等分
03/22 12:46, 2F

03/22 12:46, 6年前 , 3F
輪流挑一等分去作validation
03/22 12:46, 3F

03/22 12:46, 6年前 , 4F
其他分去作training的行為
03/22 12:46, 4F

03/22 12:46, 6年前 , 5F
利用這樣去找出好的參數
03/22 12:46, 5F

03/22 12:46, 6年前 , 6F
最後把整個training set拿去training
03/22 12:46, 6F

03/22 12:46, 6年前 , 7F
得到最終的model
03/22 12:46, 7F

03/22 12:58, 6年前 , 8F
champ大 感謝! 這招帥耶! 算是oversampling
03/22 12:58, 8F

03/22 12:59, 6年前 , 9F
又不露痕跡
03/22 12:59, 9F

03/22 13:02, 6年前 , 10F
validation是為了避免overfitting
03/22 13:02, 10F
我回去查了文獻 (我做的是機器翻譯) 有這段話 (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

03/22 13:49, 6年前 , 11F
Validation set是為了驗證模型泛用性
03/22 13:49, 11F

03/22 13:51, 6年前 , 12F
Validation loss可以用來作training early stop
03/22 13:51, 12F

03/22 13:52, 6年前 , 13F
如妳所提如果停在epoch 13,有可能是已經持續一段時間
03/22 13:52, 13F

03/22 13:53, 6年前 , 14F
模型沒有改善了
03/22 13:53, 14F

03/22 13:55, 6年前 , 15F
例如training在epoch8 得到val loss最低,又設定5 epoch
03/22 13:55, 15F

03/22 13:56, 6年前 , 16F
沒改善就停,就會看到epoch13 停止的結果
03/22 13:56, 16F

03/22 14:56, 6年前 , 17F
考試當然是從沒做過的題裡挑來考才會準啊
03/22 14:56, 17F

03/22 14:57, 6年前 , 18F
validation是期中考 test set是學測
03/22 14:57, 18F

03/22 15:19, 6年前 , 19F
Google教學有 https://goo.gl/9zRjA9
03/22 15:19, 19F

03/22 17:43, 6年前 , 20F
那只是單純hold out吧 C.V要加迴圈?
03/22 17:43, 20F

03/22 20:42, 6年前 , 21F
Validation set拿來找最好的hyperparameters,比如要用幾
03/22 20:42, 21F

03/22 20:42, 6年前 , 22F
層幾個hidden unit。而因這些參數用validation set找,
03/22 20:42, 22F

03/22 20:42, 6年前 , 23F
所以最終想知道unbias的未來預測表現,要用test set來看
03/22 20:42, 23F

03/22 20:42, 6年前 , 24F
03/22 20:42, 24F

03/22 20:46, 6年前 , 25F
眼殘。training set單純是拿來算模型的parameters。可以
03/22 20:46, 25F

03/22 20:46, 6年前 , 26F
去看hyperparameter和parameter在ML模型裡的差別。
03/22 20:46, 26F

03/22 20:46, 6年前 , 27F
openNMT沒搞錯 很正常的做法。。。
03/22 20:46, 27F

03/22 20:57, 6年前 , 28F
我覺得...你真的該隨便找個線上課程先看過一輪
03/22 20:57, 28F

03/22 20:58, 6年前 , 29F
這些基本的通常一般課程上都會提到
03/22 20:58, 29F

03/22 21:03, 6年前 , 30F
像我非常確定田神有講cross-validation
03/22 21:03, 30F

03/22 21:04, 6年前 , 31F
然後cs231n的筆記也值得一看
03/22 21:04, 31F

03/22 21:07, 6年前 , 32F
話說train/val 2:1我覺得蠻奢侈的@@
03/22 21:07, 32F

03/22 21:32, 6年前 , 33F
這麼基本的也在問 真的有在念相關知識嗎...
03/22 21:32, 33F

03/22 21:33, 6年前 , 34F
而且你說的調整 是調超參數 超參數是人調的
03/22 21:33, 34F

03/22 21:33, 6年前 , 35F
不是讓機器學的
03/22 21:33, 35F

03/22 21:36, 6年前 , 36F
而且驗證集是學界在用的 因為拿測試集來調參數算作弊
03/22 21:36, 36F

03/22 21:36, 6年前 , 37F
因為測試集不能在調參時使用 才會把訓練集切一些出來
03/22 21:36, 37F

03/22 21:38, 6年前 , 38F
藉由訓練時訓練集跟驗證集兩者LOSS的變化 觀察過擬合
03/22 21:38, 38F

03/22 21:38, 6年前 , 39F
什麼時候發生 以及模型收斂情況
03/22 21:38, 39F

03/22 23:50, 6年前 , 40F
這個跟cross-validation 不相關喔 而且OpenNMT的 val
03/22 23:50, 40F

03/22 23:50, 6年前 , 41F
set 就是給機器學的 不是用來之後人工調hyperparamet
03/22 23:50, 41F

03/22 23:50, 6年前 , 42F
er用的
03/22 23:50, 42F

03/23 01:04, 6年前 , 43F
我是看你cross-validation都像發現新大陸才提der
03/23 01:04, 43F

03/23 01:05, 6年前 , 44F
我是沒用過openNMT 但你貼的那段根本不是這樣
03/23 01:05, 44F

03/23 01:07, 6年前 , 45F
等原來你不是貼doc 我搞錯
03/23 01:07, 45F

03/23 01:10, 6年前 , 46F
Validation files are required and used to evaluate
03/23 01:10, 46F

03/23 01:10, 6年前 , 47F
the convergence of the training
03/23 01:10, 47F

03/23 01:10, 6年前 , 48F
這是他github上寫的 實在看不出有拿進去學
03/23 01:10, 48F
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

03/23 01:12, 6年前 , 49F
論文被引用幾十次的軟體我是不信會犯這麼初級的錯誤
03/23 01:12, 49F

03/23 01:42, 6年前 , 50F
當然還是要手動設定 你怎麼知道你的model一定會收斂?
03/23 01:42, 50F

03/23 01:43, 6年前 , 51F
不收斂難道要跑到死嗎 基本上都是設定提前結束的條件
03/23 01:43, 51F

03/23 01:48, 6年前 , 52F
要設定終止條件也不是不行 不過訓練前你怎麼知道loss可
03/23 01:48, 52F

03/23 01:48, 6年前 , 53F
以收斂到多低?
03/23 01:48, 53F

03/23 02:37, 6年前 , 54F
你就把林軒田的基石看完你會有很多問題不用等人解答
03/23 02:37, 54F

03/23 02:37, 6年前 , 55F
這版也不是我的我也沒啥好限制人問題目的
03/23 02:37, 55F

03/23 03:37, 6年前 , 56F
多謝提點:) 但來這裡跟大家互動也很有趣
03/23 03:37, 56F

03/23 03:37, 6年前 , 57F
多謝提點:) 但來這裡跟大家互動也很有趣
03/23 03:37, 57F

03/26 00:14, 6年前 , 58F
李弘毅的也很不錯
03/26 00:14, 58F

04/05 10:43, 6年前 , 59F
田神的課聽一下就知道囉 這部分理論他講得最好
04/05 10:43, 59F
文章代碼(AID): #1Qiod70K (DataScience)
文章代碼(AID): #1Qiod70K (DataScience)