跳到主内容
快讯直播
AI智模界
AI 词典

训练集、验证集、测试集:为什么模型必须“考没做过的题”

一句话定义:训练集(training set)是模型用来学习的题目,验证集(validation set)是训练途中用来调方向、选方案的模拟考,测试集(test set)是最后只考一次、全程不许提前看的正式考试。

打个比方。学生备考,课本上的例题就是训练集——反复做、反复改,直到把规律摸熟。但例题做得好,不代表真会了:可能只是把答案背下来了。于是安排一次模拟考,也就是验证集,考完看看哪一章丢分多,回去补哪一章,甚至换个学习方法。最后上高考考场,那就是测试集:考完出分,就这一次,不能考完再回去改志愿重考。

为什么必须留出模型没见过的数据?因为模型的目标不是记住旧答案,而是在新数据上表现好,这叫泛化(generalization)。如果拿训练时看过的数据去评估,它会显得特别准,可这种准是“背题式”的,一换新数据就露馅,这就是过拟合(overfitting)。评估必须用没喂过的数据,分数才有意义。

那验证集和测试集到底差在哪?关键不是“见没见过”,而是“用了多少次、用来干什么”。

数据集训练时见过吗主要用途能反复用吗
训练集见过让模型学参数反复多轮使用
验证集没见过调超参数、选模型、决定何时停止训练可以多次用,但用得越多,结论越偏乐观
测试集没见过最终评估、对外汇报原则上只用一次

差别就在这里:验证集是“参与决策”的。你每看一次验证集分数,就做了一次选择——加一层网络、改一个学习率、早停在第几轮。选择做得多了,模型其实在悄悄迎合验证集,验证集分数会慢慢虚高。所以它适合用来挑方案,不适合拿来当最终成绩。

测试集则要求你先把所有选择都定死,最后只跑一次,得到近似“真实水平”的数字。看完之后如果再回去改模型、再测一轮,测试集就变回了验证集,它也就不再干净了。

实际工作中还有几个要点:切分要按大致比例随机划分,训练集占大头,验证和测试各留一小块;数据少的时候可以用交叉验证(cross-validation)轮流当验证集;最容易踩的坑是数据泄漏(data leakage),比如同一用户、同一篇文章的近似样本同时出现在训练集和测试集里,分数会好得不真实,上线就暴雷。具体比例和评估口径,各家论文与官方文档写法不一,以官方页面为准。

对从业者来说,记住一句话:能反复调的叫验证集,只能看一眼的叫测试集。对普通职场人来说,听到某个模型宣称准确率很高,可以顺手问一句:评测用的数据,训练的时候见过吗?

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。