基于energy score的out-of-distribution数据检测,LeCun都说好 | NerulPS 2020

 论文提出用于out-of-distributions输入检测的energy-based方案,通过非概率的energy score区分in-distribution数据和out-of-distribution数据。不同于softmax置信度,energy score能够对齐输入数据的密度,提升OOD检测的准确率,对算法的实际应用有很大的意义

来源:晓飞的算法工程笔记 公众号

论文: Energy-based Out-of-distribution Detection

  • 论文地址:https://arxiv.org/abs/2010.03759v4
  • 论文代码:https://github.com/wetliu/energy_ood

Introduction


 今天给大家分享一篇基于能量函数来区分非训练集相关(Out-of-distribution, OOD)输入的文章,连LeCun看了都说好。虽然文章是2020年的,但里面的内容对算法实际应用比较有用。这篇文章提出的能量模型想法在之前分享的《OWOD:开放世界目标检测,更贴近现实的检测场景 | CVPR 2021 Oral》也有应用,有兴趣的可以去看看。
 现实世界是开放且未知的,OOD由于与训练集差异很大,使用通过特定训练集训练出来的模型进行预测的话,往往会出现不可控的结果。因此,确定输入是否为OOD并过滤掉,对算法在高安全要求场景下的应用是十分重要的。
 大部分OOD研究依赖softmax置信度来过滤OOD输入,将低置信度的认定为OOD。然而,由于网络通常已经过拟合了输入空间,softmax对跟训练集差异较大的输入时常会不稳定地返回高置信度,所以softmax并不是OOD检测的最佳方法。还有部分OOD研究则从生成模型的角度来产生输入的似然分数 l o g p ( x ) logp(x) logp(x),但这种方法在实践中难以实现而且很不稳定,因为需要估计整个输入空间的归一化密度。
 为此,论文提出energy-based方法来检测OOD输入,将输入映射为energy score,能直接应用到当前的网络中。论文还提供了理论证明和实验验证,表明这种energy-based方法比softmax-based和generative-based方法更优。

Background: Energy-based Models


 EBM(energy-based model)的核心是建立一个函数 E ( x ) : R D → R E(x): \mathbb{R}^D\to\mathbb{R} E(x):RDR,将输入 x x x映射为一个叫energy的常量。
 一组energy常量可以通过Gibbs分布转为概率分布 p ( x ) p(x) p(x)

 这里将 ( x , y ) (x,y) (x,y)作为输入,对于分类场景, E ( x , y ) E(x,y) E(x,y)可认为是数据与标签相关的energy常量。分母 ∫ y ′ e − E ( x , y ′ ) / T \int_{y^{'}}e^{-E(x,y^{'})/T} yeE(x,y)/T是配分函数,即所有标签energy的整合, T T T是温度系数。
 输入数据 x ∈ R D x\in\mathbb{R}^D xRD的Helmholtz free energy E ( x ) E(x) E(x)可表示为配分函数的负对数:

 结合公式1和公式2就构建了一个跟分类模型十分类似的EBM,可以通过Gibbs分布将多个energy输出转换为概率输出,还可以通过Helmholtz free energy得出最终的energy。
 对于分类模型,分类器 f ( x ) : R D → R K f(x):\mathbb{R}^D\to\mathbb{R}^K f(x):RDRK将输入映射为K个值(logits),随后通过softmax函数将其转换为类别分布:

 其中 f y ( x ) f_y(x) fy(x) f ( x ) f(x) f(x)的第 y y y个输出。

 通过关联公式1和公式3,可在不改动网络 f ( x ) f(x) f(x)的情况下将分类网络转换为EBM。定义输入 ( x , y ) (x,y) (x,y)的energy为softmax的对应输入值 E ( x , y ) = − f y ( x ) E(x,y)=-f_y(x) E(x,y)=fy(x),再定义 x ∈ R D x\in\mathbb{R}^D xRD的free energy为:

