论文笔记: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对性能的影响。

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

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

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

相关文章

神经网络常见激活函数 6-RReLU函数

文章目录 RReLU函数导函数函数和导函数图像优缺点pytorch中的RReLU函数tensorflow 中的RReLU函数 RReLU 随机修正线性单元&#xff1a;Randomized Leaky ReLU 函数导函数 RReLU函数 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…

Vue(6)

一.路由板块封装 &#xff08;1&#xff09;路由的封装抽离 目标&#xff1a;将路由板块抽离出来 好处&#xff1a;拆分板块&#xff0c;利于维护 // 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象…

【python】matplotlib(animation)

文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…

【东莞常平】戴尔R710服务器不开机维修分享

1&#xff1a;2025-02-06一位老客户的朋友刚开工公司ERP服务器一台戴尔老服务器故障无法开机&#xff0c;于是经老客户介绍找到我们。 2&#xff1a;服务器型号是DELL PowerEdge R710 这个服务器至少也有15年以上的使用年限了。 3&#xff1a;客户反馈的故障问题为&#xff1a;…

Spring AI -使用Spring快速开发ChatGPT应用

前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目&#xff0c;目前该项目还属于Spring实验性项目&#xff0c;但是我们可以通过该项目&#xff0c;可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…

经典排序算法复习----C语言

经典排序算法复习 分类 交换类 冒泡快排 分配类 计数排序基数排序 选择类 选择排序 堆排序 归并类 归并排序 插入类 直接插入排序 希尔排序 折半插入排序 冒泡排序 基于交换。每一轮找最大值放到数组尾部 //冒泡排序 void bubSort(int* arr,int size){bool sorte…

BFS解决拓扑排序(3题)

目录 拓扑排序 1.如何排序&#xff1f; 2.如何形成拓扑排序 3.如何建图 1.看数据稠密度 2. 根据算法流程灵活建图 1.课程表 2.课程表2 3.火星词典 拓扑排序 找到做事情的先后顺序&#xff0c;拓扑排序的结果可能不是唯一的 1.如何排序&#xff1f; 1.找出图中入度为…

kafka 3.5.0 raft协议安装

前言 最近做项目&#xff0c;需要使用kafka进行通信&#xff0c;且只能使用kafka&#xff0c;笔者没有测试集群&#xff0c;就自己搭建了kafka集群&#xff0c;实际上笔者在很早之前就搭建了&#xff0c;因为当时还是zookeeper&#xff08;简称ZK&#xff09;注册元数据&#…

Unity项目接入xLua的一种流程

1. 导入xlua 首先导入xlua&#xff0c;这个不用多说 2. 编写C#和Lua交互脚本 基础版本&#xff0c;即xlua自带的版本 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using System; using System.IO;[Serializable] public…

四次挥手详解

文章目录 一、四次挥手各状态FIN_WAIT_1CLOSE_WAITFIN_WAIT_2LAST_ACKTIME_WAITCLOSE 二、双方同时调用close()&#xff0c;FIN_WAIT_1状态后进入CLOSING状态CLOSING状态 三、TIME_WAIT状态详解(1) TIME_WAIT状态下的2MSL是什么MSL &#xff08;报文最大生存时间&#xff09;为…

【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统

前言 本文主要介绍我最近开发的一个个人实战项目&#xff0c;“基于深度学习的人脸门禁 IPC 智能安防监控系统”&#xff0c;全程满帧流畅运行。这个项目我目前全网搜了一圈&#xff0c;还没发现有相关类型的开源项目。这个项目只要稍微改进下&#xff0c;就可以变成市面上目前…

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 创建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…

1.攻防世界 baby_web

题目描述这里有提示&#xff0c;初始页面 进入题目页面如下 很简洁的页面只有一行HELLO WORLD ctrlu查看了源码也没有信息 用burp suite抓包&#xff0c;并发送到重放器 根据提示&#xff08;初始页面&#xff09;修改访问index.php文件 index.php index.php 是一种常见的…

什么是三层交换技术?与二层有什么区别?

什么是三层交换技术&#xff1f;让你的网络飞起来&#xff01; 一. 什么是三层交换技术&#xff1f;二. 工作原理三. 优点四. 应用场景五. 总结 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神的孩子都在歌唱 大家好…

【机器学习】数据预处理之数据归一化

数据预处理之数据归一化 一、摘要二、数据归一化概念三、数据归一化实现方法3.1 最值归一化方法3.2 均值方差归一化方法 一、摘要 本文主要讲述了数据归一化&#xff08;Feature Scaling&#xff09;的重要性及其方法。首先通过肿瘤大小和发现时间的例子&#xff0c;说明了不同…

【AIGC】语言模型的发展历程:从统计方法到大规模预训练模型的演化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;语言模型的发展历程&#xff1a;从统计方法到大规模预训练模型的演化1 统计语言模型&#xff08;Statistical Language Model, SLM&#xff09;&#xff1a;统…

Java面试题2025-JVM

JVM 1.为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c;到处运行 2.JVM可以运行Class文件 2.JDK&#xff0c;JRE以及JVM的关系 3.我们的编译器到底干了什么事&#xff1f; 仅仅是将我们的 .java 文件转换成了…

Deepseek的MLA技术原理介绍

DeepSeek的MLA(Multi-head Latent Attention)技术是一种创新的注意力机制,旨在优化Transformer模型的计算效率和内存使用,同时保持模型性能。以下是MLA技术的详细原理和特点: 1. 核心思想 MLA技术通过低秩联合压缩技术,将多个注意力头的键(Key)和值(Value)映射到一…

QML初识

目录 一、关于QML 二、布局定位和锚点 1.布局定位 2.锚点详解 三、数据绑定 1.基本概念 2.绑定方法 3.数据模型绑定 四、附加属性及信号 1.附加属性 2.信号 一、关于QML QML是Qt框架中的一种声明式编程语言&#xff0c;用于描述用户界面的外观和行为&#xff1b;Qu…

java项目之美妆产品进销存管理系统的设计与开发源码(ssm+mysql)

项目简介 美妆产品进销存管理系统的设计与开发实现了以下功能&#xff1a; 美妆产品进销存管理系统的设计与开发的主要使用者分为管理员登录后修改个人的密码。产品分类管理中&#xff0c;对公司内的所有产品分类进行录入&#xff0c;也可以对产品分类进行修改和删除。产品管…