查看原文
其他

【源头活水】通过对比学习提升OOD检测

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—StayGold

地址:https://zhuanlan.zhihu.com/p/160836892

题目:Contrastive Training for Improved Out-of-Distribution Detection
来源:Arxiv preprint. Under review.
原文链接:https://arxiv.org/pdf/2007.05566.pdf
转载请注明出处:学习ML的皮皮虾


01

Introduction

一个训练得很好的模型在测试集上获得了很高的准确率,但当暴露于真实世界来自陌生分布的输入时,仍然会做出很离谱的预测。这一问题成了当前将神经网络模型部署到现实世界中的一个很大的障碍。然而要求现实中部署的模型只暴露于训练分布中的数据,则是昂贵的或根本不现实的。

对于一些对安全性要求较高的领域(例如医疗领域)中,当面对陌生的数据分布时,与其让神经网络做出可能不准确的预测相比,不如让神经网络自己分离出这类数据,交由人类专家处理。这一任务就是out-of-distribution(OOD)检测的任务。

OOD检测可以建模成:从数据样本中估计一个概率密度函数  ,然后在测试时使用阈值  来区分OOD样本:如果 ,那么样本  就被认为是OOD样本。

最近的OOD检测方法从预训练的分类器  中提取隐层表示  ,然后计算一个标量  (例如通过近似概率密度)来检测OOD样本。这种方法的成功与否很大程度上取决于由  定义的中间特征空间的质量。如果这个特征空间不够丰富,网络很可能无法感知到那些对判别OOD所必要的特征信息。以图像样本为例,其中的变化要么是由于物体本身的语义差异(如形状、姿态、纹理),要么是由于拍摄过程中的差异(如光线、相机位置)。根据应用的不同,任何一类陌生的变种都会导致输入样本被认为是OOD的。因此,作者希望由分类器  定义的隐层特征空间能够捕获尽可能多的语义属性,同时也对拍摄过程中的差异保持敏感。

监督学习能够产生语义表示,但仅限于这些表示足以区分域内类别的程度。网络没有被鼓励学习超出分类所必需的最低限度的额外特征(物体语义或其他方面)。这就是为何当前SOTA的OOD检测方法都要通过一些方法去增强(enrich)中间层的特征空间的辨识度,例如通过引入OOD数据(Outlier Exposure,OE)或通过设计自监督的损失,例如旋转预测(Rotation Prediction,RP)。然而,OE需要额外的OOD数据进行训练,这通常是昂贵的;而RP依赖于一个假设,即旋转预测这一任务能够帮助学习到有助于区分OOD的有用的特征,但这可能不总是成立。

本文的一个核心idea就是:鼓励判别器  学到尽可能多的高层(high-level)、任务无关(task-agnostic)的语义特征。这样就可以在测试时识别任意类型的OOD样本。作者通过最近对比学习的相关技术,如SimCLR去做到这一点。通过一组保留类别信息的图像转换,SimCLR引入了对比损失,使得同一图像的不同变换版本之间尽可能距离相近,同时使不同图像之间尽可能远离。这就鼓励模型学习区分所有数据集中图像的特征,即使他们属于同一类别。当对比学习与监督训练(图像分类)相结合时,  就能够学习到既丰富,又具有类别区分度的特征。

一个用来说明作者idea的toy example

在上图中,作者使用了一个简单的例子来进行说明其思想:作者假设特征空间是2维的    ,但是区分类别的特征仅包含在第一个特征维度    ,而第二个特征维度对于分类是没有用的。在这种情况下,纯粹的监督训练就会使得模型对第二个特征维度的信息没有感知,导致其决策边界是接近垂直的(如左图所示),因此无法识别在第二个特征上有区别的OOD样本。而对比学习,则使得分类器对两个维度都有所感知,而不仅仅是学到足以区分类别的最少特征。这样就能够识别在第二个维度有区别的OOD样本。

OOD识别的另一个难点在于评估。传统的定量评估在测试时需要一个OOD数据集,而这本身就是一个主观性的设计选择,因为离群的概念是任务相关的。因此作者区分了“近OOD”和“远OOD”,前者和域内数据在一定程度上是有关联的,而后者则是完全没有关联。作者认为在实际中,“近OOD”是更常见的情况,例如在医学病理检查系统中,常常会遇到非典型的病理组合,就可以认为是“近OOD”。相比之下,“远OOD”则不是那么普遍。基于此,作者主张对OOD样本与域内样本分布的相似度进行量化,并基于此提出了一个新的OOD评估指标。

本文贡献:

1. 提出了一种用对比学习进行OOD检测的新方法。该方法避免了显式地在输入空间中建模域内和域外样本的概率密度,易于融入现有框架;

2. 实验证明该方法显示出良好的OOD检测能力,显著优于其他方法如Outlier Exposure;并且本文的方法在训练/微调过程中无需OOD样本参与;

3. 提出了Confusion Log Probability(CLP)作为评估OOD检测的指标。使用该度量,本文的方法能够同时改善“近OOD”和“远OOD”的检测,但对于“近OOD”的检测效果的提升更为显著,如下图所示:

可以看到本文提出的方法能够显著改善“近OOD”的识别


02

Related Work

作者从四个方面对OOD检测的相关工作做了叙述,列举的工作比较全面,可以去原文查看。


03

Proposed Method

如上所述,通过判别损失进行训练只会让模型学习到足以区分类别的最小特征。而对比损失相当于将每个样本视为一个单独的类别,要求模型在增强后的instance之间进行区分(learn to distinguish one instance from other,即使它们属于相同类别),因此能学习到更为丰富的特征。例如,对于图像分类任务而言,相机参数和照明度是显著的区分特征,而这两类特征都可以通过平移、缩放、旋转图像,以及应用亮度和对比度变换来实现。

提出的框架基于SimCLR
Architecture

本文提出的框架基于SimCLR的模型(几乎一模一样)。首先对一个batch内的每一个样本,随机采样两种数据转换(如裁剪、旋转、缩放、亮度调整、去色等)方式:        ,通过这两个数据转换,得到同一个样本    的两个增强版本    和    。随后它们都通过同一个编码器  编码,得到图像表示向量    和    ,其中  是编码器参数。之后有两个映射矩阵: 和 ,其中  将图像表示映射到类别维度,得到分类logits;  将图像表示映射到一个低维的表示空间,在这个空间内用来做对比学习。

 是一个线性转换;  是两层MLP。在对比学习的空间中,余弦相似度定义为  ,转换后的向量分别表示为:  ,  。

Objective

对比损失定义为:

这里的分子是样本    的另一个转换版本;分母则包含    项,分别是    个负样本(同一个batch的其他    个样本的两种转换方式)和 1 个正样本(即分子的那一项)。使用了temperature进行平滑操作,作者在附录提供了这个参数的消融分析,发现在取1时效果最好(而之前的SimCLR报告在0.1时效果最好)。

除了对比损失外,使用  得到的logits还可以构建一个标准的交叉熵分类损失    。最终的损失为:  。这里的  在实验中取100。

训练时,首先仅使用对比损失    训练1000个epoch(无监督);随后使用上面的联合损失,训练100个epoch(有监督fine-tune)。

在实验中,batch size(    )为2048。

Density estimation

测试时检测OOD的方法类似《A simple unified framework for detecting out-of-distribution samples and adversarial attacks》。首先使用训练集中的图像表示  ,为每个类别    估计一个    维高斯分布:  ,    表示  的维度。随后,测试样本  作为OOD的分数通过如下公式计算:

这里max的每一项,其实就是每一个类多维高斯分布对应的概率密度函数在  处的概率密度取对数后的值。这个分数越大就代表测试样本离某个类别的训练样本簇比较接近;反之,越小就代表测试样本偏离已知类别中心,因而有较大概率属于OOD样本。

这里的多维高斯分布参数都是通过标准的最大似然估计方法,从训练样本的图像表示中估计出来的。与《A simple unified framework for detecting out-of-distribution samples and adversarial attacks》不同的点在于:本文没有使用各个layer之间聚合的方法,因为估计每个layer的权重需要额外的OOD样本。


04

Confusion Log Probability (CLP) as a Measure of Dataset Distance

现实场景下的测试样本区别非常大,从域内样本,到稍微偏离域内的OOD样本,再到离域内很远的OOD样本。作者认为现有的评价方法只评价单一的分数,例如ROC曲线下面积,是不够的,无法区分不同的OOD程度。

本文提出了confusion log probablility(CLP),用来评估OOD测试数据集的不同程度。给定两个域内和域外的训练数据集  和  ,它们分别属于两组域内和域外的类别:  和  。作者先在  训练一组分类器的聚合:为分类器个数。训练完后,使用下面的公式得到测试样本  被分为第  类的概率:

然后,给定当域内类别为  时,包含相应OOD样本的测试集  ,其CLP分数计算如下:

CLP越小说明测试集越接近“远OOD”,CLP越大则说明测试集接近“近OOD”。

由此,可以对每个域外类别的测试集计算CLP分数,并且得到它们作为OOD类别距离域内类别的远近程度,如图1中显示的那样。


05

Experiments

主实验结果

数据集采用CIFAR-10、CIFAR-100、SVHN,每次将一个作为域内,另一个作为域外。

OOD score 分布观察

针对训练目标的消融

Case Study

左图显示了使用对比学习解决了一些Baseline无法检测的OOD样本;但右图显示在与域内类别极其相似的OOD类别上,本文的模型也仍然无法解决(当然,这种细粒度的类别即使对于有监督分类也是一个挑战)。

 参数的消融

temperature参数的消融


06

Conclusion

本文提出了基于对比学习的OOD检测方法,并提出了评测OOD检测难度的评价指标CLP,以及相应的“近OOD”和“远OOD”的概念。

这项工作表明,OOD检测中的挑战(尤其是“近OOD”的挑战)与无监督表示学习中的挑战密切相关。作者认为,从这个角度来看OOD检测问题将为取得进展开辟新的途径。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存