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

不改变模型结构,在任意模型上用能量函数替代softmax函数,识别输入数据是否为异常样本。还提出一个基于能量的正则化项,用来针对性fine-tuning模型。

解决什么问题

当模型遇到和训练数据差别很大的数据时,就会出现out-of-distribution (OOD)uncertainty,这个时候模型表现很差。识别出这些OOD数据很重要,比如对抗样本、异常检测。

传统的OOD检测方法是基于softmax confidence,即对于ID数据,模型会给一个高可信度的结果,对于可信度低的就是OOD样本。但是也可能会给OOD样本高可信度(比如对抗样本)。

这篇文章提出一个energy function来替换softmax函数识别OOD,ID样本能量低,OOD样本能量高。

什么是能量模型(EBM)

能量模型最早由LeCun在2006年提出,本质构建一个能连函数 E ( x ) : R D → R E(x): \mathbb{R}^{D} \rightarrow \mathbb{R} E(x):RD→R,将输入空间的每个样本 x x x映射到一个表示能量的非概率标量上。然后通过Gibbs分布可以将能量转化为概率密度:
p ( y ∣ x ) = e − E ( x , y ) / T ∫ y ′ e − E ( x , y ′ ) / T = e − E ( x , y ) / T e − E ( x ) / T (1) 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} p(y∣x)=∫y′​e−E(x,y′)/Te−E(x,y)/T​=e−E(x)/Te−E(x,y)/T​(1)
其中分母被称为配分函数, T T T是温度参数。此时对于任意样本的能量 E ( x ) E(x) E(x)为:
E ( x ) = − T ⋅ log ⁡ ∫ y ′ e − E ( x , y ′ ) / T (2) E(\mathbf{x})=-T \cdot \log \int_{y^{\prime}} e^{-E\left(\mathbf{x}, y^{\prime}\right) / T} \tag{2} E(x)=−T⋅log∫y′​e−E(x,y′)/T(2)
对于一个 K K K类的神经网络分类器 f ( x ) : R D → R K f(x): \mathbb{R}^{D} \rightarrow \mathbb{R}^{K} f(x):RD→RK将输入映射到 K K K个对数值,通过softmax得到当前样本属于某一类的概率:
p ( y ∣ x ) = e f y ( x ) / T ∑ i = 1 K e f i ( x ) / T (3) p(y \mid x)=\frac{e^{f_{y}(x) / T}}{\sum_{i=1}^{K} e^{f_{i}(x) / T}} \tag{3} p(y∣x)=∑i=1K​efi​(x)/Tefy​(x)/T​(3)
这里 f y ( x ) f_y(x) fy​(x)对应第 y y y类标签的logit值。到这里我们可以将输入 ( x , y ) (x,y) (x,y)的能量值表示为负的 f y ( x ) f_y(x) fy​(x),这样就在原始神经网络分类器和能量模型之间建立起了联系,我们可以用softmax函数的分母来表示当前输入样本 x x x的能量:
E ( x ; f ) = − T ⋅ log ⁡ ∑ i K e f i ( x ) / T (4) E(\mathbf{x} ; f)=-T \cdot \log \sum_{i}^{K} e^{f_{i}(\mathbf{x}) / T} \tag{4} E(x;f)=−T⋅logi∑K​efi​(x)/T(4)
这里样本 x x x的能量已经与样本的标签无关了,就是关于 f ( x ) f(x) f(x)的一个标量。

基于能量的OOD检测

能量异常分数,行

