[转载]Out-of-distribution Detection

原文链接:Out-of-distribution Detection调研

确定一个研究方向最好就是做个类似这样的论文追溯和分析

0. 前言

算是第一次正经的调研吧,之前就做过论文复现和 “不成功” 的调研。至于为什么不成功呢?主要因为我是0基础的科研小白,所以对调研目的的认知错误。其实在年前做过一次关于 Out-of-distribution 的调研了,但是为什么现在又花了差不多一周的时间重新做了一次呢?因为我一开始调研的目的是了解一下这个领域,看看有没有可以用于我当前方向的方法(我当前的方向比较新,只能从类似的任务中借鉴)。所以,我第一次调研的时候,就直接把OOD的方法和我当前的方向做比较,如果没有什么关联就跳过。实际上这是错误的一种调研。

回来和导师交流后,导师说调研是problem-driven的,而不是approach-driven的,意思是要对调研方向有整体的把握,理清任务的setting和当前的问题,得出一些总体性的结论,而不是简单的看一下这个领域用到的方法是什么。这样做的原因是,首先你对你自己的方向可能没有很深的认知,单纯比较调研方向的方法能否为我所用,可能会受制于当前认知的限制,错失很多潜在可用的方法。其次,对调研方向有一个整体的认知,可以让你更好地搭建自己的知识树,拓宽眼界。

总体来说,调研需要了解的有:

  • Task的setting (任务设定、数据集、评价指标、Baseline)
  • Task面临的problem (深层的难点是什么)
  • 解决problem的approach (代表性的方法有哪些)
  • 主要团队和时间线 (了解趋势)
  • 宏观性的结论
  • 借鉴到自己的Task中

好了,唠叨完了,进入正题!下面是对本次调研的一个笔记(其实就是把PPT又重新转换成了笔记的形式)。

1. 任务定义

1.1 背景和任务定义

OOD detection任务(后面简称OOD)解决的问题就是如何检测出 Out-of-distribution 的样本,同时能维持In-distribution样本分类的准确率(数学定义见下图)。那么什么是In/Out distribution呢?distribution shift主要分为两种,一种是semantic shift,一种是covariant shift,前者表示训练集和测试集的label space不同,后者表示训练集和测试集数据本身的分布不同。而OOD主要关注的是semantic shift,因为OOD提出的背景是在open-set的场景下,模型可能会遇到很多在训练阶段没见过的类别,而模型依然会给这些样本预测一个很高的置信度(认为其属于某一类训练集中的类别),这也成为over-confidence,这也的模型是不可信的。理想情况是,当模型遇到没见过的样本,会学会拒绝,不进行分类,只对见过的样本进行分类,因此提出了OOD detection任务。

 注:这里的见过和没见过指的是,这些样本属于的类别是否属于训练集中的类别


1.2 数据集和评价指标

OOD任务中主要有两类数据集,ID和OOD数据集,ID数据集用于训练,OOD数据集用于测试。此外还有辅助数据集,用于辅助训练,后面会介绍到。常用的评价指标为下图中的加粗,具体含义自行google。



2. 相似任务 

具体含义详见论文:Generalized Out-of-Distribution Detection: A Survey



3. 发展状况

3.1 时间线


3.2 主要团队


4. 任务分类

4.1 本质问题

我认为当前OOD detection的主要问题是如何解决以下两个难点,也刚好对应深度学习的两个阶段:

  • 训练阶段:如何更好地表示模型,即如何挖掘出数据中对OOD有用的信息,如何提取出更好的特征(比如让ID和OOD在特征空间中相互远离)
  • 测试阶段:如何更好地利用数据,即如何更好地利用挖掘出的信息和特征(比如拉开ID和OOD得分分布的差异)


4.2 测试阶段任务分类


4.3 训练阶段任务分类

5. 测试阶段代表方法

5.1 基于SoftMax的方法


  

A Baseline for Detecting Misclassified and Out-of-Distribution Examples in Neural Networks

OOD detection任务的开篇之作,作为Baseline,其检测OOD样本原理非常简单:

直接依据模型输出的Softmax值,作者发现ID样本的最大softmax分数大于OOD样本的最大softmax分数,因此就可以设定一个阈值来区分OOD和ID样本了。

