文:维建
编:白鹡鸰

背景

正常情况下,我们可以用一个带标签的数据集来测试分类器的表现(称之为测试集)。然而,现实中,因为种种因素的制约(标注成本高、标注难度大等 Google:穷人不配搞机器学习),很多场景下难以求得一个规模大、标注正确率高、采样无偏的测试集。而采用人工评估的方式,往往耗时耗力,且方差极大,结果对机器学习模型的迭代速度产生了很大的制约。

由此,本文提出了 自动模型评估(AutoEval)  ——目标是在给定了有标签的训练集的前提下,估计出分类器在 无标签 的测试数据集上的准确性。

乍一听似乎脑洞很大,测试集没标签还能叫测试集吗?没标签的情况下还能算出准确率,那岂不是可以疯狂刷爆(过拟合)那些给了样本却没给标签的榜单了?

显然,自动模型评估这一任务价值很大,但难度也大。今天想和大家分享下我们近期在这一任务上提出的解决方案——衡量数据分布的差异。方法的出发点是:测试集和训练集数据分布差异越大,分类器在测试集上的准确率就会越低。我们采用了回归模型来估计分类器的性能。给定一个无标签的测试集,我们可以算出其和训练集的特征分布差异。将该差异输入给回归器,我们会得到分类器准确率的预测值。我们发现回归器可以较为准确地预测分类器在不同测试集合上的表现,进而帮助我们了解分类器在不同测试场景下的性能。

论文题目
Are Labels Necessary for Classifier Accuracy Evaluation?

论文链接:
https://arxiv.org/abs/2011.03395

Arxiv访问慢的小伙伴也可以在【夕小瑶的卖萌屋】订阅号后台回复关键词【1215】下载论文PDF~

方法

出发点

机器学习领域有一个重要的研究任务叫“域适应(domain adaption)”,它的核心研究目标是让模型在来源于不同数据分布的测试样本上有较好的性能表现 [1]。该任务有一个很重要的出发点,就是 数据分布的偏移会影响分类器的准确性 。因此我们可以从数据分布差异出发,来推测模型的性能表现。具体来说,我们研究了分类器在不同数据分布下的准确率,发现两者(数据分布和准确率)在统计上是负相关的。下面将介绍如何构建一个元数据集合来得到这一负相关观测结论,并展示具体的相关性结果。

元数据集

为了观测一个分类器在不同数据分布场景下的表现,我们需要很多各不相同的测试数据集合。为此,我们构造一个 元数据集合 (meta dataset, 多个数据集组成的数据集)。元数据集包含很多样本数据集(sample set),每一个样本集具备不同的数据分布且有很多的图像。因为很难收集大量样本集(例如1000个),我们采用旋转、调整对比度、平移、背景更改等方法生成不同的样本集。

如图1,给定一个种子集,我们可以变幻出15个各不相同的样本集。值得注意的是,每一个样本集和种子集(seed set)共享相同的前景对象,即图像的语义目标没有被修改,依然具备原来的标签。也就是说,每一个生成的样本集合都是带图像标记的。 在实验中,我们通过图像变换的方式得到了500多个样本集。

图1 通过图像变换生成的特征分布不同的样本集

相关性分析

给定一个分类器(在训练集上训练)和一个元数据集(基于种子集生成),我们可以通过Frechet distance (FD) 衡量训练集和每一个样本集的数据分布差异 [2];又因为样本数据集都是有标签的,可以得到分类器在各个样本数据集上的准确率。

Frechet distance衡量两个数据集合分布差异。其基于两个数据集合的一阶和二阶统计量来计算差异。

图2是FD与分类器准确率关系的可视化结果。值得注意的是,图中的每一个点代表一个样本集。我们观察到分类器准确性与分布偏移之间存在很强的负线性相关性。

图2 分类器准确率和分布偏移的线性拟合结果

回归模型