Energy-based Out-of-distribution Detection


Energy as Inference-time OOD Score

 Out-of-distribution detection是个二分类问题,评价函数需要产生一个能够判定ID(in-distribution)数据和OOD(out-of-distribution)数据的分数。因此,论文尝试在分类模型上接入energy函数,通过energy进行OOD检测。energy较小的为ID数据,energy较大的为OOD数据。
 实际上,通过负对数似然(negative log-likelihood,NLL))损失训练的模型本身就倾向于拉低ID数据的energy,负对数似然损失可表示为:

 定义energy函数 E ( x , y ) = − f y ( x ) E(x,y)=-f_y(x) E(x,y)=fy(x)并将 l o g log log里面的分数展开,NLL损失可转换为:

 从损失值越低越好的优化角度看,公式6的第一项倾向于拉低目标类别 y y y的energy,而公式6第二项从形式来看相当于输入数据的free energy。第二项导致整体损失函数倾向于拉低目标类别 y y y的energy,同时拉高其它标签的energy,可以从梯度的角度进行解释:

 上述式子是对两项的梯度进行整合,分为目标类别相关的梯度和非目标相关的梯度。可以看到,目标类别相关的梯度是倾向于更小的energy,而非目标类别相关的梯度由于前面有负号,所以是倾向于更大的energy。另外,由于energy近似为 − f y ( x ) = E ( x , y ) -f_y(x)=E(x,y) fy(x)=E(x,y),通常都是目标类别的值比较大,所以NLL损失整体倾向于拉低ID数据的energy。

 由于上述的energy特性,就可以基于energy函数 E ( x ; f ) E(x;f) E(x;f)进行OOD检测:

 其中 τ \tau τ为energy阈值,energy高于该阈值的被认定为OOD数据。在实际测试中,使用ID数据计算阈值,保证大部分的训练数据能被 g ( x ) g(x) g(x)正确地区分。另外,需要注意的是,这里用了负energy分数 − E ( x ; f ) -E(x;f) E(x;f),是为了遵循正样本有更高分数的常规定义。

Energy Score vs. Softmax Score

 论文先通过公式推导,来证明energy可以简单又高效地在任意训练好的模型上代替softmax置信度。将sofmax置信度进行对数展开,结合公式4以及 T = 1 T=1 T=1进行符号转换:

 从上述式子可以看出,softmax置信度的对数实际上是free energy的特例,先将每个energy减去最大的energy进行偏移(shift),再进行free energy的计算,导致置信度与输入的概率密度不匹配。随着训练的进行,通常 f m a x ( x ) f^{max}(x) fmax(x)会变高,而 E ( x ; f ) E(x; f) E(x;f)则变低,所以softmax是有偏评价函数,置信度也不适用于OOD检测。

 论文也通过真实的例子来进行对比,ID数据和OOD数据的softmax置信度差别很小(1.0 vs 0.99),而负energy则更有区分度(11.19 vs. 7.11)。因此,网络输出的值(energy)比偏移后的值(softmax score)包含更多有用的信息。

Energy-bounded Learning for OOD Detection

 尽管energy score能够直接应用于训练好的模型,但ID数据和OOD数据的区分度可能还不够明显。为此,论文提出energy-bounded学习目标,对训练好的网络进行fine-tuned训练,显示地扩大ID数据和OOD数据之间的energy差异:

F ( x ) F(x) F(x)为softmax输出, D i n t r a i n D^{train}_{in} Dintrain为ID数据。整体的训练目标包含标准交叉熵损失,以及基于energy的正则损失:

D o u t t r a i n D^{train}_{out} Douttrain为无标签的辅助OOD数据集,通过两个平方hinge损失对energy进行正则化,惩罚energy大于间隔参数 m i n m_{in} min的ID数据以及energy小于间隔参数 m o u t m_{out} mout的OOD数据。当模型fine-tuned好后,即可根据公式7进行OOD检测。

