【GAD】DOMINANT个人解读/学习

news2025/1/18 14:58:27

在这里插入图片描述
SDM2019,这是一篇图异常检测领域的经典方法.


问题定义

在本文中,我们使用手写体来表示集合(例如, V \mathcal{V} V),粗体小写字母(例如, x \mathbf{x} x)来表示向量,粗体大写字母(例如, X \mathbf{X} X)表示矩阵。矩阵 X \mathbf{X} X的第i行由 x i \mathbf{x}_i xi,矩阵 X \mathbf{X} X的第 ( i , j ) (i,j) (i,j)个元素由 X i , j \mathbf{X}_{i,j} Xi,j表示。此外,单位矩阵表示为 I \mathbf{I} I,矩阵 X \mathbf{X} X的转置表示为 X T \mathbf{X}^T XT。向量的2范数用 ∥ ⋅ ∥ 2 \left \| · \right \|_2 2,矩阵的Frobenius范数由 ∥ ⋅ ∥ F \left \| · \right \|_F F表示。由此,我们将属性网络定义如下:

属性网络

一个属性网络 G = ( V , ϵ , X ) \mathcal{G}=(\mathcal{V},\epsilon,\mathbf{X}) G=(V,ϵ,X)包含:(1)节点集合 V = v 1 , v 2 , . . . , v n \mathcal{V}={v_1,v_2,...,v_n} V=v1,v2,...,vn,其中 ∣ V ∣ = n \left | \mathcal{V} \right |=n V=n;(2)边集合 ϵ \epsilon ϵ,其中 ∣ ϵ ∣ = m \left | \epsilon \right |=m ϵ=m;(3)节点属性 X ∈ R n × d \mathbf{X} \in {\mathbb R}^{n\times d} XRn×d,其中第i行向量 x i ∈ R d ( i = 1 , . . . , n ) \mathbf{x}_i \in {\mathbb R}^d (i = 1,...,n) xiRd(i=1,...,n)是第i个节点的属性信息。

属性网络 G \mathcal{G} G的拓扑机构可以用邻接矩阵 A \mathbf{A} A表示,其中,如果节点 v i v_i vi v j v_j vj之间存在链接,则 A i , j = 0 \mathbf{A}_{i,j}=0 Ai,j=0。我们按照\cite{17}的设置获得有向网络的邻接矩阵 A = m a x ( A , A T ) \mathbf{A}=max(\mathbf{A},\mathbf{A}^T) A=max(A,AT)。为了使结果更容易被解释,我们将属性网络上的异常检测任务定义为排名问题:

属性网络异常排名

给定一个属性网络 G \mathcal{G} G,由n个节点实例的邻接矩阵 A \mathbf{A} A和属性信息矩阵 X \mathbf{X} X,任务是根据异常程度对所有节点进行排序,使得和多数参考节点显然不同的节点排名高。Kaize等人提出的DOMINANT框架对网络拓扑结构和节点属性进行建模,以检测属性网络上的异常。

解析DOMINANT模型

DOMINANT的模型架构如图所示,可以观察到,DOMINANT的基本构件是深度自编码器(deep autoencoder),它由三个基本组件组成:(1)属性网络编码器:用于GCN的节点嵌入表示学习的联合框架中无缝建模网络结构和节点属性;(2)结构重建解码器:用学习的节点嵌入重建原始网络拓扑;(3)属性重建解码器:用获得的节点嵌入重建观察到的节点属性。然后,利用节点的重建误差来标记属性网络上的异常。
在这里插入图片描述

深度自编码器

原始数据和重建后数据之间的差异(即,重建误差)是显示数据集中实例异常的有效指标。更具体地说,重建误差较大的数据实例更可能被识别为异常,因为它们的模式明显偏离大多数数据,无法通过准确的数据重建来完全表达。在众多基于重构的异常检测方法中,深度自编码器(Deep Autoencoder)表现出最先进的性能。深度自编码器是一种深度神经网络,它通过将多层编码和解码功能堆叠在一起,以无监督的方式学习数据的潜在表示。自编码器学习的目标就是重构目标输入,使模型学习到一组特征(编码),通过解码这组特征,能够还原输入。

