基于深度模型Out of Distribution(OOD)基础技术路线研究

在工业检测领域,将训练好的模型部署到实际场景时,常会碰到一个问题:如果输入的图片是一个新的类别,模型之前根本没见过,那么,无论模型的预测结果是什么,都必会是错误的。这种情况下,有两种选择:一种是将新出现的类别加入训练集,从新训练一个模型;另一种便是我们将要介绍的OOD检测方法。

问题定义和使用场景

定义:在分类任务中,给定测试图片x_{\text{test}},若模型在训练阶段模型见过或类似的图片,则能正确分类;但如果与训练集完全不相关,也会被强制判定为训练集类别中的一种,这种情况是不合理的。OOD算法希望能判断的分布状况是否与训练集一致,若一致,则称为in-distribution(ID),否则称为out-of-distribution(OOD)。

使用场景举例:在MNIST上训练的一个分类模型,然后,输入一张“马”的图片,会被归类为数字0~9,这是错误的。此时,MNIST数据集就是in-distribution,相对于ID而言,“马”是out-of-distribution。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第1张图片

本文将为大家介绍五种OOD检测方法

1- 基于softmax的OOD检测方法

在分类网络中,对\text{logits}进行\text{softmax}运算,可以得到概率向量。而基于\text{softmax}的OOD检测方法,就是利用了概率向量的特点,直接判定x_{\text{test}}是ID样本还是OOD样本。本节介绍MSP和ODIN,两者都是OOD领域较为经典的方法。

1- 1 - MSP

MSP是Maximum Softmax Probability的缩写。在分类任务中,分类器的输出概率为P=(p_1, ⋯,p_C )=\text{softmax}(\text{logits}),其中,C是预先设定的类别总数。给定x_{\text{test}},若标签y=i,则p_i很大,其余分量很小;而且,实验发现,若x_{\text{test}}为OOD样本,那么P的任意分量都很小,说明模型不确定x_{\text{test}}的类别。如下图所示,使用MNIST数据集训练的模型进行推理,会发现“马”的概率向量的每个分量都很小,而在数字0~9的概率向量中,都有一个特别大的分量。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第2张图片

正是利用了这个特性,MSP定义OOD分数定义为

\text{score}(x_\text{test})=p_{\text{max}}=\text{max}\{p_1, p_2, \cdots , p_C\}. 

 如果分数较大,判定x_{\text{test}}为ID样本,否则判为OOD样本。

MSP的缺点:当ID与OOD区别较大时,效果好;区别较小时,效果较差。在NuSA的介绍中,会看到这是因为从特征到logits会丢失了OOD样本的一些信息。

1 - 2 - ODIN

ODIN代表着Out-of-DIstribution detector for Neural networks,它在MSP的基础上,引入了temperature scaling和input preprocessing,使ID样本和OOD样本之间的区分度变大。

首先,介绍temperature scaling。在MSP中,OOD分数为

\text{score}(x)=\text{max}\{p_1, ⋯,p_C\}=p_\text{max}=\frac{\text{exp}(l_{\text{max}})}{\sum_{j=1}^C \text{exp}(l_j)}

而在ODIN中,引入了一个温度因子T,变成了\text{score}(x)=\frac{\text{exp}(\frac{l_{\text{max}}}{T})}{\sum_{j=1}^C\text{exp}(\frac{l_j}{T})},通过Taylor展开,可以分析这样做的好处。利用\text{exp}(x)=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\cdots,可以得到

\text{score}(x)=\frac{\text{exp}(\frac{l_{\text{max}}}{T})}{\sum_{j=1}^C\text{exp}(\frac{l_j}{T})}=\frac{1}{\sum_{j=1}^C\text{exp}(\frac{l_j-l_{\text{max}}}{T})}=\frac{1}{\sum_{j=1}^C[1+\frac{l_j-l_{\text{max}}}{T}+\frac{1}{2!}\cdot\frac{(l_j-l_{\text{max}})^2}{T^2}+o(\frac{1}{T^2})]}\approx \frac{1}{C-\sum_{j=1}^C\frac{l_{\text{max}}-l_j}{T}+\frac{1}{2T^2}\cdot\sum_{j=1}^C\cdot(l_{\text{max}}-l_j)^2+o(\frac{1}{T^2})}=\frac{1}{C-\frac{C-1}{T}\cdot [U_1-\frac{U_2}{2T}]}

其中,U_1=\frac{1}{C-1}\sum_{i\neq i_{\text{max}}}^C [l_{\text{max}}-l_i], U_2=\frac{1}{C-1}\sum_{i\neq i_{\text{max}}}^C [l_{\text{max}}-l_i]^2.

