Advertisement

【分布外检测】《Energy-based Out-of-distribution Detection》 NIPS‘20

阅读量:

这篇论文提出了一种基于能量函数的异常检测方法,通过替换传统softmax函数来识别输入数据是否为异常样本。能量模型通过构建能量函数将输入空间映射到标量,低能量对应正常样本(ID),高能量对应异常样本(OOD)。论文还提出了一种基于能量的正则化项,用于微调模型以区分ID和OOD数据。实验结果表明,该方法在检测异常样本时优于基于softmax置信分数的方法,并且在微调后表现优于现有方法。通过能量模型和能量边界学习,该方法能够更准确地区分正常和异常样本分布。

《Energy-based Out-of-distribution Detection》 NIPS’20

在不改变模型结构的前提下,将能量函数替换为替代于softmax函数,适用于任意模型,以识别输入数据是否为异常样本。此外,我们提出一个基于能量的正则化项,用于对模型进行针对性的微调。

解决什么问题

当模型遇到与训练数据存在显著差异的数据时,就会产生out-of-distribution (OOD)uncertainty,这种情况下模型的性能会显著下降。识别出这些OOD数据至关重要,例如对抗样本和异常检测技术。

传统的OOD检测方法主要依赖于softmax信心值的计算。具体而言,对于ID数据,模型通常会给出高置信度的预测结果,而可信度较低的样本则被认为是OOD样本。然而,这种方法也可能导致OOD样本被误判为高置信度的正常样本(例如,对抗样本)。

该文提出了一种energy function,替代了softmax函数用于识别OOD。其中,ID样本的平均能量值较低,而OOD样本的平均能量值较高。

image-20210319155054261

什么是能量模型(EBM)

能量模型的概念最早由LeCun于2006年提出,其本质是构建一个能映射输入空间到能量表示的非概率标量的函数。通过Gibbs分布将能量转换为概率密度,具体公式如下:p(y \mid \mathbf{x})=\frac{e^{-E(\mathbf{x}, y) / T}}{\int_{y^{\prime}} e^{-E\left(\mathbf{x}, y^{\prime}\right) / T}}=\frac{e^{-E(\mathbf{x}, y) / T}}{e^{-E(\mathbf{x}) / T}} \tag{1}其中,T表示温度参数。

其中分母被称为配分函数Z,T为温度参数。此时,对于任意样本x,其能量E(x)定义为:

该神经网络分类器将输入映射至K维空间,通过softmax函数计算出该样本属于各类的概率。具体而言,对于输入x,其被映射至\mathbb{R}^{K}空间后,经过softmax计算得到该样本属于各类的概率。数学表达式如下:$$
p(y \mid x)=\frac{e^{f_{y}(x) / T}}{\sum_{i=1}^{K} e^{f_{i}(x) / T}} \tag{3}

在这一层中,$f_y(x)$代表第$y$类标签的logit值。这样,输入样本$(x,y)$的能量值可以表示为$-f_y(x)$,从而在原始神经网络分类器与能量模型之间建立了联系。我们可以用Softmax函数的分母来表示当前输入样本$x$的能量: 这里样本$x$的能量已经与样本的标签无关了,就是关于$f(x)$的一个标量。 #### 基于能量的OOD检测 ##### 能量异常分数,行 OOD检测本质上是一个二元分类任务,基于能量函数构建判别模型的概率密度函数:

p(\mathbf{x})=\frac{e^{-E(\mathbf{x} ; f) / T}}{\int_{\mathbf{x}} e^{-E(\mathbf{x} ; f) / T}} \tag{5}
$$
该公式用于计算样本的概率密度函数,其中E(x;f)表示能量函数,T为温度参数。

我们称此积分表达式为分母配分函数Z=\int_{\mathbf{x}} e^{-E(\mathbf{x} ; f) / T}。对上式取对数运算,得到:

\log p(\mathbf{x})=-E(\mathbf{x} ; f) / T-\underbrace{\log Z}_{\text {常数项}} \tag{6}

上式表明,-E(x;f)与对数似然函数之间存在线性对应关系。低能量对应高似然(ID),高能量对应低似然(OOD)。那么,设定一个阈值\tau就可以完成分类。公式(7)定义了分类器G(\mathbf{x} ; \tau, f),其输出为:

G(\mathbf{x} ; \tau, f)=\left\{\begin{array}{ll} 0 & \text { 如果 }-E(\mathbf{x} ; f) \leq \tau \\ 1 & \text { 如果 }-E(\mathbf{x} ; f)>\tau \end{array}\right. \tag{7}

其中阈值\tau是从正常样本数据分布统计得到的。

softmax函数,不行

在神经网络模型中,为何要提及“与似然函数线性对齐的事”呢?因为由此可得softmax置信分数不齐。首先,我们来推导能量分数与softmax置信分数之间的关系: \begin{aligned} \max _{y} p(y \mid \mathbf{x}) &=\max _{y} \frac{e^{f_{y}}(\mathbf{x})}{\sum_{i} e^{f_{i}(\mathbf{x})}}=\frac{e^{f^{\max }(\mathbf{x})}}{\sum_{i} e^{f_{i}(\mathbf{x})}} \\ &=\frac{1}{\sum_{i} e^{f_{i}(\mathbf{x})-f^{\max }(\mathbf{x})}} \\ \Longrightarrow \log \max _{y} p(y \mid \mathbf{x}) &=E\left(\mathbf{x} ; f(\mathbf{x})-f^{\max }(\mathbf{x})\right)=E(\mathbf{x} ; f)+f^{\max }(\mathbf{x}) \end{aligned} \tag{8}

代入公式(6),其中T=1,可以得到以下等式:

这里后两项f^{\max }(\mathbf{x})-\log Z的值不是一个定值,反过来说,对于ID样本,其负对数似然的期望值更小。然而,f^{max}(x)这个分类信心度却越大越好,这两种矛盾的存在,这在一定程度上解释了基于softmax confidence方法的局限性。

能量边界学习

在相同模型上,能量函数相较于softmax函数表现更好,如果能进行具有针对性的fine-tuning,效果会更佳。作者提出了一种能量边界目标函数用于优化神经网络模型:

\min _{\theta} \mathbb{E}_{(\mathbf{x}, y) \sim \mathcal{D}_{\text {train}}}\left[-\log F_{y}(\mathbf{x})\right]+\lambda \cdot L_{\text {energy}} \tag{10}

其中第一项是经典的交叉熵损失函数,应用于ID训练数据集。第二项则是一个基于能量的正则化项。通过惩罚那些能量超过m_{in}的ID数据和能量低于m_{out}的ODD数据,从而拉大正常数据与异常数据分布之间的距离。

实验

该实验基于SVHN、CIFAR-10和CIFAR-100构建了正常样本数据集,并引入了六个OOD数据集。研究团队基于WideResNet架构设计了预训练模型。

研究结果表明,不进行微调的策略在性能上优于基于softmax confidence的方法;而微调后的策略不仅在测试集上表现出色,且在经过微调后,该方法在ID数据集上的准确率保持不变。

image-20210321160152783

还有一个图我们很熟悉:

image-20210321160251170

通过两个分布的概率直方图的对比分析,可以观察到Energized score的表现显著优于Softmax score。在性能提升方面,基于Energy score的微调方法显著超越了基于OE的微调方法。

全部评论 (0)

还没有任何评论哟~