综述:广义的分布外检测(异常检测、开集识别、OOD检测)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了综述:广义的分布外检测(异常检测、开集识别、OOD检测)相关的知识,希望对你有一定的参考价值。
参考技术AGeneralized Out-of-Distribution Detection: A Survey Jingkang Yang, Kaiyang Zhou, Yixuan Li, and Ziwei Liu https://github.com/Jingkang50/OODSurvey
分布外(Out-Of-Distribution,OOD)检测对确保机器学习系统的可靠性和安全性至关重要。例如,在自动驾驶中,当遇到它从未见过、无法给出安全决策的非常规情形或物体,我们需要驾驶系统发出警告并且将控制权交给人类。自2017年被提出起,这个问题越来越受研究者关注,各种解决方案层出不穷,大致包括:基于分类的、基于密度的、基于重构的、基于距离的方法。与此同时,其他几个问题在动机和方法上与分布外检测紧密相关,这些问题包括:异常检测(Anomaly Detection,AD)、新类检测(Novelty Detection)、开集识别(Open Set Recognition,OSR)和离群检测(Outlier Detection,OD)。尽管他们各自定义和问题设定不同,这些问题经常使读者和实践者感到困惑,这导致有些现有工作误用了这些术语。实际上,AD、ND、OSR、OOD、OD这五个问题能够统一在广义的分布外检测框架下,都可以视作分布外检测的特例或子任务,并且能够轻易地被区分。这篇综述通过总结最新的技术发展对这五个问题做了深入的回顾,并以该领域的开放挑战和潜在的研究方向作结。
可信的视觉识别系统不仅仅在已知的情境下能给出精确预测,还应该能检测到未知的样本并且丢弃或将它们交给用户来做安全地处理。
比如,一个训练良好的食物分类器应该丢弃像用户自拍照之类的非食物图片,而不是胡乱判定其属于某已知的食物类别。在安全要求极高的应用中,比如无人驾驶,系统应该在它碰到不寻常的、未在训练中见到的情形或物体时发出警告并将控制权交给司机。
大多数现有机器学习模型都基于封闭世界假设(the closed-world assumption)来训练,即测试集和训练集独立同分布,或者说两者来源于同一分布(in-distribution)。然而,当模型被部署在开放世界场景(open-world scenario)中,测试样本的分布可以是取自不同于训练集分布的分布的(out of distribution),因而需要被谨慎处理。分布的变化可能是语义漂移(比如,OOD样本取自别的类别)、协变量漂移(也称输入漂移,比如OOD样本取自其他领域??)。
只考虑语义漂移和协变量漂移两类漂移。
异常检测目的在于在测试阶段检测异常的样本,“异常”指的是偏离预定义的“正常”。这种偏离可能是协变量漂移或是语义漂移导致的。异常检测可以分为两个子任务:
与异常检测的区别 :1) 动机上,新类检测中并不像异常检测把没见过的“新”样本看做错误的或是有害的,而是将珍视这些新样本为后续模型的学习资源;2)新类检测首要关注的是语义漂移;3)新类检测中,没有限制ID样本属于单个类,在训练集中可以有多个类别的样本。
新类检测目的在于检测出不属于任何训练类别的测试样本。检测到的新奇样本通常预备用于未来程序的构建,比如特异性更强的分析、当前模型的增量学习等。依据训练类别数量的差异,新类检测分为:
OSR需要一个多类别分类器来同时1)精确地分类 训练类别的 测试样本(ID);2)识别出测试样本中 不属于训练类别 的样本(OOD)。
OSR = multi-class ND
需要模型拒绝标签迁移的样本以保证预测可靠性和安全性
分布外检测目的在于检测测试样本
当某个样本显著区别于其他的样本时,认为它是“离群”的。在异常检测、新类检测、开集识别、分布外检测的问题设定中,都存在这训练-测试的流程,要挑出测试中出现的不属于训练分布的样本。
而离群检测无“训练分布”、“测试分布”,而是直接挑出所有可见样本中显著区别于其他的那些样本。
给定同构的ID数据,最直接的方法是1)基于密度的方法,这些方法估计ID的密度,拒绝那些偏离估计的OOD的测试样本。其他的方法包括:2)依靠图片重构的质量来识别异常样本,3)直接学习一个决策边界来区分ID和OOD样本,4)基于距离的方法,5)基于元学习的方法
基于密度的方法尝试去建模正常数据(ID数据)的分布,这种做法基于一个实践假设:异常的测试样本在估计的密度模型下游较低的概率值,而正常样本概率值较高。
参数密度估计假设ID样本的密度能够被表示为某种定义好的分布。一种方法是在训练数据上拟合一个多变量高斯分布,并且度量测试样本与训练样本的期望之间的马氏距离(协方差距离,计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系)。其他的工作采用了更复杂的假设,认为训练分布是混合的高斯分布或是泊松分布等。
非参数密度估计考虑了更贴合实际的情形:预定义的分布不能够建模真实分布。可以简单地用直方图对训练分布进行建模。核密度估计(KDE)进一步使用核函数作为离散直方图的连续替代版,它可以灵活地使用点权重和带宽去控制估计的分布。
虽然经典的密度估计方法在很多任务上获得了很好的AD性能,但它们更适合低维任务。
对于计算机视觉任务中的高维数据,这些方法的计算性和可伸缩性受到影响。为缓解维数灾难,有些方法通过特征工程降维[277],[278]。
通过由潜在嵌入重建出输入,自编码器能学到无标签数据的高效表达。变分自编码器将输入的图片编码为服从高斯分布的潜在向量。习得的潜在嵌入可被视为输入的低维表示。传统密度估计方法可以应用在这些深度表示之上。
生成对抗网络由一个生成网络和一个判别网络构成,两者在零和博弈中相互竞争。典型地,生成网络学习从潜在空间到所研究数据分布的映射,而判别网络试图分辨生成器生成的数据和真实数据。然而,不同于基于自编码器/变分自编码器的范式,少了一个编码器使得GAN难以直接为一张输入图片找到相应的嵌入。针对这个问题,ADGAN [90] 对一个给定的样本,在潜在空间搜索一个好的表示。如果找不到这样的表示,这个样本被认为是异常的。该方法计算代价极高。
规范化的流描述了一个概率分布经过一系列可逆映射的转化过程。通过重复施加变量变化的规则,初始的密度“流”过了一系列可逆映射。因此,使用规范化的流的方法能够直接估计输入空间的可能性。基于流的方法有优雅的数学表示,但是它们同样仅对低维特征敏感。若不进行降维,基于流的方法计算代价高。
除通过生成式模型获取可视化嵌入外,一些方法主要通过扩充模型容量来增加提取到的特征的表示能力,这或许可以让正常(ID)能被更精确地特征化为密度估计。这些策略包括数据增强,对抗训练,蒸馏,损失函数增强,使用浅表/局部特征。
基于能量的方法使用一个标量能量评分来表述变量概率密度,这个标量采用非标准化的负对数概率,
然而,和标准的深度学习模型相比,训练基于能量的方法代价昂贵,因为马尔可夫链蒙特卡罗法(MCMC,在概率空间,通过随机采样估算兴趣参数的后验分布)采样和估计需要积分运算。
为解决这个难题,研究者提出了评分匹配方法和随机梯度之类的方法来支持高效训练。
现有工作也探索了使用频域分析方法做异常检测。人类通过图片的低频信息来理解图片,而CNN更多依赖高频信息来做决策。人们提出了CNN核平滑和谱引导的数据增强之类的方法去抑制高频分量的影响。还有一些工作发现,对低频分量的对抗攻击也很难被检测到,因此提出
基于频率的方法专注于感官异常检测(尤其是检测对抗样本),或许不适用于语义异常检测。
基于重构的方法的核心在于在ID数据上训练得到的编解码器(encoder-decoder)框架通常对ID和OOD样本返回不同的效果。
模型表现的差异可以被用作异常检测的指标。模型表现的差异可以用特征空间的差异或是重构误差来度量。
系数重构假定每个正常样本都能被有限个基础函数精确重构,而异常数据的重构开销则更大,因此生成了稠密表示。稀疏表示的典型技巧包括基于L1正则的核PCA和低阶嵌入网络。
重构误差方法依赖于以下假设:在正常数据上训练得到的重构模型在输入为正常测试样本时会输出更高质量的结果。深度重构模型(包括自编码器AE、变分自编码器VAE、生成对抗网络GAN和U-Net等)都能够被用作这类方法的backbone。
除去这种结合AE/VAE和重构误差这种标准做法,其他方法使用了更加精细的策略,比如通过memorized normality重构,调整模型架构、部分/有条件的重构。
在半监督设定下的异常检测中,CoRA分别在ID样本和OOD样本上训练,得到两个自编码器。这两个自编码器的重构误差被用作异常检测的指标。
GAN中的判别器本质上是 通过计算重构误差 实现异常检测。更进一步,GAN的变种,比如去噪声的GAN和类别-条件GAN通过 增加重构难度 获得了更好的性能。有些方法 利用重构图片在下游任务中的表现来进一步放大异常样本的重构误差 。集成也能够优化模型性能。
异常检测、单类别的新类检测通常被形式化为无监督学习问题,将所有的ID样本看做一类。
【283】做了完全有监督的异常检测
半监督的异常检测中,模型训练时用到了无标签数据。
PU学习针对这个问题被提出
自监督方法3.3.3
单个类别分类直接学到一个决策边界
未完成
共性:ID样本的类别(训练类别)为多个。
差异:开集识别还需要精确地给ID样本分类,而新类检测只需得到区分ID/OOD的二分类器。
由于开集识别和多类别新类检测的训练类别为多个,大多数方法都是基于分类的。其余方法包括基于ID原型的以及基于重构的。极少数模型是基于密度的。
为了解决
开集识别和多类新类检测都关注ID样本包含多个类别的情形。分类问题中,一般采用独热编码来编码类别信息。然而,独热编码忽略了类别间的内在联系。举例来说,“狗”-“猫”,“狗”-“车”之间有相同的距离显然不合情理。有些工作考虑这一点,尝试利用新类的标签空间上的信息来解决这个新类检测问题。重分配大的语义空间,形成已知类别的层次化分类
基于标签组织重设,自上而下的分类策略和分组softmax训练被证实有效。应一组工作使用词向量嵌入来自动地构建标签空间。【169】中稀疏独热标签被几组产生自不同NLP模型的稠密词向量替代,形成了多个回归头来做鲁棒的训练。
测试时,标签(同所有不同头给出的嵌入向量距离最小的标签被作为预测结果输出,
如果这个最小距离超出阈值,这个样本被分类为“新”。近期工作进一步采用语言-图片预训练模型输出的特征来更好地检测新类,图片编码空间中也包含来自标签空间的丰富特征。)
基于距离的开集识别方法需要“原型”来实现class-conditional。维持ID样本的分类性能。
基于类别的聚类和原型(prototyping)操作在分类器提取到的视觉特征上进行。
OOD样本能够通过计算样本与聚类之间的距离而被识别。
有些方法还引入了对比学习来为已知类别学到更加紧密的聚类,从而拉远ID和OOD样本之间的距离。
CROSR【177】通过拼接分类器和用于距离计算的重构模型给出的可视化嵌入来在拓展的特征空间中得到强化的特征。除了使用分类器给出的特征,GMVAE【178】使用重构VAE来提取特征,将训练集的嵌入建模为一个多中心的混合高斯分布以便后续基于距离的操作。使用最近邻的分类器也适用于开集识别问题。通过存储训练样本,最近邻距离比值被用于在测试中识别未知样本。
基于重构的方法希望ID和OOD样本被重构时表现不同。这种差异能够在潜在特征空间或重构图片的像素空间中被捕捉到。
通过将已知类别的图片转化为稀疏表示,开集样本由于相对稠密能被识别出。用于稀疏编码的技巧包括:疏密指数(sparsity concentration index)【180】和核虚空间方法(kernel null space method)【181,182】。
通过固定在ID样本训练得到的多分类视觉编码器来维持在ID样本上的分类性能,C2AE训练一个以表情按向量为条件的解码器,使用极值理论估计重构后的图片来区分未知类别。后续的工作使用条件高斯分布,使得不同潜在特征逼近类内(class-wise)高斯模型,以达到在分类已知类别样本的同时能拒绝未知类别样本。其他方法生成反事实(counterfactual)图片来帮助模型更关注语义。对抗防御【186】也以这种思路去增强模型鲁棒性。
后处理检测的方法优点在于无需修改训练程序和目标就可以轻易应用。这一点对现实生产环境中的OOD检测方法很重要。早期的ODIN是一个使用temperature scaling和输入扰动来放大ID/OOD差别的后处理方法。该方法中,一个足够大的temperature有很强的平滑作用,能够将softmax值转换到logit空间(),从而有效区分ID和OOD样本。注意这种方式与信心校准不同,它采用了更温和的T
而校准更关注表达ID样本真实的正确概率
ODIN的评分最大化了ID和OOD样本之间的差异,可能从预测信心的角度看不再有意义。
基于这个见解,近期【189】提出使用能量分值来做OOD检测,该方法不需要超参数并且性能与ODIN相当甚至更好。能量函数将logit输出通过便捷的 logsumexp 运算符映射为标量。能量值相对低的测试样本被认为是ID的,反之为OOD。
【55】进一步提出了联合能量值(JointEnergy score)
为OOD检测定制的基于信心的方法能够通过设计信心估计分支和类别数据增强(结合leaving-out留一策略、对抗训练、更强的数据增强、不确定性建模、利用理想深度的特征)来实现。
特别地,为了增强对协变量偏移的敏感性,一些方法关注神经网络中间层的隐藏表示。泛化的ODIN通过使用DeConf-C作为训练目标来扩展ODIN,选择ID数据上的扰动尺度作为超参。
由于ODIN需要模型训练过程,它未被归类到后处理方法。
为了得到质量更优的隐藏层特征以便进行密度估计,分层的 Mahalanobis距离、 Gram Matrix等技巧被引入。
OOD检测的另一分支利用收集到的OOD样本集(离群样本集),在训练中帮助模型学到ID和OOD的差异。
总的来说,采用离群点暴露的OOD检测能达到明显更优的性能。然而,其性能受给定OOD样本和真实OOD样本间相关性强弱影响明显,如何将OOD由已经暴露的OOD泛化到更广泛的OOD还需进一步探索。
离群点暴露方法依赖于OOD训练数据可获取这一强假设,该条件在实际可能不成立。在OOD数据不可获取时,一些方法尝试去合成OOD样本从而让ID和OOD可区分。现有工作利用GAN来生成OOD训练样本并使模型输出均匀(uniform 正态???)的预测,从而在低密度区域生成边界样本,或者类似地,生成高置信度的OOD样本。
现有的OOD检测方法主要依赖输出或特征空间来给出OOD评分,而忽视了梯度空间的信息。ODIN【188】首次探索了使用梯度信息检测OOD。ODIN使用经过预处理的输入,其预处理为施加由输入梯度得来的细微扰动。ODIN扰动的目标在于增强模型对预测标签的信心从而增加任何给定输入的softmax值。最终,可以找到能使ID和OOD输入的softmax评分差异更大的扰动,从而使得它们更能被区分,使得OOD检测性能更好。ODIN仅隐式地通过扰动来利用梯度。GradNorm则使用梯度向量的范数,从softmax输出和正态概率分布的KL散度反向传播。
贝叶斯模型是一类统计模型,应用贝叶斯法则来推测模型中所有的不确定性。其中,最有代表性的是贝叶斯神经网络,该方法通过马尔可夫链蒙特卡洛方法、拉普拉斯方法、变分推断来构成模型的认知不确定性,从模型的后验分布中采样。它们最明显的缺陷在于预测不精确,计算代价高使得它们难以用于实际。近期工作尝试了几种less principled(理论性较弱??)的近似,包括 MC-dropout [224] 和深度融合 [225],299] 用于更快、更好地估计不确定性。这些方法在OOD不确定性估计上不太有竞争力。更进一步的探索需要在保留贝叶斯原理的优势的同时,采用自然梯度变分推理,从而能够采用实用且可负担的现代深度学习训练。狄利克雷先验网络Dirichlet Prior Network (DPN) 也在OOD检测中被运用,使用对模型不确定性、数据不确定性以及分布不确定性三个不同来源的不确定性进行不确定性建模,出现了一系列工作 [227], [228], [229]。
近期工作推进了更贴近实际应用的大规模OOD检测。研究的两个方向是:将OOD检测扩展到大的语义空间、利用大型的预训练模型。例如,【168】指出,在基于CIFAR benchmark数据得到的方法在语义空间更大的benchmark ImageNet上并不奏效,这强调了在大型真实设定下评估OOD检测的必要性。为解决上述挑战,MOS的关键理念是将大的语义空间解构为有相似概念的更小的群组,这简化了已知和未知数据之间的决策边界。强有力的预训练模型在各种任务、模态都达到了惊人的性能。同期的工作 [171], [230], [231] 证实预训练过的transformer在特定的困难的OOD任务上性能显著改善。
OOD检测领域中,基于密度的方法用一些概率模型显式地建模分布内数据,并将低密度区域的测试数据标记为OOD。即使OOD检测在分布内数据为多类别的情形下和异常检测不同,3.1.2节中的密度估计方法能够通过将分布内数据统一成一个整体而直接适用于OOD检测。当分布内含多个类别时,class-conditional高斯分布能够显式地建模分布内数据,因而分布外样本能够根据输出的预测概率而被识别【207】。基于流的方法 [92], [232], [233], [234]也可被用于概率建模。直接估计OOD概率似乎是一种自然的解决方法,也有一些方法 [235], [236], [237] 通过给OOD样本输出更高的概率预测值来实现OOD检测。【238】尝试使用likelihood ratio来解决这个问题。【239】发现,对输入复杂度,概率值存在明显偏差,提出了一种基于概率值比例的方法来削减输入复杂度的影响。近期的方法转而使用新的评分,例如likelihood regret【240】或是集成多个密度模型【236】。整体上,生成式模型的训练和优化难度几乎是不可接受的,它们的性能也往往落后于基于分类的方法(3.3)
基于距离的方法基本理念在于,测试中OOD样本应当相对远离分布内类别的中心(centroid)或原型(prototype)。【207】使用相对所有类别中心的最小Mahalanobis距离来检测。一个后续工作【241】将图片分为前景和背景,再计算这两个空间间的Mahalanobis距离比例。一些工作使用测试样本特征和类别特征间的余弦相似度来确定OOD样本【242】、【243】。被训练特征的的第一奇异向量一维的子空间
更进一步,其他工作利用了径向基函数核距离(distance with radial basis function kernel)、输入的嵌入向量到类别中心的欧拉距离。
OOD检测领域自出现以来发展迅速,其解决方案从基于分类的、基于密度的、再到基于距离的。在多类别设定下,典型的OOD检测是开集识别问题(第4节),在类别空间Y中精确分类分布内的测试样本,并且丢弃语义不被Y所支持的分布外样本。然而,OOD检测包含了更广泛的学习任务(比如,多标签分类)和解法(比如,密度估计和离群点暴露)。一些方法放宽了开集检测的限制条件,并且达到了更强的性能。
离群检测需要所有样本可见,其目标是检测出那些显著偏离大多数的分布的样本。离群检测方法通常是转导式的,而不是归纳式的。 [13], [14], [15], [16]综述主要回顾了数据挖掘领域的离群检测方法。以下主要回顾离群检测方法,尤其是为计算机视觉设计的使用深度神经网络的方法。即使深度学习方法极少能直接解决离群检测问题,数据清洗程序(从开集脏数据学习的先决条件)和开集半监督学习的方法也在解决离群检测问题。
离群检测模型的基本理念是将整个数据集建模为一个高斯分布,将偏离均值超过三杯标准差的样本标记为离群【300】【301】。其他带参数的概率方法利用Mahalanobis距离[266] 和高斯混合模型 [302]来建模数据密度。和“三倍标准偏离”规则类似,四分位距也可通过构建传统的无参数概率模型来检测离群样本【247】。为了鲁棒和简化,局部离群因子(local outlier factor)方法【248】借助给定点的邻居和它自身局部可达性的比值,去估计给定点的密度。RANSAC【252】迭代地估计数学模型的参数来拟合数据并且找到对估计贡献较少的样本作为离群点。
总体上,经典的异常检测的密度方法比如,核密度估计(3.1节),也可应用于离群检测。即便这些方法由于图片数据维度太高而应用困难,也可以通过降维方法【253,254】和基于最近邻的密度方法(3.1节)来缓解。
检测离群的一个简易方法是计数某特定半径内的邻居数量,或者度量第k近邻居的距离【303,304】。以下主要介绍基于聚类的方法和基于图的方法。
DBSCAN【255】依照基于距离的密度来积聚样本构成聚类。处在主要聚类之外的样本被识别为离群样本。后续工作通过考虑聚类标签的信心改良了聚类的方式【256】。
另一类方法利用数据点之间的关系,并构造邻域图[305], [306](或其变体[307]),利用图的属性和图挖掘技巧来找到异常的样本【257,258】,比如图聚类[259], [260]、图分割【308】、使用图神经网络的标签传播【261】。
以上是关于综述:广义的分布外检测(异常检测、开集识别、OOD检测)的主要内容,如果未能解决你的问题,请参考以下文章