当前位置: 首页 > news >正文

论文笔记:Rethinking Graph Neural Networks for Anomaly Detection

目录

摘要

“右移”现象

beta分布及其小波

实验


《Rethinking Graph Neural Networks for Anomaly Detection》,这是一篇关于图(graph)上异常节点诊断的论文。

论文出处:ICML 2022

论文地址:Rethinking Graph Neural Networks for Anomaly Detectionhttps://arxiv.org/pdf/2205.15508https://arxiv.org/pdf/2205.15508https://arxiv.org/pdf/2205.15508https://arxiv.org/pdf/2205.15508https://arxiv.org/pdf/2205.15508https://arxiv.org/pdf/2205.15508

代码地址:squareRoot3/Rethinking-Anomaly-Detection: "Rethinking Graph Neural Networks for Anomaly Detection" in ICML 2022https://github.com/squareRoot3/Rethinking-Anomaly-Detectionhttps://github.com/squareRoot3/Rethinking-Anomaly-Detectionhttps://github.com/squareRoot3/Rethinking-Anomaly-Detectionhttps://github.com/squareRoot3/Rethinking-Anomaly-Detectionhttps://github.com/squareRoot3/Rethinking-Anomaly-Detectionhttps://github.com/squareRoot3/Rethinking-Anomaly-Detection

摘要

图神经网络被广泛应用于图的异常检测。选择合适的谱滤波器是图神经网络设计的关键部分之一,我们从图谱的视角迈出了异常分析的第一步。我们的一个重要发现是,异常的存在会导致“右移”的现象,即光谱能量分布在低频的集中度降低,而在高频上的集中度增加。这一事实激励我们提出beta小波图神经网络(BWGNN)。BWGNN具有在图谱和空间中局部化的带通滤波器,以更好地处理异常中的“右移”现象。我们展示了BWGNN在四个大规模数据集上的有效性。

“右移”现象

最有意思的是本文提出的右移现象,这也是文章所述的motivation,那么右移现象到底是什么呢?

考虑一个图\mathcal{G},有N个节点,编号从0到N-1,其拉普拉斯矩阵为L,很容易得到一般拉普拉斯的计算公式:

L=D-A

其中,D是图的度矩阵,A是邻接矩阵,这里我们只考虑无向无权图,边仅仅只反映图的结构,不做他用,那么图的度矩阵自然和图的出度矩阵以及入度矩阵相等,并且还是个对角矩阵,此外,D和A都是对称矩阵。

另外,上述的拉普拉斯矩阵的表达式是非规范化的,这导致其特征值的范围不受控制,因此给出规范化的拉普拉斯矩阵计算方式:

L = I - D^{-1/2}AD^{-1/2}

规范化拉普拉斯矩阵能够保证所有的特征值都在[0,2]内。

假设规范化拉普拉斯矩阵的特征值为0=\lambda_1\leq\cdots \leq \lambda_N,并且对应的正交的特征向量为U=(u_1, u_2, \cdots, u_N)。注意这里将所有特征值从小到大排列,并且对应的特征向量也要跟随其对应的特征值排列。

假设图\mathcal{G}上所有节点的某一个信号为x=(x_1, x_2, \cdots, x_L),其中x1,x2等等都为Nx1的向量,整个信号矩阵x为NxL的shape。那么定义\hat{x}=(\hat{x_1}, \hat{x_2}, \cdots, \hat{x_L}) = U^Tx为图上针对x的傅里叶变换,注意变换之后的shape仍然为NxL。

在这里,由于拉普拉斯矩阵的特征值所对应的特征向量在一开始的特征向量矩阵U中的按列排布的,但在这里做图傅里叶变换的时候对U做了转置,因此可以视为从上至下,按行对应,即U^T的第一列对应最小的特征值\lambda_1,第二列对应倒数第二小的特征值\lambda_2,直到最后一行对应最大的特征值\lambda_N。对于做了傅里叶变换之后的\hat{x}也可以从上至下如此按行看待,并且对应地,\hat{x}每行也可以对应相应的特征值(毕竟是从U^T算过来的)(个人感觉论文里这种按列的表述有点问题,并且文章里面x的元素个数也是N,让人难以区分单个节点上的特征向量的元素数目和图上的节点数到底有没有关系,有一定误导性)。

那么接下来,注意文章中给出来的这个式子:

