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

news2024/11/22 4:36:37

c6229ab06e2ebda5f238d9c15a36d5f1.gif

©PaperWeekly 原创 · 作者 | 吴齐天

单位 | 上海交通大学博士生

研究方向 | 机器学习与图深度学习

继续探索 Graph OOD 的相关问题,与以往工作不同的是,这篇工作避开了复杂的数学推导和琐碎的数据生成过程,直接从简单有效的判别模型入手研究图上的 OOD 检测问题。

9cf6cb33480bf33b1a1644cd1653e1aa.png

论文题目:

Energy-based Out-of-Distribution Detection for Graph Neural Networks

论文链接:

https://arxiv.org/abs/2302.02914

代码链接(含实验细节说明):

https://github.com/qitianwu/GraphOOD-GNNSafe

尽管针对图数据的学习方法目前已取得了空前的进展,绝大部分现有的方法都假设训练数据与测试数据来自同一分布。目前有大量研究表明,现有的图深度学习模型(如图神经网络)通常在分布外数据上表现差强人意,这也使得针对图数据分布外泛化(Out-of-Distribution Generalization,简称 OOD 泛化)问题的研究 [1,2] 逐渐流行起来。

OOD 泛化问题旨在解决训练和测试分布不一致的问题,其学习目标是为了提升模型在新的未知分布的测试数据上的性能。而另一类比较常见的实际问题,是分布外检测(Out-of-Distribution Generalization Detection)[3,4],问题定义为:

当分类器在有限观测的训练数据上完成训练后,需要具备识别测试集中不同于训练主体分布的数据(即 OOD 数据)的能力。

尽管 OOD 检测在图像领域已被广泛研究,但针对图数据的分布外检测还是一个几乎未被探索的领域 [5]。

fa538e38f38350ac2c55b3dc0b2f2a6e.png

图上节点分布外检测的问题定义

首先,从整体上看,与图片不同的是,图结构数据中的每个样本通常是图上的节点。由于节点互联的特性,节点样本之间存在着依赖关系,导致了样本的非独立性。因此,在对 OOD 样本进行判定时,需要考虑到这种数据依赖关系(data inter-dependence)。

cc54ae38b42ed6c2b81f005cfbb723e1.png

▲ 图片样本分布外检测与图中节点分布外检测的对比。图片数据可以看作i.i.d.产生的独立样本,而图中的节点样本存在互相的依赖关系。

下面我们对图上的 OOD 检测问题给出定义。假设输入数据样本构成了一个图 , 是节点集合, 是连边集合,使用 表示邻接矩阵。图中每个节点 都是一个样本,包含输入特征 和标签 。

图中的节点集合 分成了训练集 和测试集 。定义 和 ,我们需要训练一个节点分类器 ,它能预测节点的标签 。此外,更重要的是,这一分类器具备识别分布外样本的能力。具体的,考虑一个由 产生的决策函数 ,使得对于任意输入 有:

329f3e319f0e1782c70c039b49ad43f3.png

其中 表示节点 在图中对应的邻居子图。

9362c4a6599346122d47c74b8aac5409.png

基于能量模型的节点OOD检测

本文提出的方法主要基于简单有效的设计原则。首先,对于输入图首先考虑一个图神经网络 来得到节点的表征。具体的,如果采用图卷积网络(GCN),其节点表征的更新公式如下:

bd3be56c4aa1e08edd8fe7406da8a274.png

在上式中节点表征的计算依赖于图中相邻的节点,从而将样本间的依赖关系建模了出来。通过 层图卷积之后,将最后一层的输出结果 作为 logits 用于对节点标签的预测,即模型给出的预测分布可以写为:

332c63d1091fae2936ba5fda79816b20.png

用于 OOD 检测的能量函数

已有的研究[6]表明,当假设 时,上式可以看作一个玻尔兹曼分布(Boltzmann distribution):

c254b5f5be2a6b9958997cd90801b75a.png

这里的 称为分类器 对应的给定标签 下的能量函数,而通过对 进行 marginalization 可以得到对于输入 的自由能量函数:

e0abc6882d828c4b9b5ce43a1d624d88.png

这一能量函数对每个输入节点都能返回一个能量值,它可以衡量分类器对图中节点的置信度,即作为判别是否是 OOD 样本的依据。

