NeurIPS 2020|基于能量的OOD检测
admin
2023-06-20 07:43:53
0

原文:Energy-based Out-of-distribution Detection

文章链接:https://arxiv.org/abs/2010.03759

该文章收到了LeCun的点赞与转发,LeCun点赞华人女科学家--使用能量模型替代Softmax函数!_腾讯新闻

Motivation & Related Works

当机器学习模型看到与其训练数据不同的输入时,就会出现out-of-distribution (OOD) uncertainty,因此模型很难对他们进行正确预测(也即在与训练数据分布差距较大的数据点上表现极差)。对于将ML应用于安全关键的应用(如罕见疾病鉴定)而言,确定输入是否超出了分布范围是一个基本问题。 OOD(Out-of-distribution)检测的传统方法之一是基于softmax confidence。直觉上来看,对于in distribution的数据点,我们有高可信度给他们一个结果(就分类问题而言即将一张猫的图片分类为“猫”的概率很高),那么可信度低的就是OOD inputs。但是因为DNN在样本空间的过拟合,经常会对OOD的样本(比如对抗样本)一个很高的可信度。

另一种检测方法是基于生成模型的,这类方法从生成建模的角度推导出似然分数,主要利用 Variational Autoencoder 的 reconstruction error 或者其他度量方式来判断一个样本是否属于 ID 或 OOD 样本。主要的假设是,Autoencoder 的隐含空间(latent space) 能够学习出 ID 数据的明显特征(salient vector),而对于 OOD 样本则不行,因此OOD样本会产生较高的 reconstruction error. 这类方法的缺点在于生成模型难以优化而且不稳定,因为它需要对样本空间的归一化密度进行估计。

Contribution

在本文中,作者使用energy score来检测OOD输入,ID的数据energy score低,OOD的数据energy score高。作者详尽证明了energy score优于基于softmax的得分和基于生成模型的方法.相比于基于softmax可信度得分的方法,energy score不太受到NN在样本空间过拟合的影响。相比于基于生成模型的方法,energy score又不需要进行显式的密度估计。

Background:Energy-based model

基于能量的模型(EBM)的本质是构建一个函数,它将输入空间中的每个点映射到一个称为能量的单个non-probabilistic scalar。通过Gibbs分布我们可以将能量转化为概率密度


分母被称为配分函数,是温度参数。此时我们可以得到任意点的自由能为


我们可以轻易的联系分类模型与能量模型,考虑一个类的NN分类器将输入映射到个对数值,通过 softmax 归一化得到属于某一类别的概率,分类分布如下


这里的即的第个值,而此时我们可以定义能量为即负对数。同时我们可以得到关于的自由能


这里需要强调一下,这个能量已经与数据本身的标签无关了,可以看作是输出向量 的一种范数。

Energy-based Out-of-distribution Detection

我们知道OOD detection实际上就是一个二分类问题,判别模型的密度函数可以写作


其中配分函数是未知的归一化常数,是intractable的。幸运的是


因为是样本独立的,不影响总体能量得分分布,所以说和数据点的负对数似然是线性对齐的,低能量意味着高似然,即更有可能是ID数据,反之更有可能是OOD数据。这涉及到一个阈值,比较empirical,这里不多说。

此时我们可能会想到,这比softmax函数好在哪里呢?不妨写出softmax分类的形式


当的时候,这其实就是 如果再进行一步化简我们可以得到


后两项并不是一个常数,相反对于一个ID的数据,其负对数似然期望是更小的,但是这个分类置信度却是越大越好,二者冲突。这一定程度上解释了基于softmax confidence方法的问题。

那么能量模型如何进行训练呢——通过分配较低的能量给ID数据,和更高的能量给OOD数据,明确地创造一个能量差距。总体的损失函数如下


其中是分类模型的softmax输出,即标准的交叉熵分布加上一个能量约束项。



即用了两个平方的hinge loss来分别惩罚能量高于和能量低于的ID/OOD数据。这里也即该方法的另一个好处,可以利用没有标签的OOD数据帮助训练。一旦模型训练完成,我们就可以按照按照能量进行OOD检测。

Experimental Results

实验中有一点需要注意,作者采用了两个setting

  • No fine-tune: 使用backbone的输出,只是将softmax confidence换成能量得分。注意样本的能量我们定义为,其中即backbone的第维输出。
  • Fine-tune:使用上述的损失函数对backbone进行fine-tune,然后使用energy score进行OOD检测。

实验统一使用WideResNet作为预训练分类模型,在六种OOD数据集上的表现如下,可以看到在不进行fine-tune的情况下基本碾压了基于softmax confidence的方法。有fine-tune的情况下,也比目前的sota-OE好很多。不过这里需要指出表格中标注的应该指的是训练集,因为作者也提到了下表是"We use WideResNet to train on the in-distribution dataset CIFAR-10.".



作者进一步比较了各种方法之间的差距,可以看到即使不使用fine-tune,只是将softmax confidence换成energy score效果就已经很不错了,进行fine-tune之后更是惊为天人。



同样还有与生成模型的比较,metric是the area under the receiver operating characteristic curve (AUROC)--越高越好。



相关内容