这个公式是论文给出用以计算图谱能量的,联系到之前摘要里说到异常的存在会导致图谱能量分布在低频减少高频增加的说法,可以看出这是一个关键的量,那么他是如何反映“右移”的呢?

仔细看上面的公式,分为分母和分子两个部分,分子指的是之前计算的图傅里叶变换的结果\hat{x}中每个标量元素的平方之和,换言之,分母是\hat{x}中NxL个元素的平方和,最后得到的也是一个标量。

而分子,还记得我们之前提到的\hat{x}从上至下每行能够对应规范化拉普拉斯矩阵从小到大的相应的特征值的说法吗?分子自然就是单个行(N个元素)中元素的平方之和,这样计算出来的整个分式,对应的是相应行所对应的特征值。例如,分母是之前所提到的\hat{x}所有元素平方和,而分子是\hat{x}第一行中所有元素的平方和,那么这样计算出来的图谱能量对应的是规范化拉普拉斯矩阵的最小的特征值。

然后将所有的特征值从小到大放到横轴上,所有对应特征值的图谱能量放到纵轴上,就可以画出一个图的图谱能量分布了。

上图就是文章中给出的,不同规模的异常分布下的图谱能量分布,可以看到,随着图的异常规模的增大,其图谱能量的分布往高频方向(也即特征值更大的方向)发展。

beta分布及其小波

然后就轮到我们的主角的出场了,论文本身是借鉴了Hammond的图小波理论,通过自己构造小波,从而做出一个滤波器,然后可以对图本身进行滤波,考虑到滤波器实际上是由一组小波构成的,因此不同的带通的滤波器能够过滤不同的图的频段上的信息,而又根据前文所述的随着异常规模的增大图谱能量分布的右移,因此不同的带通滤波器基本能够找出所有情况下的异常能量分布部分,从而确定异常。

论文首先介绍了下Hammond的图小波理论,有一个母小波\psi,并且这个母小波是后续一组小波的基础,定义为\mathcal{W} = (\mathcal{W}_{\psi_1}, \mathcal{W}_{\psi_2}, \cdots),那么在一个图信号x上应用对应的小波\mathcal{W}_{\psi_i}可以表示为:

\mathcal{W}_{\psi_i}(x) = U g_i(\Lambda)U^Tx

其中,\Lambda为图的规范化拉普拉斯矩阵的特征值矩阵,是一个对角矩阵,并且对角线上的元素按大小排列,g_i(\cdot)是一个核函数,其定义域在[0, \lambda_N]之间,并且g_i(\Lambda) = diag(g_i(\lambda))。此外,Hammond的图小波理论还要满足两个条件:

  • 根据Parseval定理,小波变换需要满足有限性的条件:\int_0^{\infty} \frac{|g_i(w)|^2}{w} dw = C_g < \infty。这意味着g_i(0) = g_i(\infty) = 0,并且在频域上表现得像个带通滤波器。
  • 小波变换通过不同尺度的带通滤波器\{g_1, g_2, \cdots\}覆盖不同的频段。

此外,为了避免图拉普拉斯矩阵的特征值分解(以加快速度),核函数g_i(\cdot)必须是一个多项式函数,即在大多数文献之中都有Ug_i(\Lambda)U^T = g_i(L)

介绍完了Hammond的图小波理论,接下来看看文章里是如何使用beta分布来构造他自己的小波变换的。

beta分布是个计算机视觉里用的挺多的分布,其概率密度函数如下所示:

其中,p,q \in \mathbb{R}^+并且B(p+1,q+1) = p! q! / (p+q+1)!是个常数。规范化拉普拉斯矩阵L的特征值满足\lambda \in [0,2],和上面beta分布里的[0,1]不同,因此做点改造,文章里用\beta^*_{p,q}(w) = \frac{1}{2} \beta_{p,q} (\frac{w}{2})来覆盖[0,2]的范围,并且进一步添加约束p,q \in \mathbb{N}^+来确保\beta^*_{p,q}是个多项式。因此,所构建的beta小波变换\mathcal{W}_{p,q}可以表示为:

\mathcal{W}_{p,q} = U \beta^*_{p,q}(\Lambda) U^T = \beta^*_{p,q}(L) = \frac{(\frac{L}{2})^p (I - \frac{L}{2})^q}{2B(p+1,q+1)}

 令p+q=C为一个常数,那么所构造的beta小波变换一共就有C+1个beta小波:

\mathcal{W} = (\mathcal{W}_{0,C}, \mathcal{W}_{1,C-1}, \cdots, \mathcal{W}_{C,0})

