外观
你为改进模型所做的全部努力可能都白费了
Your Entire Model Improvement Efforts Might Be Going in Vain
2019 年那会儿,我在德国的一个 ML 研究组工作。

有一天,一位博士生走到我(和实验室其他人)面前,递过来一小份他正在用的数据集样本,请我们帮忙打标签,尽管他手上其实有真实标签。
这让我很好奇:既然他已经有真实标签了,为什么还需要收集人工标注呢?于是我就问了。那天我学到的东西改变了我对增量式模型改进的做法,我相信你也会觉得这个想法很有意思。让我解释一下我学到了什么。假设我们在构建一个多分类模型,比如一个把输入图像分为石头、布、剪刀的模型:

为简单起见,我们假设不存在类别不平衡。计算各类的验证准确率,得到如下结果:

但这个结果很有误导性,因为我们手上根本没有用于验证的真实标签。

看了这些结果后,大多数人会认为“剪刀(Scissor)”是表现最差的类别,需要进一步检查。
但这未必成立。而这恰恰就是那位博士生想通过收集人工标签来验证的事情。假设人工标注给出如下结果:

基于此,你还认为模型在“剪刀”类上表现最差吗?不是了吧?
我的意思是,当然模型在“剪刀”类上的准确率最低,这一点我不否认。然而,有了更多背景信息后,我们注意到模型在分类“剪刀”类时其实做得相当不错。这是因为普通人能达到的准确率只比我们的模型高出 2%。然而上面的结果惊人地揭示了:真正需要更多关注的是“石头(Rock)”类。普通人与模型之间的准确率差距太大了(13%)。要不是知道这一点,我们本会继续改进“剪刀”类,而实际上“石头”才更需要改进。自从我学到这个技巧,只要条件允许,我都会发现它在确定我下一步如何改进模型方面极为有用。我说“只要条件允许”,是因为我明白很多数据集对人类来说很难解读和标注。不过,如果能建立起这样一个“人类基线”,就能对模型的实际表现获得极大的洞察。

因此,人们可以有效地把工程精力引导到正确的方向。当然,我并不是说这在所有用例中都普遍有用。比如,如果模型已经比基线表现更好,那么此后的模型改进就需要根据以往结果来指导了。不过在这种情况下,超越人类基线至少能帮我们验证:模型确实比人类做得更好。