基于生成对抗网络的大规模软件系统的异常检测方法

文档序号:33128175发布日期:2023-02-01 06:25阅读:31来源:国知局
基于生成对抗网络的大规模软件系统的异常检测方法

1.本发明涉及信息识别检测技术领域,具体为基于生成对抗网络的大规模软件系统的异常检测方法。


背景技术:

2.近年来,随着人工智能领域的高速发展以及软件系统规模、复杂性的进一步提高,智能运维(aiops)方面的研究也越来越受到国内外学者的广泛关注。其中系统异常日志检测无疑是目前最贴近企业实际需求的方向,因为系统日志中涵盖着各类有价值的信息(比如告警等)。但是其数量和复杂性的日益增长已经逐渐无法通过人工去进行检测和排查。所以采用机器学习的方法训练出异常日志的检测模型已成必然趋势。
3.但是采用机器学习方法存在以下问题:一段时间内包含大量的日志,如果存在异常,那么这段时间的所有日志都需要被检测,但是异常日志却无法及时定位;因此管理员需要诊断一段时间内的工作日志,这是一个艰难的任务,且在一段时间内的所有日志生成后,异常才会告警;换句话说,当异常日志到达时,无法有效地检测和响应异常;第三,一般来说,系统日志都具有时序行,由于系统延迟等未知原因,使得日志顺序混乱。
4.为此,提出基于生成对抗网络的大规模软件系统的异常检测方法,该方法利用了深度学习的相关理论。


技术实现要素:

5.本发明的目的在于提供基于生成对抗网络的大规模软件系统的异常检测方法,以解决上述背景技术中提出的管理员需要诊断一段时间内的工作日志,并一段时间内的所有日志生成后,异常才会告警的问题。
6.为实现上述目的,本发明提供如下技术方案:基于生成对抗网络的大规模软件系统的异常检测方法,包括以下步骤;
7.步骤一:提取日志模板;
8.步骤二:构建日志模板的词向量库;
9.步骤三:构建基于gan的异常检测模型;
10.步骤四:将训练好的模型对大规模软件系统进行异常检测。
11.优选的,步骤一中采用聚类算法的方法提取日志模板。
12.优选的,步骤二中采用bert模型的方法求解词向量,bert模型由输入层、编码层和输出层构成,编码层由多个transformer组成,具体包括:通过bert模型提取源系统日志和目标系统日志中特征词之间的依赖关系,具体提取算法如公式(1)所示:
[0013][0014]
其中,q、k和v分别表示query向量、key向量和value向量,对应编码器的输入字向量矩阵,dk为输入向量的维度。
[0015]
优选的,步骤三中gan系统包括生成器和鉴别器,生成器试图捕获真实训练数据集的分布,由正常和异常日志组成的假训练集并合成可信的样例,鉴别器则旨在通过判断模型区分使用真实和合成数据构建的数据集中的假实例,同时在生成器中添加键值对注意力机制。
[0016]
优选的,步骤三中构建基于gan的异常检测模型,具体包括以下步骤:
[0017]
步骤3.1:在噪声数据分布中随机采样,输入生成模型,得到一组假数据,记为d(z);
[0018]
步骤3.2:在真实数据分布中随机采样,作为真实数据,记作x;
[0019]
步骤3.3:将步骤4.1中产生的假数据和步骤4.2中产生的真实数据输入至鉴别器中,通过鉴别器中的判别模型对的输入为真实数据和假数据进行鉴别,鉴别后判别网络的输出值为该输入属于真实数据的概率;
[0020]
步骤3.4:根据得到的概率值计算损失函数;
[0021]
步骤3.5:根据判别模型和生成模型的损失函数,可以利用反向传播算法,更新模型的参数,所述反向传播算法为先更新判别模型的参数,然后通过再采样得到的噪声数据更新生成器的参数,通过循环k次更新判别器之后,使用较小的学习率来更新一次生成器的参数。
[0022]
优选的,所述生成器(g)和判别器(d)均使用lstm网络。
[0023]
优选的,所述键值对注意力机制是指只选择输入序列某一个位置上的信息,用(k,v)=[(k1,v1),

,(kn,vn)]来表示n组输入信息,其注意力函数用公式(2)表示:
[0024][0025]
与现有技术相比,本发明的有益效果是:
[0026]
1、本发明通过聚类算法是为了方便提取日志模板的,该算法不需要人工贴标签,进而提高该系统的工作效率,节省人力,在异常日志未生成之前就可以发出告警并,可以有效地检测和响应异常。
[0027]
2、本发明通过采用gan系统来缓解正常和异常实例之间的不平衡问题,而不是使用基于案例的模式,可以有效提取文本中的潜在信息,同时创新的置换事件组合模型也符合大规模软件系统日志信息的独特性,及时地对日志中的异常进行处理,通过添加注意力机制,识别一些关键词义,进一步提高识别的准确。
附图说明
[0028]
图1为本发明的检测模型的构图;
[0029]
图2为本发明聚类算法构建图;
[0030]
图3为本发明bert模型架构图;
[0031]
图4为本发明的置换事件组合模型示意图。
具体实施方式
[0032]
本发明对不同类型的日志进行相似性分析,并基于生成式对抗网络的方法进行异常检测,研究方法如下。
[0033]
一般说来,日志都是由常量部分和变量部分组成,日志模板的提取实际上就是提
取常量部分,同一类的日志,其常量部分是一致的,只是变量部分不同,而不同种类的日志(例如不同的日志集群),其常量部分和变量部分都是不一样的。
[0034]
本发明包括日志模板提取、词向量库建立、算法模型构建和置换事件组合模型几个部分;整体的研究路线图1如图4所示;
[0035]
(1)日志模板的提取
[0036]
一般说来,日志都是由常量部分和变量部分组成,日志模板的提取实际上就是提取常量部分,同一类的日志,其常量部分是一致的,只是变量部分不同,而不同种类的日志(例如不同的日志集群),其常量部分和变量部分都是不一样的,所以我们可以采用聚类的方法进行日志模板的提取,聚类算法主要以样本数据之间和不同簇之间的距离为基本度量准则,并设定阈值为终止条件,让各个簇之间的距离都不小于阈值,最终构造树形的聚类结构;
[0037]
聚类算法是一种将原始数据集分类的算法,原始数据不需要带标签,所以聚类算法是一种无监督的机器学习算法,聚类算法通过衡量数据间的相似度来进行分类;相同组的数据之间有很高的相似度,不同组的数据之间相似度很低,聚类算法的目的是聚集相似的数据;
[0038]
(2)建立日志模板的词向量库
[0039]
bert是一种预训练语义表征模型,该模型源自transformer模型。整个模型由输入层、编码层和输出层构成,其中输入层是{e1,e2,...,en}向量,编码层由多个transformer组成,最终输出向量为{t1,t2,...,tn}。在自然语言处理任务中,为了更好地理解文档中的句子和特征词,更好地将他们转换成词向量,提升模型的泛化能力,因此利用bert模型来完成语言表征,该方法优于传统的word embedding等;
[0040]
bert模型的输入表示包括token、segment、position三个嵌入层的叠加,分别对应单词、句子和位置信息,最终实现句子级别的表征任务,其中,输入向量ei由三种不同向量对应元素叠加而成,每个句子第一个向量标志是[cls],结束标志位[sep];
[0041]
此外,在bert模型中,transformer编码器是由自注意力机制和前馈神经网络组成,能更好地解决自然语言处理任务中的长依赖问题。其方法是将输入句子中的每一个特征词都和句中的所有词做attention计算,从而提取特征词之间的依赖关系,整个计算过程用公式(1)表示:
[0042][0043]
其中,q、k和v分别表示query向量、key向量和value向量,对应编码器的输入字向量矩阵,dk为输入向量的维度。最终,通过bert模型实现日志词向量的构建。
[0044]
(3)构建并训练目标系统的异常日志检测模型
[0045]
循环神经网络(rnn)模型的含义是当前状态的输出依赖于当前状态的输入和以前状态的输出,这满足我们在日志语义识别方面的要求,所以rnn神经网络模型经常使用在自然语言处理(nlp)方面。但是传统rnn网络存在一个问题,即长期依赖性问题(即当前状态可能会受到很久以前状态的影响),而lstm网络则能解决该问题。所以我们的生成器(g)和判别器(d)均使用lstm网络。单个日志模板的词向量v={v1,v2

vt

vn},其中n指的是一个日志模板当中单词的个数。将v作为lstm网络模型的输入,将双曲正切函数tanh作为激活函
数。注意对t单词来说,需要考虑到之前历史信息的影响,所以其真正的输入应该是z,计算公式如(3)式。同时考虑到遗忘门ft(对历史信息的过滤,计算公式如(4)式)和输入门it(对输入信息的过滤,计算公式如(5)式)计算出流入t+1单词的历史信息ct,计算公式如(6)式。考虑到输出门ot(对输出信息的过滤,计算公式如(7式)),最终单个lstm神经元的输出即为ht,计算公如(8)式。
[0046]
z=tanh(w[xt,ht-1])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0047]
ft=sigmoid(wf[ht-1,xt]+bf)
ꢀꢀ
(4)
[0048]
it=sigmoid(wi[ht-1,xt]+bi)
ꢀꢀ
(5)
[0049]
ct=ft*ct-1+it*z
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0050]
ot=sigmoid(wo[ht-1,xt]+bo)
ꢀꢀ
(7)
[0051]
ht=ot*tanh(ct)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0052]
其中,w、wf、wi、wo是权重矩阵,bf、bi、bo是偏置矩阵,其数值由神经网络在后向传播时自动更新;当损失函数达到我们预定的值时,权重矩阵和偏置矩阵几乎稳定。
[0053]
gan系统由两个主要由生成器和鉴别器组成,生成器试图捕获真实训练数据集的分布,并合成可信的样例(由正常和异常日志组成的假训练集),而鉴别器则旨在区分使用真实和合成数据构建的数据集中的假实例;
[0054]
最后,应用经过充分训练的生成器,根据最新事件检测即将到来的日志是否正常。根据异常检测的设置,gan利用基于特征的训练模式来缓解正常和异常实例之间的不平衡问题,而不是使用基于案例的训练模式。
[0055]
gan的训练分为以下几步:
[0056]
1、在噪声数据分布中随机采样,输入生成模型,得到一组假数据,记为d(z);
[0057]
2、在真实数据分布中随机采样,作为真实数据,记作x;
[0058]
3、将前两步中某一步产生的数据作为鉴别器的输入(因此判别模型的输入为两类数据,真/假),判别网络的输出值为该输入属于真实数据的概率,real为1,fake为0;
[0059]
4、然后根据得到的概率值计算损失函数;
[0060]
5、根据判别模型和生成模型的损失函数,可以利用反向传播算法,更新模型的参数,(先更新判别模型的参数,然后通过再采样得到的噪声数据更新生成器的参数)循环k次更新判别器之后,使用较小的学习率来更新一次生成器的参数。
[0061]
此时gan系统中的鉴别器和生成器的lstm的神经网络就训练完毕了,通过训练好的gan系统直接导入到源系统中,在通过lstm神经网络之后,我们将添加键值对注意力机制,键值对注意力机制(hard attention)是指只选择输入序列某一个位置上的信息,我们的日志中的重要信息(比如failure、corruption)往往会在日志的第一个词或者第二个词出现,用(k,v)=[(k1,v1),

,(kn,vn)]来表示n组输入信息,其注意力函数为:
[0062][0063]
从而实现了源系统自动学习和检测异常日志的能力,提高了源系统了安全性能,避免了工作人员对总日志的异常日志进行排查,从而减小了工作人员的工作负担。
[0064]
(4)置换事件组合
[0065]
置换事件组合模型如图4所示,首先需要找到最频繁特征的后续事件(即在训练集中出现1+40次的第二个模式),该模式将被视为置换模式的基线事件;其次对于剩余的组合
事件(即左图中第一和第三组合),其排列模式的后续事件也应该包括最频繁的基线事件。例如(203,186,213)和(203,213,186)的不同是3,(203,186,216)和(186,203,213)的不同是349。最后我们将已经出现的组合模式进行全排列并进行拼接,得到置换后的事件组合。在本文中,我们假设给定日志序列的排序组合仍然不会导致新异常序列的出现。由于当前大多数大规模系统中正常样本和异常样本之间的不平衡,这种假设在大多数情况下都是令人信服的;
[0066]
源系统的日志数据采集自公开数据集bgl,该数据集是bluegen/l超级计算机系统251天内的日志信息,共包含4747963条记录;训练好的异常检测模型将会使用移动公司卡拉夫框架下的运维日志,预计将采集半年的异常日志信息进行检测;数据集的来源客观有效,可以真实的反应监测模型的监测效果,并在检测过程中,发现并告警异常日志也符合实际情况。
[0067]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1