OOD检测实际上是一个二分类问题,用能量函数来构建判别模型的密度函数:
p ( x ) = e − E ( x ; f ) / T ∫ x e − E ( x ; f ) / T (5) p(\mathbf{x})=\frac{e^{-E(\mathbf{x} ; f) / T}}{\int_{\mathbf{x}} e^{-E(\mathbf{x} ; f) / T}} \tag{5} p(x)=∫x​e−E(x;f)/Te−E(x;f)/T​(5)
其中分母配分函数 Z = ∫ x e − E ( x ; f ) / T Z=\int_{\mathbf{x}} e^{-E(\mathbf{x} ; f) / T} Z=∫x​e−E(x;f)/T。上式取对数:
log ⁡ p ( x ) = − E ( x ; f ) / T − log ⁡ Z ⏟ constant for all x  (6) \log p(\mathbf{x})=-E(\mathbf{x} ; f) / T-\underbrace{\log Z}_{\text {constant for all x }} \tag{6} logp(x)=−E(x;f)/T−constant for all x  logZ​​(6)
上式表明 − E ( x ; f ) -E(x;f) −E(x;f)实际上与对数似然函数是线性对齐的,低能量意味着高似然(ID),高能量意味着低似然(OOD)。那么设置一个阈值 τ \tau τ就可以分类了:
G ( x ; τ , f ) = { 0 if  − E ( x ; f ) ≤ τ 1 if  − E ( x ; f ) > τ (7) G(\mathbf{x} ; \tau, f)=\left\{\begin{array}{ll} 0 & \text { if }-E(\mathbf{x} ; f) \leq \tau \\ 1 & \text { if }-E(\mathbf{x} ; f)>\tau \end{array}\right. \tag{7} G(x;τ,f)={01​ if −E(x;f)≤τ if −E(x;f)>τ​(7)
其中阈值 τ \tau τ是从正常样本数据分布统计得到的。

softmax函数,不行

文章里为什么要提上面“与似然函数线性对齐”的事呢?因为可以推出softmax置信分数对不齐。先推导出能量分数和softmax置信分数之间的联系:
max ⁡ y p ( y ∣ x ) = max ⁡ y e f y ( x ) ∑ i e f i ( x ) = e f max ⁡ ( x ) ∑ i e f i ( x ) = 1 ∑ i e f i ( x ) − f max ⁡ ( x ) ⟹ log ⁡ max ⁡ y p ( y ∣ x ) = E ( x ; f ( x ) − f max ⁡ ( x ) ) = E ( x ; f ) + f max ⁡ ( x ) (8) \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} ymax​p(y∣x)⟹logymax​p(y∣x)​=ymax​∑i​efi​(x)efy​(x)​=∑i​efi​(x)efmax(x)​=∑i​efi​(x)−fmax(x)1​=E(x;f(x)−fmax(x))=E(x;f)+fmax(x)​(8)
把公式(6)带入,令 T = 1 T=1 T=1:
log ⁡ max ⁡ y p ( y ∣ x ) = − log ⁡ p ( x ) + f max ⁡ ( x ) − log ⁡ Z ⏟ Not constant. Larger for in-dist  x (9) \log \max _{y} p(y \mid \mathbf{x})=-\log p(\mathbf{x})+\underbrace{f^{\max }(\mathbf{x})-\log Z}_{\text {Not constant. Larger for in-dist } \mathbf{x}} \tag{9} logymax​p(y∣x)=−logp(x)+Not constant. Larger for in-dist x fmax(x)−logZ​​(9)
这里后两项 f max ⁡ ( x ) − log ⁡ Z f^{\max }(\mathbf{x})-\log Z fmax(x)−logZ不是一个常数,相反,对于ID样本,其负对数似然期望是更小的,但是 f m a x ( x ) f^{max}(x) fmax(x)这个分类之心度却是越大越好,这二种冲突。这一定程度上解释了基于softmax confidence方法的问题。

能量边界学习

在相同模型上,能量函数已经比softmax函数好了,那要是能有针对性的fine-tuning一下就更好了。作者就提出了一种能量边界目标函数来fine-tuning网络:
min ⁡ θ E ( x , y ) ∼ D in  tain  [ − log ⁡ F y ( x ) ] + λ ⋅ L energy  (10) \min _{\theta} \mathbb{E}_{(\mathbf{x}, y) \sim \mathcal{D}_{\text {in }}^{\text {tain }}}\left[-\log F_{y}(\mathbf{x})\right]+\lambda \cdot L_{\text {energy }} \tag{10} θmin​E(x,y)∼Din tain ​​[−logFy​(x)]+λ⋅Lenergy ​(10)
其中第一项是标准的交叉熵损失函数,作用在ID训练数据上。第二项是一个基于能量的正则化项:
L energy  = E ( x in  , y ) ∼ D in  train  ( max ⁡ ( 0 , E ( x in  ) − m in  ) ) 2 + E x out  ∼ D out  train  max ⁡ ( 0 , m out  − E ( x out  ) ) ) 2 \begin{aligned} L_{\text {energy }} &=\mathbb{E}_{\left(\mathbf{x}_{\text {in }}, y\right) \sim \mathcal{D}_{\text {in }}^{\text {train }}}\left(\max \left(0, E\left(\mathbf{x}_{\text {in }}\right)-m_{\text {in }}\right)\right)^{2} \\ &\left.+\mathbb{E}_{\mathbf{x}_{\text {out }} \sim \mathcal{D}_{\text {out }}^{\text {train }}} \max \left(0, m_{\text {out }}-E\left(\mathbf{x}_{\text {out }}\right)\right)\right)^{2} \end{aligned} Lenergy ​​=E(xin ​,y)∼Din train ​​(max(0,E(xin ​)−min ​))2+Exout ​∼Dout train ​​max(0,mout ​−E(xout ​)))2​
惩罚能量高于 m i n m_{in} min​的ID数据和能量低于 m o u t m_{out} mout​的ODD数据,来拉远正常数据和异常数据分布之间的距离。

实验

