41. 辨别偏差、方差和数据不匹配导致的误差
假设人类在猫检测任务中表现是几乎完美的(≈0%的误差),因此最优错误率约为 0%。 假设你有:
- 训练集误差 1% ;
- 训练-开发集误差 5%;
- 开发集误差 5%。
上述数据告诉了你什么?这里,你发现你的算法存在高方差问题。之前讨论的解决高偏差的那些技术能够帮助你取得积极的进展。
现在,假设你有:
- 训练集误差 10% ;
- 训练-开发集误差 11%;
- 开发集误差 12%。
这就告诉了你:你的算法在训练集上存在高可避免偏差问题,即,算法在训练集上表现很差,之前讨论的解决高可避免偏差的那些技术能够帮助你取得积极的进展。
在上述的两个例子中,算法只是分别遇到了高方差和高可避免偏差的问题,而算法可能会遇到导致同时出现高可避免偏差、高方差和数据不匹配的子集,比如:
- 训练集误差 10% ;
- 训练-开发集误差11%;
- 开发集误差 20%。
通过将它们用表格的方式列出来,可能更容易理解不同类型的误差是如何互相关联的:
· | 分布 A :互联网图片+移动应用程序图片 | 分布 B:移动应用程序图片 |
---|---|---|
人类水平 | 人类表现水平误差(0%) | · |
算法对训练集的数据上表现 | 训练误差(10%) | · |
算法对与训练集相同分布的新数据的表现 | 训练-开发集误差(11%) | 开发-测试集误差(20%) |
- 11%-20% 之间体现的是数据不匹配问题;
- 0%-10% 之间体现了可避免的偏差问题;
- 10%-11% 之间体现了方差问题;
继续以猫图像检测器为例,您可以看到 x 轴上有两种不同的数据分布。 在 y 轴上,我们有三种类型的错误:人类水平误差、算法对训练集的数据上表现、算法对与训练集相同分布的新数据的表现。我们将之间的关系和上一节的内容做一个对应——数据百分值之间体现了不同的问题。
愿意的话,你也可以填写该表中剩下的两个单元格。填写右上角的单元格时,可以找人来给你的移动应用程序图片进行人工识别并标注标签,然后根据计算的准确率来填写(该单元格体现了移动应用程序图片上的人类表现水平);填写另一个单元格时,可以选取移动应用程序图片(分布 B)的一小部分(子集)放入训练集中,再经过神经网络的学习后,计算出对该子集的训练误差来填写此单元格。通过填写这两个额外的单元格,有时可以得到关于该算法在两种不同分布(分布 A 和分布 B )上所做操作的更深入更详细的信息。
通过了解算法遭受的错误类型,您将更好地决定是关注于减少偏差、减少方差还是减少数据不匹配的问题。