给定输入数据集 X \mathbf{X} X,首先使用编码器 E n c ( ⋅ ) \mathit {Enc(·)} Enc()将数据映射到潜在低维特征空间,然后使用解码器 D e c ( ⋅ ) \mathit {Dec(·)} Dec()基于潜在表示恢复原始数据。这个学习过程可以被描述为如下式的最小化成本函数:
m i n E [ d i s t ( X , D e c ( E n c ( X ) ) ) ] min\mathbb{E} [\mathit{dist} (\mathbf{X},\mathit{Dec} (\mathit{Enc} (\mathbf{X} )) )] minE[dist(X,Dec(Enc(X)))]
式中: d i s t ( ⋅ , ⋅ ) \mathit{dist(·,·)} dist(⋅,⋅)表示预定义的距离度量函数。在实际应用中,常常选用2范数距离来计算重建误差。

属性网络编码器

属性网络不仅具有复杂的拓扑结构,其节点还包含丰富的属性信息。属性网络表示学习方法同时提取网络拓扑结构和节点的属性信息来学习网络的低维向量表示,但是传统的深度自编码器只能处理独立同分布( i . i . d . i.i.d. i.i.d.)的属性值数据\cite{35},不能直接应用于属性网络上。原作者受到图卷积网络(GCN)模型的启发(关于GCN的数学原理将在第5节详细说明),设计了一个有效的编码器来捕获属性网络的底层属性:GCN在学习嵌入表示时考虑高阶节点邻近度,从而减轻了网络稀疏性问题。同时,通过多层非线性变换,GCN捕捉数据的非线性和属性网络上两种信息模态的复杂交互。在数学上,GCN将卷积操作扩展到频谱域中的网络数据(networked data),并通过频谱卷积函数学习每一层的潜在表示,如下式:
H ( l + 1 ) = f ( H ( l ) , A ∣ W ( l ) ) \mathbf{H}^{(l+1)}=f(\mathbf{H}^{(l)},\mathbf{A}|\mathbf{W}^{(l)}) H(l+1)=f(H(l),AW(l))
式中, H ( l ) \mathbf{H}^{(l)} H(l)是卷积层 l l l的输入,而 H ( l + 1 ) \mathbf{H}^{(l+1)} H(l+1)是卷积层之后的输出。我们把属性矩阵 X ∈ R n × d \mathbf{X}\in \mathbb{R}^{n\times d} XRn×d作为第一层的输入,也就是 H ( 0 ) \mathbf{H}^{(0)} H(0) W ( l ) \mathbf{W}^{(l)} W(l)是需要学习的特定层的可训练权重矩阵,在本模型中是使用如式\eqref{loss}所示的目标函数的梯度下降训练得到。图卷积网络的每一层都可以用函数 f ( H ( l ) , A ∣ W ( l ) ) f(\mathbf{H}^{(l)},\mathbf{A}|\mathbf{W}^{(l)}) f(H(l),AW(l))如下表示:
f ( H ( l ) , A ∣ W ( l ) ) = θ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) f(\mathbf{H}^{(l)},\mathbf{A}|\mathbf{W}^{(l)})= \theta(\tilde{ \mathbf{D}}^{-\frac{1}{2} } \tilde{\mathbf{A}}\tilde{\mathbf{D}}^{-\frac{1}{2}} \mathbf{H}^{(l)} \mathbf{W}^{(l)}) f(H(l),AW(l))=θ(D~21A~D~21H(l)W(l))
式中, A ~ = A + I \tilde{\mathbf{A}}=\mathbf{A}+\mathbf{I} A~=A+I D ~ \tilde{\mathbf{D}} D~ A ~ \tilde{\mathbf{A}} A~的对角矩阵,对角元素由 D ~ i , j = ∑ j A ~ i , j \tilde{\mathbf{D}}_{i,j}=\sum_j \tilde{\mathbf{A}}_{i,j} D~i,j=jA~i,j表示。因此我们可以直接计算 D ~ − 1 2 A ~ D ~ − 1 2 \tilde{ \mathbf{D}}^{-\frac{1}{2} } \tilde{\mathbf{A}}\tilde{\mathbf{D}}^{-\frac{1}{2}} D~21A~D~21作为预处理步骤。 θ ( ⋅ ) \theta(·) θ()是非线性激活函数,比如 R e l u ( x ) = m a x ( 0 , x ) Relu(x)=max(0,x) Relu(x)=max(0,x)。值得注意的是,滤波器(filter)或特征图参数 W l \mathbf{W}^l Wl对于属性网络上的所有节点是共享的。以节点特征和图结构作为输入,输出一组新的节点特征,这一过程即称作图滤波(Graph Filtering)操作。给定属性矩阵 X \mathbf{X} X作为输入,可以通过连续堆叠 k k k个卷积层来有效地捕获每个节点的第 k k k跳邻域。因此,嵌入 Z \mathbf{Z} Z不仅对每个节点的属性信息进行编码,而且还涉及k阶节点邻近信息。在DOMINANT中使用了三个卷积层来构建属性网络编码器:
H ( 1 ) = f R e l u ( X , A ∣ W ( 0 ) ) \mathbf{H}^{(1)}=f_{Relu}(\mathbf{X},\mathbf{A}|\mathbf{W}^{(0)}) H(1)=fRelu(X,AW(0))
H ( 2 ) = f R e l u ( H ( 1 ) , A ∣ W ( 1 ) ) \mathbf{H}^{(2)}=f_{Relu}(\mathbf{H}^{(1)},\mathbf{A}|\mathbf{W}^{(1)}) H(2)=fRelu(H(1),AW(1))
Z = H ( 3 ) = f R e l u ( H ( 2 ) , A ∣ W ( 2 ) ) \mathbf{Z}=\mathbf{H}^{(3)}=f_{Relu}(\mathbf{H}^{(2)},\mathbf{A}|\mathbf{W}^{(2)}) Z=H(3)=fRelu(H(2),AW(2))
式中, W ( 0 ) ∈ R n × h 1 \mathbf{W}^{(0)}\in \mathbb{R}^{n\times h_1} W(0)Rn×h1是具有 h 1 h_1 h1个特征映射的输入-隐藏层。类似地, W ( 1 ) ∈ R h 1 × h 2 \mathbf{W}^{(1)}\in \mathbb{R}^{h_1 \times h_2} W(1)Rh1×h2 W ( 2 ) ∈ R h 2 × h 3 \mathbf{W}^{(2)}\in \mathbb{R}^{h_2 \times h_3} W(2)Rh2×h3是两个隐藏-隐藏层权重矩阵。在应用三层卷积之后,也就是经历了对输入的三次特征提取,输入网络可以被转换为 h 3 h_3 h3维潜在表示 Z \mathbf{Z} Z,可以捕获拓扑网络结构和节点属性中复杂的非线性结构。潜在表示是指学习过程中由模型自动学到的表示,包含了节点的属性信息等。

