53 局部错误分析

假设你建立了一个复杂的机器学习流水线并想提高系统性能,对流水线的哪个部分进行操作呢?可以将找到错误所归属的流水线的某一部分,然后在该部分上调优。

例如我们的猫分类器:

机器学习流程错误分析

第一部分是检测器,检测图中的猫,并裁剪下来,第二部分是分类器,输出是否是猫。你可能花数年时间去优化某一个部分,那么如何确定优化哪个部分呢?

实施错误分析,将导致错误的流程找出来,重点优化。举个模型出错误的例子:本来图片中有猫,算法却给出y=0,即没有猫。

机器学习流程错误分析

我们手动检查算法的两个部分,检测和分类,假设检测给出如下结果:

机器学习流程错误分析

可以看到检测器只检测到了石头,然后分类器给出了y=0,即不是猫,可见分类器给出了正确的分类,那么问题出在检测器了。

如果检测器给出下面的预测:

机器学习流程错误分析

检测器正确的框出了猫,问题就出在分类器了。

如果开发集中100个错分类的图片中,90个都是检测器的问题,10个是分类器的问题。显然,应该重点优化检测器。反之,则应该重点优化分类器。

上述将错误归因的方法是非正式的:观测检测器和分类器的输出,看哪个出错。这种方法可能正是你要做的,但是下一节,我们将介绍一种正式的错误归因方法。

54 将错误归因于某一个部分

假设检测器给出下面输出:

机器学习流程错误分析

然后分类器给出y=0,即没有猫。

检测器给出了不太准确的框,分类器给出错误的结果,这应该归罪与检测器还是分类器呢?这是一个模棱两可的问题。

我们给出一个正式的测试可以高效的将错误归类:

  1. 将检测器替换为手工标注的检测框。

机器学习流程错误分析

  1. 将经过手工检测框裁剪下来的图片输入分类器,如果仍然分类错误,则归因于分类器,应该优化分类器,否则,归因于检测器。

换句话说,我们提的正式的方法是给一个“完美的”检测器,看看下面的情况:

  • 即使给出了一个完美的检测框,分类器仍然分类错误,显然,归因于分类器
  • 给了一个完美的检测框,分类器输出正确分类。这表明只有检测器给出一个更好的检测框,整体的系统表现才能更好,这就归因于检测器了。

在开发集错分类的图片上进行上述的分析,可以明确的将错误归因于机器学习流程的某个部分。这能够使我们估计整个流程不同部分上的错误比例,从而确定要优化的部分。

55 错误归因的一般化

假设流程有下面三个步骤,A直接喂给B, B直接喂给C

机器学习流程错误分析

模型在开发集上的错误,作如下分析:

  1. 手动修改A,将A的输出“完美化”,比如给出完美的检测框,将完美的输出喂给B,然后C,如果模型给出了正确的输出,说明只要A输出好的结果,模型才能够输出正确的输出,所以可以将错误归因于A
  2. 手动修改B的输出为完美,如果模型输出了更好的结果,那么错误归因于B
  3. 错误归因于C

下面看一下复杂的列子

机器学习流程错误分析

可以将上图蓝色部分映射到A,B,C:

​ A:检测车辆

​ B:检测行人

​ C:规划路径

假设自动驾驶汽车在封闭路径上,选择了一个和熟练驾驶员不同的转向,称之为一种场景,我们可以这样进行分析:

  1. 手动修改检测车辆部分,使其有完美输出,继续B,C,若算法给出了更好的路径,说明只要A的输出更准确,算法才能提高,归因于A。
  2. 将B的输出手动改为完美,如果算法输出正确,那么归因于B。
  3. 归因于C

机器学习整个流程中应该是一个有向无环图,即流程应该是从左到右,前一个输入是后一个输入,这样才能将各个流程映射到A,B,C,才能够进行错误归因分析。

56 局部错误分析和人类水平对比

对算法进行错误分析,就像为了决定下一做什么而使用数据科学分析机器学习系统的错误,最基本的局部错误分析告诉我们机器学习流程中哪一个部分最值得去优化。

假设一个数据集包含了用户在网站上的购物情况,数据科学家可以有很多方法去分析数据,可以从数据的不同方面得出不同结论,比如是否应该涨价,是否给用户带来便利。没有绝对正确的分析数据集的方法,从不同的方法可以得到数据的不同的灵感。同样,机器学习没有绝对正确的错误分析方法,除了上面介绍的,我们应该也考虑尝试其他方法。

回到上结的自动驾驶应用

机器学习流程错误分析

除了严格按照上节的流程来调试这个流程以外,我们也应该有下面的问题:

  1. 车辆检测与人类水平差距多大
  2. 行人检测与人类水平差别多大
  3. 整个系统与人类水平差别多大,这里的人类水平值得是,如果给出检测到的车辆和行人,人类规划的路径。

如果发现与人类水平差距很大,那么就可以集中去调优。

当去自动化人类的工作并且和人类本身水平对比时,错误分析才能做好。之前的流程中都有这种隐含假设。

如果机器学习流程中,一些中间步骤或最终结果,即使人类也做不好,之前的错误分析流程就没法使用。

57 发现有缺陷的 ML流程

如果流程中每个部分都达到了人类水平,而整个流程的输出却远低于人类水平,怎么办呢?

通常是因为流程的设计有缺陷,错误分析可以帮助发现有缺陷的流程,以重新设计流程。

机器学习流程错误分析

对于自动驾驶,上面三个部分都可以独立给出人类水平的输出,但是合在一起,输出低于人类水平,该怎么办?

唯一的解释是流程有缺陷,在本例中给出车辆检测器和行人检测器的完美输出,还是没有给出好的规划路径,可以考虑除了两个检测器之外的其他信息,对路径规划比较重要。

比如路标

机器学习流程错误分析

总之,如果机器学习流程中每个部分都达到了人类水平,但是整个流程结合起来却没有那么好,就需要考虑流程的缺陷,重新设计流程。

相关文章:

  • 2021-11-27
  • 2021-03-31
  • 2022-02-07
  • 2021-12-31
  • 2021-04-06
  • 2022-12-23
  • 2021-10-01
  • 2021-08-16
猜你喜欢
  • 2021-07-09
  • 2021-04-16
  • 2021-11-15
  • 2021-12-20
  • 2021-08-24
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案