【GAD】DOMINANT个人解读/学习

在这里插入图片描述
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.hqwc.cn/news/493446.html

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

相关文章

Sora抢饭碗!好莱坞大亨停止,8亿美元投资

好莱坞消息,著名演员、影视投资人Tyler Perry在看到OpenAI最新发布的文生视频模型Sora后,停止了8亿(约57亿元)美元的投资。 该投资项目位于亚特兰大,本来要扩展十几个摄影棚用于影视剧的拍摄(类似横店影视…

golang学习1,dea的golang-1.22.0

参考:使用IDEA配置GO的开发环境备忘录-CSDN博客 1.下载All releases - The Go Programming Language (google.cn) 2.直接next 3.window环境变量配置 4.idea的go插件安装 5.新建go项目找不到jdk解决 https://blog.csdn.net/ouyang111222/article/details/1361657…

【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑

之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践,主要关注在MetaGPT入门和单智能体部分(系列文章附在文末,感兴趣的可以看下)。现在新的教程来了,新教程主要关注多智能体部分。 本系列文章跟随《M…

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序 一、演示效果二、流程步骤三、下载链接 一、演示效果 二、流程步骤 1、使用微信小程序官方开发工具导入本项目并开通云开发以及内容管理服务。 2、修…

程序员的护城河是什么?最终走向……?

程序员未来会大量失业,就是因为社会需求少,导致开发者岗位减少,人力资源过剩所导致。Android刚开始的零几年非常火热,是个人都要。到如今的内卷,高级开发都拿着中低程序员的薪资。这是因为头部大厂形成标准化&#xff…

面试redis篇-11Redis集群方案-哨兵

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下: 监控:Sentinel 会不断检查您的master和slave是否按预期工作自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主通知:Sentinel充当…

Codeforces Round 881 (Div. 3) F2. Omsk Metro (hard version)(倍增+最大子段和)

原题链接:F2. Omsk Metro (hard version) 题目大意: 最初开始时,你有一个根节点 1 1 1 且权值为 1 1 1 。 接下来会有 n n n 个操作,每次操作按照如下格式给出: 设操作开始前节点总数为 c n t cnt cnt&#xff1…

基于Java的艺培管理解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

用html编写的简易新闻页面

用html编写的简易新闻页面 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

LeetCode二叉树中的第 K 大层和

题目描述 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和&#xff08;不一定不同&#xff09;。如果树少于 k 层&#xff0c;则返回 -1 。 注意&#xff0c;如果两个节点与根节点的距离相同&#xff0c;则…

阿里面试:最佳线程数,如何确定?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 如何确定系统的最佳线程数&#xff1f; 小伙伴 没有回…

SQL注入漏洞解析--less-5

1.进入第五关我们先看提示 2.还是说让我们输入一个id数字&#xff0c;那我们就输入一个先看一下 3.根据页面结果得知虽然有显示&#xff0c;但是和前面四关还是不一样是因为页面虽然有东西。但是只有对于请求出错显示&#xff0c;其余的就没有了。这个时候我们用联合查询就没有…