下面是实验结果,可以发现AUROC和AUPR的数值都比随机(表中的Base)好。其中AUPR In表示将ID数据作为正样本,AUPR Out表示OOD作为正样本。Pred.Prob(mean)表示模型对于OOD样本输出的最大softmax的平均值,可以发现数值上任然较高,这也说明,虽然可以用softmax的值作为划分依据,但是模型对OOD样本也能输出一个较高的softmax,也就是过度自信了。

总的来说,基于softmax的方法需要解决的问题可以归纳为下图中的两个。

Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks

很好的论文解读:Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks解读-CSDN博客

于是就有工作对上面的方法进行改进,具有代表性的就是ODIN,首先使用温度系数来平滑softmax分布,以此解决OOD样本过高置信度的问题。然后使用input prepocessing来拉开OOD和ID之间的距离。其原理是,给输入的图片增加一个微小的扰动,可以使得ID样本的softmax 最大得分比OOD增加的多,这样就能拉开差距了。具体方法是借助梯度实现的,不过多介绍。

Why relu networks yield high-confidence predictions far away from the training data and how to mitigate the problem

这篇论文对ReLU网络的本质进行了理论分析,认为ReLU网络本身就不适合用于OOD检测,因为他是一个分段线性函数,如下图所示,方框代表训练数据集所在分布,可以发现,在分布外的区域,网络也有很高的置信度。


不过,虽然本质无法解决,但是也可以通过一些方法缓解这种过度自信的问题,作者提出了ACET这个方法,其原理就是在数据分布的边缘进行采样,生成样本辅助训练,可以一定程度缓解过度自信的问题。

5.2 基于Energy的方法

将Energy首次使用到OOD问题中是在这篇论文中,Energy-based Out-of-distribution Detection,也就是直接使用energy function代替softmax,文中也给出了使用energy优于softmax的原因,如下图的公式所示,详细推导见论文。其结论就是,softmax函数与数据分布不成正比,所以无法很好的表达输入的数据,而energy和数据分布是成线性的。值得注意的是,后续提出的很多方法都使用energy function代替softmax作为score function了。

5.3 基于特征距离的方法

这一类方法,我认为可以归纳成两类(下图蓝色和红色两类):

  • 蓝色这一类的特点是得到每个类别的一个prototype,然后计算样本到每个prototype的距离,距离哪个prototype越近,则认为输入的样本属于哪一类,当这个最近的距离大于某个阈值,则判定这个样本为OOD样本。
  • 红色这一类则没有prototype,而是直接比较ID样本和OOD样本在模型计算过程中的差异,比如OOD和ID样本的特征值、logit数值、梯度值、激活值。然后将差异之和作为标准,大于某个阈值判定为OOD样本。


下面先介绍一下第一类方法,主要就是各类距离函数的选取,用的最多的就是马氏距离。而这类方法的主要问题有两点:

  • 如何设计更好的距离函数,对输入的变动更加敏感。
  •  如何获得更好的prototype,使其包含更多语义信息 。


然后介绍第二类方法,即考虑数据本身的方法。

首先是利用中间层信息的方法,即利用activation来判断是否为OOD,主要有下面两种。


然后是利用梯度空间中的信息以及logit和特征的结合。


值得一提的是VIM,这一方法同时利用了Logit和特征值来判断是否为OOD。我们知道,特征值是模型提取的数据本身的信息,而Logit则是模型特征与每一类别的关联度。也就是说,同时利用Logit和feature,相当于同时使用了数据本身的信息和语义信息。而这种同时挖掘数据本身的分布和样本空间的分布成为近阶段主流。

6. 训练阶段代表方法

6.1 仅使用ID数据

下图所示说明了,模型如果对ID数据能有一个好的分类性能,那么OOD检测的效果相对来说也会好。所以,如何提升ID分类性能也是一个可以研究的方向,自然而然,使用大模型进行OOD成为了很自然的事情。



6.2 使用OOD数据

6.3 预训练大模型