其中,\mathcal{W}_{0,C}是个低通滤波器,其他的都是不同尺度的带通滤波器。此外,当p>0的时候,核函数\beta^*_{p,q}满足:

\int_0^{\infty} \frac{|\beta^*_{p,q}(w)|^2}{w} dw \leq \int_0^2 \frac{dw}{2B(p+1,q+1)} < \infty

因此也满足前述的Hammond理论的条件。

最后整体讲一下他的神经网络结构吧,首先是图上的特征进入到MLP简单过一遍,然后送到之前说的beta小波变换里,用C+1个滤波器过一遍(注意这个地方其实不涉及到参数的训练,诸如C等超参数是在训练之前就确定好了的,换言之,beta小波变换实际上不涉及到神经网络里参数的训练),得到C+1个新的特征,将这些特征简单的按列拼接到一起,然后送入MLP分类,输出一个两个元素的向量,做了softmax后可以视为概率,其中索引为1的元素为该节点为异常节点的概率。

最后,光有概率还不行,这种二分类问题需要一个阈值来判断的,那么怎么找这个阈值呢,文章的代码里面给的方法是,将数据集分为训练集/验证集/测试集三个部分,使用训练集进行训练,然后遍历[0,1]里的元素,以一定的步长,这个遍历的值作为当前的概率阈值,在验证集上测试,当使用当前概率阈值的时候,算出来的F1指标如何,最终选择F1指标最大的那个情况所对应的概率阈值作为最终的概率阈值,最后,在测试集上使用之前选好的概率阈值检验在测试集上的性能效果。

实验

最后简单看下实验部分吧,其实这种文章发出来他自己的的性能效果肯定基本上都要好于他拿出来作比较的方法的(2333),下面是文章中给的性能对比表格。

顺便看了下参数C对性能的影响。

最后还比较了下不同异常程度下的性能表现。

相关文章:

论文笔记:Rethinking Graph Neural Networks for Anomaly Detection

目录 摘要 “右移”现象 beta分布及其小波 实验 《Rethinking Graph Neural Networks for Anomaly Detection》&#xff0c;这是一篇关于图&#xff08;graph&#xff09;上异常节点诊断的论文。 论文出处&#xff1a;ICML 2022 论文地址&#xff1a;Rethinking Graph Ne…...

vue知识补充

1.列的样式 第一种&#xff1a;一列一列的写 <div class"house-detail"><div class"static-container"><form-item-static label"业主姓名">{{ baseData.mainOwnerName }}</form-item-static><form-item-static la…...

pushgateway指标聚合问题

一 问题现象 一个job有多个实例推送指标&#xff0c;但是从pushgateway上看这个job的instance字段&#xff0c;只显示一个实例的ip&#xff0c;而不是多个实例。导致在grafana上无法正常根据ip查看监控。 应用的prometheus的配置 management:metrics:tags:application: ${spr…...

使用docker搭建FastDFS文件服务

1.拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/fastdfs:latest2.使用docker镜像构建tracker容器&#xff08;跟踪服务器&#xff0c;起到调度的作用&#xff09; docker run -dti --networkhost --name tracker -v /data/fdfs/tracker:/var/fdfs -…...

【R语言】数据分析

一、描述性统计量 借助R语言内置的airquality数据集进行简单地演示&#xff1a; 1、集中趋势&#xff1a;均值和中位数 head(airquality) # 求集中趋势 mean(airquality$Ozone, na.rmT) # 求均值 median(airquality$Ozone, na.rmT) # 求中位数 2、众数 众数&#xff08;mod…...

蓝桥杯C语言组:图论问题

蓝桥杯C语言组图论问题研究 摘要 图论是计算机科学中的一个重要分支&#xff0c;在蓝桥杯C语言组竞赛中&#xff0c;图论问题频繁出现&#xff0c;对参赛选手的算法设计和编程能力提出了较高要求。本文系统地介绍了图论的基本概念、常见算法及其在蓝桥杯C语言组中的应用&#…...

jmeter 性能测试Linux 常用的安装

把软件安装包全部都放在/data/soft目录下 一、 Java 环境安装 1. 把JDK的安装包上传到/data/soft/目录下 2. 解压jdk安装包,重命名jdk 3. 配置环境变量 JAVA_HOME [root@MiWiFi-RA72-srv soft]# vim /etc/profile export JAVA_HOME=/data/soft/jdk1.8 export PATH=…...