结构重建解码器

在对属性网络所额外拥有的属性信息进行编码之后,我们要讨论如何使用属性网络编码器学习到的潜在表示 Z \mathbf{Z} Z来重建原始网络结构。令 A ^ \hat{A} A^表示估计的邻接矩阵,那么可以用结构重构误差 R S = A − A ^ \mathbf{R}_S=\mathbf{A}-\hat{\mathbf{A}} RS=AA^表示网络上的结构异常。具体而言,如果对于某个节点的结构信息可以通过结构重构解码器近似出来,那我们可以认为该节点是异常节点的概率比较低。相反,如果不能被很好地重建,则意味着其结构信息和大多数节点不同。因此 R S ( i , : ) \mathbf{R}_S(i,:) RS(i,:)的范数越大,表示属性网络上的第 i i i个节点从网络结构方面来看异常的概率越高。具体地,解码器将潜在表示作为输入,然后预测每两个节点之间是否存在链接(link):
p ( A ^ i , j = 1 ∣ z i , z j ) = s i g m o i d ( z i , z j T ) p(\hat{\mathbf{A}}_{i,j}=1|\mathbf{z}_i,\mathbf{z}_j)=sigmoid(\mathbf{z}_i,\mathbf{z}_j^T) p(A^i,j=1∣zi,zj)=sigmoid(zi,zjT)
点积是两个向量之间的乘积,对应元素相乘后求和,以此捕捉了两个表示的相似性,使用转置来确保维度匹配。Sigmoid函数将实数映射到(0,1)的区间,其形式为$ \sigma(x) = \frac{1}{1 + e^{-x}}$,在这里将点积得到的相似度转换为概率值。因此,当Sigmoid函数的输出接近1时,表示模型预测存在链接的概率较高,而接近0时则表示存在链接的概率较低。这种方法常用于图神经网络中,其中学习到的潜在表示通过解码器来预测是否存在链接。

