严谨的深度学习实验中,一般都应该设置验证集(Validation Set)


为什么要设置验证集?

  1. 用于超参数调整(调优)

    • 比如学习率、网络层数、隐藏单元数、权重衰减、dropout比例等等。
    • 训练集是用来拟合参数的,验证集是用来评估当前模型是否泛化得好的。
  2. 用于早停(Early Stopping)

    • 深度学习中常用 Early Stopping:当验证集准确率下降或验证集损失上升时,停止训练,防止过拟合。
  3. 避免过拟合到训练集

    • 如果只在训练集上选最好的模型,很容易选到一个“只记住了训练数据、但是泛化很差”的模型。
    • 验证集模拟了模型在“没见过的数据”上的表现。
  4. 模型选择(Model Selection)

    • 如果训练了多个不同结构的模型(比如CNN、Transformer、GNN),你总得有个标准去选哪个模型最好,而这个标准通常就是验证集表现。

那为什么有些论文不设置验证集呢?

原因 解释
1. 数据量小 样本本来就很少,划一部分做验证集,怕训练数据更不够,导致模型拟合不充分。
2. 只做展示性实验/证明原理 比如只是为了证明某个新算法有提升,用训练集+测试集就够了,不特别强调验证细节。
3. 在交叉验证(Cross-Validation)中 交叉验证每轮自动划分训练+验证,不单独固定一个验证集。
4. “懒”或者不规范 特别是一些非顶会/顶刊投稿或者开源项目,为了图快,直接用测试集当验证来选最好的模型(这种是不严谨的)。
5. 明确指定测试集不可用 有些benchmark只提供训练集和测试集,测试集在服务器上封闭评测,这种情况下自己划验证集很难,除非再从训练集中拆一点。

总结

  • 正式科研竞赛论文复现等场景,必须设置验证集,不能仅凭训练集选模型。
  • 如果数据特别小(比如医学图像、卫星图像小样本),可以考虑用K折交叉验证代替固定验证集。
  • 如果只有训练集和测试集(比如某些挑战赛),可以从训练集再划一部分出来当验证集。

小Tips

  • 常见划分比例是:训练集:验证集:测试集 = 6:2:28:1:1
  • 验证集不能用于最终报告的性能评估,最终结果必须在测试集上报告。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