| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> LUNAR:基于图神经网络统一局部异常检测算法 -> 正文阅读 |
|
[人工智能]LUNAR:基于图神经网络统一局部异常检测算法 |
AAAI 2022上的论文《LUNAR: Unifying Local Outlier Detection Methods via Graph Neural Networks》提出了一种基于图神经网络进行异常检测的框架,统一了常见局部异常检测方法的同时,也一定程度上解决了局部异常检测算法超参数无法学习,难于优化的问题。 研究动机提到异常检测算法,最常见的思路往往是基于局部近邻距离来判断样本点是否为异常点。这种局部异常检测的方法,比如LOF,DBSCAN,KNN,在基于特征的非结构化的数据集上往往有不错的表现。但是,这些算法普遍缺乏可学习的参数,这使得他们难以适应不同的数据集。同时由于异常检测算法往往是无监督学习,上述算法的超参数,比如KNN和LOF中k值的选取,很难基于表现进行调优,而这些超参数的影响又很大。因此,现有局部异常检测的方法很难在不同数据集中取得同样稳定的表现。 基于神经网络的异常检测方法,由于有标注的异常点数据有限以及其主要是针对如图像数据的高维度结构化数据集的原因,在基于特征的低结构化数据集上的表现始终不尽人意。目前缺乏一种在这一类数据的异常检测中表现优异且稳定的,具有一定可学习参数的算法模型。 解决的问题作者首先提出了目前的局部异常检测算法在图神经网络(Graph Neural Networks)上的统一框架。之后,基于这个图神经网络的框架,作者提出了LUNAR(Learnable Unified Neighbourhood-based Anomaly Ranking)。凭借更多的可训练参数,LUNAR在多个数据集中的灵活度与适应性要强于现有的局部异常检测算法。在性能上和健壮性上,LUNAR也比传统的异常检测算法以及基于神经网络的异常检测算法表现更好。 所提的方法引入图神经网络,将现有局部异常检测算法与图模型进行结合,从而得到一个统一的框架。 图神经网络(GNNs)图 G ( V , E ) G(V,E) G(V,E)由节点集 V V V和边集 E E E构成。两个相邻节点 i , j ∈ V i, j\in V i,j∈V,其连接的边记作 ( j , i ) ∈ E (j,i)\in E (j,i)∈E。边可以是无向的,信息在无向边上可以双向流动。边也可以是有向的,即信息只能由源节点流向目标节点。节点和边都可以具有特征向量,节点 i i i的特征向量记作 x i x_i xi?,边 ( j , i ) (j,i) (j,i)的特征向量记做 ( e j , i ) (e_{j,i}) (ej,i?)。 每个节点都具有一个节点向量。依靠一个消息传递方案,GNNs可以基于神经网络为每个节点进行分类。消息传递方案由消息,聚合,和更新三部分构成。消息函数
?
\phi
?决定了从每个相邻节点发送至当前节点的信息。聚合函数
□
\square
□将这些相邻节点传来的信息汇总为一个信息,比较常见的方式是使用平均或者最大池化。更新函数
γ
\gamma
γ使用聚合后的信息为当前节点更新其向量。在一个GNN的第k层,节点的向量值计算可以表示为: 问题定义假设我们有 m m m个训练样本 x 1 ( t r a i n ) , . . . , x m ( t r a i n ) ∈ R d \textup{x}_1^{(train)}, ..., \textup{x}_m^{(train)}\in\R^d x1(train)?,...,xm(train)?∈Rd以及 n n n个测试样本 x 1 ( t e s t ) , . . . , x n ( t e s t ) ∈ R d \textup{x}_1^{(test)}, ..., \textup{x}_n^{(test)}\in\R^d x1(test)?,...,xn(test)?∈Rd,每个样本都可能是正常的或异常的。算法为每一个测试样本 x i ( t e s t ) \textup{x}_i^{(test)} xi(test)?输出一个异常分 s ( x i ( t e s t ) ) s(\textup{x}_i^{(test)}) s(xi(test)?),分数高意味着其为异常值,分数低则为正常值。局部异常检测的算法可以被理解为,如何将 x i ( t e s t ) \textup{x}_i^{(test)} xi(test)?到其最近样本的距离用于计算其异常分。 统一框架局部异常检测的方法是从邻近样本点收集信息,计算出一个统计量,然后根据这个统计量来判断当前样本点是否为异常点。下面以KNN为例,将这一过程结合到GNNs的消息传递框架中。 KNN可以被认为是在一个有向图中,每个节点
i
i
i最近的
k
k
k个近邻节点
j
∈
N
i
j\in N_i
j∈Ni?依次与其有一条有向边
(
j
,
i
)
(j,i)
(j,i),由邻近节点
j
j
j向当前节点
i
i
i传输信息。边的权重
e
j
,
i
e_{j,i}
ej,i?等于有向边
(
j
,
i
)
(j,i)
(j,i)的边长,即: 消息: 可学习的重要性论文中的实验表明,在选取不同的k值时,LOF的变化相对较大,而LUNAR则有更为健壮的表现。 LUNARLUNAR首先为数据集构建一个k-NN图,将数据集中的每个样本作为节点,将每个节点的k个近邻与其进行有向连接。消息是有向边的向量,不同于其他GNNs的一点是,LUNAR中的聚合函数是一个可学习的聚合函数。 LUNAR不仅仅可以针对图数据进行建模,同时对于基于特征的结构化数据也可以建模。 模型设计LUNAR在聚合时,并没有对k个近邻传来的信息采取统一的最大池化将其转化为一个最终信息,而是将这k个信息编码为一个k维的向量,并送入神经网络进行运算,从而通过神经网络的权重更新来实现聚合时的策略的可学习性。 由神经网络运算得到的聚合结果最终用于分类,0为正常样本,1为异常样本。由于训练集中的数据我们认为均是正常样本,因此需要一个合理的异常样本生成策略,使模型学到区分正负样本的分界线。 生成负样本均匀分布第一种方法是通过均匀分布生成负样本: 子空间扰动第二种方法,是在正常样本的所有特征维度中选取一个子空间,通过向子空间内的特征添加高斯噪声从而生成负样本: 关键结果及结论LUNAR在运算速度上明显快于其他深度模型,如HRSS数据集上,LUNAR耗时33.71秒,DAGMM则为55.92秒。这是因为LUNAR在训练时避免了直接训练高维输入特征,而是使用两点之间的距离。 和其他局部异常检测方法一样,LUNAR的思路还是寻找k近邻来解决问题。这在高维空间中,比如在处理图像数据时,很难保证距离是否有意义。 LUNAR的一大贡献在于,它成功统一了包括KNN,LOF,以及DBSCAN在内的局部异常检测方法。在统一框架下,基于其变换一致性,可以不同变换后的异常分。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:38:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |