Re: [問題] Validation set 到底在做什麼?

看板DataScience作者 (lucein)時間6年前 (2018/03/27 15:31), 6年前編輯推噓5(509)
留言14則, 3人參與, 6年前最新討論串4/8 (看更多)
感謝pipidog前輩的回文 深入淺出的概念教育! 你的回文有大量的訊息 真的學了不少 抽象的訊息最難學 但你教的方式特別好 可是可是我的問題沒有回答到 (是我一開始沒問對問題) 我做的是機器翻譯 seq2seq + attention (Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio (2014), “Neural ma- chine translation by jointly learning to align and translate.” arXiv preprint arXiv:1409.0473. Cho, Kyunghyun, Bart Van Merri nboer, Dzmitry Bahdanau, and Yoshua Ben- gio (2014a), “On the properties of neural machine translation: Encoder- decoder approaches.” arXiv preprint arXiv:1409.1259. Cho, Kyunghyun, Bart Van Merri nboer, Caglar Gulcehre, Dzmitry Bah- danau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio (2014b), “Learn- ing phrase representations using rnn encoder-decoder for statistical machine translation.” arXiv preprint arXiv:1406.1078.) OpenNMT是把上述演算法實踐的library之一 OpenNMT建立模組的時候validation set就是必需的了 開始訓練前 必需先設定hyperparameter ephoch size; learning rate ... 這些hyperparameter 都要預先設定 除此之外 **還要再給** val set 這樣才能開始訓練 所以這樣的 validation set 對 OpenNMT 不是用來挑選hyperparameter的 ############################### 換個方式講 假設我有兩份已知資料(AB兩份資料) A拿來訓練 B拿來測試 B的測試結果告訴我們成果到底怎樣 公平的驗證 B就是終極測試 但其實訓練A之前 可以調整很多hyperparameter 所以就先把A切成 a b 拿a 訓練 b 測試 找尋最佳的hyperparameter 找到後 再依這樣的設定訓練A (期待B的測試會最好) 但是OpenNMT要求在訓練小寫a時也必須提供val set 這就是我的問題了 ※ 引述《pipidog (如果狗狗飛上天)》之銘言: : 你有三個資料集,train, validation, test : train沒啥好說的,餵給機器,讓機器學,生成潛在參數用的 : 練好之後,怎麼知道表現好不好?拿validation來測試。 : 如果不好,調整超參數後重新訓練一次,再驗證一次。反覆這個流程 : 直到在validation的表現滿意為止。但故事至此尚未結束,是的,validation : 沒有被機器讀過,所以確實給出的表現可以看作模型對未知資料的表現, : 但問題是我們不停在做的事情,就是找出一組超參數,使得模型對於 : validation的表現最好,換言之,這個模型是有bias的,它的一切都在 : 迎合validation,但如果你的validation取得不具代表性怎麼辦?這模型 : 的泛化能力就不能透過validation來證明。 : 所以你最終的模型必須要在test上測試才算數。 : 簡單說,train是拿來訓練潛在參數的,validation是拿來挑選超參數的, : 這兩個資料集機器都去迎合過它們,換言之,都"髒掉了",所以我們才需要 : test set,它既與潛在參數無關,也與超參數無關,是理想上真正獨立超然的 : 模型判官。這樣說,你明白了嗎? : 至於cross validation,那是另一個很長的故事,我想你應該,也必須花時間 : 了解,這是機器學習裡面,模型選擇的重要觀念。 : ----- : Sent from JPTT on my Asus P00C. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.230.60.98 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1522135917.A.895.html ※ 編輯: lucien0410 (68.230.60.98), 03/27/2018 15:36:59 ※ 編輯: lucien0410 (68.230.60.98), 03/27/2018 16:17:38

03/27 16:12, 6年前 , 1F
為啥要你丟validation set=不用來挑超參數啊
03/27 16:12, 1F

03/27 16:13, 6年前 , 2F
如果今天你用tensorflow等等 他fit的時候規定你一定
03/27 16:13, 2F

03/27 16:13, 6年前 , 3F
要放validation set 那就會產生跟你現在一樣的問題
03/27 16:13, 3F

03/27 16:14, 6年前 , 4F
不知道你有沒有發現你卡在哪裡了 重點在於validation
03/27 16:14, 4F

03/27 16:14, 6年前 , 5F
set沒有混進去train R
03/27 16:14, 5F

03/27 16:15, 6年前 , 6F
簡單說就是openNMT很好心 他拜託你看一眼validation
03/27 16:15, 6F

03/27 16:15, 6年前 , 7F
的結果確定結果好不好這樣
03/27 16:15, 7F

03/27 23:44, 6年前 , 8F
不用懷疑 val 就是p大講的那樣 你的問題是你的認知有誤
03/27 23:44, 8F

03/27 23:49, 6年前 , 9F
你舉的例子 a就是training set, b就是val set 然後B是tes
03/27 23:49, 9F

03/27 23:49, 6年前 , 10F
t set
03/27 23:49, 10F

03/28 00:00, 6年前 , 11F
a,b 綁在一起餵給training 是很多deep learning framewor
03/28 00:00, 11F

03/28 00:00, 6年前 , 12F
k都有的設計 建議你盡量不要從api去回推machine learning
03/28 00:00, 12F

03/28 00:00, 6年前 , 13F
的本質 有點本末倒置
03/28 00:00, 13F

03/28 00:02, 6年前 , 14F
p大沒錯。。
03/28 00:02, 14F
文章代碼(AID): #1QkVDjYL (DataScience)
討論串 (同標題文章)
文章代碼(AID): #1QkVDjYL (DataScience)