因此,基于属性网络编码器的输出 Z \mathbf{Z} Z来训练链路预测层,如式\eqref{linkpre}表示。
KaTeX parse error: Undefined control sequence: \label at position 59: …thbf{Z}^T) \̲l̲a̲b̲e̲l̲{linkpre}

属性重建解码器

相似地,为了计算节点属性的重建误差,DOMINANT使用了一个属性重建解码器,从编码的潜在表示 Z \mathbf{Z} Z来近似节点的属性信息。具体而言,属性重构解码器利用另一个图卷积层来预测原始节点属性,如式\eqref{attributepre}所示。
\begin{equation}
\hat{\mathbf{X}}=f_{Relu}(\mathbf{Z},\mathbf{A}|\mathbf{W}^{(3)})
\label{attributepre}
\end{equation}
那么通过计算出的重建误差 R A = X − X ^ \mathbf{R}_A=\mathbf{X}-\hat{\mathbf{X}} RA=XX^我们可以从属性的角度发现属性网络上的异常。

\subsection{异常检测}

通过以上步骤重建拓扑网络结构,将结构和属性的重构误差共同学习,可以表示为:
KaTeX parse error: Undefined control sequence: \label at position 151: …{X}}||^2_F \̲l̲a̲b̲e̲l̲{loss}
式中, α \alpha α是用来平衡结构重建和属性重建影响的一个重要参数。式\eqref{loss}也就是本模型的目标函数,通过最小化此函数,自编码器可以基于编码的潜在表示迭代地近似输入的属性网络,直至收敛。最后,使用两项重构误差之和来评估节点的异常性:
s c o r e ( v i ) = ( 1 − α ) ∣ ∣ a − a ^ i ∣ ∣ 2 + α ∣ ∣ x − x ^ i ∣ ∣ 2 score(\mathbf{v}_i)=(1-\alpha)||\mathbf{a}-\hat{\mathbf{a}}_i||_2+\alpha||\mathbf{x}-\hat{\mathbf{x}}_i||_2 score(vi)=(1α)∣∣aa^i2+α∣∣xx^i2
也就是,得分越高的实例越是被认为异常。再由该分数来计算属性网络的异常排名。

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

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

相关文章

优化测试稳定性的失败重试工具:pytest-rerunfailures详解!

一.前言 笔者在执行自动化测试用例时,会发现有时候用例失败并非代码问题,而是由于服务正在发版,导致请求失败,从而降低了自动化用例的稳定性,最后还要花时间定位到底是自身case的原因还是业务逻辑问题,还是…

安全测试:史上最全的攻防渗透信息收集方法、工具!

信息收集的意义 信息收集对于渗透测试前期来说是非常重要的。正所谓,知己知彼百战不殆,信息收集是渗透测试成功的保障,只有我们掌握了目标网站或目标主机足够多的信息之后,才能更好地进行渗透测试。 信息收集的方式可以分为两种…

如何利用EXCEL批量插入图片

目录 1.excel打开目标表格; 2.点开视图-宏-录制宏,可以改宏的名字或者选择默认; 3.然后点开视图-宏-查看宏 4.点编辑进去 5.修改代码: (1)打开之后会显示有一堆代码 (2)将这个…

git之分支管理

一.理解分支 我们看下面这张图片: 在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀…

SpringBootRest服务调用

目录 RestTemplate 依赖配置 自定义RestTemplate webCilent 依赖配置 自定义webCilent springboot中有两种方式实现Rest远程服务调用,分别是RestTemplate与webCilent。下面分别介绍一下这两种方式。 RestTemplate 依赖配置 RestTemplate是Spring Framework提供的…

使用GPT生成python图表

首先,生成一脚本,读取到所需的excel表格 import xlrddata xlrd.open_workbook(xxxx.xls) # 打开xls文件 table data.sheet_by_index(0) # 通过索引获取表格# 初始化奖项字典 awards_dict {"一等奖": 0,"二等奖": 0,"三等…