19 角度操作模块(angle.rs)

angle.rs代码定义了一个泛型结构体 Angle&#xff0c;用于表示一个角度&#xff0c;其中角度以弧度为单位存储。这个结构体提供了许多特性&#xff0c;包括复制、克隆、默认实现、调试输出、部分相等性比较、哈希等。此外&#xff0c;它还根据编译时的特性&#xff08;features…...

前端高级面试题及其答案

以下是一些前端高级面试题及其答案&#xff1a; 一、JavaScript相关 事件循环&#xff08;Event Loop&#xff09;机制 答案&#xff1a; JavaScript的事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。它包含宏任务&#xff08;macrotask&#xff09;队列&…...

【ORACLE】这个‘‘和null不等价的场景,deepseek你怎么看?

【ORACLE】一处’和null不等价的场景–to_char(number,varchar2) 背景 最近在做一个国产数据库替代项目&#xff0c;要求将ORACLE迁移到一个openGauss系数据库&#xff0c;迁移后&#xff0c;执行一个存储过程时&#xff0c;发现国产库的执行结果和ORACLE不一致&#xff0c; …...

使用Python实现PDF与SVG相互转换

目录 使用工具 使用Python将SVG转换为PDF 使用Python将SVG添加到现有PDF中 使用Python将PDF转换为SVG 使用Python将PDF的特定页面转换为SVG SVG&#xff08;可缩放矢量图形&#xff09;和PDF&#xff08;便携式文档格式&#xff09;是两种常见且广泛使用的文件格式。SVG是…...

ComfyUI 安装教程:macOS 和 Linux 统一步骤

本教程将详细介绍如何在 macOS 和 Linux 上安装 ComfyUI。我们将从 安装 Anaconda 开始&#xff0c;到安装 PyTorch 和 ComfyUI&#xff0c;最后提供一些常见问题的解决方法。 macOS和linux安装步骤很相似 可以按照1️⃣安装anaconda2️⃣安装python3️⃣torch4️⃣comfyui Co…...

360手机刷机 360手机解Bootloader 360手机ROOT

360手机刷机 360手机解Bootloader 360手机ROOT 问&#xff1a;360手机已停产&#xff0c;现在和以后&#xff0c;能刷机吗&#xff1f; 答&#xff1a;360手机&#xff0c;是肯定能刷机的 360手机资源下载网站 360手机-360手机刷机RootTwrp 360os.top 360rom.github.io 一、…...

t113-qt

修改QT配置: # # qmake configuration for building with arm-linux-gnueabi-g ## MAKEFILE_GENERATOR UNIX # CONFIG incremental # QMAKE_INCREMENTAL_STYLE sublib# include(../common/linux.conf) # include(../common/gcc-base-unix.conf) # inc…...

【真一键部署脚本】——一键部署deepseek

目录 deepseek一键部署脚本说明 0 必要前提 1 使用方法 1.1 使用默认安装配置 1.1 .1 使用其它ds模型 1.2 使用自定义安装 2 附录&#xff1a;deepseek模型手动下载 3 脚本下载地址 deepseek一键部署脚本说明 0 必要前提 linux环境 python>3.10 1 使用方法 1.1 …...

【AI 语音】实时语音交互优化全解析:从 RTC 技术到双讲处理

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

pytest-xdist 进行多进程并发测试

在自动化测试中&#xff0c;运行时间过长往往是令人头疼的问题。你是否遇到过执行 Pytest 测试用例时&#xff0c;整个测试流程缓慢得让人抓狂&#xff1f;别担心&#xff0c;pytest-xdist 正是解决这一问题的利器&#xff01;它支持多进程并发执行&#xff0c;能够显著加快测试…...

【Android】版本和API对应关系表

目录 版本和API对应关系表 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&#xff0c;无以成江海。要沉下心来&#xff0c;诗和远方的路费真的很贵&#xff01; 版本和API对应关系表 版本名版本号名称APIAndroid 1616.0W36Android 1515.0V35Android 1414.0U34Android 1…...

通过acme生成与续签ssl证书,并部署到nginx

通过acme生成与续签ssl证书&#xff0c;并部署到nginx 介绍 官方介绍&#xff1a; acme.sh 实现了 acme 协议&#xff0c;可以从 ZeroSSL&#xff0c;Lets Encrypt 等 CA 生成免费的证书。 安装 acme.sh 1. curl方式 curl https://get.acme.sh | sh -s emailmyexample.com…...

