Graph Neural Networks based Log Anomaly Detection and Explanation论文阅读笔记

news/2024/7/3 0:27:43/文章来源:https://www.cnblogs.com/fun-debug/p/18275454

1.介绍

现代高科技系统,如云服务器或高性能计算机,通常由大量的组件组成。随着时间的推移,这些系统变得越来越复杂,使得手动系统操作和维护变得困难甚至不可行[17]。因此,自动化系统操作和维护是非常可取的。为了实现这一点,系统日志被普遍用于记录系统状态和重要事件。通过分析这些日志,可以识别故障和潜在风险,并采取补救措施以防止严重的问题。然而,系统日志通常是半结构化的文本,通过日志异常检测识别异常通常具有挑战性。由于工业界和学术界都对从日志中识别异常产生了极大的兴趣,因此已经提出了大量的日志异常检测方法。现有的日志异常检测方法大致可以分为三类:基于定量的方法(OCSVM, PCA)、基于日志序列的方法(DeepLog,LogAbomaly)和基于图的方法(GLAD-PAW,GLAD)。

基于图的方法的优势:

  1. 这些方法能够识别日志事件之间结构至关重要的问题,例如性能下降;
  2. 它们能够提供与日志识别问题相对应的上下文日志消息;
  3. 它们可以以图的形式提供“正常”操作过程,帮助最终用户找到根本原因并采取补救措施。

存在的问题

  1. 基于图的方法(如GLAD)将日志事件转换为无向图,这可能无法捕获日志事件之间顺序的重要信息。
  2. 大多数现有的基于图的方法分别执行图表示和异常检测,导致检测精度次优。
  3. 大多数现有的日志异常检测方法只关注准确的检测,而不给出解释

提出的解决方法

为了解决这些问题,论文提出了Logs2Graphs,这是一种基于图的无监督日志异常检测方法。

Logs2Graphos首先利用现成的方法来学习每个日志事件的语义嵌入,然后将日志消息分配到不同的组。其次,Logs2Graphs将每组日志消息转换为属性图、有向图和加权图,每个节点表示一个日志事件,节点属性包含其语义嵌入,有向边表示其他事件如何跟随一个事件,相应的边权重表示事件彼此跟随的次数。第三,通过将图表示学习和异常检测目标相结合,这里引入了一类有向图启始卷积网络(One-Class Digraph Inception Convolutional Networks)作为一种从图集中检测异常图的新方法。因此,Logs2Graphs利用属性图、有向图和边缘加权图的丰富表达能力来表示日志,然后使用图神经网络有效地检测图级异常,同时考虑日志事件的语义信息和日志事件之间的结构信息(包括特殊情况下的序列信息)。

2.问题定义

Event:如果每个日志消息都有可用的日志标识符,则可以使用标识符进行分组,否则,使用固定窗口或滑动窗口对日志消息进行分组。对于由许多日志组组成的日志文件,可以获得事件计数矩阵。生成事件计数矩阵(或其他特征矩阵)的过程称为特征提取。提取的特征通常用作异常检测算法的输入,以识别日志异常,即偏离“正常”的日志消息或日志组。

图:\(G = (\nu,\varepsilon,X,Y)\), \(\nu = \{{v_1,\dots,v_{\nu}\}}\)表示节点集,\(\varepsilon = \{e_1,\dots,e_{|\varepsilon|}\}\)表示边集。如果\((v_i,v_j)\in \varepsilon\) ,则节点vi到节点vj存在一条边。\(X ∈ R ^{|\nu|×d}\),其中第i行表示节点vi的属性,d为属性个数。\(Y ∈ N ^{|\varepsilon |×|\varepsilon |}\),yij表示从节点vi到vj的边权。因此,G可以表示为\((A,X,Y)\)。其中\(A \in R ^{|\nu|\times |\nu|}\),因此\(A_{ij} = \Pi[(v_i,v_j) \in \varepsilon ], i,j \in \{1,\dots,|\nu|\}\)

2.1基于图的日志异常检测

\(L = (L_1,\dots,L_{L})\), 表示日志事件,将日志事件划分为M个日志组,\(Q = \{q_1,\dots,q_m,\dots,q_M\}\),\(q_m = \{q_{m1},\dots,q_{mn},\dots,q_{mN}\}\),qm为日志组,qmn为日志组中的第n个事件。 对于每一个日志组qm构造一个有属性的、有向的和边加权的图\(G_m = (\nu_m,\varepsilon_m,X_m,Y_m)\)\(e_{ij}\in \varepsilon_m\)表示日志事件i至少有一次紧接在qm中的日志事件j之后,\(x_i \in X_m\)表示日志时间i的语义嵌入,\(y_{ij} \in Y_m\)是边\(e_{ij}\)的权值。表示事件j紧随事件i之后的次数。