从Unity到Three.js(outline 模型描边功能)

指定模型高亮功能,附带设置背景颜色,获取随机数方法。 百度查看说是gltf格式的模型可以携带PBR材质信息,如果可以这样,那就完全可以在blender中配置好材质导出了,也就不需要像在unity中调整参数了。 import * as THRE…

牛客周赛 Round 34 解题报告 | 珂学家 | 构造思维 + 置换环

前言 整体评价 好绝望的牛客周赛,彻底暴露了CF菜菜的本质,F题没思路,G题用置换环骗了50%, 这大概是唯一的亮点了。 A. 小红的字符串生成 思路: 枚举 a,b两字符在相等情况下比较特殊 a, b input().split() if a b:print (2)print (a)pri…

【Redis】搞懂过期删除策略和内存淘汰策略

1、过期删除策略 1.1、介绍 Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个过期字典…

3.openEuler物理存储及逻辑卷管理(一):磁盘存储挂载与使用

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议下载麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 磁盘大类: HDD, (Hard Disk Drive的缩写) : 由一个或者多个铝制或者玻璃制成的磁性碟 片,磁头,…

流计算之Flink

文章目录 概要有界无界流集群JobManagerTaskManagersTasks 和算子链Task Slots 和资源 小结 概要 Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模…

深度解析:Integer.parseInt() 源码解读

深度解析:Integer.parseInt() 源码解读 关键要点 解析字符:用于将字符转换为对应的数字值 Character.digit(s.charAt(i),radix) 确定limit:根据正负号分别设定 int limit -Integer.MAX_VALUE;【正】 limit Integer.MIN_VALUE;【负】 负数…

通过几天JAVA学习总结和查询资料编写一个学生管理系统(简单版)

目录 需求分析 需求: 分析: 学生管理系统开始菜单界面 学生类: 功能实现: 添加功能 删除功能 修改功能 查询功能 项目实现 项目实现分析: 1.实现菜单选择功能 2.实现添加学生信息功能 3.实现删除学生信…

【DAY04 软考中级备考笔记】数据结构基本结构和算法

数据结构基本结构和算法 2月25日 – 天气:晴 周六玩了一天,周天学习。 1. 什么是数据结构 数据结构研究的内容是一下两点: 如何使用程序代码把现实世界的问题信息化如何用计算机高效地处理这些信息从创造价值 2. 什么是数据 数据是信息的…

Pod 异常问题排查

文章目录 前言1、诊断流程2、常用的排查方法3、Pod 状态、原因分析及故障处理总结 前言 通过 Kubernetes 部署服务,服务并未按照计划正常提供服务。如何通过 Pod 状态,进行异常问题的定制就显得特别重要了! 1、诊断流程 2、常用的排查方法 …

基于ZYNQ的PCIE高速数据采集卡的设计(一)

作为信息处理的第一步,数据采集的作用越来越重要。目前,数据采集已经在航 空、民用、军事、医疗等领域得到广泛应用。随着相关技术的不断发展,信号频率越 来高,带宽越来越大,使得数据采集技术逐渐向高速大数据的方向…

最新计算机毕业设计题目100例

文章目录 0 前言1 计算机毕设选题推荐2 开题指导3 最后 0 前言 大家好!大四的同学们毕业设计即将开始了,你们做好准备了吗? 学长给大家精心整理了最新的计算机毕业设计选题,希望能为你们提供帮助。如果在选题过程中有任何疑问&a…

C++之std::tuple(二) : 揭秘底层实现原理

相关系列文章 C之std::tuple(二) : 揭秘底层实现原理 C三剑客之std::any(一) : 使用 C之std::tuple(一) : 使用精讲(全) C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二):深入剖析 深入理解可变参数(va_list、std::initializer_list和可变参数模版) st…

创作纪念日:记录我的成长与收获

机缘 一开始是在我深入学习前端知识的Vue.js框架遇到了一个问题,怎么都解决不了,心烦意乱地来csdn上找解决方法。开心的是真被我找到了,真的很感恩,也意识到在这个平台上分享自己的经验是多么有意义的事情,可能随便的…

外包干了3个月,技术倒退明显...

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…