问题导读
1.机器学习流水线复杂,该如何改进系统性能?
2.如何查找流水线中组件的误差?
3.对于模棱两可的问题,该如何定位某个组件的误差?
上一篇:吴恩达《Machine_Learning_Yearning》中文版:第50-52章流水线组件的选择
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25044
关注最新经典文章,欢迎关注公众号
53.根据组件进行误差分析
假设你的系统由复杂的机器学习流水线所构建,并且你希望提高该系统的性能,那应该从流水线的哪一部分开始改进呢?你可以通过将误差归因于流水线的特定组件,来决定工作的优先级。 我们使用暹罗猫分类器的例子来进行说明:
在上图的流水线中,第一部分是猫检测器,它能够检测出猫,并将它们从图像裁剪出来;第二部分是猫的品种分类器,决定它是否是暹罗猫。 改进两个组件中的任何一个都有可能花费数年的时间。 你该决定关注哪个(些)组件呢?
通过按组件进行误差分析,你可以尝试将每一个算法造成的误差归因于流水线的某个(有时是两个)组件。例如,即使某张图片样本的正确标签为含有暹罗猫(
) ,算法依旧将其标签误分类为不含有暹罗猫(
).
让我们人为地检查一下算法两个步骤的执行过程。假设暹罗猫检测器从下图中检测出一只猫:
接下来,猫品种分类器将此图像正确分类为不包含暹罗猫。 因此,猫品种分类器是正常工作的:给它一堆岩石并输出一个非常合理的标签(). 实际上,对上面裁剪的图像进行分类的人也会预测(). 因此,你可以清楚地将此误差归因于猫探测器组件。 另一方面,如果猫探测器输出了以下边界框:
你会得出如下结论,猫探测器已经完成了它的工作,并且它是有缺陷的猫品种分类器。
如果你对 100 个误分类的开发集图像遍历检查,并发现 90 个误差可归因于猫探测器,并只有 10 个误差可归因于猫品种分类器。 那么你可以有把握地得出结论,应该更加专注于改进猫探测器。
此外,你现在还可以方便地找到 90 个样本,其中猫探测器将输出不正确的边界框。 你可以使用这 90 个样本对猫探测器进行更深层次的误差分析,以了解该如何改进。 到目前为止,我们关于如何将误差归因于流水线的特定组件的描述是非正式的:查看每个组件的输出,并看看是否可以决定哪个部分出错了。 这种非正式的方法可能就是你所需要的。但在下一章中,你还将看到一种更正式的误差归因方式。
54.误差归因至某个组件
让我们继续使用这个例子:
假设猫检测器输出了这样的边界框:
被裁剪的图片将会送给猫品种分类器,因此它给出了错误的分类结果 , 即图片中没有猫。
猫检测器的效果很糟糕。 然而,一个技术娴熟的人类仍然可以从这种糟糕的裁剪图像中识别出暹罗猫。 那么我们是否可以将此误差归因于猫检测器或猫品种分类器两者之一(或两者兼有)呢? 答案是模棱两可的。
如果像这样模糊情况的数量很少,你可以做出你想要的任何决定并获得类似的结果。 但这里有一个更正式的测试方法,可以让你更明确地将误差归因于某一个组件: - 用手动标记的边界框替换猫检测器的输出。
- 通过猫品种分类器处理相应的裁剪图像。 如果猫品种分类器仍将其错误地分类,则将误差归因于猫品种分类器。 否则,将此误差归因于猫检测器。
换而言之,进行一个实验,在其中为猫品种分类器提供 “完美” 输入。 有两种情况: 情况1:即使给出了一个 “完美” 的边界框,猫品种分类器仍然错误地输出 . 在这种情况下,猫品种分类器很明显存在着问题。 情况2:给定一个 “完美” 的边界框,品种分类器现在正确输出 . 这表明只要猫检测器给出了一个更完美的边界框,那么整个系统的输出就是正确的。 因此,将误差归因于猫检测器。通过对开发集误分类的图像执行此分析,你现在可以将每个误差明确地归因于一个组件。 这允许你对流水线不同组件所造成的误差程度进行估计,从而决定将注意力集中在哪儿。
|