最终,\text{score}(x)\propto U_1-\frac{U_2}{2T}。若x_{\text{test}}是ID样本,我们希望\text{score}(x_\text{test})很大。事实上,U_1 会比较大,但 U_2 也很大,导致 \text{score}(x_\text{test}) 被 \frac{U_2}{2T} 削弱,此时只需增大 T 即可降低 U_2 的影响。若 x_{\text{test}}是OOD样本,我们希望 \text{score}(x_\text{test}) 比较小。事实上,U_1 确实会比较小,U_2 也很小,导致 \text{score}(x_\text{test}) 很小,结果增大 T 不影响OOD样本。总结起来,增大 T 对OOD样本影响不大,但能使ID样本分数更高,增大了分离性。

其次是input preprocessing,就是对输入进行预处理,使ID样本和OOD样本的分离性变大。从梯度下降法的角度进行分析,以 \text{score}(x) 为目标函数,x 为变量。若沿着负梯度方向 -\nabla_x \text{log}~\text{score}(x) 更新 x ,可使 \text{log}~\text{score}(x) 变小。对于ID样本,我们希望 \text{log}~\text{score}(x) 变大,所以要沿着正梯度方向 \nabla_x \text{log}~\text{score}(x) 更新 x ,即 \widetilde{x}=x+\epsilon\cdot \nabla_x \text{log}~\text{score}(x) 。实验发现, in-distribution图片置信度受到增强,out-of-distribution图片置信度也增强,只不过前者增幅更大,从而使ID与OOD之间的分离性得到提升,如下图所示。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第3张图片

最终,通过实验,验证temperature scaling和input preprocessing的效果,如下图所示。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第4张图片

ODIN的缺点:尽管ODIN在MSP的基础上有了一定的改善,但是,它还是在MSP的整体框架之中,难有大的提升。

2- 基于feature的OOD检测方法

MSP和ODIN都是基于softmax的概率向量直接定义OOD分数,而Mahalanobis和NuSA则提供了一种新的思路,利用特征构造OOD分数。

2 - 1 - Mahalanobis

假设训练集为\{(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)\}\phi是CNN特征提取器,那么,计算均值和方差\mu_k=\frac{1}{N_k}\sum_{i:~y_i=k}\phi(x_i),k=1, \cdots , C,

\Sigma=\frac{1}{N}\sum_k\sum_{i:~y_i=k}(\phi(x_i)-\mu_k)(\phi(x_i)-\mu_k)^T.

利用Mahalanobis距离函数,定义OOD分数为

\text{score}(x_\text{test})=\text{min}_{k=1, \cdots , C}~(\phi(x_\text{test})-\mu_k)^T\Sigma^{-1}(\phi(x_\text{test})-\mu_k) 。可以理解为,对于in-distribution中的每一个类别,都找一个中心,总共有C个中心 \{\mu_1, \mu_2, \cdots ,\mu_C\} ;给定待测样本 x_\text{test} ,如果它到任意一个中心都很远,那么是OOD样本。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第5张图片

Mahalanobis的缺点:Mahalanobis保留了OOD样本的关键信息,但分类器训练好了却没有利用,导致分类结果的信息完全没有被用来进行OOD判断,而MSP实验显示,这些信息有助于提升ID样本的检测效果。

2- 2 - NuSA

给定一张图片 \text{img} ,通过网络得到特征 x=\phi(\text{img}) ,再由线性变换得到 logits ,即 \text{logits}=l=W^T x=\left[\begin{matrix}w_1^Tx\\w_2^Tx\\\vdots\\w_C^Tx\end{matrix}\right] 

可以看到,特征 x 与 \text{logits} 之间,只差了一个线性变换。将 x 投射至 w_i 方向,如下图所示,

基于深度模型Out of Distribution(OOD)基础技术路线研究_第6张图片

得到 x=x^{w_i}+x^{w_i^\perp} ,由于 l_i=w_i^Tx=w_i^Tx^{w_i}+w_i^Tx^{w_i^\perp}=w_i^Tx^{w_i} ,所以 x 是否属于第 i 类,完全由 x^{w_i} 决定,而与 x^{w_i^\perp} 无关。此时,称 w_i 是第 i 类的类别向量。更一般地,将 x 投射至空间 \text{span}\{w_1^T,w_2^T,⋯,w_C^T\} ,则 x=x^{W}+x^{W^\perp} 。可以看到,在分类任务中,从特征 x 到 \text{logits} 的过程, x^{W^\perp} 携带的信息被“扔掉了”,导致 x 被强制预测为 \{1,2,\cdots ,C\} 中的某一类。

如果 \text{img} 是In Distribution,那么,从特征 x 至 logits 的过程,其信息将被大量保存至 x^{W} ,损失的信息量 ||x^{W^\perp}|| 很小;如果 \text{img} 是Out-Of-Distribution,那么, x=\phi(\text{img}) 不应该被分类为 \{1,2,\cdots ,C\} 中任何一类, ||x^{W^\perp}|| 就会很大。