基于能量的信任传播

为了进一步的利用图结构产生的样本依赖性,我们提出了基于能量的信任传播,具体实现为将每个节点的能量值沿着输入图进行信息传递:

f4a1ff8484167a37c195d71cb64df1b8.png

这样做的好处是,可以使得分类器产生的置信度沿着图结构加强。由于图中相邻的节点通常可以看作来自相似的数据分布,当我们聚合相邻节点的能量值后得到的新能量值 就更容易区分出来自不同分布的节点。我们在论文的3.2节也对这一结论给出了理论证明,并且在实验中通过大量的消融实验验证了这一简单方法的有效性。

损失函数

在模型训练方面,我们考虑两种可能的情形,以分别适用于两种被广泛研究的 OOD 检测问题。第一种情形是训练集中仅包含主体分布数据(即分布内训练数据 ),此时可以使用标准的分类损失函数训练图神经网络分类器(我们称提出的方法叫 GNNSafe):

fad3fa8a2b19b169f0463d65416e4545.png

另一种情形是训练数据中还额外包括已知的分布外数据(表示为 ),此时常见方法是引入一个额外的正则项,例如可以对模型输出的能量值进行上下界约束 [7](我们称提出的方法叫 GNNSafe++):

61140873b7ac787614f810f1de528416.png

对于第二种情形最终的损失函数可以写为加权和 。

6dfc71407a6e6de1e05246d583a90a0b.png

评测标准与实验结果

由于图数据的分布外检测问题目前还有待探索,本文也对这一问题背景下如何有效和全面的评测模型的能力给出了系统的探讨,包括1)如何选择数据集,2)如何划分数据集,3)如何评估 OOD 检测的能力。

评估准则

首先,需要明确的是,与传统监督学习不同的是,OOD检测问题需要额外考虑分布外的测试数据(以及可能用到的训练数据)。下图展示了监督学习与OOD检测(包含两类问题)问题对数据集划分的要求。

45887a0a06e40cff8c70f4e212f1a90b.png

▲ 传统监督学习与分布外检测问题(包括两类情形)的直观对比。这里 IND-Tr/IND-Val/IND-Te 表示从主体数据(in-distribution data)中划分得到的训练/验证/测试集。OOD-Te 表示与主体数据来自不同分布的测试集,而 OOD-Tr 表示与主体数据来自不同分布的训练集。

监督学习(对应上图分支1):对数据集划分为训练/验证/测试集,模型在训练集上训练,而后在测试集上评估预测性能。为了区分,我们称这里的数据为分布内数据(in-distribution data,简称 IND),它被进一步划分为 IND-Tr/IND-Val/IND-Te。

OOD 检测(对应上图分支2):与监督学习相同的是,模型训练依然基于 IND-Tr 数据,但在测试阶段,模型除了要在 IND-Te 给出不错的预测精度,还要能有效区分 IND-Te 与分布外测试数据(简称 OOD-Te)。

带 OOD exposure 的 OOD 检测(对应上图分支3):与前一种情况不同的是,模型训练阶段还能利用额外的分布外训练数据(简称 OOD-Tr)。

数据集和划分

数据划分是非常重要的环节,需要考虑的是如何在不破坏原数据内在特性的情况下,引入分布差异。整体原则包含两点:

原则1:IND 和 OOD 数据需要来自不同的分布。特别的,OOD-Tr 和 OOD-Te 也通常需要来自不同分布

原则2:IND-Tr/IND-Val/IND-Te 数据需要来自同样的分布。

基于上述两个原则,我们进一步考虑两类常见的图数据集,对数据的划分方式描述如下图。

bb26bd16b703b0142b983202cee11772.png

▲ 两种典型的图数据集(多图与单一图)与分布划分的评测标准。对于多图数据集,将一个图中的所有节点视为来自同一分布,用图来划分数据的分布。对于单图数据集,利用节点的 context 信息(例如时间、地点)来划分数据的分布。

具体的,我们在实验里考虑了五个不同的数据集,根据它们不同的特性,采用不同的划分方式:

Twitch(多图数据集):包含多张图,使用图 DE 作为 IND(并进一步按 1:1:8 随机划分为 IND-Tr/IND-Val/IND-Te),使用图 EN 作为 OOD-Tr,其余的图 ES, FR, RU 作为 OOD-Te

Arxiv(单图数据集,节点含 context 信息):使用节点的时间信息来划分 IND/OOD-Tr/OOD-Te,同样对于 IND 进一步按 1:1:8 随机划分为 IND-Tr/IND-Val/IND-Te

Cora/Amazon-Photo/Coauthor-CS(单图数据集,节点不含 context 信息):对于这类数据集不含已知的 domain 信息,我们人为的引入分布差异。具体的,使用原图作为 IND(进一步按 1:1:8 随机划分为 IND-Tr/IND-Val/IND-Te),而后对原图进行变换得到 OOD-Tr 和 OOD-Te。考虑三种变换:

● 结构干预:利用随机块模型生成图结构,替换原始输入图结构

● 特征内插:利用随机配对的节点的特征的线性加权和替换原始节点特征

● 标签保留:利用标签类别进行划分

实验结果

下面的表格展示了在 5 个数据集上的 OOD detection 结果,这里采用常规的评测指标 AUROC/AUPR/FPR95 来衡量模型对 IND-Te 和 OOD-Te 样本估计值排序的正确性。这里我们统一使用 GCN 作为分类器主干,并在两种情形下进行各自的对比,即使用或不使用 OOD exposure。

可以看到,本文提出的方法 GNNSafe 显著好于其他同类的不使用 OOD exposure 的方法,而 GNNSafe++ 取得了最好的性能。特别的,相比 SOTA 方法,在 Twitch 和 Cora-Structure 数据集,GNNSafe++ 对 AUROC 指标分别提升了 12.8% 和 17.0%,而对 FPR95 指标分别降低了 44.8% 和 21.0%。

8a0baed5778ecc4e7b5c257707dc8a54.png

bc124670c681dbc64112923057044dcf.png

为了进一步验证提出方法的有效性,我们也对两个关键模块能量信任传播和能量正则项进行了消融实验。下图分别绘制了三种方法在 Twitch 和 Arxiv 上对 IND-Te 和OOD-Te 所估计的能量值分布。可以看到,相比于 GNNSafe w/o energy propagation(不考虑能量信任传播和能量正则项)和 GNNSafe(仅不考虑能量正则项),GNNSafe++ 所给出的能量分布能够更明显的把分布内和分布外的样本区分开。

2a54d2e586609213a9d0364604c5b62b.png

此外,我们也探索了使用 GNN backbone 对模型性能的影响,下图分别考虑 MLP,GCN,GAT,JKNet 和 MixHop 作为主干,可以看到几种方法的相对优劣保持一致,这也进一步验证了 GNNSafe 在使用不同 GNN 主干时的优越性。

75481bd60ecb39c0ef579237a609ea34.png

2c98a3f48d92856b6a6b39050b35b3fe.png

总结与拓展性讨论

这一工作主要对图结构数据节点分布外检测的问题进行了初步探索,并提出了一种简单有效的方法叫作 GNNSafe,可以作为这一(尚未被充分探索的)研究领域的强有力的基线方法。此外,还对如何针对不同数据集在数据划分中引入相应的分布偏移作了讨论,为图数据 OOD 检测提供了 benchmarks 参考。

当然,本文的方法以及提供的代码也可以很方便的进行拓展和延伸,包括但不限于:

其他图编码器:尽管本文主要基于图神经网络 GNN 设计了一种 OOD 检测方法,该方法也适用于图 Transformer。近期有不少大图上节点级任务的Transformer 工作 [8],如何提升这一类模型的 OOD 检测/泛化能力也是值得进一步探索的。

更多样的 OOD 测试数据:本文仅考虑了测试数据中仅包含一类 OOD 数据(尽管在不同数据集 OOD 种类有所不同),实际场景中可能一个训练好的模型需要同时处理多类 OOD 数据。如何提升单一模型对于多种 OOD 数据的识别能力,是可以考虑的未来方向。

更复杂的训练场景:在本文的问题设定基础上,可以进一步考虑很多更难的设定。例如,训练数据集中混杂着 OOD 数据,在模型训练时就需要一边做识别一边对这些数据加以利用,来提升测试时 OOD 检测的能力。其次,也可以考虑训练数据不断到来的在线场景,模型需要在不同分布数据上进行连续更新。

