KNN

KNN-OOD

Out-of-Distribution Detection with Deep Nearest Neighbors-腾讯云开发者社区-腾讯云

简单地使用从标准分类模型的特征嵌入导出的最近邻距离是不高效的

为了检测 OOD 样本,我们计算测试输入的嵌入与训练集的嵌入之间的第 k 个最近邻 (KNN) 距离,并使用基于阈值的标准来确定输入是否为 OOD。

KNN 提供了令人信服的优势:
(1)无分布假设
(2)与 OOD 无关(即,仅根据 ID 数据估计距离阈值,并且不依赖于未知数据的信息)
(3)容易使用(即不需要计算协方差矩阵的逆矩阵,因为协方差矩阵在数值上可能不稳定)
(4)与模型无关(即测试过程适用于不同的模型架构和训练损失)

紧凑且标准化的特征空间是 OOD 检测的最近邻方法成功的关键
基于 KNN 的 OOD 检测可以拒绝相当于贝叶斯最优估计器的输入

理论

基于距离的方法利用从模型中提取的特征嵌入,并在测试 OOD 样本距离 ID 数据相对较远的假设下进行操作。
image.png

之前基于距离的 OOD 检测方法采用参数密度估计,并将特征嵌入空间建模为多元高斯分布的混合(Lee et al., 2018)。 然而,这种方法对学习的特征空间做出了很强的分布假设,这可能不一定成立。

基于 KNN 的 OOD 检测器可以拒绝相当于估计的贝叶斯二元决策函数的输入。 较小的 KNN 距离 rk(zi) 直接转化为较高的 ID 概率,反之亦然。

检测OOD

具体来说,我们计算每个测试图像的嵌入与训练集之间的第 k 个最近邻距离,并使用一个简单的基于阈值的标准来确定输入是否 OOD。

我们使用归一化倒数第二个特征 $z = φ(x)/ \lvert \lvert φ(x) \rvert \rvert_{2}$ 进行 OOD 检测,其中 $φ : X → R^m$ 是特征编码器。

将训练数据的嵌入集表示为 $Z_n = (z_1, z_2, …, z_n)$。 在测试过程中,我们推导测试样本 $x^*$ 的归一化特征向量 $z^*$,并计算相对于嵌入向量 $z_i ∈ Z_n$ 的欧几里得距离 $\lvert \lvert z_i -z^* \rvert \rvert_{2}$。

对集合 $Z_{n}$ 按距离 $\parallel z_{i} - z^* \parallel_{2}$ 递增重新排序,得到序列 $Z’_{n} = (z_{(1)}, z_{(2)}, …, z_{(n)})$。OOD 检测决策函数定义为:

$$
G(z^*;k) = \mathbf{1}{-r_{k}(z^*)}
$$

其中 $r_{k}(z^*) = \parallel z^* - z_{(k)} \parallel_{2}$ 是到第 $k$ 近邻的距离,$\mathbf{1}{\cdot}$ 为指示函数。通常选择阈值 $\lambda$ 使 95% ID 数据正确分类,该阈值独立于 OOD 数据。

实验结果

实验指标

(1) ID样本真阳性率为95%时OOD样本的假阳性率(FPR95)
(2) 受试者工作特征曲线下面积(AUROC)
(3) ID 分类精度 (ID ACC)
(4) 每幅图像的推理时间(以毫秒为单位,测试图像的平均值)。

训练损失

在我们的实验中,我们的目的是证明基于 KNN 的 OOD 检测与训练过程无关,并且与在不同损失下训练的模型兼容。 我们考虑两种类型的损失函数,分别有和没有对比学习。
我们采用
(1)交叉熵损失,这是分类中最常用的训练目标
(2)监督对比学习(SupCon)(Khosla 等人,2020)——表示学习的最新发展,它利用了标签 通过在嵌入空间中对齐属于同一类的样本来获取信息

实验细节

我们使用 ResNet-18 作为 CIFAR-10 的骨干网。 遵循 Khosla 等人的原始设置,具有 SupCon 损失的模型训练了 500 个 epoch,批量大小为 1024。温度 τ 为 0.1。
我们执行最近邻搜索的倒数第二个特征的维度是 512。投影头的维度是 128。我们使用从 0.5 开始的余弦退火学习率(Loshchilov & Hutter,2016)。

我们对 CIFAR-10 使用 k = 50,对 CIFAR-100 使用 k = 200,使用验证方法从 k = {1, 10, 20, 50, 100, 200, 500, 1000, 3000, 5000} 中选择 (Hendrycks 等人,2019)。 我们使用动量为 0.9、权重衰减为 10−4 的随机梯度下降来训练模型。 没有对比学习的模型训练了 100 个 epoch。 起始学习率为 0.1,在第 50、75 和 90 时期分别衰减 10 倍。

对比学习的帮助

 (1) 我们使用 UMAP (McInnes et al., 2018) 可视化图 1 中学习到的特征嵌入,其中颜色编码不同的类标签。 一个显着的观察结果是,SupCon 的表示比从 CE 损失获得的表示更具可区分性和紧凑性。 高质量的嵌入空间确实为基于 KNN 的 OOD 检测带来了好处。
 (2) 除了可视化之外,我们还使用 SupCon 与 CE 训练的嵌入来定量比较基于 KNN 的 OOD 检测的性能。 如表 1 所示,与使用经过 CE 损失训练的模型的嵌入相比,具有对比学习表示的 KNN+ 降低了所有测试 OOD 数据集上的 FPR95。

关于k

我们注意到几个有趣的观察结果:(1)最佳 OOD 检测(由 FPR95 测量)在不同的随机采样率 α 下保持相似。 (2) 最优 k 与我们的验证策略选择的一致。 例如,当α=100%时,最优k为1000; 当α = 1%时,最优k变为10。 (3) 当 k 相对较小(例如 k < 1000)时,改变 k 不会显着影响推理速度,如图 3 (a) 所示。

image.png

特征归一化

在本次消融中,我们对比了使用和不使用特征归一化的基于 KNN 的 OOD 检测的性能。 第 $k$ 个 N 距离可以分别通过 $r_{k}( \frac{φ(x)}{\lvert φ(x) \rvert })$ 和 $r_k(φ(x))$ 导出。如图 3 (b) 所示,使用特征归一化改进了与没有归一化的情况相比,FPR95 大幅提高了 61.05% 为了更好地理解这一点,我们研究了两个向量 $u$ 和 $v$ 之间的欧几里得距离 $r = \lvert \lvert u − v \rvert \rvert_{2}$ 。特征向量 $u$ 和 $v$ 的范数可以显着提高。

有趣的是,最近的研究分享了图4(a)中的观察结果,即 ID 数据具有比 OOD 数据更大的 L2 特征范数 (Tack et al., 2020; Huang et al., 2021)。 因此,ID 特征之间的欧几里德距离可能很大(图 4 (b),这与 ID 数据具有比 OOD 数据更小的 k-NN 距离的希望相矛盾。事实上,归一化有效地缓解了这个问题,如图所示。如图4(c)所示,归一化对于最近邻方法在 OOD 检测中的成功起着关键作用,如图3(b)所示。

image.png
image.png

使用倒数第二层的特征比使用投影头更好

在本文中,我们遵循SSD+的惯例,使用倒数第二层的特征来代替投影头。我们还在图3(C)中验证了在所有测试OOD数据集上使用倒数第二层的功能比使用投影头要好。这可能是因为倒数第二层比投影头保留了更多的信息,后者的尺寸要小得多。

image.png