作者lucien0410 (lucein)
看板DataScience
标题[问题] Validation set 到底在做什麽?
时间Thu Mar 22 11:57:56 2018
请问一下各位高手 关於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://webptt.com/cn.aspx?n=bbs/DataScience/M.1521691079.A.014.html
※ 编辑: lucien0410 (68.230.60.98), 03/22/2018 11:59:20
1F:推 championship: 通常使用cross-validation 03/22 12:46
2F:→ championship: 会把training set分成几等分 03/22 12:46
3F:→ championship: 轮流挑一等分去作validation 03/22 12:46
4F:→ championship: 其他分去作training的行为 03/22 12:46
5F:→ championship: 利用这样去找出好的参数 03/22 12:46
6F:→ championship: 最後把整个training set拿去training 03/22 12:46
7F:→ championship: 得到最终的model 03/22 12:46
8F:→ lucien0410: champ大 感谢! 这招帅耶! 算是oversampling 03/22 12:58
9F:→ lucien0410: 又不露痕迹 03/22 12:59
10F:推 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
11F:→ truehero: Validation set是为了验证模型泛用性 03/22 13:49
12F:→ truehero: Validation loss可以用来作training early stop 03/22 13:51
13F:→ truehero: 如你所提如果停在epoch 13,有可能是已经持续一段时间 03/22 13:52
14F:→ truehero: 模型没有改善了 03/22 13:53
15F:→ truehero: 例如training在epoch8 得到val loss最低,又设定5 epoch 03/22 13:55
16F:→ truehero: 没改善就停,就会看到epoch13 停止的结果 03/22 13:56
17F:推 Kazimir: 考试当然是从没做过的题里挑来考才会准啊 03/22 14:56
18F:→ Kazimir: validation是期中考 test set是学测 03/22 14:57
20F:推 NBAPredictor: 那只是单纯hold out吧 C.V要加回圈? 03/22 17:43
21F:推 cueroul: Validation set拿来找最好的hyperparameters,比如要用几 03/22 20:42
22F:→ cueroul: 层几个hidden unit。而因这些参数用validation set找, 03/22 20:42
23F:→ cueroul: 所以最终想知道unbias的未来预测表现,要用test set来看 03/22 20:42
24F:→ cueroul: 。 03/22 20:42
25F:推 cueroul: 眼残。training set单纯是拿来算模型的parameters。可以 03/22 20:46
26F:→ cueroul: 去看hyperparameter和parameter在ML模型里的差别。 03/22 20:46
27F:推 EGsux: openNMT没搞错 很正常的做法。。。 03/22 20:46
28F:推 goldflower: 我觉得...你真的该随便找个线上课程先看过一轮 03/22 20:57
29F:→ goldflower: 这些基本的通常一般课程上都会提到 03/22 20:58
30F:推 goldflower: 像我非常确定田神有讲cross-validation 03/22 21:03
31F:→ goldflower: 然後cs231n的笔记也值得一看 03/22 21:04
32F:推 goldflower: 话说train/val 2:1我觉得蛮奢侈的@@ 03/22 21:07
33F:→ chchan1111: 这麽基本的也在问 真的有在念相关知识吗... 03/22 21:32
34F:→ chchan1111: 而且你说的调整 是调超参数 超参数是人调的 03/22 21:33
35F:→ chchan1111: 不是让机器学的 03/22 21:33
36F:→ chchan1111: 而且验证集是学界在用的 因为拿测试集来调参数算作弊 03/22 21:36
37F:→ chchan1111: 因为测试集不能在调参时使用 才会把训练集切一些出来 03/22 21:36
38F:→ chchan1111: 藉由训练时训练集跟验证集两者LOSS的变化 观察过拟合 03/22 21:38
39F:→ chchan1111: 什麽时候发生 以及模型收敛情况 03/22 21:38
40F:→ lucien0410: 这个跟cross-validation 不相关喔 而且OpenNMT的 val 03/22 23:50
41F:→ lucien0410: set 就是给机器学的 不是用来之後人工调hyperparamet 03/22 23:50
42F:→ lucien0410: er用的 03/22 23:50
43F:推 goldflower: 我是看你cross-validation都像发现新大陆才提der 03/23 01:04
44F:→ goldflower: 我是没用过openNMT 但你贴的那段根本不是这样 03/23 01:05
45F:推 goldflower: 等原来你不是贴doc 我搞错 03/23 01:07
46F:推 goldflower: Validation files are required and used to evaluate 03/23 01:10
47F:→ goldflower: the convergence of the training 03/23 01:10
48F:→ 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
49F:→ goldflower: 论文被引用几十次的软体我是不信会犯这麽初级的错误 03/23 01:12
50F:推 jameszhan: 当然还是要手动设定 你怎麽知道你的model一定会收敛? 03/23 01:42
51F:→ jameszhan: 不收敛难道要跑到死吗 基本上都是设定提前结束的条件 03/23 01:43
52F:推 jameszhan: 要设定终止条件也不是不行 不过训练前你怎麽知道loss可 03/23 01:48
53F:→ jameszhan: 以收敛到多低? 03/23 01:48
54F:推 goldflower: 你就把林轩田的基石看完你会有很多问题不用等人解答 03/23 02:37
55F:→ goldflower: 这版也不是我的我也没啥好限制人问题目的 03/23 02:37
56F:→ lucien0410: 多谢提点:) 但来这里跟大家互动也很有趣 03/23 03:37
57F:→ lucien0410: 多谢提点:) 但来这里跟大家互动也很有趣 03/23 03:37
58F:推 CNNLayer: 李弘毅的也很不错 03/26 00:14
59F:推 KSWang: 田神的课听一下就知道罗 这部分理论他讲得最好 04/05 10:43