outside_default.png

参考文献

outside_default.png

[1] Qitian Wu, et al., Handling Distribution Shifts on Graphs: An Invariance Perspective, ICLR 2022.

[2] Jiaqi Ma, et al., Subgroup Generalization and Fairness of Graph Neural Networks, NeurIPS 2021.

[3] Dario Amodei et al., Concrete problems in ai safety, Arxiv 2016.

[4] Shiyu Liang et al., Enhancing the reliability of out-of-distribution image detection in neural networks, ICLR 2018.

[5] Zenan Li et al., Graphde: A generative framework for debiased learning and out-of-distribution detection on graphs, NeurIPS 2022.

[6] Will Grathwohl et al., Your classifier is secretly an energy based model and you should treat it like one, ICLR 2020.

[7] Weitang Liu et al., . Energy-based out-of-distribution detection, NeurIPS 2020.

[8] Qitian Wu, et al., NodeFormer: A Scalable Graph Structure Learning Transformer for Node Classification, NeurIPS22.

更多阅读

b4d7b021cb84570c190095a5a2e0a2b1.png

5465caadc9e273024d8fc60c42069109.png

6c9740c637ff69dcf8644d03448c18af.png

4941fbae46cfb4fed7f3641df98fe52c.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

5bd8680667bf6d759f65cb988d1300a2.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

c2654ef14e499cca2e81cdf156b70979.jpeg

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

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

相关文章

【Spring】掌握 Spring Validation 数据校验

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Spring Validation 数据校验一、什么是 Spring…

RAN-in-the-Cloud:为 5G RAN 提供云经济性

RAN-in-the-Cloud:为 5G RAN 提供云经济性 5G 部署在全球范围内一直在加速。 许多电信运营商已经推出了5G服务并正在快速扩张。 除了电信运营商之外,企业也对使用 5G 建立私有网络产生了浓厚的兴趣,这些私有网络利用了更高的带宽、更低的延迟…

【编程基础之Python】8、Python复合数据类型