mysql系统库介绍,数据字典(介绍,存储方式,常见表,访问权限),系统表(介绍,不同功能的表)

目录 mysql系统库 介绍 数据字典 介绍 不同版本下的存储方式 常见的数据字典表 访问权限 系统表 介绍 权限授予系统表 对象信息系统表 服务器端帮助系统表 时区系统表 mysql系统库 介绍 MySQL 默认创建 的特殊数据库&#xff0c;主要用于存储服务器运行时所需的信…...

spring 学习(工厂方式 实例化对象(静态工厂,实例化工厂,实现factorybean 规范))

目录 前言 第一种&#xff1a;静态工厂方式实例化对象 静态工厂的特点 demo(案例&#xff09; 第二种&#xff1a;实例工厂的方式 实例工厂和静态工厂的区别 demo(案例&#xff09; 第三种&#xff1a;实现FactoryBean规范的方式 demo(案例&#xff09; 前言 spring 实…...

MarkupLM:用于视觉丰富文档理解的文本和标记语言预训练

摘要 结合文本、布局和图像的多模态预训练在视觉丰富文档理解&#xff08;VRDU&#xff09;领域取得了显著进展&#xff0c;尤其是对于固定布局文档&#xff08;如扫描文档图像&#xff09;。然而&#xff0c;仍然有大量的数字文档&#xff0c;其布局信息不是固定的&#xff0…...

讯飞智作 AI 配音技术浅析(三):自然语言处理

自然语言处理&#xff08;NLP&#xff09;是讯飞智作 AI 配音技术的重要组成部分&#xff0c;负责将输入的文本转换为机器可理解的格式&#xff0c;并提取出文本的语义和情感信息&#xff0c;以便生成自然、富有表现力的语音。 一、基本原理 讯飞智作 AI 配音的 NLP 技术主要包…...

kafka服务端之日志存储

文章目录 日志布局日志索引日志清理日志删除基于时间基千日志大小基于日志起始偏移量 日志压缩总结 日志布局 Ka饮a 中的消息是以主题为基本单位进行归类的&#xff0c; 各个主题在逻辑 上相互独立。 每个主题又可以分为一个或多个分区&#xff0c; 分区的数量可以在主题创建的…...

软件工程的熵减:AI如何降低系统复杂度

软件开发的世界&#xff0c;如同一个不断膨胀的宇宙。随着功能的增加和时间的推移&#xff0c;代码库越来越庞大&#xff0c;系统复杂度也随之水涨船高。代码膨胀、维护困难、开发效率低下等问题困扰着无数开发者。这不禁让人联想到物理学中的“熵增”原理——一个孤立系统的熵…...

模拟开发小鹅通首页网站练习

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>小鹅通-首页</title><!-- 引入页…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_strerror 函数

声明 ngx_strerror 函数声明在 ngx_errno.h 中&#xff1a; u_char *ngx_strerror(ngx_err_t err, u_char *errstr, size_t size); 实现 在 ngx_errno.c 中&#xff1a; u_char * ngx_strerror(ngx_err_t err, u_char *errstr, size_t size) {size_t len;const char *ms…...

第26场蓝桥入门赛

5.扑克较量【算法赛】 - 蓝桥云课 C&#xff1a; #include <iostream> #include <algorithm> using namespace std;int a[100005];int main() {int n,k;cin>>n>>k;for (int i1; i<n; i)cin>>a[i], a[i] % k;sort(a1, a1n);int mx a[1]k-a…...

【CAPL实战】实现弹窗提示及操作

文章目录 前言1、TestWaitForTesterConfirmation函数2、测试举例 前言 在使用CANoe进行车载通信测试的过程中&#xff0c;可能因为一些条件限制&#xff0c;我们需要在测试执行的过程中去观察一些硬件显示或者调整相关硬件状态。比如测试过程中&#xff0c;需要手动去调整小电…...

基于ESP32的远程开关灯控制(ESP32+舵机+Android+物联网云平台)

目录 材料环境准备物理材料软件环境 物联网平台配置&#xff08;MQTT&#xff09;MQTT阿里云平台配置创建产品添加设备自定义topic esp32配置接线代码 Android部分和云平台数据流转 前言&#xff1a;出租屋、宿舍网上关灯问题&#xff0c;计划弄一个智能开关以及带一点安防能力…...