问题1(基于图的日志异常检测)

这里是给定一组表示日志的属性图、有向图和加权图,然后找出其中与大多数图明显不同的图。大多数方法旨在检测两种类型的异常:

  • 如果某个日志组(这里是一个图)的出现频率较高,则认为该日志组是一个定量异常。例如,如果一个文件被打开(事件a)两次,它通常也应该被关闭(事件B)两次。换句话说,在正常模式中#A = #B的事件发生次数,如果\({\#A} \ne {\#B}\)则检测到异常。
  • 如果某些事件的顺序违反正常顺序模式,则认为日志组包含顺序异常。例如,在正常的工作流程中,文件只能在打开后才能关闭。换句话说,事件发生的顺序A→B被认为是正常的,而B→A被认为是异常的。

基于图的异常检测的一个优点是既能检测到这两类异常,又能检测到图的结构所反映的异常

3.有向图Inception卷积网络

DiGCN将第k阶有向图卷积定义为

\[\begin{align}Z^{(k)} = \begin{cases}X\theta^{(0)} & k=0 \\\Psi X\theta^{(1)} & k=1 \\\Phi X\theta^{(k)} & k\ge 2, \tag{1}\end{cases}\end{align} \]

这里的\(\Psi=\frac{1}{2}\left(\Pi^{(1) \frac{1}{2}} \mathbf{P}^{(1)} \Pi^{(1) \frac{-1}{2}}+\Pi^{(1) \frac{-1}{2}} \mathbf{P}^{(1) T} \Pi^{(1) \frac{1}{2}}\right)\),\(\Phi=\mathbf{W}^{(k) \frac{-1}{2}} \mathbf{P}^{(k)} \mathbf{W}^{(k) \frac{-1}{2}}\),k是输出维度

\(\theta^{(0)}\theta^{(1)}\theta^{(k)}\)是可训练参数矩阵

\[\begin{align}P^{(k)} = \begin{cases}\text{I} & k=0 \\\tilde{\text{D} }^{-1} \tilde{\text{A} } & k=1 \\ Ins((\text{P}^{(1)})^{(k-1)}(\text{P}^{(1)T})^{(k-1)}) & k\ge 2,\tag{2}\end{cases}\end{align} \]

\(\text{I} \in R^{|\nu|\times|\nu|}\)是单位矩阵,\(\tilde{\text{A} } = \text{A} + \text{I}\)\(\tilde{\text{D} }\)是一个对角矩阵\(\tilde{\text{D} }_{ii} =  {\textstyle \sum_{j}^{}}  \tilde{\text{A}}_{ij}\)

\(Ins((\text{P}^{(1)})^{(k-1)}(\text{P}^{(1)T})^{(k-1)})=\frac{1}{2} Intersect((\text{P}^{(1)})^{(k-1)}(\text{P}^{(1)T})^{(k-1)},(\text{P}^{(1)T})^{(k-1)}(\text{P}^{(1)})^{(k-1)})\)

Intersect(*)表示两个矩阵的元素相交,\(W^{k}是\text{P}^{(k)}对角权重矩阵\)\(\Pi^{(1)}是\text{P}^{(1)}\)的近似对角化特征向量

\[\text{Z} = \sigma (\Gamma(\text{Z}^{(0)},\text{Z}^{(1)},\dots,\text{Z}^{(k)} ) ) ,\tag{3} \]

\(\sigma\)是激活函数,\(\Gamma\)表示融合操作,可以是求和、归一化和连接,\(\text{Z} \in R^{|\nu| \times  f}\)

4.针对日志事件的基于图的异常检测

论文提出的Logs2Graphs,主要流程有:日志解析、日志分组、图构建、图表示学习和异常检测。

截屏2024-06-28 17.10.06.png

4.1图构建

  1. 预处理:对于每个日志事件,首先删除非字符词和停止词,并将复合词拆分为单独的词;
  2. 单词嵌入:使用Glov,一个预训练的单词嵌入模型,具有200个嵌入维度,为日志事件中的每个单词生成向量表示;
  3. 语句嵌入:为每个日志事件生成一个向量表示。由于句子中的单词通常不具有同等的重要性,使用TF-IDF来衡量单词的重要性。单词嵌入向量的加权和构成日志事件的向量表示语句

通过用日志事件的向量表示作为属性来扩充节点,就获得了一个属性图、有向图和边加权图。

4.2OCDiGCN: One-Class Digraph Inception Convolutional Nets

\[\text{z} = \text{Readout}(Z_i|i\in \{1,2,\dots,|\nu |\})\tag{4} \]

通过使用Readout(·) 函数来聚合节点向量表示以获得图向量表示。Readout(·) 可以是一个简单的置换不变函数,例如最大值、总和或平均值,或更高级的图级池化函数

目标函数:

\[\min_{H}\frac{1}{M} \sum_{m=1}^{M}\left \| \text{DiGCN} (G_m; H) - o \right \|_2^2 + \frac{\lambda }{2}\sum_{l=1}^{L} \left \| \text{H}^{(l)} \right \|^2_F \tag{5} \]

\(\text{H}^{(l)}\)表示第 l 层 DiGCN 的可训练参数,即\((\Theta ^{(0)(l)}, \Theta ^{(1)(l)}, \dots, \Theta ^{(k)(l)})^T\),\(H\)表示\(\{\text{H}^{(1)}, \dots, \text{H}^{(1)}\}\)\(\lambda > 0 表示权重衰减参数\),\(\| \|^2表示欧几里得范数\)\(\| \|_F\)表示弗罗贝尼乌斯范数(Frobenius norm),o是超球面中心。

测试过程中:

\[source(G_m) = \| \text{DiGCN} (G_m; H) - o \|_2 \tag{6} \]

总之,OCDiGCN 由一个 L 层 DiGCN 架构组成,用于学习节点表示,以及一个 Readout(·) 函数来获得图表示。

异常解释

G_m中节点v_j的重要性得分为

\[\frac{|score(G_m) − score(G_m \setminus {Z_j })}{score(G_m)}\tag{7} \]

截屏2024-06-28 20.50.03.png

  • tips

    对于倒数第二层中的每个重要节点(具有高重要性分数),作者扩展了 LRP(分层相关传播)算法以获得输入层中一小组重要节点(这不是本论文的贡献,来自于论文Layerwise Relevance Visualization in Convolutional Text Graph Classifiers)。如果其中一些节点由边连接,则生成的子图可以提供更有意义的解释。由于 LRP 方法直接利用隐藏特征和模型权重生成解释,因此其解释结果被认为是可靠和值得信赖的

5 实验

截屏2024-06-28 21.07.06.png

使用节点标签的one-hot编码和语义向量对比

截屏2024-06-28 21.08.04.png

错误标签的影响

截屏2024-06-28 21.08.48.png

异常解释

截屏2024-06-28 21.12.39.png

参数敏感性分析

截屏2024-06-28 21.13.36.png

运行时间分析

截屏2024-06-28 21.16.31.png

6.存在的问题

  1. 数据集太少,没有在其他数据集上测试
  2. 对比模型太少,仅仅选择8个模型作为对比
  3. 训练数据中存在错误的标签
  4. 图构建。图构建过程中,特别是关于边建立和分配边权重,遵循基于连接连续日志事件的规则。但是,在某些情况下,该规则可能被认为过于简单化。

7.总结

本文提出了Logs2Graphs,这是一种用于无监督日志异常检测的新方法。它首先将日志文件转换为属性图、有向图和边缘加权图,将问题转化为图级异常检测的一个实例。接下来,OCDiGCN 解决了这个问题,这是一种基于图神经网络的新方法,以端到端的方式执行图表示学习和图级异常检测。

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

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

相关文章

Miniconda安装使用说明

Anaconda这安装包体积真是劝退我了https://docs.anaconda.com/miniconda/miniconda是最小的conda安装环境,只有conda+python+pip+zlib和一些其他常用的包,体格不到100Mb,非常迷你。 Miniconda 使用教程 创建和管理环境 Conda 允许用户创建隔离的环境,以避免不同项目之间的依…

m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下:2.算法涉及理论知识概要基于遗传算法(Genetic Algorithm, GA)的高斯白噪声信道(Additive White Gaussian Noise, AWGN)信噪比(Signal-to-Noise Ratio, SNR)估计方法是一种利用生物进化原理进行全局优化的技术,旨在寻找最优解,…

重生之我在男航学Java-3(完结)

一、前言家居强电电路模拟程序-3 考查内容:类的设计(适应迭代以及合理的类间关系的设计),正则表达式的应用(如何正确解析输入),java中集合框架的熟悉与使用并且选择合理的集合框架(存储数据并且方便数据的增删改查) 新增内容:互斥开关,落地窗帘 本次PTA由于自身的原…

嵌入式计算和视觉加速的开放标准

嵌入式计算和视觉加速的开放标准 https://www.khronos.org/assets/uploads/developers/presentations/Khronos_Embedded_Compute_and_Vision_Overview_Jun24.pdf Khronos将软件连接到硅 开放、免版税的互操作性标准,以利用GPU、XR和多处理器硬件的力量3D图形、增强和虚拟现实、…

第三次Blog作业

题目集6-7的总结性Blog 一、前言 题目集总结 第六次题目集 知识点:控制理论、电路设计、设备工作原理 题量:中等 难度:中等偏上控制设备部分涉及对开关、分档调速器、连续调速器三种设备的理解和操作。需要理解开关的两种状态,分档调速器的档位变化以及连续调速器的连续调节…

第三次blog