【编程基础之Python】8、Python复合数据类型Python复合数据类型列表(List)创建列表访问元素内置方法列表操作元组(Tuple)创建元组访问元素集合(Set)创建集合基本操作其他操作字典(Dictionary&am…

4.ffmpeg命令转码规则、过滤器介绍、手动流map选项

在上章我们学习了ffmpeg命令行帮助以及选项查找 本章我们来深入学习ffmpeg命令转码规则、过滤器介绍、手动流map选项 参考链接: 1.ffmpeg命令行转码流程 ffmpeg命令行转码流程如下图所示: 对应中文则是: 步骤如下所示: ffmpeg调用libavformat库(包含解复用器)来读取输入文件…

Linux -- 查看进程 PS 命令 详解

我们上篇介绍了, Linux 中的进程等概念,那么,在Linux 中如何查看进程呢 ??我们常用到的有两个命令, PS 和 top 两个命令,今天先来介绍下 PS 命令~!PS 命令 :作用 &#x…

C语言拔高知识——指针的进阶(万字大文超详细)

在之前的文章中,我已经讲解过了初阶指针的内容,今天就来讲一讲指针的进阶! 上篇指针地址:保姆式指针讲解,超详细,适合初学者_指针详解_陈大大陈的博客-CSDN博客 目录 1. 字符指针 2. 指针数组 3. 数组指…

3年测试经验的人来面试,简历都没写明白,一开口就要给20K的offer?

​我最近阅读了大约15份简历,他们都在申请我的团队的测试工程师职位。但是没有一份表达清楚了他是如何进行测试的。 下面我摘录了一些 信息: 几乎所有的应聘者都罗列了成串儿的他们熟悉的“技术”(包括但不限于….Net, Unix&#…

c++基础/类和对象

c基础 2.1名字空间 namespace 防止命名冲突 说明&#xff1a;名字空间可以在全局作用域或其他作用域&#xff08;另一个名字空间&#xff09;内部定义&#xff0c;但不能在函数或类的内部定义。 使用&#xff1a; #include<iostream> using namespace std; //std中包…

【C/C++ 数据结构】-八大排序之 冒泡排序快速排序

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【C/C数据结构与算法】 分享&#xff1a;那我便像你一样&#xff0c;永远躲在水面之下&#xff0c;面具之后&#xff01; ——《画江湖之不良人》 主要内容&#xff1a;八大排序选…

前端构建工具大盘点:gulp、webpack、vite、rollup、esbuild、snowpack、babel、parcel、swc、tsc

文章目录背景分类转译器打包器对比gulp VS webpackBundle vs Bundleless&#xff08;代表就是webpack VS vite&#xff09;其他比较个人理解总结官网背景 做前端也有好多年了&#xff0c;从最早的 jQuery 时代到现在的三大框架&#xff0c;这过程中用到了很多构建工具&#xf…

婴幼儿常见八大疾病及护理方法

在1岁之前&#xff0c;婴儿的体质还没有完全发育&#xff0c;很容易生病&#xff0c;大多数婴儿在1岁之后都会更好。今天&#xff0c;新的稀有婴儿育儿专家组织了一些婴儿最容易患的疾病和护理方法。1、新生儿黄疸宝宝出生后&#xff0c;你可能会注意到他的皮肤发黄。别担心&am…

Netty学习(三):Netty线程模型和代码示例

〇、前言网络编程的基本线程模型&#xff0c;详见&#xff1a;Netty学习&#xff08;二&#xff09;&#xff1a;线程模型一、工作原理简图Netty主要基于主从 Reactors 多线程模型&#xff08;如下图&#xff09; 做了一定的改进&#xff0c;其中主从Reactor 多线程模型有多个R…

11_MySQL数据处理(增删改)

1. 插入数据1.1 实际问题解决方式&#xff1a;使用 INSERT 语句向表中插入数据。1.2 方式1&#xff1a;使用VALUES使用这种语法一次只能向表中插入一条数据。情况1&#xff1a;为表的所有字段按默认顺序插入数据INSERT INTO 表名 VALUES (value1,value2,....);值列表中需要为表…

Windows安装Liberica JAVA8

在浏览器打开下载&#xff1a;Liberica JAVA。 点击链接"下载MSI"相对应的Microsoft Windows版本。 下载后完成后&#xff0c;验证的文件&#xff0c;通过比较其大小对你的驱动器和下载的页。 一个更加先进的方法来验证检验和在PowerShell&#xff1a; (Get-FileHas…

软件测试之测试环境--XAMPP

1. 测试环境 Linux下的环境搭建 LNMP: LinuxNginxMysqlphp项目 Windows下的环境搭建 WAMP: WindowsapacheMysqlphp项目 2. Xampp安装及使用 XAMPP包括Apache、MySQL、PHP、PERL&#xff0c;直接解压缩&#xff0c;没有复杂的安装过程&#xff0c;强烈推荐初学者使用。 到目前…

【C/C++基础知识点】输出n位斐波那契数列

目录 前言什么是斐波那契数列兔子的故事小知识点收尾前言 在软件行业已经有快十年,技术虽然一般般,但是足够应付额解决编程入门的相关问题! 都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助! 为什么要写收费专栏,其实原因很简单,时间就…

使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

PLSQL创建新用户并导入导出.dmp文件

一、登录管理员账号 用户名密码登录身份说明systemmanagerSYSDBA 或 NORMAL不能以 SYSOPER 登录&#xff0c;可作为默认的系统管理员syschange_on_installSYSDBA 或 SYSOPER不能以 NORMAL 登录&#xff0c;可作为默认的系统管理员scotttigerNORMAL普通用户aqadmaqadmSYSDBA 或…

目标检测论文阅读:RepPoints算法笔记

标题&#xff1a;RepPoints: Point Set Representation for Object Detection 会议&#xff1a;ICCV2019 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9009032/ 官方代码&#xff1a;https://github.com/microsoft/RepPoints 作者单位&#xff1a;北京大学、清华…

Jetpack Compose 深入探索系列六:Compose runtime 高级用例

Compose runtime vs Compose UI 在深入讨论之前&#xff0c;非常重要的一点是要区分 Compose UI 和 Compose runtime。Compose UI 是 Android 的新 UI 工具包&#xff0c;具有 LayoutNodes 的树形结构&#xff0c;它们稍后在画布上绘制其内容。Compose runtime 提供底层机制和…