Experiment


 ID数据集包含CIFA-10、CIFAR-100,并且分割训练集和测试集。OOD测试数据集包含Textures、SVHN、Places365、LSUN-Crop、LSUN_Resize和iSUN。辅助用的OOD数据集则采用80 Million Tiny Images,去掉CIFAR里面出现的类别。
 评价指标采用以下:1)在ID数据95%正确的 τ \tau τ阈值下的OOD数据错误率。2)ROC曲线下的区域大小(AUROC)。3)PR曲线下的区域大小(AUPR)。

 从结果可以看出,energy score比softmax score的表现要好,而经过fine-tuned之后,错误就很低了。

 与其他OOD方法进行比较。

 可视化对比。

Conclustion


 论文提出用于out-of-distributions输入检测的energy-based方案,通过非概率的energy score区分in-distribution数据和out-of-distribution数据。不同于softmax置信度,energy score能够对齐输入数据的密度,提升OOD检测的准确率,对算法的实际应用有很大的意义。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】java基础(分支结构)洛谷刷题(含图解:吃苹果)

题目: 解析 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner input new Scanner(System.in);int apple,time,rate; appleinput.nextInt(); rateinput.nextInt(); timeinpu…

专题【链表】刷题日记

题目列表 学习题(22题) 2024.03.31 两数相加 19. 删除链表的倒数第 N 个结点 合并K个升序链表 2024.04.01 24. 两两交换链表中的节点 25. K 个一组翻转链表 61. 旋转链表 83. 删除排序链表中的重复元素 82. 删除排序链表中的重复元素 II 86. 分隔链表 92. 反转链表 II 1…

【STM32嵌入式系统设计与开发】——14PWM(pwm脉宽输入应用)

