线上模型准确率估计——在没有标签的测试数据上估计模型准确率
前言
之前关注过软件工程领域的一些顶会,发现AI模型测试/主动学习这些领域都比较有意思。其中,模型准确率估计 (Automatic Model Evaluation)这个领域应该会比较有实用价值。
训练模型时拥有训练数据和验证数据及标签,模型上线前会用本地验证数据进行评估,但是评估结果不能反映模型在真实场景下的性能(训练验证数据可能与真实测试数据分布不同)
在模型部署运行之后,但是新来的数据均无标签(称为无标签数据或者测试数据),如何知道模型在真实场景下的准确率?
现有工作
已有工作大致可以进行如下的归类:
这些方法的思想其实大部分都是一致的——利用好手头有标签的数据,衡量无标签数据和手头数据的差异 / 衡量模型在这两份数据上输出差异,借以估算出无标签数据上模型的性能。
1 无标签测试数据准确率估计——从衡量数据分布差异的角度
1.1 Are Labels Always Necessary for Classifier Accuracy Evaluation, CVPR/TPAMI, 2021
估计目标: 利用拥有的有标签数据集,估计模型在无标签数据集上的性能
基本思想: 从领域自适应的角度出发,测试数据域与训练数据域越接近,模型的准确率就会越高,存在线性关系。因而可以构造一些“样本”,这些样本代表着不同数据分布下模型的准确率,X表示数据间的分布差异,Y表示模型准确率,这样可以训练一个回归模型,再算出无标签数据和有标签验证数据的分布差异,从而得到模型的准确率
估计方法: 具体而言,这篇论文中计算了测试数据与有标签数据的FD距离作为分布差异度量,用数据集的FD距离与模型分类准确率的负相关关系来估计模型的准确率。
数据集构造: 因此,剩下的重点就在于如何生成这么一个回归模型的训练集了。文中通过对有标签的数据进行数据变换(旋转、增强等)得到不同分布的数据集,构造回归模型的训练集
实验结果: 估计的误差很小
1.2 Aries: Efficient Testing of Deep Neural Networks via Labeling-Free Accuracy Estimation, ICSE, 2023
研究的问题: 新的、来源广泛的测试数据缺少标签信息,如何获得模型在这些测试数据上的准确率
基本思想: 到模型决策边界距离相似的样本应该具有相近的准确率,因而可以利用原有的标注数据,估计模型在无标签测试数据上的性能
具体而言,利用Dropout方式,取模型对一个样本多次的预测结果,衡量样本的uncertainty, 样本预测结果的一致性越高,模型对于该样本具有更高的confidence (即样本距离决策边界越远,用uncertainty近似距离)
把样本到决策边界的距离划分为等距的bucket,让在同一个bucket中的数据样本具有相似的准确率。
将dropout方式计算的uncertainty作为样本到决策边界距离的估计,并使用高置信度数据与准确率的线性关系,共同估计无标签数据的准确率。
例子.
- 加入dropout层,重复预测次数T=3(实际T越大越好,最好几十次,会很明显,T=10几乎看不出效果)
- 落在bucket1表示3次结果都不相同,bucket2表示有2次结果相同,bucket3表示3次结果都相同
实验结果 - 估计的准确率与真实准确率差距非常小(2%以内)
1.3 Adversarial Active Learning for Deep Networks: a Margin Based Approach, ICML, 2018
基本思想: 样本距离模型决策边界越远,对于模型训练的价值越小,需要挑选出离决策边界最近的样本用于训练。样本到模型决策边界距离难以计算,通过添加对抗性噪声的方式来近似
实现上,使用DeepFool为样本添加对抗性噪声,筛选出添加最少噪声就能误分类的样本。
在给定标注预算为#annotations情况下训练得到的模型性能
1.4 Guiding Deep Learning System Testing Using Surprise Adequacy, ICSE, 2019
基本思想: 对一个给定的测试用例,基于其与决策边界的距离衡量其相对于训练集的新颖程度,越新颖的越不同质化,越有用来测试/finetune模型的价值。
方法: 获取样本𝑥在DNN上的输出
α
𝑁
(
𝑥
)
\alpha_𝑁 (𝑥)
αN(x),当其预测标签为
a
a
a时,找到训练样本中标签为a且距离最近的样本
𝑥
𝑎
𝑥_𝑎
xa,同时找到与
𝑥
𝑎
𝑥_𝑎
xa距离最近且标签不同的样本
𝑥
𝑏
𝑥_𝑏
xb,
𝐷
𝑆
𝐴
(
𝑥
)
=
𝐷
(
𝑥
,
𝑥
𝑎
)
𝐷
(
𝑥
𝑎
,
𝑥
𝑏
)
𝐷𝑆𝐴(𝑥)=\frac{𝐷(𝑥,𝑥_𝑎)}{𝐷(𝑥_𝑎,𝑥_𝑏)}
DSA(x)=D(xa,xb)D(x,xa)
DSA越大说明样本越接近决策边界,
𝑎
1
𝑏
1
>
𝑎
2
𝑏
2
\frac{𝑎_1}{𝑏_1} >\frac{𝑎_2}{𝑏_2}
b1a1>b2a2,因此样本
𝑥
1
𝑥_1
x1更新颖
对抗样本具有较高的DSA
2 无标签测试数据准确率估计——从模型输出置信度的角度
模型校准(calibration): 神经网络在分类时会输出“置信度”分数和预测结果。模型校准就是要让模型结果预测概率和真实的经验概率保持一致。
例如,如果我们将 80% 的置信度分配给 100 个样本,那么我们就会期望 80% 样本的预测实际上是正确的。如果是这样,我们说模型是经过校准(calibrated)的。
模型校准就是要让模型结果预测概率和真实的经验概率保持一致。
说人话也就是,在一个二分类任务中取出大量(M个)模型预测概率为0.6的样本,其中有0.6M个样本真实的标签是1。总结一下,就是模型在预测的时候说某一个样本的概率为0.6,这个样本就真的有0.6的概率是标签为1。
上面是一个正面的例子,下面我再来举一个反面的例子说明模型校准的重要性。还是在一个二分类任务中取出大量(M个)模型预测概率为0.6的样本,而这些样本的真实标签全部都是1。虽然从accuracy的角度来考察,模型预测样本概率为0.6最后输出时会被赋予的标签就是1,即accuracy是100%。但是从置信度的角度来考察,这个模型明显不够自信,本来这些全部都是标签为1的样本,我们肯定希望这个模型自信一点,输出预测概率的时候也是1。
2.1 Leveraging unlabeled data to predict out-of-distribution performance, ICLR, 2022
基本思想: 模型在数据上的预测置信度与准确率相关,在训练数据上可以获取到一个最优的阈值,让大于阈值的样本占比与模型预测准确率一致,从而在测试数据上使用该阈值估计测试准确率
就这么简单的思路,效果是很不错的
2.2 Predicting with Confidence on Unseen Distributions, ICCV, 2021
基本想法: 利用数据分布差异等估计准确率的方法无法有效估计真实的数据偏移的情况,实验发现模型输出的置信度差异能够有效反映数据偏移情况,可以用输出置信度来估计测试数据上的准确率。
平均置信度高的数据上模型准确率也较高,利用该种线性关系训练回归模型。
该方法能够较为准确的估计自然情况下的数据分布差异,但是与已有方法相比,估计模型在对抗样本的鲁棒性上误差较大。
3 其它方式
3.1 What Does Rotation Prediction Tell Us about Classifier Accuracy under Varying Testing Environments, ICML, 2021
自监督学习角度: 模型天然有一个自监督的预训练的过程,自监督学习的训练过程中不需要使用人工标注的标签(例如,通过数据增强得到不同旋转角度的图片,预训练模型预测图片旋转角度,ground truth是已知的)。如果一个网络在无标注的测试数据上的自监督学习任务准确率很高,目标任务上的准确率是否会很高?
基本想法: 如果一个网络在无标注的测试数据上的自监督学习任务准确率很高,目标任务上的准确率是否会很高?如果存在统计上的关联,就可以利用这种关联预测模型在目标任务上的准确率
验证: 作者设计了多任务网络,一个head负责自监督的图片旋转角度预测任务,另一个head负责分类任务。结果表明着两个头上选择预测的准确率和分类预测的准确率线性相关。
方法实现: 通过数据增强等方式构建数据子集,每个数据子集是用于准确率估计的模型的训练集。无标注的测试数据上的旋转预测的准确率与分类预测的准确率存在线性关联,测试数据旋转角度是已知的,利用旋转预测准确率估计分类预测准确率。
3.2 Predicting Out-of-Distribution Error with the Projection Norm, ICML, 2022
基本想法: 利用相同初始化的模型分别在训练数据以及无标签数据上训练,得到的不同的模型间的参数差异可以衡量数据分布的差异,用于预测目标模型在这些无标签数据上的准确率。
3.3 Detecting Errors and Estimating Accuracy on Unlabeled Data with Self-training Ensembles, NeurIPS, 2021
基本想法: 训练一些“check model” 模型
h
ℎ
h,如果ℎ的多数预测结果与部署模型𝑓不一致,该数据样本很有可能被部署模型𝑓预测出错
方法实现: 使用训练数据及无标签的测试数据共同训练check model,在当前轮被预测错的样本挑选出来打上与部署模型𝑓输出不一致的伪标签,加入下一轮训练集中,使得错误样本上ℎ的输出与𝑓更加的不一致,在𝑇轮后结束训练,输出测试集中预测不一致的样本
3.4 Assessing Generalization of SGD via Disagreement, ICLR, 2022
基本思想: 集成模型是well-calibrated的,对于两个模型集成的well-calibrated的模型,它们的输出不一致性在期望上与测试的误差是相等的,因此可以利用输出不一致性来估计错误率
实现: 这个方法非常简单,就训2个随机种子不一样的模型
4 实际应用
这些方法和思想应该不局限于这个领域,比如可以用于线上寻找低置信的样本,把这些样本交给人工审核,提升可解释性鲁棒性等等。