验证集和测试集的区别

验证集用于调参和监控模型性能,防止过拟合,而测试集是最后评估模型泛化能力的标准。直接用测试集作为验证集可能导致模型过度拟合测试数据,失去公正性。正确做法是独立使用验证集进行参数调整,确保模型的泛化性能。
摘要由CSDN通过智能技术生成

昨天一直在想验证集和测试集的问题,越想越迷…

问题是这样的,大部分网络的训练都是这么一个套路:训练迭代 n 个 epoch 以后就进行一次验证,然后网络会输出在验证集上的 loss 或者其他评价指标。

所以如果我直接把测试集作为验证集,不就可以看到每隔 n 个 epoch 模型在测试集上的表现了嘛?而且训练结束前的最后一次验证也就相当于测试了,反正验证集又不会被训练,这样还省的做测试了。

=============== 查资料后的一点理解 =================

参考文章:https://blog.csdn.net/JNingWei/article/details/78170171

首先验证集是不参与梯度下降的过程的,所以我想那么做也是可以,只是和使用验证集的初衷不一样了(其实就是没理解验证集在干嘛,还说的那么好听 😦)。

验证集的作用:

使用验证集是为了 快速调参,也就是用验证集选择超参数(网络层数,网络节点数,迭代次数,学习率这些)。另外用验证集还可以监控模型是否异常(过拟合啦什么的),然后决定是不是要提前停止训练。

验证集的关键在于 选择超参数,我们手动调参是为了让模型在验证集上的表现越来越好,如果把测试集作为验证集,调参去拟合测试集,就有点像作弊了。

而测试集既 不参与参数的学习过程,也 不参与参数的选择过程,仅仅用于模型评价。

验证集的正确打开方式:

验证集可以看做参与了 “人工调参” 的训练过程

一般训练几个 epoch 就跑一次验证看看效果(大部分网络自带这个功能)

这样做的第一个好处是:可以及时发现模型或者参数的问题,比如模型在验证集上发散啦、出现很奇怪的结果啦(Inf)、mAP不增长或者增长很慢啦等等情况,这时可以及时终止训练,重新调参或者调整模型,而不需要等到训练结束。

另一个好处是验证模型的泛化能力,如果在验证集上的效果比训练集上差很多,就该考虑模型是否过拟合了。同时,还可以通过验证集对比不同的模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值