【源头活水】通过对比学习提升OOD检测
“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。
地址: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
一个训练得很好的模型在测试集上获得了很高的准确率,但当暴露于真实世界来自陌生分布的输入时,仍然会做出很离谱的预测。这一问题成了当前将神经网络模型部署到现实世界中的一个很大的障碍。然而要求现实中部署的模型只暴露于训练分布中的数据,则是昂贵的或根本不现实的。
对于一些对安全性要求较高的领域(例如医疗领域)中,当面对陌生的数据分布时,与其让神经网络做出可能不准确的预测相比,不如让神经网络自己分离出这类数据,交由人类专家处理。这一任务就是out-of-distribution(OOD)检测的任务。
OOD检测可以建模成:从数据样本中估计一个概率密度函数
最近的OOD检测方法从预训练的分类器
监督学习能够产生语义表示,但仅限于这些表示足以区分域内类别的程度。网络没有被鼓励学习超出分类所必需的最低限度的额外特征(物体语义或其他方面)。这就是为何当前SOTA的OOD检测方法都要通过一些方法去增强(enrich)中间层的特征空间的辨识度,例如通过引入OOD数据(Outlier Exposure,OE)或通过设计自监督的损失,例如旋转预测(Rotation Prediction,RP)。然而,OE需要额外的OOD数据进行训练,这通常是昂贵的;而RP依赖于一个假设,即旋转预测这一任务能够帮助学习到有助于区分OOD的有用的特征,但这可能不总是成立。
本文的一个核心idea就是:鼓励判别器
在上图中,作者使用了一个简单的例子来进行说明其思想:作者假设特征空间是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”的检测效果的提升更为显著,如下图所示:
02
作者从四个方面对OOD检测的相关工作做了叙述,列举的工作比较全面,可以去原文查看。
03
如上所述,通过判别损失进行训练只会让模型学习到足以区分类别的最小特征。而对比损失相当于将每个样本视为一个单独的类别,要求模型在增强后的instance之间进行区分(learn to distinguish one instance from other,即使它们属于相同类别),因此能学习到更为丰富的特征。例如,对于图像分类任务而言,相机参数和照明度是显著的区分特征,而这两类特征都可以通过平移、缩放、旋转图像,以及应用亮度和对比度变换来实现。
本文提出的框架基于SimCLR的模型(几乎一模一样)。首先对一个batch内的每一个样本,随机采样两种数据转换(如裁剪、旋转、缩放、亮度调整、去色等)方式: 和 ,通过这两个数据转换,得到同一个样本 的两个增强版本 和 。随后它们都通过同一个编码器
Objective
对比损失定义为:
这里的分子是样本 的另一个转换版本;分母则包含 项,分别是 个负样本(同一个batch的其他 个样本的两种转换方式)和 1 个正样本(即分子的那一项)。使用了temperature进行平滑操作,作者在附录提供了这个参数的消融分析,发现在取1时效果最好(而之前的SimCLR报告在0.1时效果最好)。
除了对比损失外,使用
训练时,首先仅使用对比损失 训练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》。首先使用训练集中的图像表示
这里max的每一项,其实就是每一个类多维高斯分布对应的概率密度函数在
这里的多维高斯分布参数都是通过标准的最大似然估计方法,从训练样本的图像表示中估计出来的。与《A simple unified framework for detecting out-of-distribution samples and adversarial attacks》不同的点在于:本文没有使用各个layer之间聚合的方法,因为估计每个layer的权重需要额外的OOD样本。
04
现实场景下的测试样本区别非常大,从域内样本,到稍微偏离域内的OOD样本,再到离域内很远的OOD样本。作者认为现有的评价方法只评价单一的分数,例如ROC曲线下面积,是不够的,无法区分不同的OOD程度。
本文提出了confusion log probablility(CLP),用来评估OOD测试数据集的不同程度。给定两个域内和域外的训练数据集
然后,给定当域内类别为
CLP越小说明测试集越接近“远OOD”,CLP越大则说明测试集接近“近OOD”。
由此,可以对每个域外类别的测试集计算CLP分数,并且得到它们作为OOD类别距离域内类别的远近程度,如图1中显示的那样。
05
主实验结果
数据集采用CIFAR-10、CIFAR-100、SVHN,每次将一个作为域内,另一个作为域外。
OOD score 分布观察
针对训练目标的消融
Case Study
左图显示了使用对比学习解决了一些Baseline无法检测的OOD样本;但右图显示在与域内类别极其相似的OOD类别上,本文的模型也仍然无法解决(当然,这种细粒度的类别即使对于有监督分类也是一个挑战)。
temperature参数的消融
06
本文提出了基于对比学习的OOD检测方法,并提出了评测OOD检测难度的评价指标CLP,以及相应的“近OOD”和“远OOD”的概念。
这项工作表明,OOD检测中的挑战(尤其是“近OOD”的挑战)与无监督表示学习中的挑战密切相关。作者认为,从这个角度来看OOD检测问题将为取得进展开辟新的途径。
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“源头活水”历史文章
将线性门控机制应用于卷积结构
CVPR 2021 | CLD: 通过挖掘实例与聚类间关系进行无监督特征学习
CTRL,定向生成模型
Deep InfoMax损失函数小记
游走图模型-聊聊Node2Vec(论文分析、代码实践)
CVPR 2021 | 让机器想象未见的世界:反事实的零次和开集识别
解耦表示,理解用户的多样偏好和意图
REPAINT:深度强化学习中的知识迁移
Transformer 的稳健性更好吗?
读SfM-Net: Learning of Structure and Motion from Video
Conditional DETR: 通过显式寻找物体的 extremity 区域加快 DETR 的收敛
谷歌和CMU论文:使用元学习生成伪标签
Deep GNN评测,模型退化是做不深的主要原因!
CVPR2021:Spatial在左,Temporal在右,如何缓解视频动作理解中的隐式偏见之殇?
更多源头活水专栏文章,
请点击文章底部“阅读原文”查看
分享、在看,给个三连击呗!