视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程(Deep Learning Specialization)—— 结构化机器学习项目(Structuring Machine Learning Projects)
  • 章节:2.4 训练和测试的不同分布(Training and Testing on Different Distributions)
  • 课程语言:官方中英字幕

内容摘要(TL;DR)

深度学习算法极度依赖训练数据,很多团队会把能找到的所有数据都塞进训练集,即便这些数据与开发集/测试集分布不同。本视频通过「手机 App 猫咪识别」和「语音后视镜」两个案例,讲解当训练集与开发/测试集分布不一致时,应如何合理划分数据:让开发集和测试集来自真正关心的目标分布,训练集则可补充大量其他分布的数据。核心原则是——开发集和测试集要指向你真正想要优化的目标分布。


一、背景:深度学习对数据的"饥饿"与分布问题 [00:00]

要点:

  • 深度学习算法对训练数据有巨大的需求,数据越多通常效果越好。
  • 很多团队为了获取更多训练数据,会不加区分地把能找到的所有数据都塞进训练集。
  • 即使这些数据(甚至很大一部分数据)与开发集、测试集不属于同一分布,也照样使用。
  • 在深度学习时代,越来越多的团队在训练数据来自与开发/测试集不同分布的情况下工作。

理解:这是从"小数据、同分布"的传统机器学习范式,转向"大数据、允许分布偏移"的深度学习范式的必然结果。数据量往往比数据纯度更重要,但分布不一致会带来评估和调优上的陷阱。

关键前提:本视频讨论的是"训练集与开发/测试集分布不同"的场景,这是深度学习实践中非常常见、但容易被忽视的问题。理解它对于正确设置开发集、判断模型真实性能至关重要。


二、案例一:手机 App 猫咪识别 [00:42]

2.1 问题设定

场景:构建一个手机 App,用户上传手机拍摄的照片,需要识别照片中是否是猫。

两个数据来源:

数据来源 特点 数量
手机 App 上传(右侧) 非专业拍摄、不清晰、可能模糊,由业余用户拍摄 10,000 张
网页爬取(左侧) 专业构图、高分辨率、专业拍摄 200,000 张

核心矛盾(两难困境):

  • 你真正关心的是模型在手机 App 分布的图像上表现好,因为最终用户上传的就是这类图片。
  • 但手机 App 数据只有 10,000 张,训练集太小。
  • 网页爬取的 200,000 张虽然多,却不是你真正想要的分布。

思考:这正是"数据量"与"数据分布匹配度"之间的权衡。吴恩达的答案倾向于——分布匹配度在开发/测试集上不可妥协,但训练集可以放宽。

2.2 方案一(不推荐):混合后随机划分 [02:42]

做法:

  • 把两个数据集合并,共 210,000 张图像。
  • 随机打乱后划分为训练集、开发集、测试集。
  • 假设开发集和测试集各 2,500 张,则训练集为 205,000 张。

优点:

  • 训练集、开发集、测试集都来自同一分布,便于管理。

缺点(巨大):

  • 开发集的 2,500 张中,绝大部分来自网页分布,而非你真正关心的手机 App 分布。
  • 按期望计算:约 2,381 张来自网页,只有约 119 张来自手机 App 上传。

易错点:开发集是你团队瞄准的"靶心"。如果开发集大部分来自网页分布,就等于告诉团队"花大部分时间优化网页图像分布",而这根本不是你想要的目标。这是方案一致命的问题。

结论:不推荐方案一。

理解:开发集的作用不仅是评估,更是"目标指示器"。它的分布决定了整个团队优化方向。分布选错,优化方向就错。

2.3 方案二(推荐):训练集混合,开发/测试集用目标分布 [04:55]

做法:

  • 训练集:200,000 张网页图像 + 5,000 张手机 App 图像(共 205,000 张)。
  • 开发集:全部来自手机 App 分布。
  • 测试集:全部来自手机 App 分布。

优点:

  • 开发集和测试集指向你真正想要的目标分布(手机 App 图像)。
  • 明确告诉团队:我的开发集是手机 App 上传的数据,这才是你真正关心的分布,请构建在手机 App 分布上表现好的系统。

缺点:

  • 训练集分布与开发/测试集分布不一致。

结论:

  • 这种划分方式长期来看会带来更好的性能。
  • 后续课程会讨论处理"训练集与开发/测试集分布不同"的具体技术。

推导:为什么这样更好?因为评估标准(开发/测试集)与最终目标(真实用户数据)一致,模型选择、超参数调优、早停等都会朝着正确方向进行。训练集分布偏移带来的影响,可以通过后续技术(如误差分析、数据加权等)缓解。


三、案例二:语音激活后视镜 [06:48]

3.1 问题设定

场景:构建一款语音激活的后视镜产品(中国已有真实产品),用户可以通过语音向后视镜发出导航指令,例如"请帮我找到去加油站的方向"。