实验是用SVHN、CIFAR-10和CIFAR-100作为正常样本数据集,另外六个OOD数据集。用WideResNet作为预训练模型。

总的结论就是:不fine-tuning的话好于softmax confidence的方法;fine-tuning的话好于目前的sota-OE方法(而且在ID数据上准确度不掉点):

还有一个图我们很熟悉:

从两个分布的概率直方图上看,Energu score比Softmax score拉得开;energy score fine-tuning的方法比OE fine-tuning拉得开。

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

  1. 离群?异常?新类?开集?分布外检测?一文搞懂其间异同!

    来源:机器之心 本文约4400字,建议阅读8分钟 重磅综述让你对开放世界领域有全新的认识! 你是否也曾迷惑于「离群检测,异常检测,新类检测,开集识别,分布外检测」之间错综复杂的关系?你是否也想要解决开 ...

  2. 一文搞懂异常检测中离群、异常、新类、开集、分布外检测异同

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 选自丨机器之心 MMLab@NTU 你是否也曾迷惑于「离群检测,异常检测,新类检测,开 ...

  3. ICML 2022 | 基于有偏不对称对比学习的长尾分布外检测

    ©作者 | 小舟 单位 | 电子科技大学 研究方向 | 计算机视觉 本文提出了一个 OOD Detection 的新方法,思想上没有什么创新,结合了现有 OOD 方法的思路,同时引入有监督对比学习的思 ...

  4. 机器学习如何做好分布外异常检测?谷歌这篇 NeurIPS 2019 论文提出了方法

    2019-12-30 10:16:57 编译 | 翻译官balala 编辑 | 丛末 对于机器学习而言,区分异常数据或有显著差异数据至关重要.谷歌在 NeurIPS 2019 论文中提出并发布了针对基 ...

  5. NeurIPS | 谷歌使用机器学习如何做好分布外异常检测

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :AI科技评论 [人工智能资 ...

  6. ​ICLR 2023 | 图数据分布外检测:从能量模型出发

    ©PaperWeekly 原创 · 作者 | 吴齐天 单位 | 上海交通大学博士生 研究方向 | 机器学习与图深度学习 继续探索 Graph OOD 的相关问题,与以往工作不同的是,这篇工作避开了复杂 ...

  7. 玻尔兹曼分布详细推导、softmax 及 Energy Based Model

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 大多数人应该都是在利用神经网络解分类问题时第一次接触 softma ...

  8. ICLR 2022 | 从因果不变性视角探讨图神经网络的分布外泛化鲁棒性

    ©作者 | 吴齐天 单位 | 上海交通大学 研究方向 | 图神经网络 论文题目: Handling Distribution Shifts on Graphs: An Invariance Persp ...

  9. NeurIPS22 | 分子图分布外泛化与因果不变性

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 分布外泛化(Out-of-Distribution Generalization,简称OOD泛化)旨在解决训练数据与测试数据分布不一致的 ...

最新文章

  1. 雅安职业技术学院有计算机专业吗,雅安职业技术学院2020开设专业设置
  2. SCANF SCANF_S
  3. flatmap和map的区别!
  4. 触发器三(行级DML触发器)(学习笔记)
  5. FCGF论文阅读笔记
  6. linqto 多个关键字模糊查询_查询函数Choose、Lookup、Hlookup、Vlookup应用技巧解读
  7. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
  8. HDU 2553 N皇后问题 DFS 简单题
  9. 【BDTC 2018】PingCAP申砾:做一个真正通用的数据库产品
  10. 【模仿学习】南京大学港中文联合总结: 29页中文详述模仿学习完整过程
  11. 金蝶专业版怎么反过账当月_金蝶KIS专业版怎么反过账
  12. 怎么查看电脑开关机时间记录
  13. android xml画斜线,API返回XML引号通过反斜线
  14. 刚刚!鸿蒙OS 2升级用户破千万!(1000+企业共建鸿蒙生态)
  15. 无线wifi迷你mini微型摄像头解决方案
  16. CASIA-SURF活体识别数据集免费免积分下载
  17. js实现html网页页面多语言化
  18. 1005: 燃烧多少卡路里(1级) 输入仅一行。两个整数,表示体重公斤数和公里数。输出仅一行,一个整数,表示燃烧卡路里数。
  19. 从“熵理论到熵减”的过程
  20. Sql Server 2008卸载后再次安装一直报错

热门文章

  1. Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理
  2. OSChina 周日乱弹 ——超能力人类的日常(视频)
  3. oracle 10g警告日志太大,oracle10g日志报警问题解决一例
  4. Java实现网页数据采集
  5. CSS选择器优先级详解
  6. 用MATLAB绘制一个红灯笼
  7. HHVM安装使用教程
  8. uni app push 集成小米
  9. 爱情公寓经典语录(第一部)
  10. [并发进阶]——读写锁 原理