有了上述相关性,我们可以根据测试集与训练集之间的分布偏移来预测分类器的准确性。在本文中,我们提出了两种回归方案:

  1. 线性回归:对于来自元数据集的每个样本集,我们计算分类器准确性及其在训练集之间的分布偏移。根据结果拟合一个简单的线性回归。

  2. 网络回归:直接从样本集回归分类器的性能。具体来说,一个数据集合对应一个性能,直接学习一个映射网络。网络的输入是一个数据集合的统计特征,输出是该数据集上的统计特征,此处我们选取了与分布相关的一阶统计量(均值)和二阶统计量(协方差)。

    自问:为什么能用一个特征代表一个数据集合?
    自答:根据相关性分析知道数据分布差异和准确率有强相关,因此可以用与数据分布差异有关的统计特征来刻画一个数据集合。

然后建立一个小型的全连接网络以学习映射功能:该网络使用样本集的均值矢量和协方差矩阵作为输入并输出分类器的准确性。

两个回归方法很直接很简单,因为它们都是基于统计上的相关性分析来提出的。两者有很直接相关的统计特性,因此简单有效,不需要太多复杂的东西。

实验结果

实验方面,我们首先基于COCO的训练集上训练得到一个分类器,而后基于COCO交叉验证集合生成一个元数据集合,就可以训练出两个回归模型。我们将回归模型运用到其他的三个真实世界测试集(Caltech,Pascal和ImageNet),来估计COCO分类器在这三个无标签数据集合上的表现/准确率。由于自动模型评估问题还没有相应的工作来进行探究,因此对比的方法较少。

实验结果表明,我们的方法做出了比较不错且合理预测(RMSE小于4%)。这是因为元数据集包含许多不同的样本集,因此回归方法可以“看到”各种数据分布情况,知道分类器在不同测试情形下的准确率表现。论文中,我们还详细验证了回归模型的鲁棒性并且讨论了如何构建一个较好的元数据集,感兴趣的朋友们来看呀~

图3 预测器的效果,第一行是模型实际准确率,最后两行是通过我们方法预测的模型准确率,可以看出网络回归对模型准确率的预测已经很接近真相了

总结

越来越多的工作都在关注模型在实际测试场景下对噪声的鲁棒性、抗对抗样本能力以及对异常样本的处理能力 [5]。自动模型评估直接预测分类器在无标签测试场景下的性能,进而直观地帮助我们理解分类器的可靠性与泛化性。希望能够看到自动模型评估和现有工作的结合。此外,如何将自动模型评估问题推广到其他视觉任务(如目标检测与图像分割)和自然语言处理任务也是一个比较有趣的研究方向。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] Ganin, Yaroslav, and Victor Lempitsky. "Unsupervised domain adaptation by backpropagation." International conference on machine learning. PMLR, 2015.

[2] Dowson, D. C., and B. V. Landau. "The Fréchet distance between multivariate normal distributions." Journal of multivariate analysis 12.3 (1982): 450-455.

[3] Hendrycks, Dan, and Thomas Dietterich. "Benchmarking neural network robustness to common corruptions and perturbations." arXiv preprint arXiv:1903.12261 (2019).

[4] Papernot, Nicolas, et al. "Practical black-box attacks against machine learning." Proceedings of the 2017 ACM on Asia conference on computer and communications security. 2017.

[5] Taori, Rohan, et al. "Measuring robustness to natural distribution shifts in image classification." Advances in Neural Information Processing Systems 33 (2020).

