验证集是干什么的

1.疑惑

        不知道大家有没有这样的问题,我最开始接触深度学习,跑过很多项目,发现基本只有训练集和测试集,后来才发现还有验证集,就去搜索,看了很多,基本上都说,验证集是用来调整超参数的。

2.不解

        我当时真的很不理解,难道测试集不能调整超参数吗,而且在eval模式下,都冻结权重了,验证集和测试集有啥区别呢,都不会影响权重吧

3.寻知

        其实他们说的对,但没回答到点上,验证集确实是用来干那个的,但测试集也能,因此就会误导初学者

4.解答

        本质原因是,如果我没有验证集,即使使用测试集的时候不会调整权重,但我会根据测试集的结果进行调整超参数,最终模型是针对测试集优化的了,结果也只是对测试集考察,而不是一个泛化能力的结果。因此,测试集只有在模型都训练好了之后才能测试,且只用测试一次。

        再或者这样想,如果没有验证集,每轮都用测试集,每轮训练,发现测试集效果不佳,我调一下超参,慢慢的,发现测试集的指标上去了,那这结果的意义在哪呢?

        就像你是个工匠,打造了一把武器,锻造完就测试,砍ABCD,有问题就重新锻造,反复迭代,砍ABCD真挺牛的,号称这把武器100分,卖给了勇士,勇士出村子之后接触到的是EFG,发现武器不那么牛,就去质问工匠,你不是号称啥都能砍吗,工匠意识到,它是针对ABCD优化的武器,可世界上有ABCD至无穷种,后来用ABCD作为验证集,之后打造完用EFG作为测试集,以这个EFG的结果作为这把武器的评估标准。勇士拿到的新的评估标准的武器,跟工匠说,不是搞机器学习的工匠不是好工匠。

        我们做的是深度学习,是不是为了泛化能力,我们是造物主,造出了一个模型,它要面对的是千变万化,无边无际的世界的对吧,我们不是针对有限的情况去分析的,如果是,那就不需要深度学习了。面对无限的世界,我们没法穷尽,所以只能去这世界的一小块作为代表,用我们的模型去测试这一小块,之后告诉世人,我们的模型能否经受住现实的考验。这样的结果才是有价值的结果。

        有些学者,那测试集当验证集用,得出一个乐观的结果,那是不可取的。

与回答无关 5.自省

        写这篇博客,我感觉自己非常狂妄,我是大数据专业,但研究方向一直都是深度学习,所以没怎么静下心来好好读书,这些内容可能就写在课本上,导致一个很基础的知识,被我学的乱七八糟,最后走了很多弯路学会了,以为自己挺厉害。这样的选择导致现在科研处处碰壁,也没有办法,科研的路是一条很曲折的路,所以我,菜,就多练

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值