Chapter 53
Error analysis by parts
组件错误分析
如果系统是使用复杂的机器学习流水线构建的,此时为了提高系统的性能,通过将错误归因于流水线的特定组件,可以确定工作的优先级,大大提高工作效率。以暹罗猫分类器为例:
通过执行组件错误分析,你可以尝试将算法犯的每个错误归因于流水线中的两个组件中的一个(有时候是两个)。例如,尽管正确的label是y=1,但算法却错误的将这张照片分类为不包含暹罗猫(y=0)。
假设暹罗猫检测器检测出的猫如下:
这意味着提供给猫种类分类器的是如下图片:
然后猫种类分类器将该图片正确地分类为不包含暹罗猫。因此,猫种类分类器是无可指责的:提供一堆石头的照片并输出非常合理的label y=0。确实,人对上面的裁剪图片进行分类也会预测y=0。因此,你可以清楚地将该错误归因于猫检测器。
Chapter 54
Attributing error to one part
将错误归因于某个组件
继续这个例子:
假设猫检测器输出如下边界框:
因此猫种类分类器被给予如下裁剪图片,于是其错误地输出y=0,即图片里没有猫。
猫检测器做的很差。然而,技术娴熟的人仍可以从如此差的裁剪图片中识别出暹罗猫。所以我们应该将该错误归因于猫检测器,还是猫种类分类器,还是归因于两者?答案是模棱两可的。
如果像这些模棱两可的样例数量较小,你可以做任何想你想做的决定并得到类似的结果。但这里有一个更正式的测试,它可以让你更明确地将错误归因于某个组件。
换句话说,进行一项试验,实验中给猫种类分类器提供一个“完美的”输入。有两种情况:case 1: 即使提供了“完美的”边界框,猫种类分类器仍错误地输出y=0。这种情况下,很明显猫种类分类器是错的。case 2: 提供一个“完美的”边界框,猫种类分类器现在可以正确输出y=1。这表明如果只有猫检测器提供一个更完美的边界框,那么整个系统的输出才是正确的。因此,将错误归因于猫检测器。
通过在错误分类的开发集图片上执行该分析,你现在可以明确地将每一个错误归因于一个组件。这允许你评估由于流水线中每个组件引起的错误分数,因此决定在哪儿集中注意力。
Chapter 55
General case of error attribution
错误归因的一般情况
以下是错误归因的一般步骤。假设流水线有三个步骤A、B和C,A直接输入给B,B直接输入给C。
对每个系统在开发集上所犯的错误:
Chapter 56
Error analysis by parts and comparison to human-level performance
组件错误分析和与人类水平的对比
对学习算法进行错误分析就像使用数据科学来分析ML系统的错误,以获得有关下一步该做什么的见解。 从最基本的角度来看,零件的错误分析告诉我们哪些组件的性能是最值得努力改进的。
我们可以看人类对任务的性能进行基准测试。 我们前面的大多数例子都有这个隐含的假设。 如果您正在构建ML系统,其中最终输出或某些中间组件正在做甚至人类无法做好的事情,那么这些程序中的一些将不适用。
这是解决人类可解决问题的另一个优势——你有更强大的错误分析工具,因此你可以更有效地优先考虑团队的工作。
Chapter 57
Spotting a flawed ML pipeline
发现有瑕疵的ML流水线
假如你的ML流水线的每个独立组件表现在人类水平或接近人类水平,但是整体流水线却远远低于人类水平,这通常意味着流水线有瑕疵,需要重新设计。错误分析也可以帮助你理解你是否需要重新设计管道。最终,如果你不认为流水线整体将会达到人类水平的表现,即使每个独立组件具备人类水平表现(记住你正在和被给予组件相同输入的人类进行比较),那么流水线是有瑕疵的并应该被重新设计。
恭喜完成本书的阅读!
唯一比成为一个超级英雄更好的事是成为超级英雄团队的一员。希望你可以将本书分享给你的朋友和队友,并帮助创造其他的超级英雄。那我的本书学习之旅也到此结束,看完觉得不过瘾的童鞋可以下载原版观看哟~~
参考:
1.http://www.mlyearning.org/
2.https://github.com/xiaqunfeng/machine-learning-yearning
The End