作者lucien0410 (lucein)
看板DataScience
标题Re: [问题] Validation set 到底在做什麽?
时间Tue Mar 27 15:31:55 2018
感谢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://webptt.com/cn.aspx?n=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
1F:推 goldflower: 为啥要你丢validation set=不用来挑超参数啊 03/27 16:12
2F:→ goldflower: 如果今天你用tensorflow等等 他fit的时候规定你一定 03/27 16:13
3F:→ goldflower: 要放validation set 那就会产生跟你现在一样的问题 03/27 16:13
4F:→ goldflower: 不知道你有没有发现你卡在哪里了 重点在於validation 03/27 16:14
5F:→ goldflower: set没有混进去train R 03/27 16:14
6F:→ goldflower: 简单说就是openNMT很好心 他拜托你看一眼validation 03/27 16:15
7F:→ goldflower: 的结果确定结果好不好这样 03/27 16:15
8F:推 tay2510: 不用怀疑 val 就是p大讲的那样 你的问题是你的认知有误 03/27 23:44
9F:推 tay2510: 你举的例子 a就是training set, b就是val set 然後B是tes 03/27 23:49
10F:→ tay2510: t set 03/27 23:49
11F:推 tay2510: a,b 绑在一起喂给training 是很多deep learning framewor 03/28 00:00
12F:→ tay2510: k都有的设计 建议你尽量不要从api去回推machine learning 03/28 00:00
13F:→ tay2510: 的本质 有点本末倒置 03/28 00:00
14F:推 EGsux: p大没错。。 03/28 00:02