测试集没标签,可以拿来测模型吗?相关推荐

  1. 测试集没有标签,应该怎么办?

    作者丨堪村西蒙@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/328686799 编辑丨极市平台 1. 概述 为了评估一个模型在计算机视觉任务(例如目标识别)上的表现 ...

  2. python sklearn的训练集测试集根据标签的比例来切分数据集

    在切分数据集的时候发现标签样本非常不均衡的情况, 这时候切分数据比为了避免没有均衡切分每一种分类就可以用sklearn来实现 train_x,test_x,train_y,test_y = train ...

  3. PASCAL VOC2012测试集没有标签,怎么办?

    你的模型在测试数据集上跑出结果后,可以把结果提交至官网的接口,他们根据你的结果和未公开的gt评估你模型的性能. 不公开的缘故是为了公平比较大家的成绩,不然就会有人不怀好意地拿这些gt去训练,这样就失去 ...

  4. 禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本

    文 | 苏剑林 单位 | 追一科技 编 | 兔子酱 不管是打比赛.做实验还是搞工程,我们经常会遇到训练集与测试集分布不一致的情况.一般来说我们会从训练集中划分出来一个验证集,通过这个验证集来调整一些超 ...

  5. 五、在测试集上评估图像分类算法精度(Datawhale组队学习)

    文章目录 配置环境 准备图像分类数据集和模型文件 测试集图像分类预测结果 表格A-测试集图像路径及标注 表格B-测试集每张图像的图像分类预测结果,以及各类别置信度 可视化测试集中被误判的图像 测试集总 ...

  6. 机器学习-样本集(包括训练集及测试集)的选取

    转自:http://www.xuebuyuan.com/1409669.html https://blog.csdn.net/bbbeoy/article/details/72967794 针对经验风 ...

  7. 天池比赛 Docker 解决无法读取测试集,提交成功

    Docker 提交 一 制作 Dockerfile 二 制作 run.sh 三 制作推送镜像 3.1 登录 build 3.2 进入容器中配置环境 3.3 本地测试 3.4 推送镜像 四 提交 五 改 ...

  8. 如何爬升用于机器学习的测试集

    爬坡测试集是一种在不影响训练集甚至开发预测模型的情况下,在机器学习竞赛中实现良好或完美预测的方法.作为机器学习竞赛的一种方法,这是理所当然的,大多数竞赛平台都对其施加了限制,以防止出现这种情况,这一点 ...

  9. 训练集、验证集以及测试集的区别

    1.数据集的划分: 训练集:含有参考答案的数据,用来训练模型的已标注数据,用来建立模型,发现规律 验证集:模型训练过程中单独留出的样本集,用于调整模型的超参数和用于对模型的能力进行初步评估 测试集:用 ...

最新文章

  1. .NET防SQL注入方法
  2. 10分钟手把手教你运用Python实现简单的人脸识别
  3. Android自带的emoji表情的使用
  4. 数字图像处理:第二十二章 基于模型的编码
  5. ConcurrentHashMap1.7和1.8的源码分析比较
  6. 教你直白的理解贝塞尔曲线???
  7. sql server中select语句需要申请的锁
  8. js图片 area 颜色_JS提取图片的主体颜色
  9. python实现命令行工具jq的json路径过滤
  10. 幼儿园网络图怎么绘制_如何设计幼儿园主题网络图
  11. 电脑桌面壁纸的尺寸分类
  12. 很多人都说flash as3 经常都是使用MC或者sprite(请问这里的sprite是什么意思?)...
  13. 学习使用md+Typora记笔记的笔记
  14. 3D Point Cloud Descriptors in Hand-crafted and Deep Learning Age: State-of-the-Art
  15. win10装win7虚拟机教程
  16. 一台电脑登陆两个微信账号
  17. 电阻、电容贴片封装的定义
  18. Python爬虫eval混淆,爬虫进阶实战系列
  19. 京东JMQ如何保证消息顺序消费
  20. pyqt 槽任意参数_[钢结构·探讨]“柱脚”引发的吐槽

热门文章

  1. 【转】iOS的APP资源,开源的哦
  2. (转)基因芯片数据GO和KEGG功能分析
  3. Everyday is an Opportunity
  4. Android 如何退出整个应用程序?
  5. 西安下雪了,做了一个室内温度计
  6. 体制内工作了十几年,跳出来学嵌入式合适吗?
  7. 使用monkey命令来打开一个app
  8. Linux 5.7 将支持国产 RISC-V 芯片 K210
  9. 一道90%都会做错的指针题
  10. mysql schema是什么_MySQL中information_schema是什么