数据来源:

  • 其他语音识别应用的数据:多年积累、从数据供应商购买(X 为音频片段,Y 为转录文本)、智能音箱数据、语音键盘数据等。
  • 语音后视镜数据:来自真实后视镜产品,用户多为导航查询,包含大量街道地址(如"请导航到这个街道地址""请导航到加油站")。

关键差异:

  • 后视镜数据分布与左侧其他语音数据分布非常不同(更多街道地址、导航类查询)。
  • 但后视镜数据才是你真正关心的,因为产品必须在这类数据上表现好。

3.2 数据划分方案

方案 A:

  • 训练集:500,000 条来自其他语音应用的数据。
  • 开发集 / 测试集:各约 10,000 条,来自真实语音后视镜。

方案 B(更充分) :

  • 如果有约 20,000 条后视镜数据,不必全部放入开发/测试集。
  • 可以取一半放入训练集:
    • 训练集:500,000 条其他数据 + 10,000 条后视镜数据。
    • 开发集:5,000 条后视镜数据。
    • 测试集:5,000 条后视镜数据。

优点:

  • 训练集比只用后视镜数据大得多(超过 500,000 条 utterances)。
  • 开发/测试集仍来自真正关心的目标分布。

思考:方案 B 体现了"目标分布数据要优先保证开发/测试集的代表性,但多余部分可以回流到训练集"的思路。这与案例一中"5,000 张手机 App 图像放入训练集"的做法一致。


四、核心原则总结 [10:31]

要点:

  1. 允许训练集数据来自与开发/测试集不同的分布,可以让你拥有更多的训练数据。
  2. 在上述案例中,这种做法会让学习算法表现更好。
  3. 开发集和测试集应当来自你真正关心的目标分布,它们是指引团队优化方向的"靶心"。
  4. 训练集可以混合其他分布的数据来扩充规模。

核心考点:

  • 开发集/测试集 = 目标分布(你真正关心的)
  • 训练集 = 目标分布数据 + 其他分布数据(可混合)
  • 不要为了"同分布好管理"而牺牲开发集的目标指向性

遗留问题(下节课预告):

  • 你可能会问:是否应该总是使用所有能找到的数据?
  • 答案很微妙,并不总是"是"。
  • 下一视频将介绍反例。

理解:这说明"训练集分布可以不同"是有条件的,并非无条件成立。需要结合后续课程的具体技术来判断。


五、技术概念补充与拓展

5.1 相关核心概念解释

  • 分布(Distribution) :数据的统计特征。训练集分布与开发/测试集分布不同,称为分布偏移(Distribution Shift) 或协变量偏移(Covariate Shift) 。
  • 开发集(Dev Set / Development Set) :用于模型选择、超参数调优的验证集,是团队优化的"靶心"。
  • 测试集(Test Set) :用于最终评估模型泛化性能,通常与开发集同分布。
  • Utterance(话语/语句) :语音识别中的一条语音样本及其对应文本。

5.2 【拓展】为什么开发集分布如此关键?

理解:在机器学习项目中,开发集不仅衡量性能,更定义了"什么是好"。如果开发集分布偏离目标,会出现:

  • 模型在开发集上表现好,但在真实场景(目标分布)上表现差。
  • 团队把精力花在优化错误的方向上(如网页图像特征,而非手机拍摄的模糊图像特征)。
  • 早停、模型选择等决策都会偏向错误的分布。

5.3 【拓展】常见踩坑点

踩坑 1:为了"数据同分布"而把目标分布数据稀释到开发集里,导致开发集失去目标指向性。 踩坑 2:把大量非目标分布数据放进开发/测试集,误以为"数据多就好"。 踩坑 3:忽视训练集与开发集分布差异,直接用开发集性能推断真实场景性能。 踩坑 4:认为"用上所有数据总是对的"——下一课会给出反例。

5.4 【拓展】案例迁移:其他常见场景

  • 自动驾驶:训练集用大量模拟器/公开数据集,开发/测试集用真实路测数据。
  • 医疗影像:训练集用公开数据集,开发/测试集用本院设备采集的数据。
  • 推荐系统:训练集用历史日志,开发/测试集用近期真实流量。

思考:这些场景的共同点是——目标分布数据稀缺且昂贵,但必须保证开发/测试集来自目标分布,否则评估失真。


六、关键标签 / 关键词

深度学习 #吴恩达 #结构化机器学习 #训练集 #开发集 #测试集 #数据分布 #分布偏移 #协变量偏移 #数据划分 #机器学习项目 #DeepLearning #DistributionShift #DevSet #TestSet #TrainingSet #DataMismatch


附:本视频时间线速览

时间 内容
[00:00] 背景:深度学习对数据的饥饿与分布问题
[00:42] 案例一:手机 App 猫咪识别问题设定
[02:42] 方案一(不推荐):混合后随机划分
[04:55] 方案二(推荐):训练集混合,开发/测试集用目标分布
[06:48] 案例二:语音激活后视镜
[10:31] 核心原则总结与下节预告

生成时间:2026-10-10 22:33:37 生成平台:VideoNote www.xygy.top