吴恩达机器学习训练秘籍整理十一到十九章(二)

第十一章:

如何修改开发集,测试集和度量指标

我们在开发一个新项目的时候,会尽快选好一个开发集和测试集。这样可以帮助团队制定一个明确的目标。

到后面我们会发现初始的开发集,测试集和度量指标设置与期待目标有一定的差距。这时候我们需要修改我们的开发集,测试集和度量指标。

在项目中改变开发集、测试集或者度量指标是很常见的。一个初始的开发集、测试集和度量指标能够帮助团队进行快速迭代,当你发现它们对团队的导向不正确时,不要担心,你只需要对其进行修改并确保团队了解新的方向是什么。

第十二章:

建立测试集和开发集小结

  • 选择作为开发集和测试集的数据,应当与你预期在将来获取并良好处理的数据有着相同的分布,但不需要和训练集数据的分布一致。

  • 开发集和测试集的分布应当尽可能一致。

  • 为你的团队选择一个单值评估指标进行优化。需要考虑多项目标时,不妨将它们整合到一个表达式里(比如对多个误差指标取平均),或者定义满意度指标和优化指标。

  • 机器学习是一个高速迭代的过程:在最终令人满意的方案出现前,你可能要尝试很多想法。

  • 拥有开发集、测试集和单值评估指标可以帮你快速评估一个算法,从而加速迭代过程。

  • 当你探索一个全新的应用时,尽可能在一周内建立你的开发集、测试集和指标,而在成熟的应用上则可以花费更长的时间。

  • 传统的 70% / 30% 训练集/测试集划分对大规模数据并不适用,实际上开发集和测试集的比例会远低于 30%。

  • 开发集的规模应当大到能够检测出算法精度的细微改变,但也不用太大;测试集的规模应该大到能够使你对系统的最终性能作出一个充分的估计。

  • 当开发集和评估指标不再能给团队一个正确的导向时,就尽快修改它们:(i) 如果你在开发集上过拟合,则获取更多的开发集数据。(ii) 如果开发集和测试集的数据分布和实际关注的数据分布不同,则获取新的开发集和测试集。 (iii) 如果评估指标不能够对最重要的任务目标进行度量,则需要修改评估指标。

第十三章:

快速构建并迭代你的第一个系统。我们通过构建的基础系统来帮助我们找到下一步的研究方向。

第十四章:

误差分析:根据开发集样本评估想法

收集100个开发集中被误分类的样本,即造成系统误差的样本。人为的查看这些样本,并计算其中狗的比例。查看误分类的过程就叫做误差分析。

误差分析(Error Analysis) 指的是检查算法误分类的开发集样本的过程,以便你找到造成这些误差的原因。这将帮助你确定项目优先级,并且获得关于新方向的灵感。

第十五章:

在误差分析过程中并行评估多个想法。

误差分析并不会产生一个明确的数学公式来告诉你什么任务的优先级最高。你还需要考虑在不同类别上的预期进展以及解决每个类别所需的工作量。

第十六章:

清洗误标注的开发集和测试集样本

第十七章:

将大型开发集拆分为两个子集。

假设我们有5000张开发集,误差为20%。那么我们就会有1000张错误分类的图片。由于数据量特别大,我们可以将1000张开发集分为两部分,我们只观察其中的一部分就可以。

Eyeball数据集:有500张开发集,其中有100个误分类的开发集。

Blackball数据集:剩余的4500张开发集。

将数据分类为Eyeball和Blackball的原因是,当你在 Eyeball 开发集中建立对样本的直观认识之后,则容易更快地过拟合。当你发现 Eyeball 开发集的性能比 Blackbox 开发集提升得更快,说明已经过拟合 Eyeball 开发集了。此时可能需要丢弃它并寻找一个新的 Eyeball 开发集,比如可以将更多 Blackbox 开发集中的样本移到 Eyeball 开发集中,也可以获取新的标注数据。

第十八章:

Eyeball和Blackball应该设为多大?

Eyeball 开发集应该大到能够让你对算法主要的错误类别有所察觉。

一个有 1000-10000 个样本的 Blackbox 开发集通常会为你提供足够的数据去调超参和选择模型,即使数据再多一些也无妨。而含有 100 个样本的 Blackbox 开发集虽然比较小,但仍然有用。

Eyeball 开发集更加重要。如果你只有一个 Eyeball 开发集,你可以在这个开发集上进行误差分析、模型选择和超参数调整,缺点是过拟合开发集的风险更大。

第十九章:

基础误差分析小结

  • 当你开始一个新项目,尤其是在一个你不擅长领域时,很难正确猜测出最有前景的方向。

  • 所以,不要在一开始就试图设计和构建一个完美的系统。相反,应尽可能快(可能在短短几天内)地构建和训练一个基本系统。然后使用误差分析去帮助你识别出最有前景的方向,并据此不断迭代改进你的算法。

  • 通过手动检查约 100 个算法错误分类的开发集样本来执行误差分析,并计算主要的错误类别。用这些信息来确定优先修正哪种类型的错误。

  • 考虑将开发集分为人为检查的 Eyeball 开发集和非人为检查的 Blackbox 开发集。如果在 Eyeball 开发集上的性能比在 Blackbox 开发集上好很多,那么你已经过拟合 Eyeball 开发集,并且应该考虑为其获得更多的数据。

  • Eyeball 开发集应该足够大,以便于算法有足够多的错误分类样本供你分析。对很多应用来说,含有1000-10000个样本的 Blackbox 开发集已足够。

  • 如果你的开发集不够大到可以按照这种方式进行拆分,那么就使用 Eyeball 开发集来用于人工误差分析、模型选择和调超参。

猜你喜欢

转载自blog.csdn.net/donkey_1993/article/details/83081963