最终,定义OOD分数 \text{NuSA}(x)=\frac{\sqrt{||x||^2-||x^{W^\perp}||^2}}{||x||},分数大判为ID,分数小判为OOD。

NuSA具有与Mahalanobis方法一样的缺点:NuSA保留了OOD样本的关键信息,但分类器训练好了却没有利用,导致分类结果的信息完全没有被用来进行OOD判断,而MSP已证明,这些信息有助于提升ID样本的检测效果。

3- softmax和feature相结合的OOD检测方法

本节介绍一种将softmax和feature相结合的OOD检测方法,ViM(Out-Of-Distribution with Virtual-logit Matching)。ViM的作者使用ImageNet-1K作为ID样本,又分别使用OpenImage-O、ImageNet-O、Texture和iNaturalist作为OOD样本,检验每种方法的效果。如下图,基于softmax的方法时好时坏,基于feature的方法也一样有波动。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第7张图片

更重要的是,基于softmax的方法较差时,基于feature的方法往往有较好的效果,反过来也有一样的规律。softmax和feature之间形成了一定的优势互补,于是,ViM要将两者进行统一。

3 - 1 - ViM的原理

假设训练集有 m 张图片,经网络提取获得 m 个特征,记为 X=[x_1, x_2, \cdots ,x_m]^T,x_i 的维度为 N 

。接下来,进行PCA降维。获取矩阵 X^TX=Q\Lambda Q^T=[e_1, \cdots , e_N]\left[\begin{matrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_N \end{matrix}\right]\left[\begin{matrix} e_1^T\\ \vdots\\ e_N^T \end{matrix}\right]

的 D 个最大的特征值对应的特征向量,得到 D 维主空间(principal space) P=\text{span}\{e_1, \cdots, e_D\}, P 是ID样本的主空间,将ID样本 x 投射至 P ,损失的信息 ||x^{P^\perp}|| 数值较小;将OOD样本 x 投射至 P ,损失的信息较多,此时 ||x^{P^\perp}|| 数值较大。主空间 P 的维数低,但特征更关键、更本质。

除主空间外,剩余的特征向量记为 R=[e_{D+1}, \cdots, e_N], 那么, ||x^{P^\perp}||=\sqrt{x^TRR^Tx}

最终, \text{ViM}(x)=\frac{e^{\alpha \sqrt{x^TRR^Tx}}}{\sum_{i=1}^C e^{l_i}+e^{\alpha \sqrt{x^TRR^Tx}}} ,在原分类网络增加一个虚拟的logit分支(virtual logit),变成了 C+1个类别的分类问题,如下图所示。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第8张图片

3- 2 - ViM的实验结果

实验设置为:

  • ID样本:ImageNet-1K,包含1000个类别;
  • OOD样本:OpenImage-O、Texture、iNaturalist、ImageNet-O,不是混杂在一起,而是逐一作为OOD数据集;
  • 8种对比方法:MSP、Energy、ODIN、MaxLogit、KL Matching、Residual、ReAct、Mahalanobis,直接使用预训练模型,不再进行fine-tuning;
  • 网络结构:第一种网络结构BiT、第二网络结构ViT;
  • 评价指标:AUROC(越大越好)、FPR95 (FPR@TPR95,越小越好),只考虑ID与OOD之间的辨析,不考虑ID内部是否正确分类,因为不进行fine-tuning。

实验结果显示,ViM在4个OOD数据集上的指标都很好,同时具备了基于softmax和基于feature的方法的优点。

基于深度模型Out of Distribution(OOD)基础技术路线研究_第9张图片


总结起来,模型在上线部署时,怎么处理从未见过的新类型数据,决定了系统是否稳定。而本文介绍的五种OOD检测方法,分别从不同的思路出发,为应对这种挑战提供了解决方案。随着未来更多新思路、新方法的涌现,OOD检测一定会变得更强大,帮助更多模型可靠地运行。

  |参考文献

  • MSP: Dan Hendrycks and Kevin Gimpel. A Baseline for Detecting Misclassified and Out-of-Distribution Examples in Neural Networks. ICLR 2017.
  • ODIN: Shiyu Liang and Yixuan Li et al. Enhancing the reliability of out-of-distribution image detection in neural networks. ICLR 2018.
  • Mahalanobis: Kimin Lee1 and Kibok Lee et al. A Simple Unified Framework for Detecting Out-of-Distribution Samples and Adversarial Attacks. NeurIPS 2018.
  • NuSA: Matthew Cook and Alina Zare et al. Outlier detection through null space analysis of neural networks. arXiv 2020.
  • ViM: Haoqi Wang and Zhizhong Li et al. ViM: Out-Of-Distribution with Virtual-logit Matching. CVPR 2022.

你可能感兴趣的:(机器学习,人工智能,深度学习)