这里写目录标题 一、任务描述二、任务实施1、WWDG工程文件夹创建2、函数编辑(1)主函数编辑(2)USART1初始化函数(usart1_init())(3)USART数据发送函数( USART1_Send_Data(&#xff09…

服务器安全事件应急响应排查方法

针对服务器操作系统的安全事件也非常多的。攻击方式主要是弱口令攻击、远程溢出攻击及其他应用漏洞攻击等。分析安全事件,找到入侵源,修复漏洞,总结经验,避免再次出现安全事件,以下是参考网络上文章,总结的…

初识编译和链接(C语言)

文章目录 编译和链接翻译环境预处理编译汇编链接 运行环境 编译和链接 编译和链接这两个大的过程构成了翻译环境。 其实,在ANSI C的任何一种实现中,存在两个不同的环境。 一个环境是翻译环境,另一个是执行环境。 翻译环境中,源…

【软件工程】详细设计(一)

1. 引言 1.1 编写目的 该文档的目的是描述《学生成绩管理系统》项目的详细设计,其主要内容包括: 系统功能简介 系统详细设计简述 各个模块的实现逻辑 最小模块组件的伪代码 本文档的预期的读者是: 开发人员 项目管理人员 测试人员 …

基于单片机汽车超声波防盗系统设计

**单片机设计介绍,基于单片机汽车超声波防盗系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机汽车超声波防盗系统设计概要主要涉及利用超声波传感器和单片机技术来实现汽车的安全防盗功能。以下是对…

八股 -- C#

面向对象 (三大特性) 三大特性目的是为了提供更好的代码组织、可维护性、扩展性和重用性 C#基础——面向对象 - 知乎 (zhihu.com) 封装 理解: 你不需要了解这个方法里面写了什么代码,你只需要了解这个方法能够给你返回什么数据&…

位运算 ----力扣2220

2220. 转换数字的最少位翻转次数 提示 一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作,即将 0 变成 1 ,或者将 1 变成 0 。 比方说,x 7 ,二进制表示为 111 ,我们可以选择任意一个位(包含没有…

书生·浦语大模型-第一节课笔记

视频总结 23年发布的模型在一些材料中归位指令微调模型,后面逐渐升级应该已经是train的模型了 技术报告总结 InternLM2 Technical Report 评测与特点 6 dimensions and 30 benchmarks, long-context modeling, and open-ended subjective evaluations长文本…

猜数游戏(Python)

一、实验要求: (1)在游戏开始时,随机生成一个1~100之间的整数。 (2)在游戏中,玩家有10次机会猜数。如果10次都没有猜中,则游戏失败;否则,游戏成功。 &…

centos7.5安装gitlab-runner,配置CI/CD流水线

一般不建议gitlab-server和gitlab-runner装在同一台服务器 第一步:安装gitlab-runner,最好和gitlab实例版本一致 # 下载官方gitlab-runner安装脚本 curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | s…

成为一名自由程序员

越来越多的程序员已经或希望加入到自由职业者的行列,你是否也是其中的一员呢?在这篇文章里我将尝试结合自身的一些经验,来告诉你成为自由程序员能够获得的那些益处,以及为了取得成功所需要面临的挑战。 自由程序员的类型 很多人把…

项目开发---用户登录发送短信实现(使用阿里云短信接口)(看这篇就够了)

目录: 使用阿里云开通短信服务教程编写代码 使用阿里云开通短信服务教程 阿里云官网👉https://cn.aliyun.com/ 完成登录 进入短信服务 开通短信服务 购买短信条数 购买完成进入阿里云短信控制台https://dysms.console.aliyun.com/overview 开通个…

Taskflow应用:波前并行(Wavefront Parallelism)

2D的Wavefront如下图所示&#xff1a; #include <taskflow/taskflow.hpp>std::mutex cout_mutex; void format_str(std::string const& str) {std::lock_guard<std::mutex> lock(cout_mutex); std::cout << str << std::endl; }std::string crea…

《自动机理论、语言和计算导论》阅读笔记:p68-p114

《自动机理论、语言和计算导论》学习第4天&#xff0c;p68-p114总结&#xff0c;总计47页。 一、技术总结 1.inverted indexes 明白单词的意思是“反转的索引”&#xff0c;但是不明白其在书中具体指什么&#xff0c;去查询资料的话需要花很不多时间&#xff0c;先继续往下看…

关于使用vscode搭建c/c++编程环境

目录 关于使用vscode搭建c/c编程环境一、前言二、安装 IDE 二、安装TDM-GCC安装三、安装C/C环境四、编写代码并进行编译 关于使用vscode搭建c/c编程环境 一、前言 一直觉得vscode是生产强有力的生产工具&#xff0c;基于此&#xff0c;做一篇学习笔记进行记录。 二、安装 ID…

服务器停止解析域名,但仍然可以访问到

1.centos7 如何刷新dns缓存 在CentOS 7上&#xff0c;DNS缓存由nscd&#xff08;Name Service Cache Daemon&#xff09;管理&#xff0c;如果系统上安装了nscd&#xff0c;可以通过清除nscd缓存来刷新DNS缓存。 要刷新DNS缓存&#xff0c;请执行以下命令&#xff1a; sudo …

IPD推行成功的核心要素(一)什么企业需要和适合IPD?

IPD&#xff0c;全称为“Integrated Project Delivery”&#xff0c;即集成产品开发。它是一种全新的项目管理方法&#xff0c;目前已经应用到了各行各业的项目管理中。IPD是一种以协同合作为核心的工作模式&#xff0c;在这种模式下&#xff0c;项目中的所有相关方在项目的整个…

如何使用免费的ChatGpt3.5

如何使用免费的ChatGpt 最近免费的gpt3.5很多都不怎么行了实在是太给力了尾声 最近免费的gpt3.5很多都不怎么行了 原因是什么呢&#xff1f;因为openai已经取消了免费的5刀赠送&#xff0c;那么这些人手上的免费的sses-key 用完后&#xff0c;就基本上全军覆没了&#xff0c;再…