【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
也就是,得分越高的实例越是被认为异常。再由该分数来计算属性网络的异常排名。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯-乘积最大

原题链接:用户登录 题目描述 今年是国际数学联盟确定的“2000 --世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰 90 周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友 XZ 也有幸得以…

【线程池项目(四)】项目的死锁问题分析和资源回收机制的改善

在上一篇 【线程池项目(三)】线程池CACHED模式的实现中我们大概说了说cached模式的基本实现,对于多线程编程,我们需要考虑的问题也较于单线程更多、更复杂,经常存在线程同步、资源竞争等复杂的并发控制问题&#xff0c…

学习python的第7天,她不再开放她的听歌榜单

我下午登录上小号,打开聊天消息看到了她的回复,我很开心兴奋,可是她不再开放她的听歌榜单了,我感觉得到,我要失恋了。 “因为当年电视上看没有王菲版本的” “行”。 “那你以后还会开放听歌榜单吗?”我…

Linux之部署前后端分离项目

Nginx配置安装 1.安装依赖 我们这里安装的依赖是有4个的 [rootlocalhost opt]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2.上传解压安装包 [rootlocalhost opt]# tar -xvf nginx-1.13.7.tar.gz -C /usr/local/java/3.安装Nginx &#xff0…

电机控制----电机反电动势波形的测量

电机控制----电机反电动势波形的测量 很多人在开发霍尔传感器方波控制时,在如何准确确定出三相绕组的通电顺序方面存在疑惑,在网上找了很多资料都是只给出了相序表,但是真正拿过来引用时却往往对应不了自己的电机,导致项目开发过…

SpringBoot:数据访问-整合 Druid 配置数据源监控

点击查看数据访问demo&#xff1a;LearnSpringBoot06DataJdbc 点击查看更多的SpringBoot教程 简介 Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。 一、添加druid-spring-boot-starter依赖 点击查询最新版 <dependency&g…

[electron]官方示例解析

官方例子 github链接 main.js const { app, BrowserWindow } require(electron)说句实话这里的语法是有部分看不懂的。导入模块虽然electron有很多模块。但是这里只是用到了app 和 BrowserWindow function createWindow () {// Create the browser window.const mainWindo…

流计算之Flink

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

常用芯片学习——YC688语音芯片

YC688 广州语创公司语音芯片 使用说明 YC688是一款工业级的MP3语音芯片 &#xff0c;完美的集成了MP3、WAV的硬解码。支持SPI-Flash、TF卡、U盘三种存储设备。可通过电脑直接更新SPI-Flash的内容&#xff0c;无需上位机软件。通过简单的串口指令即可完成三种存储设备的音频插…

深度学习基础(四)医疗影像分析实战

之前的章节我们初步介绍了卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;&#xff1a; 深度学习基础&#xff08;三&#xff09;循环神经网络&#xff08;RNN&#xff09;-CSDN博客文章浏览阅读1.2k次&#xff0c;点赞17次&#xff0c;收…

Java基于SpringBoot的口腔医院管理平台,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

给大家分享一款小程序:AI一秒修图

AI一秒修图 照片修复的AI助手特点&#xff1a;Demo&#xff08;1.选择图片 2.涂抹遮罩 3.消除&#xff09;Product Roadmap (版本演进)Contact-联系我们Reference 照片修复的AI助手 照片修复小小助手是一款快速P图微信小程序&#xff0c;用来消除图片中指定的人和物&#xff…

wpf 简单实验 数据更新 列表更新

1.概要 1.1 需求 一个列表提供添加修改删除的功能&#xff0c;添加和修改的内容都来自一个输入框 1.2 要点 DisplayMemberPath"Zhi"列表.ItemsSource datalist;(列表.SelectedItem ! null)(列表.SelectedItem as A).Zhi 内容.Text;datalist.Remove((列表.Selec…

matlab simulink变压器温度仿真

1、内容简介 略 48-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab simulink变压器温度仿真_哔哩哔哩_bilibili 4、参考论文 略 大型油浸风冷变压器绕组温度场分析_高原 基于顶层油温的变压器绕组热点温度计算改进模型_陈伟根 基于热电类比理论的油浸式电…

【计算机网络】深度学习使用应用层的HTTP协议

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【计算机网络】深度学习使用应用层的HTTP协议 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 一:HTTP是什么二:HTTP请求1.HTTP请求的组成2.HTTP请求的方法…

面试经典150题【21-30】

文章目录 面试经典150题【21-30】6.Z字形变换28.找出字符串中第一个匹配项的下标68.文本左右对齐392.判断子序列167.两数之和11.盛最多水的容器15.三数之和209.长度最小的子数组3.无重复字符的最长子串30.串联所有单词的子串 面试经典150题【21-30】 6.Z字形变换 对于“LEETC…

Redis实现滑动窗口限流

常见限流算法 固定窗口算法 在固定的时间窗口下进行计数&#xff0c;达到阈值就拒绝请求。固定窗口如果在窗口开始就打满阈值&#xff0c;窗口后半部分进入的请求都会拒绝。 滑动窗口算法 在固定窗口的基础上&#xff0c;窗口会随着时间向前推移&#xff0c;可以在时间内平滑控…

矩阵的导数运算(理解分子布局、分母布局)

矩阵的导数运算(理解分子布局、分母布局) 1、分子布局和分母布局 请思考这样一个问题&#xff0c;一个维度为m的向量y对一个标量x的求导&#xff0c;那么结果也是一个m维的向量&#xff0c;那么这个结果向量是行向量&#xff0c;还是列向量呢&#xff1f; 答案是&#xff1a…

【前端素材】推荐优质医院后台管理系统I-Health平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理和配置操…

如何用Pytest做性能测试?5个步骤轻松学会!

Pytest其实也是可以做性能测试或者基准测试的。是非常方便的。 可以考虑使用Pytest-benchmark类库进行。 安装pytest-benchmark 首先&#xff0c;确保已经安装了pytest和pytest-benchmark插件。可以使用以下命令安装插件&#xff1a; pip install pytest pytest-benchmark …