由于预训练大模型的研究比较火热,并且效果非常好,所以单独拿出来说。首先,前面已经介绍过了,使用预训练大模型的好处在于,大模型中有非常丰富的特征,并且在ID分类上能达到很好的效果,而OOD检测性能和ID分类性能又成正相关,所以使用预训练大模型finetune能达到很好的效果。下图展示的是使用少量的OOD数据进行fine-tuning大模型的效果。可以看到,预训练大模型借助少量的OOD样本,就能获得巨大的性能提升,并且超越了人类的水平。


下图展示的是使用CLIP进行OOD检测的方法,借助CLIP中丰富的特征和语义信息,训练中可以不借助OOD样本,只需要输入一些OOD的label,就能达到不错的效果,实现zero-shot的OOD。


不过,预训练大模型目前也有一些问题,有研究发现,对预训练大模型进行整体的fine-tuning会导致性能损失严重(与只调优分类头比较)。其主要原因在于,fine-tuning的时候会破坏大模型原有的特征。


7. 结论

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Out-of-distribution是指在模型训练时未曾出现过的数据分布,也称为“未知数据”。在模型面对未知数据时,其预测结果可能会出现误差或不确定性。因此,对于模型的鲁棒性和泛化能力的提升,需要对out-of-distribution数据进行有效的识别和处理。 ### 回答2: out-of-distribution(OoD)是指模型在测试阶段遇到了其训练数据集之外的样本或类别。当模型只使用特定的数据集进行训练时,它可能无法处理那些与训练数据不同的输入。这些新的样本可能是在颜色、形状、大小等方面与训练数据有所不同,也可能属于未在训练数据中出现过的类别。 遇到OoD样本的问题是模型的泛化能力不足。模型在训练数据中表示和学习的特征可能过于特定,无法推广到训练数据集之外的样本。这可能导致模型的预测不准确或不可靠。 为了解决OoD问题,有几种方法可以采取。一种常见的方法是收集更多来自OoD分布的样本,并将其添加到训练数据中,以使模型能够更好地学习如何处理这些新样本。另一种方法是使用一些先验知识或规则,对OoD样本进行检测和筛选,以避免对其进行错误预测。 同时,一些研究者提出了一些用于检测OoD样本的新颖性评估方法。这些方法通过利用模型在训练样本和OoD样本上的输出差异来判断一个样本是否属于OoD类别。这种方法可以帮助我们识别OoD样本,并采取相应的措施,以提高模型的泛化性能。 综上所述,解决out-of-distribution问题是训练一个具有较强泛化能力的模型的重要步骤。只有当模型能够有效处理新的样本和未见过的类别时,才能提高模型的可靠性和适用性。 ### 回答3: "out-of-distribution"是指数据集中没有包含的数据样本或样本类别。在机器学习和深度学习中,数据集通常用于训练和测试模型的性能。然而,在现实世界中,我们会遇到无法准确分类的新数据,这些数据就属于"out-of-distribution"。这可能是因为这些数据具有与训练数据不同的特征,或者因为数据集的覆盖范围有限。 "out-of-distribution"的出现可能会对模型的性能和鲁棒性产生负面影响。由于模型没有前面没有见过这些类型的数据,它可能会对其进行错误的分类或给出不确定的预测结果。这种情况在实际应用中特别重要,因为我们希望模型能够在各种不同的情况下表现得可靠和准确。 为了解决"out-of-distribution"问题,一种常见的方法是通过收集更多具有代表性的训练数据来增加数据集的覆盖范围。这样模型可以更好地学习不同类型的数据特征,并提高对"out-of-distribution"数据的泛化能力。另外,使用先进的模型架构和优化算法也可以增强模型的鲁棒性。 除了增加训练数据和改进模型架构外,还可以使用一些检测方法来识别"out-of-distribution"的样本。这些方法可以根据模型的置信度、预测熵或数据分布等特征来判断样本是否属于训练集之外的数据。这些方法可以帮助我们发现并处理那些可能造成模型失效的"out-of-distribution"数据。 总之,"out-of-distribution"是指在训练数据之外的数据样本或样本类别。对于机器学习和深度学习任务,了解和解决"out-of-distribution"问题是提高模型性能和鲁棒性的关键。通过增加训练数据、改进模型架构和使用检测方法,我们可以减少"out-of-distribution"带来的负面影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值