目录
Learning confidence for out-of-distribution detection in neural networks
前言
在前面的三次专栏中,我们已经熟悉了FGSM,Max-Softmax以及ODIN这三种方法,在这次专栏中,我们要记录的是一个对Max-Softmax架构进行优化的方法。文章依然延续了题目太长的特点。
Learning confidence for out-of-distribution detection in neural networks
论文链接:https://arxiv.org/pdf/1802.04865.pdf
Motivation
这篇文章从一个比较有意思的角度切入,借鉴了学与问的思想,并加入了奖惩机制。作者认为,传统的神经网络做OOD检测效果不好的原因在于:Softmax输出的得分并没有置信度或者是概率的含义,它仅仅是为了最小化与one-hot标签的交叉熵损失得到的结果而已。因此,在本文中,作者引出了一个新的分支,并且赋予了其“置信度”的含义,通过使用文中提出的奖惩机制的训练方法,作者得到了超过其他方法的一系列结果。
Methodology
将模型输出的预测标签看作是一个学生的回答,将真实的标签看作是标准答案。对于神经网络这个学生,他应该这样来学习:对于自己拿不准的输入,应该看一下答案;对于自己非常有把握的输入,应该独立判断而不借助于答案。为了保证平衡,看答案是会引入惩罚的,而我们期望的一个好学生的样子应该是:在学习过程中,不断地增加对输入的把握程度,也就是越来越不用去看答案。上面这个解释中的“把握程度”就是我们说的置信度,也就是网络有多大的概率判定输入样本是来自于ID数据的。这样,通过实际赋予新的分支“置信度”的含义,按照上述符合常理的方式训练,得到的输出就是表征当前样本来自ID的概率,从而可以用来计算AUROC和AUPR。下图展示了Learning Confidence的结构:
可以看出,网络的两个分支共享底层卷积特征,其中一个分支用于预测类别,一个分支用于输出网络对当前样本的置信度。
模型构建
我们用来表示上图中网络结构,其中代表的是置信度输出,代表的是类别输出。其中,类别输出是经过Softmax映射的归一化形式,置信度输出是经过函数映射的形式。对于每一个样本,我们并不是使用输出直接去和真实标签做交叉熵损失,而是对进行如下的变换:
也就是说,模型的输出标签是模型自身的预测结果和真实结果的一个线性组合,而组合的系数正是模型的置信度。可以看出,当模型的置信度达到1,也就是对当前的样本有完全的把握时,有,这就与通常的分类网络一致了。文章中使用变换后的输出结果与真实标签做交叉熵损失,形式如下:
在文章中,作者把这一设计看作是学生向老师或者是答案求教,但是不能允许这种情况无限制的发生,我们希望学生渐渐有自己判断的能力。于是,对于每一次求教,也就是较低的置信度,会引入一个惩罚。惩罚项的设计如下:
也就是说,我们希望网络的置信度越大越好。这样,通过加权和的形式,就得到了网络训练的整体损失函数:
训练技巧
这个损失函数并不是十分稳定的,因此在训练过程中需要动态调节加权和中,权重系数的大小。在文章中,作者提到:
- 当训练过程中的惩罚损失较高时,说明网络总是在求助于真实标签,说明求助的代价太小了。此时为了提升网络的自立能力,需要增加求助的代价,让网络少看答案,也就是要增加惩罚系数。
- 当训练过程中的惩罚损失较低时,说明网络很少看真是标签,都是用自己的输出在计算,说明了看真实标签的惩罚代价太高了。此时为了鼓励网络看一下真实标签,需要减小对求助的惩罚,也就是要减小系数。
实际上,作者是引入了一个损失阈值来判断当前是否惩罚过重,这些超参数优化起来可能会比较麻烦。
实验效果
首先是在XOR异或数据集上做的测试。作者使用MLP在异或数据集分类中,得到了以下结果:
从图片上可以看出,对于两类样本分布的区域,模型均输出了很高的置信度,代表它们都是ID数据,而在交界处,也就是噪声区域,模型给出的置信度很低,说明这些区域范围是OOD。这个实验表明了文章中提出的学习方式可以有效的辨别出ID数据与OOD数据,从而增强网络检测OOD的能力。
除此之外,作者也在其他数据集上做了通用的评测,结果如下:
可以看出,在多个网络和多个数据集上,文章中提出的Learning Confidence均获得了更高的AUROC和AUPR测试结果,验证了方法的有效性。 其他更详细的分析大家可以在文章的附录和实验部分看到。