【Paper Notes】Deep Anomaly Detection With Outlier Exposure

论文地址
这篇文章是发表在ICLR2019上,主要做分布外检测(Out of Distribution Detection)。

目录

  • 分布外检测(ODD)
  • 评价方法
    • FPR[95/90]
    • AU-ROC
  • 本文方法
  • 实验结果 & 思考

分布外检测(ODD)

分布外检测主要目标是让网络能够识别样本来自训练域外的风险。比如我们训练了一个猫狗分类模型。但是当我们输入一张乌龟的图片的时候,如果我们的模型仍然“自信”地输出猫或者狗这个类别的的话,那么在现实中部署这个模型是不可靠的。因此我们需要模型具有识别出非训练域中样本的能力,即 Out of Distribution Detection 。 后文,我们统称分布内数据为 ID,分布外数据为 OOD。

评价方法

如何评价一个模型的OOD检测的能力呢?我们知道模型在输出类别的时候一般都也会输出一个score/confidence value。通过输入部分ID数据和OOD数据,观察其score的差异可以评估出模型分布外检测的鲁棒性。比如ID数据的score都比OOD数据的score高的话,说明模型区分的不错。量化的评价指标有FPR95/90和AUROC。

FPR[95/90]

一般文中都会使用这个指标来评价模型的 OOD检测能力。具体的计算形式如下。针对一个分类模型, 如果我们划定了分类的阈值(对二分类模型,通常我们设置为0.5),我们可以得到一个混淆矩阵

Truth\Prediction True False
True TP FN
False FP TN

从上表我们可以看出,TP (True Positive) 和 TN(True Negative) 是模型预测对的。FN(False Negative)和 FP(False Positive) 是预测错的。

FPR 是 False Positive Rate,顾名思义就是假样本中预测成真样本的比例, 所以其计算公式为 F P R = F P T N + F P FPR = \frac{FP}{TN+FP} FPR=TN+FPFP。其实我们是希望这个值越小越好,越小越说明我们的模型能力越强。但是这个值也是受我们划定的分类阈值影响的。举个极端的例子,如果我们划定分类阈值为1.0,那么没有样本会被预测为阳性,那么 F P R = 0 FPR=0 FPR=0,但是这显然是不合理的。所以FPR后面跟的数字比如90,95是在真样本的召回率 R = T P T P + F N R=\frac{TP}{TP + FN} R=TP+FNTP上作了限制,要求 R=90%/95%的情况下划定阈值。

放到OOD的任务里,我们认为ID是True,OOD是False。

AU-ROC

AUROC的全称是 Area Under ROC curve. 因此需要先解释 ROC curve. ROC curve 的横轴和纵轴分别是FPR和TPR,其中TPR 是 True Positive Rate 的缩写,顾名思义代表的是真样本中预测为真的比例, T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP,其实就是真样本的召回率。

现在我们分析一下,TPR和FPR的关系。如果我们阈值设置的非常低,那么所有样本都会被预测为阳性样本,此时 TPR=FPR=1。如果阈值设置非常高,那么没有样本预测为阳性样本,TPR=FPR=0。因此TPR和FPR是正相关的。其绘制的图像趋势一般如下所示:
【Paper Notes】Deep Anomaly Detection With Outlier Exposure_第1张图片
一般我们都希望曲线处于右上方,因为右上方在假阳率低的同时,真阳率比较高,是我们所以往的表现。而越靠近右上方,其与横轴围成的面积越大,也就是AUROC越大。

本文方法

本文的方法其实比较朴素,就是利用一些OOD的样本微调网络使其获得OOD的检测能力。下面是公式化的描述。
E ( x , y ) ∼ D i n [ L ( f ( x ) , y ) + λ E x ′ ∼ D o u t O E [ L O E ( f ( x ′ ) , f ( x ) , y ) ] ] \mathbb{E}_{(x,y) \sim \mathcal{D}_{in}} \left[ \mathcal{L}(f(x),y) + \lambda \mathbb{E}_{x' \sim \mathcal{D}_{out}^{\bold{OE}}}\left[ \mathcal{L}_{\bold{OE}} (f(x') , f(x), y)\right]\right] E(x,y)Din[L(f(x),y)+λExDoutOE[LOE(f(x),f(x),y)]]
前项主要是分类损失,后项是和OOD检测相关的损失。在后项的损失中,作者对 L O E \mathcal{L}_{\bold{OE}} LOE的形式没有规定,但是目的是最大化ID样本和OOD样本之间的距离。

实验结果 & 思考

在实验结果上,充分证明了该方法的效果,并且达到了SOTA。但是美中不足的是需要OOD的数据参与训练。这在真实场景下可能不太实用。
另外一个值得思考的是,其虽然使用了OOD的数据,但是使用的OOD的数据并没有涵盖所有的OOD数据集,那么为什么在面对不同的OOD样本时仍然具有较好的检测能力呢?是否因为网络学习到了ID中的语义和OOD中的语义差异呢?

你可能感兴趣的:(深度学习,人工智能,视觉检测)