深度异常检测与异常暴露
文章目录
Abstract
在部署机器学习系统时,检测异常的输入非常重要。更大、更复杂的输入,加大了区分异常examples和分布内example的难度。与此同时,各种各样的图像和文本数据也大量存在。我们建议利用这些数据来改进异常检测方法,方法是利用一个辅助的异常数据集训练异常检测器,我们称之为异常暴露(OE)。这使得异常检测器能够泛化并检测没有见过的异常样本。在大量的自然语言处理实验和小尺度和大尺度视觉任务中,我们发现OE显著提高了检测性能。我们还观察到,在CIFAR-10上训练的尖端生成模型可能会给SVHN图像分配比CIFAR-10图像更高的可能性;我们使用OE来缓解这个问题。我们还分析了OE的灵活性和鲁棒性,并分析了提高性能的辅助数据集的特征。
1 Introduction
在本文中,我们研究了一种补充的方法(常接在别的自监督模型后面),我们训练模型来检测未建模的数据(即异常数据),通过学习,提示是否输入是未建模的。虽然很难为完整的数据分布建模,但我们可以通过将模型暴露于OOD examples 来学习检测OOD输入,从而学习更保守的Inliers,并能够检测新的异常形式。为此,我们建议利用不同的、真实的数据集,使用一种我们称为离群值暴露(OE)的方法。OE提供了一种简单有效的方法来持续改进现有的OOD检测方法。
OE有助于异常检测器泛化OOD数据的未曾见过的分布,甚至在大规模图像上也能表现良好。我们还证明了异常暴露比现有的几种OOD检测方法有所提高。我们的结果还显示了异常暴露的灵活性,因为我们可以用不同的异常分布源来训练各种模型。此外,我们确定OE可以使OOD样本的密度估计对OOD检测更加有用。最后,我们证明了OE改善了神经网络分类器在真实环境中的校准,其中一部分数据是OOD的。
2 Related Work
3 Outlier Exposure
我们考虑决定一个任务,即样本是否来自 D i n D_{in} Din的已知分布,或来自 D o u t D_{out} Dout。
在实际应用中,可能很难提前知道异常值的分布。因此,我们认为现实环境中的 D o u t D_{out} Dout是未知的。
给定一个参数化的OOD检测器和一个与 D o u t t e s t D_{out}^{test} Douttest不相交的OE数据集,我们训练模型来发现信号,并学习算法来检测query来自于 D i n D_{in} Din还是 D o u t O E D_{out}^{OE} DoutOE。
我们发现我们的算法可以推广到未曾见过的分布 D o u t D_{out} Dout。
深度参数化异常检测器通常从辅助任务中进行表示学习,例如分类或密度估计。(意思就是说将异常检测任务转化为一个辅助任务,即分类或者检测)给定一个模型 f f f和最初的学习目标 L L L,我们可以通过调参 f f f将OE最小化目标
在此案例中,由于label是不可获取的,所以 y y y可以被忽略
OE可以被应用在许多类型的数据集和原始任务上,因此 L O E L_{OE} LOE的具体公式依据任务和OOD检测器的使用而定
例如当使用基于maximum softmax probability的检测器时,我们设置 L O E L_{OE} LOE为 f ( x ′ ) f(x') f(x′)和均匀分布的cross-entropy;
当原始目标 L L L是密度估计并且label无法获取时,我们将 L O E L_{OE} LOE设置为对数似然 f ( x ′ ) f(x')