此前,ImageNet 因为存在标签错误的问题而成为热门话题,这个数字说出来你可能会大吃一惊,至少有十万个标签是存在问题的。那些基于错误标签做的研究,很可能要推翻重来一遍。
由此看来管理数据集质量还是很重要的。
很多人会使用 ImageNet 数据集作为 benchmark,不过基于 ImageNet 预训练的模型,最终结果可能会因为数据质量而变化。
本文中,来自 Adansons 公司的工程师 Kenichi Higuchi 对《 Are we done with ImageNet? 》一文中的 ImageNet 数据集进行重新研究,在去除错误标签数据后,重新评估 torchvision 上发布的模型。
从 ImageNet 中删除错误数据并重新评估模型
本文将 ImageNet 中的标签错误分为三类,如下所示。
(1) 标注错误的数据
(2) 对应多个标签的数据
(3) 不属于任何标签的数据
总结来看,错误数据大约有 14000 多个,考虑评估数据的数量为 50000,可以看出错误数据占比极高。下图是一些有代表性的错误数据。
方法
在不重新训练模型的情况下,该研究通过只排除标注错误的数据,也就是上述(1)类错误数据,以及从评估数据中排除所有错误数据,也就是 (1)-(3) 错误数据,来重新检查模型的准确率。
为了删除错误数据,需要使用一个描述标签错误信息的元数据文件。在这个元数据文件中,如果包含 (1)-(3) 类错误,信息将在「correction」属性中描述。
该研究使用一款名为 Adansons Base 的工具,Adansons Base 通过将数据集链接到元数据来过滤数据。这里测试了 10 个模型,如下所示。
10 个用于测试的图像分类模型
结果
结果如下表所示(数值是以 % 为单位的精度,括号中的数字是排名)
10 个分类模型的结果
以 All Eval 数据为基线,排除错误数据类型(1),准确率平均提高 3.122 分;排除所有错误数据 (1)~(3) ,准确率平均提高 11.743 分。
和预想的一样,排除错误数据,准确率全面提高,这一点毫无疑问,因为与干净数据相比,存在错误数据很容易出错。
当在不排除错误数据的情况下进行评估,以及错误数据(1)~(3) 都被排除时,模型的准确率排名发生了变化。
本文中,错误数据 (1) 有 3670 个,占全部 50000 条数据的 7.34%,移除后准确率平均提高了 3.22 点左右。当移除错误数据后,数据规模发生了变化,单纯的比较准确率可能存在偏差。
结论
尽管并未特别强调,但是在做评估训练时,使用准确标记的数据很重要。
在比较模型之间的准确率时,以前的研究可能得出错误的结论。所以应该先对数据进行评估,但这真的可以用来评估模型的性能吗?
许多使用深度学习的模型往往不屑于对数据进行反思,而是渴望通过模型的表现性能来提高准确性和其他评估指标,即使是评价数据中包含错误数据,也没进行准确的处理。
当创建自有的数据集时,比如在业务中应用 AI 时,创建高质量的数据集直接关系到提高 AI 的准确率和可靠性。本文的实验结果表明,仅仅提高数据质量就可以将准确率提高约 10 个百分点,这表明在开发 AI 系统时不仅要改进模型,还要改善数据集。
然而,保证数据集的质量并不容易。虽然增加元数据的数量以正确评估 AI 模型和数据的质量很重要,但管理起来可能很麻烦,尤其是对于非结构化数据。