陈曦,朱小栋
第十部分 按组件的误差分析
第五十三章 按组件的误差分析
前面提到过的例子:

这个过程中,可能是猫咪检测(detector)出错,也可能是猫品种分类器(classifier)出错。因此可以按组件进行误差分析,查看每个组件得输出,并看看是否可以决定哪个部门出错了。
第五十四章 误差归因到某个部分
接着上一章的例子,假如第一步猫咪检测的边框图局部包含了猫,那么此时不能确定出错的部位是哪个组件(既可能是猫咪检测器的问题,也可能是猫种类分类器的问题)。那么此时该如何做能够更加明确将误差归因于其中某一个组件呢?
利用手工标记的边框图替代猫检测器的输出,再用猫品种分类器处理进行分类。如果分类正确,则说明猫品种分类器没有问题,是猫咪检测出了问题。如果分类错误,说明猫品种分类器出了问题。
第五十五章 误差归因的一般情况

根据上一章(流水线排除法)的思路,假如我们的组件有三个,同样也是逐次用“完美”输出依次代替A和B直到我们知道哪个组件出问题为止。
假如是并行的流水线情况,那么方法也是类似的。

A:Detect cars;B:Detect pedestrians;C:Plan path for car
也是同样给A一个“完美”输出,如果情况改进则说明原来的A有问题。否则的话,进行人为修改B使之成为“完美”输出。如果算法现在给出了正确的输出,那么归因于B。否则归因于C。
第五十六章 组件误差分析与人类水平对比
上一章的自动驾驶应用程序的例子,除了调试流水线的方法以外,我们可以用另一种方法判断组件的性能。即组件与人类水平对比的方法,在检测汽车时与人类水平表现相差多少?在检测行人时与人类水平表现相差多少?整个系统的性能与人类表现相差多少?
对人类水平的表现进行基准测试,发现哪个组件低于此就专注于提高该组件的性能。
第五十七章 发现有缺陷的机器学习流水线
假如利用上一章与人性能做比较时发现,三个部分组件都能够达到人类水平。但是这个应用的整体性能远远低于人类水平,那么这个ML流水线存在缺陷。可能是没有包含足够的的信息(需重新设计流水线),比如未假如检测车道标记的组件:

tips:在上面的自动驾驶案例中,理论上可以通过将原始相机图像馈送到路径规划组件中来解决该问题。 但是,这违反了第51章中描述的 “任务简单性” 的设计原则,因为路径规划模块现在需要输入原始图像并且需要解决非常复杂的任务。 这就是添加车道标记检测组件是更好选择的原因 —— 它有助于将重要的和以前缺少的有关车道标记的信息提供给路径规划模块,但可以避免使任何过于复杂而无法构建/训练的特定模块。
第五十八章 建立超级英雄团队 —— 让你的队友阅读这本书吧!
