Chapter 54、Attributing error to one part
将错误归因于某个组件
让我们继续使用这个例子:
假设猫检测器输出如下边界框:
因此猫种类分类器被给予如下裁剪图片,于是其错误地输出y=0,即图片里没有猫。
猫检测器做的很差。然而,技术娴熟的人仍可以从如此差的裁剪图片中识别出暹罗猫。所以我们应该将该错误归因于猫检测器,还是猫种类分类器,还是归因于两者?答案是模棱两可的。
如果像这些模棱两可的样例数量较小,你可以做任何想你想做的决定并得到类似的结果。但这里有一个更正式的测试,它可以让你更明确地将错误归因于某个组件。
- 用手工标注的边界框替代猫检测器的输出。
- 用相应的裁剪图片去跑猫种类分类器。如果猫种类分类器仍将其错误分类,那么将错误归因于猫种类分类器。否则,将错误归因于猫检测器。
换句话说,进行一项试验,实验中给猫种类分类器提供一个“完美的”输入。有两种情况:
- case 1: 即使提供了“完美的”边界框,猫种类分类器仍错误地输出y=0。这种情况下,很明显猫种类分类器是错的。
- case 2: 提供一个“完美的”边界框,猫种类分类器现在可以正确输出y=1。这表明如果只有猫检测器提供一个更完美的边界框,那么整个系统的输出才是正确的。因此,将错误归因于猫检测器。
通过在错误分类的开发集图片上执行该分析,你现在可以明确地将每一个错误归因于一个组件。这允许你评估由于流水线中每个组件引起的错误分数,因此决定在哪儿集中注意力。