将大型开发集拆分为两个子集,专注其一

假设你有一个含有 5000 个样本的大型开发集,该开发集的误差为 20% ,这意味着算法将误分类 1000 张开发集图片。人工手动检查这 1000 张图片会花费很长时间,所以我们在误差分析时没必要使用所有的图片。

在这种情况下,我会将开发集明确地分成两个子集,但只人工检查其中的一个。你将使得那些经人工查看的图片更快地过拟合,而另一部分没有被人工查看的图片可以在调参时使用。

继续上面的例子:在该例子中,算法将 5000 个开发集样本中 的1000 个样本误分类。假设我们想要对经人工检查的大约 100 个错误样本(整体的10%)进行误差分析,你应该随机选择 10% 的开发集,并将其放入 Eyeball 开发集中(译者注:直译为眼球不妥,保留原文),以提醒我们自己,我们正在用眼睛看着它。(对于语音识别项目,你可能需要听一些音频的剪辑,此时则将数据集称为 Ear 开发集)。因此 Eyeball 开发集将有 500 个样本,其中,预计被算法误分类样本约 100 个。

第二个子集叫做 Blackbox 开发集(直译为黑箱,保留原文),它由剩余的 4500 个样本组成。你可以使用 Blackbox 开发集,通过测量错误率来自动评估分类器,也可以使用它来选择算法或调整超参数。但是,你应该避免将目光局限于此。我们使用术语“ Blackbox ”是因为我们只使用该子集来获得分类器的“ Blackbox ”评价。

为什么我们要把开发集明确分为 Eyeball 开发集和 Blackbox 开发集呢?因为当你在 Eyeball 开发集中建立了对样本的直观认识之后,可使得Eyeball开发集更快地过拟合。如果你发现 Eyeball 开发集的性能比 Blackbox 开发集提升得更快,说明已经过拟合到 Eyeball 开发集了。此时可能需要丢弃它并寻找一个新的 Eyeball 开发集,比如可以将更多 Blackbox 开发集中的样本移到 Eyeball 开发集中,也可以考虑去获取新的标注数据。

将开发集明确地分为 Eyeball 和 Blackbox 开发两个子集将很有帮助,它使你了解在人为的误差分析过程中 Eyeball 开发集何时开始发生过拟合。