
视频元信息
- 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)
- 章节:第三门课《结构化机器学习项目》第一周 1.6 节
- 主题:开发和测试集的大小和指标(Size and Metrics of Dev/Test Sets)
- 时长:约 5 分 40 秒
内容摘要(TL;DR)
本节讲解深度学习时代开发集(dev set)与测试集(test set)划分比例的新趋势。传统 70/30 或 60/20/20 的经验法则已不适用于大数据集,现代做法是训练集占比更高(如 98%),dev/test 各占 1%。核心原则:dev 集要足够大以评估不同模型思路,test 集要足够大以对最终系统性能有高置信度。
一、传统机器学习时代的划分经验法则 [00:15]
在早期机器学习时代,数据集规模较小,常见的划分经验法则(rule of thumb)为:
- 70% 训练集 / 30% 测试集(无 dev 集)
- 60% 训练集 / 20% 开发集 / 20% 测试集
在数据集只有 100 个、1000 个或 10000 个样本时,这些比例是相当合理的。
理解:这些经验法则之所以在小数据集上合理,是因为如果按 1% 来划分 dev/test,100 个样本中只有 1 个样本用于验证或测试,统计噪声极大,评估结果毫无参考价值。所以必须保留较大比例才能得到有意义的评估。
二、深度学习时代的新趋势:训练集占比大幅提高 [01:13]
在现代机器学习时代,数据集规模动辄百万级,划分策略发生根本变化:
- 假设有 1,000,000 个训练样本
- 合理划分可能是:98% 训练集 / 1% 开发集 / 1% 测试集
关键点:即使 dev/test 只占 1%,对于百万级数据集来说,1% = 10,000 个样本,这已经足够用于开发集或测试集了。
考点:深度学习时代,dev/test 占比远小于传统的 20%-30%,因为深度学习的"数据饥饿"特性使得更大比例数据应投入训练集。
理解:深度学习模型参数量大、拟合能力强,对训练数据的需求极高。把更多数据分给训练集,能显著提升模型性能,而 dev/test 只需达到"统计上足够"即可。
三、开发集和测试集的设置原则 [02:21]
1. 开发集(Dev Set)的作用与原则
- 作用:评估不同想法、选择方案 A 还是方案 B
- 原则:dev 集要足够大,以便能快速评估不同模型/思路的优劣
2. 测试集(Test Set)的作用与原则
- 作用:在系统开发完成后,评估最终系统的整体性能
- 原则:test 集要足够大,以便对系统最终性能给出高置信度的评估
考点:test 集大小的唯一标准是"是否足够给出高置信度的性能评估",而不是固定比例。
- 如果 10,000 个样本就能让你对最终性能有足够信心,那就够了
- 如果 100,000 个才够,那就用 100,000 个
- 这个数量可能远小于整体数据集的 30%
理解:test 集大小取决于应用场景对评估精度的要求。比如一个内部工具可能不需要高置信度评估,而一个医疗诊断系统则可能需要非常高置信度的评估。
四、是否可以不要测试集?[03:11]
1. 只有训练集 + 开发集的情况
- 对于某些应用,如果不需要对最终系统性能有高置信度评估,可能只需要 train/dev 集
- 这种情况下,没有 test 集也许是可以接受的
2. 常见误区:把 test 集当 dev 集用
易错点:很多人在实践中声称使用 train/dev/test 划分,但实际上一直在 test 集上迭代调参——这就等于没有 test 集,那个"test 集"实质上是 dev 集。
- 如果你在某个集合上反复调参、选择模型,那它就应该被称为 dev 集,而不是 test 集
- 机器学习历史上,很多人不够严谨,把实际用作 dev 的集合错误地称为 test 集
3. 吴恩达的个人建议
- 他不推荐完全不设 test 集
- 在构建系统时,有一个独立的 test 集能提供无偏的性能估计,让人更安心
- 但如果 dev 集非常大,以至于你不太可能过拟合 dev 集,那么只有 train/dev 集也并非完全不合理
- 不过,这仍然不是推荐做法
思考:这里的关键逻辑是——test 集的价值在于"无偏估计"。如果你在 dev 集上反复调参,你的模型会逐渐过拟合 dev 集,dev 集上的性能就不再是无偏的了。此时独立的 test 集才能给出真实的泛化性能。但如果 dev 集足够大,过拟合的风险就低,独立 test 集的必要性也就降低了。
五、本节总结 [04:48]
| 要点 | 说明 |
|---|---|
| 旧法则失效 | 70/30 等传统划分在大数据时代不再适用 |
| 新趋势 | 训练集占比更大,dev/test 占比更小 |
| dev 集原则 | 足够大,能评估不同想法、选择 A/B 方案 |
| test 集原则 | 足够大,能对最终系统性能给出高置信度评估 |
| 比例参考 | test 集可能远小于数据的 30% |
| 无 test 集 | 某些情况下可接受,但不推荐;若 dev 集足够大不易过拟合 |
六、延伸与背景补充
【拓展】为什么 dev/test 必须同分布?
本节开头提到"dev 和 test 集应来自同一分布"。如果两者分布不同,会导致:
- dev 集上表现好的模型,在 test 集上可能表现差
- 你优化的方向(基于 dev)与最终评估(基于 test)不一致
- 团队会"朝着错误的目标前进"
【拓展】dev/test 集大小与评估方差的关系
- 评估指标(如准确率)的标准差约为 $\sqrt{p(1-p)/n}$,其中 $n$ 是样本数
- 样本数 $n$ 越小,评估方差越大,越容易"看走眼"
- 这就是为什么 dev 集不能太小——否则 A/B 方案之间的微小差异可能只是噪声
【拓展】过拟合 dev 集的现象
- 当你在 dev 集上反复试验大量模型/超参数时,模型会间接"记住"dev 集的特性
- 表现为:dev 集性能持续提升,但 test 集性能停滞甚至下降
- 缓解方法:使用更大的 dev 集,或引入独立 test 集作为最终把关
【拓展】实际工程中的常见划分
- 大数据场景:98/1/1 或 99/0.5/0.5
- 中等数据:90/5/5 或 95/2.5/2.5
- 小数据(<10,000):仍沿用 60/20/20 或 70/30
易错点:不要机械套用固定比例。划分的核心是"功能导向"——dev 集服务于模型选择,test 集服务于最终评估,各自够用即可。
关键标签 / 关键词
深度学习 #吴恩达 #结构化机器学习 #开发集 #测试集 #训练集 #数据划分 #偏差方差 #模型评估 #DevSet #TestSet #TrainSet #大数据 #过拟合 #置信度 #机器学习最佳实践
生成时间:2026-10-10 22:24:45 生成平台:VideoNote www.xygy.top