一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于注意力机制的大规模系统日志异常检测方法与流程

2022-02-20 05:54:15 来源:中国专利 TAG:


1.本发明属于智能运维领域,更具体地说,涉及一种基于注意力机制的大规模系统日志异常检测方法。


背景技术:

2.现如今,大规模系统被应用于各行各业中,所能提供的服务也变得多样化,服务的质量极大影响了用户的使用体验。然而,由于计算机软硬件的不稳定,系统在运行过程中会产生各种各样的错误,导致系统宕机。另一方面,现有的网络环境极其复杂,各种新式的针对计算机系统的攻击事件层出不穷,在遭受到外部的攻击时,网络安全员无法采取有效的预防措施,导致系统崩溃。这两种情况都会对服务提供商造成不可估量的损失。越来越多的机构和研究致力于通过计算机系统中现有信息检测系统是否处于异常情况,可以提前采取有效的措施进行规避风险。因此,针对异常检测的研究是十分有必要的。
3.大规模系统中每天都会产生大量的日志文件,记录系统运行过程中的一些重要事件,追踪和监控计算机的运行状态。通过日志的输出状态来检测系统是否处于异常状态是一种可行的解决方案。然而大型的系统及其底层的机器通常由许多管理员进行监控,但是相较于每日数百万记的日志数量,仅仅通过人力筛选出异常日志是不可行的。现阶段,一些基于机器学习的方法针对某个日志序列所表现出的特征判断该序列是否异常,从而判断系统是否处于异常状态,但是这种粗颗粒度的会话级别检测方法并不能反映出某个具体的日志是否异常,进而无法更加准确的定位系统异常的原因。
4.异常检测技术广泛应用于一些实际场景中,比如金融欺诈、灾后情况分析、社交媒体事件监测。现阶段存在多种基于机器学习方法进行异常检测的研究,并根据学习类别的不同,主要分为监督学习任务,半监督学习任务,无监督学习任务。监督学习任务中,样本的标签是可用的且在特定的空间中正负样本是可分的。论文《基于决策树的异常检测方法》提出了一种基于决策树的检测方法,利用服务器请求序列检测大规模网络站点的故障,决策树可以同时处理样本的离散属性和连续属性,因此该方法被广泛使用。论文《ibm系统中日志事件异常检测》使用多分类器(比如支持向量机算法)来检测大规模集群中的日志异常。此外,监督学习模型可以快速实现在线检测的目的,但是这种方法非常依赖数据集标签的质量,因此使用场景大大受限。半监督学习算法使用的前提是在特定空间中正样本之间的距离非常紧密,异常样本是远离正常样本群体的。其中最为代表性的是最近邻算法,该算法可以根据评价指标的不同分为使用距离度量的最近邻算法和使用密度度量的最近邻算法。论文《高维数据中寻找离群子空间》提出了一种高维离群子空间检测方法,该方法利用最近邻算法在高维空间中寻找能表示离群样本的最优特征子空间,以此将异常样本划分出去。除此之外,论文《深度日志:基于深度学习的系统日志异常检测方法》提出了基于长短期记忆网络的异常检测框架deeplog,该框架利用日志键值和参数帮助管理员诊断工作流中的系统错误。然而,在真实的场景中,异常样本往往是比较稀疏且没有标签标记的,因此,无监督学习方法更加适应于这种场景。论文《隔离树》使用了隔离异常样本的概念,并提出了一
种隔离森林模型,通过随机选择属性构建森林以达到区分正常样本和异常样本的目的。无监督学习方法虽然并不依赖数据标签,但是却需要较深的专家知识才能解决实际场景中的问题。
5.上述现有方法仅仅只能解决粗颗粒度的日志异常检测任务,即模型只能检测一段日志序列是否存在异常,无法检测出序列中某个日志是否存在异常。


技术实现要素:

6.针对现有模型只能检测一段日志序列是否存在异常,无法检测出序列中某个日志是否存在异常的问题,本发明提供一种基于注意力机制的大规模系统日志异常检测方法,采用了生成对抗网络模型结构,该模型由生成器和判别器两个部分组成,通过两者之间的不断交替更新的机制,得到生成拟合真实后续正常事件的模型,进而对比真实后续日志与生成后续正常日志类型是否相同判断系统是否异常。
7.为解决上述问题,本发明采用如下的技术方案。
8.一种基于注意力机制的大规模系统日志异常检测方法,包括如下步骤:
9.步骤s1、数据处理阶段:提取计算机系统产生的日志信息,并对日志信息进行数据预处理,构造日志上下文组合集c;
10.步骤s2、对抗训练阶段:将步骤s1构造的日志上下文组合集c输入神经网络模型中,对神经网络模型进行训练;
11.步骤s3、检测阶段:获取待预测的日志信息,并对待预测的日志信息进行数据预处理,构造待预测的日志事件序列,将待预测的日志事件序列输入到步骤s2中训练好的神经网络模型中生成后续子序列事件,将后续子序列事件与真实事件进行对比,若后续子序列事件与真实事件相同,则系统处于正常状态,反之,系统出去异常状态。
12.进一步的技术方案,步骤一中,对日志信息进行数据预处理的具体步骤为:
13.s101、收集样本数据s={e
(1)
,e
(2)

……
,e
(l)
},其中,e
(l)
表示每个日志,l表示日志的数量;
14.s102、使用大小为n的滑动窗口在初始序列数据s进行步长为1的滑动处理以采集数据,得到上下文组合集c={c1,c2,
……
,ci},i表示上下文组合的数量,ci表示长度为n的日志序列集合{e(i),e
(i 1)

……
,e
(i n)
}。
15.进一步的技术方案,在步骤s2中,神经网络模型包括生成器模型和判别器模型,对生成器模型和判别器模型采用交替更新的训练机制进行训练,具体训练方法为:
16.步骤s201、将步骤s1中构造的日志上下文组合集c输入至生成器中生成后续子序列事件;
17.步骤s202、将后续子序列事件和真实事件分别输入判别器模型中,由判别器模型判别后续子序列事件是否为真实事件;
18.步骤s203、在判别器模型进行判别过程中,判别器模型中的损失函数ld不断更新判别器模型的参数,直到判别器模型能够判断后续子序列事件是否为真实事件时,判别器模型训练结束,进行生成器模型的训练;
19.步骤s204、生成器模型生成的后续子序列事件由训练好的判别器模型进行判别,判别器模型将判别结果输入至生成器模型中;
20.步骤s205、生成器模型的损失函数lg结合判别器模型的判别结果以及生成器模型生成的后续子序列事件与真实事件之间的差别产生模型误差,生成器模型根据模型误差调整自身网络参数,使生成器模型不断生成更加真实的后续子序列事件;
21.步骤s206、将生成器模型生成的后续子序列事件与真实事件分别输入至判别器模型中进行判别,当判别器模型无法辨别输入的子序列事件为生成器模型生成的后续子序列事件还是真实事件时,生成器模型训练结束,返回步骤s201继续训练判别器模型;
22.步骤s207、当达到设置的循环训练次数时,生成器模型和判别器模型达到平衡,得到成熟的生成器模型,训练结束。
23.进一步的技术方案,在步骤s203中,判别器模型的损失函数ld=min
φ-(logd(e|c) log(1-d(e|c))),其中,φ表示判别器模型的参数,d表示判别器模型,e为真实事件的向量表示,c为生成器模型输入的日志上下文组合集的向量表示。
24.进一步的技术方案,在步骤s205中,生成器模型的损失函数进一步的技术方案,在步骤s205中,生成器模型的损失函数其中,θ表示生成器模型的参数,为生成器模型生成的后续子序列事件的向量表示。
25.进一步的技术方案,生成器模型由三层神经网络构成,依次为:长短期记忆神经网络层、注意力神经网络层和全连接网络层。
26.进一步的技术方案,判别器模型由两层神经网络构成,依次为:长短期记忆神经网络层和全连接网络层。
27.相比于现有技术,本发明的技术方案的有益效果为:
28.本发明的一种基于注意力机制的日志异常检测方法,采用了生成对抗网络模型结构,该模型由生成器和判别器两个部分组成,结合长短期记忆网络和注意力机制的生成器用于学习数据样本的分布,生成日志序列的后续正常日志事件,判别器判断生成器学习到的数据分布是否符合真实日志序列数据的样本分布;通过两者之间的不断交替更新的机制,得到生成拟合真实后续正常事件的模型,进而对比真实后续日志与生成后续正常日志类型是否相同判断系统是否异常。
附图说明
29.图1为本发明的整体流程图。
具体实施方式
30.下面结合具体实施例和附图对本发明进一步进行描述。
31.实施例
32.本实施例提供了一种基于注意力机制的日志异常检测方法,如图1所示,基于注意力机制的日志异常检测方法主要包含三个部分:日志解析、对抗训练、异常检测。
33.日志解析:
34.日志解析模块主要负责将原始无结构的日志文件转化为结构化的日志信息描述,作为生成对抗网络的输入数据。日志文件的信息主要由三个部分组成:时间戳、签名、参数。由于参数是一种动态的信息,与日志输出当前时刻系统的状态有关,无法为解析日志事件提供有效的帮助,因此,在进行日志解析工作时并不会提取出参数信息。所以本工作主要面
向剩下两个主要内容:时间戳和签名。时间戳记录了日志发生的时刻可以用来对日志序列中顺序排列提供依据。签名是同种类日志在输出过程中不变的信息,属于日志解析的重要判断依据。原始的日志文件是非常混乱的,所以通过构建正则表达式的方式对日志进行匹配,将信息进行格式化的整理。随后将签名信息类似的日志归为同种日志事件,统计出所有日志的种类数量,使用m维向量e表示,表示m种日志事件。
35.假设初始窗口大小为n,窗口范围内n个日志作为序列数据,第n 1个日志作为后续日志。窗口在序列上进行步长为1的滑动,每次滑动都将生成一个训练数据。采用滑动窗口构建日志序列数据的思路保证了训练数据的数量,使得模型在进行训练的过程中,学习到的知识较为全面。日志的顺序特征包含着丰富的信息,但大规模系统在运行时一般都处于高并发的状态,每秒可以产生百万级别数量的日志数据。这些日志在传输的过程会由于网络延迟等问题,导致日志顺序错乱,与真实的顺序不符。本方法引入了乱序事件建模的方法将日志序列进行重新排序,该方法在解决乱序问题的同时,增加了数据的规模。此外,异常检测数据中普遍存在着样本不均衡的现象,正常样本的数量远远超过异常样本的数量,模型在学习的过程中更加偏向于正常样本的分布,对与异常样本分布的学习并不充分,导致模型在训练过程中容易引发过拟合问题。采用负样本采样的方法增加负样本的数量,有效的平衡训练集中正负样本的数量。
36.日志序列集合需要嵌入到向量空间中,这里使用了word2vec模型将日志序列集合投影到n*s维的向量空间中,获得该日志事件的特定n维向量表示,将序列中的每个日志事件的向量表示拼接成h*n维的日志序列向量表示。
37.对抗训练:
38.日志异常检测模型主要基于生成对抗网络进行构建,该网络主要包含两种模型,生成器模型和判别器模型。生成器模型主要负责根据输入的日志序列生成后续正常子序列日志事件,判别器模型负责判别输入的正常日志序列事件是真实存在的后续子序列日志事件还是生成器生成的后续正常子序列日志事件,两者之间不断的博弈优化各自的能力。生成器模型总共由三层网络构成,依次为:长短期记忆神经网络层、注意力神经网络层、全连接网络层。判别器模型与之类似,防止网络过于复杂,收敛困难,去掉了注意力神经网络层,依次为:长短期记忆神经网络层和全连接网络层。
39.给样本数据s={e
(1)
,e
(2)
,
……
,e
(l)
},e
(l)
表示每个日志,l表示日志的数量,以及上文日志解析阶段得到的日志事件编码向量e={e1,e2,
……
,em},em表示日志事件,使用大小为n的滑动窗口在初始序列数据s进行步长为1的滑动处理以采集数据,得到上下文组合集c={c1,c2,
……
,ci},ci表示长度为n的日志序列集合{e(i),e
(i 1)
,
……
,e
(i n)
},i表示上下文组合的数量,并在这个过程中对组合集c中的日志序列添加标签,若该日志序列后一个日志为异常日志,则该数据标签为1,反之则为0。
40.训练过程中,为了使日志序列的特征提取更加精细,引入了注意力神经网络,日志解析阶段得到的h*n维的日志序列向量输入到注意力神经网络中,首先需要计算序列中的每个日志事件对其余日志事件的重要性,在这个计算权重的过程中,将每个日志事件进行进一步的遍码,并使用激活函数tanh增加模型的非线性,得到进一步提取特征并改变维度的日志事件向量,下面是注意力神经网络的公式:
41.outi=tanh(w
whi
ba)
42.其中ww,ba分别表示权重和偏置项,hi为每个日志向量表示,hi被编码成键值向量outi,随后对事件之间进行两两矩阵乘积运算,获得事件之间的权重,并采用均值归一化的方法对权重值进行归一化:
[0043][0044]
其中,随机向量uw表示整个序列的特征,αi表示计算序列中每个日志对日志上下文序列的重要性。随后,使用权重求和的方法获得每个事件融合该序列中其他事件特征的向量表示:
[0045][0046]
其中,s表示日志上下文序列的向量表示。最后,将每个日志事件向量拼接得到整个日志序列的特征表示。注意力神经网络在处理序列化数据时没有过于依赖序列的顺序信息,减弱了上文提到的因为网络延迟带来的顺序错乱的影响。
[0047]
将日志上下文序列向量表示s输入到全连接网络层中,序列向量经过全连接层投影到m维的概率向量空间,表示后续事件可能所属的类型,选择概率靠前p个事件类型组成m维的0-1向量,1表示后续事件可能为该事件,0则反之,该过程由以下公式表示:
[0048]
e=sigmoid(relu(wfs bf))
[0049]
其中,wf,bf分别为全连接网络层的权重和偏置项,最终输出的e为一个m维向量,每一维表示是正常后续日志的概率,通过设置阈值的方式,筛选出最有可能的正常后续日志。
[0050]
判别器由长短期记忆神经网络网络层和全连接网络层构成,生成器生成的m维概率分布向量e和真实子序列事件向量r分别输入进判别器网络中,使用监督学习的方案训练判别器。其中,e向量总共有m维,表示事件总共有m种,每一维上面的数字是一个概率值,表示后续子序列事件可能是这种的概率。最终输出该向量是否为真实子序列事件的概率结果,该过程的公式为:
[0051]
p=sigmoid(,e,r]wd bd)
[0052]
其中,wd,bd分别表示判别器的权重和偏置项。这种训练方案的最终目的为了增加生成器生成后续事件序列的真实性。
[0053]
生成器与判别器之间通过博弈的机制以及交替更新的训练机制优化各自的网络参数。整个模型的初始训练阶段,首先训练判别器模型,将生成器生成的后续子序列事件以及真实子序列事件标签化处理,分别输入到判别器模型中,并通过判别器模型的损失函数ld不断的更新模型参数,直到达到具备良好的判断后续子序列事件是否是真实子序列事件的能力时停止训练,以下是判别器的损失函数的公式。
[0054][0055]
其中,φ表示判别器模型的参数,d表示判别器模型,e为真实事件的向量表示,c为生成器模型输入的日志上下文集的向量表示。
[0056]
随后训练生成器模型,生成器不断的生成后续子序列事件,同时将生成的后续子序列事件输入到判别器模型中,经由判别器模型判断该后续子序列事件是否是真实后续子
序列事件。损失函数lg综合判别器模型判断的结果以及生成器结果与正确结果之间的差别产生模型的误差,生成器模型根据误差调整自身网络参数,使其不断生成更加拟合真实后续子序列日志事件分布的数据,判别器无法辨别该生成数据是否是生成器生成的数据,以下是生成器的损失函数(其中θ表示生成器模型的参数)。
[0057][0058]
其中,θ表示生成器模型的参数,为生成器模型生成的后续子序列事件的向量表示,c为生成器模型输入的日志上下文集的向量表示,e为真实事件的向量表示。
[0059]
假设使用
é
表示生成器的输出。训练过程中,o为m维0-1向量,表示m个日志事件在后续日志中出现过的位置设置为1,没有出现为0,使用筛选掉后续子序列事件中没有发生过事件的概率,仅使用发生过事件概率更新生成器网络,这样可以有效的避免后续子序列中未发生事件对网络更新产生误导。生成器训练终止到判别器无法分辨出输入的子序列事件是否是真实的后续子序列事件还是生成器生成的后续子序列事件。
[0060]
之后,判别器利用训练好的生成器再次更新自己模型参数,增强自己辨别输入数据的能力。两者不断博弈竞争,达到循环训练次数后,判别器和生成器最终达到平衡,得到成熟的生成器模型。
[0061]
异常检测
[0062]
判别器模型的目的是在模型训练过程中帮助生成器不断优化网络参数,模型整体训练结束之后,判别器便失去了作用。
[0063]
日志异常检测阶段,首先对待预测的日志信息进行解析处理,构造待预测的日志上下文组合集。生成器通过输入日志序列生成m维后续日志向量,表示每种日志可能是正常日志概率。预先设置确定的阈值,概率超过该阈值的即为正常日志。随后对比真实日志事件是否和生成器生成的正常日志事件相同,若相同,则该日志为正常日志,反之,则为异常日志。
[0064]
本发明所述实例仅仅是对本发明的优选实施方式进行描述,并非对本发明构思和范围进行限定,在不脱离本发明设计思想的前提下,本领域工程技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献