第三次blog感悟 随着知识越学越多,任务也越来越繁重,难度也是与日俱增,也许是时间花得还不够也不够认真导致最近的一些pta作业都完成得差强人意,我认为java的学习最重要的是写作业的认真、严谨的逻辑以及大把的时间。nchu-software-oop-2024-上-6 本次作业题目大致内容 1、…

第三次PTA作业总结

一.第七和第八次PTA作业总结 1.第七次PTA作业的分析 (1).设计思路: 设计电路设备类(如ControlDevice, AdjustableDevice, ExclusiveSwitch)和受控设备类(Light, Fan, Curtain)来封装设备的属性和行为。 电路类(SequentialCircuit, ParallelCircuit)用于表示电路结构,…

在WPF中使用着色器

概念类比范畴 CPU GPU二进制文件 .exe .cso / .ps二进制指令 机器码 CSO(shader指令)助记符 汇编 SL高级语言 C# HLSL高级语言文件 .cs .hlsl / .fx高级语言编译器 csc.exe fxc.exeAPI .NET API DirectX API运行时环境 CLR DirectX调试工具 Visual Studio Debugger RenderDoc着…

OOP第三次博客作业

目录前言:设计与分析:opp-7-家居强电电路模拟程序-2opp-8-家居强电电路模拟程序-2踩坑心得:opp-5-家居强电电路模拟程序-3踩坑和心得:opp-5-家居强电电路模拟程序-4踩坑和心得:总结: 前言: oop-7相比与oop-6仅增加了两个电子元件,一个互斥开关,一个受控窗帘,除了优化…

《DNK210使用指南 -CanMV版 V1.0》第五章 编译CanMV固件

第五章 编译CanMV固件 1)实验平台:正点原子DNK210开发板 2) 章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-…

第三次PTA总结

前言 本阶段面向对象程序设计进行了两次PTA训练,两次都是关于电路设计的迭代。迭代次数越多难度越大,后期事情较多,作业和考试任务重、题目的难度也较大,所以没有拿到每次作业的满分,但是都根据题目的变化对自己的设计进行了一定的改变和优化。 知识点类的设计; 数组、链…

防火墙部署案例

通过引流方式实现防火墙旁挂部署并且实现安全防护功能案例 一、项目背景 1、客户有购买了一台某公司由于性能问题和服务器直连核心交换机原因,决定采取旁挂方式部署,但是又希望实现安全防护,因此决定通过引流方式(QOS的流量重定向)把需要防护的流量引到防火墙,防火墙做路…

6月29日

# 模板引用 $template=file_get_contents("1.php");之后可以引用page_title变量来替换html内容

Alertmanager抑制、静默、路由、告警分组

1、抑制机制 Alertmanager的抑制机制可以避免当某种问题告警产生之后用户接收到大量由此问题导致的一系列的其它告警通知。例如当集群不可用时,用户可能只希望接收到一条告警,告诉他这时候集群出现了问题,而不是大量的如集群中的应用异常、中间件服务异常的告警通知。 在Ale…

GBJ406-ASEMI无人机专用整流桥GBJ406

GBJ406-ASEMI无人机专用整流桥GBJ406编辑:ll GBJ406-ASEMI无人机专用整流桥GBJ406 型号:GBJ406 品牌:ASEMI 封装:GBJ-4 最大重复峰值反向电压:600V 最大正向平均整流电流(Vdss):4A 功率(Pd):中小功率 芯片个数:4 引脚数量:4 类型:整流扁桥、整流桥 正向浪涌电流:120…

数据分析 | 整合数据

拼接与合并 1. 纵向或横向拼接:pd.concat()# 纵向拼接,在函数中放入列表,里面是想拼接的两个df # 如果列名一致,直接对齐;如果列名不一致,则各列都会保留,空值为NaN pd.concat([df1, df2], ignore_index = True) # >>> 此时索引是各自保留的,所以要忽略索引…

DCT-Net - 一键图片、视频转卡通动漫风格工具,本地一键整合包下载

只需要输入一张人物图像或者一段视频,就可以实现端到端全图卡、视频通化转换,生成二次元虚拟形象,返回卡通化后的结果图像或视频。 开发者叫menyi Fang,来自阿里巴巴通义实验室的的技术女大佬,国内大佬集成到webui,支持CPU和GPU,CPU处理速度也很快,需要的可以自行下载测…

ProPainter – AI视频去水印工具,可以去除视频中的静态水印、动态物体/人物等 本地一键整合包下载

ProPainter是一个基于E2FGVI实现的AI视频编辑工具,它可以一键移除视频内的移动物体和水印。这个开源项目提供了一个简单而强大的解决方案,帮助用户轻松编辑和改善视频内容。项目地址:https://github.com/sczhou/ProPainter 一键整合包下载:https://deepface.cc/thread-254-…