CN114138973A - 一种基于对比对抗训练的日志序列异常检测方法 - Google Patents
一种基于对比对抗训练的日志序列异常检测方法 Download PDFInfo
- Publication number
- CN114138973A CN114138973A CN202111468162.4A CN202111468162A CN114138973A CN 114138973 A CN114138973 A CN 114138973A CN 202111468162 A CN202111468162 A CN 202111468162A CN 114138973 A CN114138973 A CN 114138973A
- Authority
- CN
- China
- Prior art keywords
- log
- log sequence
- training
- sequence
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/2433—Single-class perspective, e.g. one-against-all classification; Novelty detection; Outlier detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Health & Medical Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于对比对抗训练的日志序列异常检测方法,包括训练和检测两个阶段。训练阶段包括对日志数据进行解析;获取日志序列并提取出一个负样本日志序列集合;判断检测模型的损失是否趋于稳定,如果趋于稳定,则使用FGM进行对抗训练扰动BERT的嵌入层;将正、负样本日志序列输入到模型中,生成被扰动的语义向量后取消对嵌入层的扰动,再次生成未被扰动的语义向量;使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练;判断训练集中是否已经没有日志序列,如果判断没有需要训练的日志序列则停止训练。检测阶段包括将待检测的日志序列输入到训练后的日志序列异常检测模型,查看模型的输出,根据输出结果判断日志序列是否异常。
Description
技术领域
本发明涉及日志序列异常检测领域,具体而言,尤其涉及一种基于对比对抗训练的日志序列异常检测方法。
背景技术
日志是非结构化的,其中包含多种形式的文本。这种非结构化的日志不便于直接使用,需要进行解析以获取结构化的日志模板。现有的日志序列异常检测方法通常采用自然语言处理中的模型对从日志中提取的日志模板进行语义向量上的转换,以此实现从单词到句子再到序列层面的语义特征的分析与提取。目前主流的日志序列异常检测方法可分为基于机器学习的方法和基于深度学习的方法。
基于机器学习的日志序列异常检测方法通常采用支持向量机(Support VectorMachines,SVM)、不变挖掘(Invariant Mining,IM)以及主要成分分析(PrincipalComponent Analysis,PCA)等方法对日志序列进行异常检测。这类方法虽然相比人工检测提高了效率,但是无法充分提取日志文本中所包含的信息,也不能对提取出的信息进行充分的分析与利用,而且无法应对日志消息模板的更新而导致缺乏健壮性,因此影响了异常检测的准确率。例如,有学者使用SVM算法对日志序列进行异常检测,该方法根据日志序列或指定大小的滑动窗口内日志的危险等级类型构建向量,使用SVM对向量和标签进行有监督训练,异常检测时如果被检测的日志序列位于超平面上方则被视为异常。但是该方法无法应对日志消息模板的更新,因此缺乏健壮性,而且该方法没有利用日志消息中所包含的结构化文本消息,影响了异常检测的准确率。还有学者使用IM算法对日志序列进行异常检测,该方法使用日志解析器将非结构化日志转换为结构化日志,然后,根据日志参数之间的关系,将结构化日志消息进一步分组为日志消息组,挖掘出的不变量可以揭示日志消息所包含的固有线性特征。有了这些学习到的不变量,即可对新产生的日志进行判断,判断结果中包含这些不变量的即为正常日志,否则将被视为异常,但是该方法由于没有考虑到日志模板更新会使得不变量发生相应的更新,导致检测结果出错,因此同样缺乏健壮性,而且无法充分提取日志消息所包含的信息,影响了异常检测的准确率。另一批学者使用PCA算法对日志序列进行异常检测,该方法通过选择合适的变量并对相关消息进行分组,从提取的信息中构造状态比向量和消息计数向量,然后使用PCA这种无监督方法对特征向量进行挖掘,将每个特征向量标记为正常或异常,但是这种方法无法应对日志模板的更新,因此缺乏健壮性,并且该方法只关注文本本身,缺少对文本语义的分析与利用,影响了异常检测的准确率。
基于深度学习的日志序列异常检测方法是当前主流的日志序列异常检测的方法。该类方法通常采用长短期记忆网络(Long Short Term Memory,LSTM)、卷积神经网络(Convolutional Neural Network,CNN)以及融合了注意力机制的双向LSTM等方法对日志序列进行异常检测。但是,该类方法大多缺乏对于由日志更新而产生的健壮性问题进行专门的训练,而且也没有应用自然语言处理方法从单词到句子再到序列层面进行语义特征的提取,因此一定程度上影响了日志序列异常检测的准确率。虽然有学者使用了带有自然语言处理的深度学习方法对日志序列进行异常检测,但是也缺乏对生成的语义向量进行更深入的研究,即没有对语义向量在其空间上进行进一步的规范,导致后续对正负样本的语义向量进行特征提取的区分度下降,影响了异常检测的准确率。例如,有学者提出了DeepLog方法,该方法使用LSTM对日志序列的正常模式进行学习,利用训练好的模型来发现那些偏离正常轨迹的日志序列,进而达到异常检测的目的,但是该方法不能及时应对日志模板更新,因此同样缺乏健壮性,并且缺少对日志句子级语义向量的分析,降低了异常检测的准确率。还有学者提出了使用卷积神经网络(Convolutional Neural Networks,CNN)的日志序列异常检测方法,该方法使用的基于CNN的异常检测模型能够自动学习系统日志中的事件关系,进而达到异常检测目的,但是该方法使用logkey2vec进行日志模板级别的向量转换,无法应对日志模板的更新,因此缺乏健壮性,而且忽略了单词层面的语义信息,影响了检测结果的准确性。另一批学者提出了LogRobust方法,该方法使用带有注意力机制的双向LSTM来对日志序列进行异常检测,该方法使用了自然语言处理技术,将日志模板转换成了语义向量,能够保证适当的日志模板更新不会使得生成的语义向量发生很大的变化,一定程度上增加了异常检测的健壮性,但是该方法并未对异常检测的健壮性进行专门的训练,也没有对生成语义向量在语义空间上进行进一步的规范,因此需要进一步提升异常检测的健壮性和准确率。
BERT这种大型的预训练语言模型在处理自然语言任务时效果良好,成为学者语义向量转换的首选。但是,目前使用BERT模型进行语义向量转换的日志序列异常检测方法还存在以下缺点:
(1)缺乏健壮性。对于由日志消息模板更新而导致的健壮性问题考虑不足,缺少对日志序列异常检测健壮性方面的专门训练;
(2)检测准确率低。没有对正常与异常日志序列生成的语义向量空间进行深入的研究与关注,即没有利用正常与异常日志序列之间的语义向量在语义空间中的距离关系来提高异常检测的准确率。
发明内容
鉴于现有技术存在的不足,本发明提供一种基于对比对抗训练的日志序列异常检测方法,使用FGM(Fast Gradient Method)对抗训练方法对BERT(Bidirectional EncoderRepresentation from Transformers)模型的嵌入层进行扰动,使模型生成受到扰动后的语义向量,再使用对比学习来拉近正常日志序列在BERT模型的嵌入层未被扰动和扰动后两种情况下产生的语义向量之间的相似度,使得模型在原正常日志序列有一些轻微变动的情况下,依然可以获得正确的异常检测结果。
本发明采用的技术手段如下:
本发明提供了一种基于对比对抗训练的日志序列异常检测方法,包括训练阶段和检测阶段;
所述训练阶段包括:
S1、获取日志数据集,并对日志数据集中的日志数据进行解析获取结构化的日志模板;
S2、按会话ID或滑动窗口由所述日志模板获取日志序列以及日志序列对应的标签从而构建训练数据集合,所述日志序列中包括正样本日志序列和负样本日志序列;
S3、判断检测模型的损失是否趋于稳定,如果还未趋于稳定则将所述训练数据集合中的部分日志序列输入到BERT异常检测模型,对所述BERT异常检测模型进行有监督训练后,再次执行步骤S3,如果检测模型的损失趋于稳定,则执行步骤S4;
S4、获取模型训练过程中的梯度数据,并使用FGM进行对抗训练扰动BERT的嵌入层;
S5、将正样本日志序列和负样本日志序列输入到被扰动的BERT异常检测模型中,生成被扰动的语义向量后取消对嵌入层的扰动并且再次生成未被扰动的语义向量;
S6、使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练;
S7、判断训练集中是否已经没有日志序列,如果训练集中已经没有了需要训练的日志序列则停止训练,得到训练后的异常检测模型,否则,转步骤S4;
所述检测阶段包括:
S8、将待检测的日志序列输入到训练后的异常检测模型,查看模型的输出,根据输出结果判断日志序列是否异常。
进一步地,对日志数据集中的日志数据进行解析获取结构化的日志模板,包括使用Drain算法提取日志条目中的日志模板。
进一步地,将所述训练数据集合中的部分日志序列输入到BERT异常检测模型,对所述BERT异常检测模型进行有监督训练,包括:
其中,f为模型的forward函数,θ为模型参数,fθ(xi)即为模型的预测结果,训练阶段通过调整模型参数,使损失函数达到最小。
进一步地,使用FGM进行对抗训练扰动BERT的嵌入层,包括:
设训练时产生的梯度为g,则根据FGM算法对嵌入层产生的扰动大小为:
radv=ε·g/||g||2
其中ε为超参数,||g||2代表对梯度求二范数。
进一步地,将正样本日志序列和负样本日志序列输入到被扰动的BERT异常检测模型中,生成被扰动的语义向量后取消对嵌入层的扰动并且再次生成未被扰动的语义向量,包括:
选取出当前batch中的日志序列中获取正样本日志序列构建一个正样本集合;
获取嵌入层被扰动的BERT生成的日志序列和正负样本日志序列集合的语义向量;
取消对BERT嵌入层的扰动;
获得原嵌入层生成的日志序列和正负样本日志序列集合的语义向量。
进一步地,使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练,包括:
设一个batch的日志序列产生的语义向量为其中N为一个batch的大小,一个batch中所有正常日志序列产生的语义向量为其中n为正常日志序列个数,代表第i个正常日志序列产生的向量,被扰动后的正常日志序列产生的语义向量为其中代表第i个正常日志序列在嵌入层被扰动后产生的向量,负样本日志序列集合产生的语义向量为其中m为负样本日志序列集合中异常日志序列个数,代表第i个异常日志序列产生的向量,被扰动后的负样本日志序列集合产生的语义向量为其中代表第i个异常日志序列在嵌入层被扰动后产生的向量,对比学习的优化问题被定义为:
其中,sim为余弦相似度计算,τ为超参数温度系数,指基于嵌入层未被扰动时产生的正常日志序列的语义向量的对比损失函数,指基于嵌入层被扰动后产生的正常日志序列的语义向量的对比损失函数,Lcontra代表和之和;
最终将优化问题变为:
其中,LCE为原异常检测的有监督任务的交叉熵损失函数。
进一步地,将待检测的日志序列输入到训练后的异常检测模型,查看模型的输出,根据输出结果判断日志序列是否异常。
较现有技术相比,本发明具有以下优点:
1、本发明使用FGM(Fast Gradient Method)对抗训练方法对BERT(BidirectionalEncoder Representation from Transformers)模型的嵌入层进行扰动,使模型生成受到扰动后的语义向量,再使用对比学习来拉近正常日志序列在BERT模型的嵌入层未被扰动和扰动后两种情况下产生的语义向量之间的相似度,使得模型在原正常日志序列有一些轻微变动的情况下,依然可以获得正确的异常检测结果,这种针对健壮性的专门训练,可使异常检测模型获得良好的健壮性。
2、本发明使用对比学习来拉远正常与异常日志序列的语义向量之间的相似度,使得正常与异常的日志序列产生的语义向量在语义空间的距离上更远,区别更大,进而提升模型异常检测的准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法框架图。
图2为本发明基于对比对抗训练的日志序列异常检测模型训练流程图。
图3为本发明基于对比对抗训练的日志序列异常检测流程图。
图4为实施例中不同方法在HDFS数据集上的准确率对比图。
图5为实施例中不同方法在BGL数据集上的准确率对比图。
图6为实施例中日志更新示意图。
图7为实施例中不同方法的健壮性对比图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明提供一种基于对比对抗训练的日志序列异常检测方法,方法框架如图1所示。该方法包括训练和检测两个阶段。在训练阶段,首先对日志数据进行解析,其次,按会话ID或滑动窗口获取日志序列并提取出一个负样本日志序列集合,接下来,判断检测模型的损失是否趋于稳定,如果检测模型的损失趋于稳定,则获取模型训练过程中的梯度数据,并使用FGM进行对抗训练扰动BERT的嵌入层,紧接着将正样本日志序列和负样本日志序列输入到被扰动的BERT异常检测模型中,生成被扰动的语义向量后取消对嵌入层的扰动并且再次生成未被扰动的语义向量,然后使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练,最后,判断训练集中是否已经没有日志序列,如果训练集中已经没有了需要训练的日志序列则停止训练,得到训练后的异常检测模型;在检测阶段,首先对待检测的日志序列经过日志解析,然后将解析后的日志序列输入到训练后的异常检测模型,接下来查看模型的输出,最后根据输出结果判断日志序列是否异常。
如图2所示,本发明提供了基于对比对抗训练的日志序列异常检测模型训练流程,具体包括以下步骤:
步骤1:日志解析。
日志解析的目地是将非结构化的日志条目转换为结构化的日志模板。本发明使用Drain算法来提取日志条目中的日志模板,该算法根据日志条目的内容构建解析树,并以解析树每层中所蕴含的信息确定日志模板,从而将非结构化的日志条目转换为结构化的日志模板。
步骤2:按会话ID或滑动窗口获取日志序列并提取出一个负样本日志序列集合。
负样本日志序列集合用于进行对比学习,设集合的大小为m,即从训练集负样本中随机挑选m个日志序列来构建负样本日志序列集合。
步骤3:判断模型训练的损失是否趋于稳定,如果还未趋于稳定,重复执行步骤4~5,如果已经趋于稳定,重复执行步骤6~10。
步骤4:将日志序列输入到BERT异常检测模型。
步骤5:使用训练集中的日志序列以及对应的标签对模型进行有监督的训练。
其中,f为模型的forward函数,θ为模型参数,fθ(xi)即为模型的预测结果,训练阶段通过调整模型参数,使损失函数达到最小。
步骤6:获取梯度并使用FGM进行对抗训练扰动BERT的嵌入层。
设训练时产生的梯度为g,则根据FGM算法对嵌入层产生的扰动大小为公式(2)。
radv=ε·g/||g||2
(2)
其中ε为超参数,||g||2代表对梯度的求二范数。
步骤7:将日志序列和负样本日志序列集合输入到被扰动的BERT异常检测模型。
步骤8:生成被扰动的语义向量后取消对嵌入层的扰动并且再次生成未被扰动的语义向量。
先选取出当前batch中的正常日志序列构建一个正样本集合,在获得嵌入层被扰动的BERT生成的日志序列和正负样本日志序列集合的语义向量后取消对BERT嵌入层的扰动,接着获得原嵌入层生成的日志序列和正负样本日志序列集合的语义向量。
步骤9:使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练。
在使用对比学习来拉近正常日志序列在BERT的嵌入层未被扰动和扰动后两种情况下产生的语义向量之间的相似度,拉远所有正常日志序列与负样本日志序列集合产生的语义向量之间的相似度的同时,继续保持原本进行的有监督训练任务来训练模型。设一个batch的日志序列产生的语义向量为其中N为一个batch的大小,一个batch中所有正常日志序列产生的语义向量为其中n为正常日志序列个数,代表第i个正常日志序列产生的向量,被扰动后的正常日志序列产生的语义向量为其中代表第i个正常日志序列在嵌入层被扰动后产生的向量,负样本日志序列集合产生的语义向量为其中m为负样本日志序列集合中异常日志序列个数,代表第i个异常日志序列产生的向量,被扰动后的负样本日志序列集合产生的语义向量为其中代表第i个异常日志序列在嵌入层被扰动后产生的向量,对比学习的优化问题被定义为公式(3)。
其中,sim为余弦相似度计算,τ为超参数温度系数,指基于嵌入层未被扰动时产生的正常日志序列的语义向量的对比损失函数,其目的是迫使嵌入层被扰动后产生的正常日志序列的语义向量和原嵌入层产生的正常日志序列的语义向量相接近,同时使嵌入层被扰动后产生的异常日志序列的语义向量和原嵌入层产生的正常日志序列的语义向量相疏远,指基于嵌入层被扰动后产生的正常日志序列的语义向量的对比损失函数,其目的是迫使原嵌入层产生的正常日志序列的语义向量和嵌入层被扰动后产生的正常日志序列语义向量相接近,同时使原嵌入层产生的异常日志序列的语义向量和嵌入层被扰动后产生的正常日志序列的语义向量相疏远,Lcontra代表和之和。在进行对比学习的过程中也保持也对模型原本的有监督训练,所以最终的优化问题变为公式(6),代表着通过训练模型的可训练参数θ来最小化原异常检测的有监督任务的交叉熵损失函数LCE与用来调整正常与异常日志序列的语义向量之间相似度的对比损失函数Lcontra之和。
步骤10:判断训练集中是否已经没有日志序列,如果训练集中已经没有了需要训练的日志序列则停止训练,否则,转步骤6。
如图3所示,本发明提供了基于对比对抗训练的日志序列异常的检测流程,基于上述训练流程对检测模型进行训练,然后进行日志序列异常检测。其步骤如下:
步骤1:日志解析。
步骤2:按Block_id或滑动窗口获取日志序列。
步骤3:将日志序列输入到BERT异常检测模型。
步骤4:查看BERT异常检测模型输出的检测结果是否为正常,如果检测结果为正常转步骤5,如果检测结果为异常转步骤6。
步骤5:将该日志序列判定为正常日志序列,结束检测。
步骤6:将该日志序列判定为异常日志序列,结束检测。
下面通过具体的应用实例对本法的方案和效果做进一步说明。
实验环境:本发明的实验均在NVIDIA TESLA V100 32G GPU的服务器上进行,使用Python3.7的环境基于Pytorch来构建模型,使用Adam优化器训练BERT模型,并使用交叉熵函数作为训练时的损失函数。
数据集:本发明选择HDFS和BGL两个公共日志数据集。HDFS数据集是LogHub从Amazon EC2平台的203个节点集群上收集的,它是基于日志进行异常检测的常用基准数据,其总共包含11,175,629条原始日志消息,并且对575061个会话都赋予了对应的标签来说明其正常与异常的状态。BGL数据集是LogHub从加利福尼亚州利弗莫尔的劳伦斯·利弗莫尔国家实验室(LLNL)的BlueGene/L超级计算机系统收集的,总共包含4,747,963条原始日志消息,并对每条日志都做了标识来标记其为警报或非警报消息。在接下来的实验中,对所有数据集,根据日志的时间戳信息自上而下选取5000个正常日志序列与5000个异常日志序列,前80%作为训练数据,剩下的20%作为测试数据。
基线方法:本发明选择SVM、DeepLog与LogRoust方法作为对比实验的基线方法。
评估指标:异常检测是一个二分类问题,本发明利用广泛使用的指标,即准确率、召回率和F1-score来衡量本发明与各基准方法在异常检测的性能方面进行评估。
1)准确率:在所有被模型判定为异常的日志序列中真正为异常日志序列的百分比,如公式(7)所示。
2)召回率:在所有异常的日志序列中被模型正确判别为异常日志序列的百分比,如公式(8)所示。
3)F1分数:准确率和召回率的调和平均值,如公式(9)所示。
其中,TP是模型正确检测到的异常日志序列的数量。FP是模型错误地标识为异常正常日志序列的数量。FN是模型未检测到的异常日志序列的数量。
实验参数设置:对于HDFS数据集,按Block_id划分日志序列,以对应Block_id的标签判断日志序列是否异常,对于BGL数据集,以大小为20的滑动窗口划分日志序列,如果日志序列中有一条异常日志,则将整个日志序列判定为异常。由于对比实验中的SVM方法无法应对新出现的日志模板,因此我们在该方法生成对应向量的时候额外添加一个维度,所有未知的日志模板均累加到这一维度上去。负样本日志序列集合的大小设置为负样本总数的十分一,即500条异常日志序列。FGM算法中的超参数ε大小设置为1。进行对比学习损失计算的温度系数大小设置为0.05。
接下来将本发明提出的方法与未经过对比对抗训练的BERT模型以及其他基线方法进行对比来证明本发明所提出的方法在日志序列异常检测的准确率、召回率、F1分数以及健壮性方面的优势。
(1)准确率、召回率和F1分数比较
SVM异常检测方法通过统计日志序列中各种类型日志模板的出现频率将日志序列转换为计数向量,然后通过对计数向量进行划分来实现对日志序列的异常检测。DeepLog利用LSTM学习日志序列中日志产生的正常轨迹,来发现那些偏离正常轨迹的日志序列,进而实现异常检测。LogRobust利用带有注意力机制的双向LSTM对日志序列进行有监督的学习,并且使用自然语言处理的方式将日志模板转换为语义向量,在提高了异常检测准确度的基础上还获得了一定的健壮性。将本发明提出的方法称为CATBERT,图4和图5分别展示了CATBERT与未经过对比对抗训练的BERT模型以及其他基线方法在HDFS与BGL数据集上的比较结果。
从图中可以看出,本发明提出的CATBERT方法的各项异常检测指标均高于其他基线方法,并且通过与原始的BERT异常检测模型进行对比可以看出,本发明提出的基于对比对抗训练的CATBERT异常检测方法具有更高的异常检测准确率。
(2)健壮性比较
随着系统或者服务的升级,系统中产生的日志消息的模板会发生一些更新,而日志模板的不定时更新会对异常检测的准确率造成影响。因此,相应的日志序列异常检测方法需要对日志消息模板的更新做出相应处理,即需要考虑检测方法的健壮性问题。为了将本发明方法与其他基线方法进行健壮性比较,本文按照一些日志更新规则对原HDFS数据集进行了一定的修改,根据对系统日志更新的相关研究发现,日志的更新规则大体可分为对日志模板的增加、删除和替换。日志更新的具体情形如图6所示。
对原HDFS数据集进行一定比例的更新后再次进行异常检测,F1得分的比较结果如图7所示。
从图中可以看出,在更新注入达到百分之五的时候,SVM和DeepLog的F1得分开始明显下降,当更新注入达到百分之十的时候,LogRobust的F1得分也开始较为明显的下降,原BERT模型的F1得分虽然略微高于LogRobust,但是也低于经过对比对抗训练的CATBERT,由此可以得出,本发明提出的CATBERT方法比原始的BERT模型以及其他基线方法在日志更新时具有更好的健壮性。
本发明提出了一种基于对比对抗训练的日志序列异常检测方法。本发明旨在通过对比对抗训练来提高日志序列异常检测的健壮性,同时关注生成的语义向量在语义空间上的距离。使用对比学习,拉近正常日志序列在BERT的嵌入层未被扰动和扰动后两种情况下产生的语义向量之间的相似度,拉远所有正常日志序列与异常日志序列产生的语义向量之间的相似度,使得模型可以更好地区分正常与异常日志序列,增加了异常检测的准确率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (7)
1.一种基于对比对抗训练的日志序列异常检测方法,其特征在于,包括训练阶段和检测阶段;
所述训练阶段包括:
S1、获取日志数据集,并对日志数据集中的日志数据进行解析获取结构化的日志模板;
S2、按会话ID或滑动窗口由所述日志模板获取日志序列以及日志序列对应的标签从而构建训练数据集合,所述日志序列中包括正样本日志序列和负样本日志序列;
S3、判断检测模型的损失是否趋于稳定,如果还未趋于稳定则将所述训练数据集合中的部分日志序列输入到BERT异常检测模型,对所述BERT异常检测模型进行有监督训练后,再次执行步骤S3,如果检测模型的损失趋于稳定,则执行步骤S4;
S4、获取模型训练过程中的梯度数据,并使用FGM进行对抗训练扰动BERT的嵌入层;
S5、将正样本日志序列和负样本日志序列输入到被扰动的BERT异常检测模型中,生成被扰动的语义向量后取消对嵌入层的扰动并且再次生成未被扰动的语义向量;
S6、使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练;
S7、判断训练集中是否已经没有日志序列,如果训练集中已经没有了需要训练的日志序列则停止训练,得到训练后的异常检测模型,否则,转步骤S4;
所述检测阶段包括:
S8、将待检测的日志序列输入到训练后的异常检测模型,查看模型的输出,根据输出结果判断日志序列是否异常。
2.根据权利要求1所述的一种基于对比对抗训练的日志序列异常检测方法,其特征在于,对日志数据集中的日志数据进行解析获取结构化的日志模板,包括使用Drain算法提取日志条目中的日志模板。
4.根据权利要求1所述的一种基于对比对抗训练的日志序列异常检测方法,其特征在于,使用FGM进行对抗训练扰动BERT的嵌入层,包括:
设训练时产生的梯度为g,则根据FGM算法对嵌入层产生的扰动大小为:
radv=ε·g/||g||2
其中ε为超参数,||g||2代表对梯度求二范数。
5.根据权利要求1所述的一种基于对比对抗训练的日志序列异常检测方法,其特征在于,将正样本日志序列和负样本日志序列输入到被扰动的BERT异常检测模型中,生成被扰动的语义向量后取消对嵌入层的扰动并且再次生成未被扰动的语义向量,包括:
选取出当前batch中的日志序列中获取正样本日志序列构建一个正样本集合;
获取嵌入层被扰动的BERT生成的日志序列和正负样本日志序列集合的语义向量;
取消对BERT嵌入层的扰动;
获得原嵌入层生成的日志序列和正负样本日志序列集合的语义向量。
6.根据权利要求1所述的一种基于对比对抗训练的日志序列异常检测方法,其特征在于,使用对比学习并且继续保持原本的有监督训练任务来对模型进行训练,包括:
设一个batch的日志序列产生的语义向量为其中N为一个batch的大小,一个batch中所有正常日志序列产生的语义向量为其中n为正常日志序列个数,代表第i个正常日志序列产生的向量,被扰动后的正常日志序列产生的语义向量为其中代表第i个正常日志序列在嵌入层被扰动后产生的向量,负样本日志序列集合产生的语义向量为其中m为负样本日志序列集合中异常日志序列个数,代表第i个异常日志序列产生的向量,被扰动后的负样本日志序列集合产生的语义向量为其中代表第i个异常日志序列在嵌入层被扰动后产生的向量,对比学习的优化问题被定义为:
其中,sim为余弦相似度计算,τ为超参数温度系数,指基于嵌入层未被扰动时产生的正常日志序列的语义向量的对比损失函数,指基于嵌入层被扰动后产生的正常日志序列的语义向量的对比损失函数,Lcontra代表和之和;
最终将优化问题变为:
其中,LCE为原异常检测的有监督任务的交叉熵损失函数。
7.根据权利要求1所述的一种基于对比对抗训练的日志序列异常检测方法,其特征在于,将待检测的日志序列输入到训练后的异常检测模型,查看模型的输出,根据输出结果判断日志序列是否异常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111468162.4A CN114138973A (zh) | 2021-12-03 | 2021-12-03 | 一种基于对比对抗训练的日志序列异常检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111468162.4A CN114138973A (zh) | 2021-12-03 | 2021-12-03 | 一种基于对比对抗训练的日志序列异常检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138973A true CN114138973A (zh) | 2022-03-04 |
Family
ID=80387415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111468162.4A Pending CN114138973A (zh) | 2021-12-03 | 2021-12-03 | 一种基于对比对抗训练的日志序列异常检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138973A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114881112A (zh) * | 2022-03-31 | 2022-08-09 | 北京优特捷信息技术有限公司 | 一种系统异常检测方法、装置、设备及介质 |
CN117041019A (zh) * | 2023-10-10 | 2023-11-10 | 中国移动紫金(江苏)创新研究院有限公司 | 内容分发网络cdn的日志分析方法、装置及存储介质 |
-
2021
- 2021-12-03 CN CN202111468162.4A patent/CN114138973A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114881112A (zh) * | 2022-03-31 | 2022-08-09 | 北京优特捷信息技术有限公司 | 一种系统异常检测方法、装置、设备及介质 |
CN117041019A (zh) * | 2023-10-10 | 2023-11-10 | 中国移动紫金(江苏)创新研究院有限公司 | 内容分发网络cdn的日志分析方法、装置及存储介质 |
CN117041019B (zh) * | 2023-10-10 | 2024-01-02 | 中国移动紫金(江苏)创新研究院有限公司 | 内容分发网络cdn的日志分析方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114610515B (zh) | 基于日志全语义的多特征日志异常检测方法及系统 | |
CN106844349B (zh) | 基于协同训练的垃圾评论识别方法 | |
CN114138973A (zh) | 一种基于对比对抗训练的日志序列异常检测方法 | |
CN110414219A (zh) | 基于门控循环单元与注意力机制的注入攻击检测方法 | |
Tang et al. | Anomaly detection in electronic invoice systems based on machine learning | |
Yu et al. | Attention-based Bi-LSTM model for anomalous HTTP traffic detection | |
CN109831460A (zh) | 一种基于协同训练的Web攻击检测方法 | |
CN107239694A (zh) | 一种基于用户评论的Android应用权限推理方法及装置 | |
CN110191096A (zh) | 一种基于语义分析的词向量网页入侵检测方法 | |
CN109582963A (zh) | 一种基于极限学习机的档案自动分类方法 | |
CN113609488B (zh) | 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统 | |
CN111709225B (zh) | 一种事件因果关系判别方法、装置和计算机可读存储介质 | |
CN116089873A (zh) | 模型训练方法、数据分类分级方法、装置、设备及介质 | |
CN114153978A (zh) | 模型训练方法、信息抽取方法、装置、设备及存储介质 | |
Yu et al. | Brain: Log parsing with bidirectional parallel tree | |
Wibisono et al. | Log anomaly detection using adaptive universal transformer | |
Guo et al. | Loglg: Weakly supervised log anomaly detection via log-event graph construction | |
CN114416479A (zh) | 一种基于流外正则化的日志序列异常检测方法 | |
CN110334508A (zh) | 一种主机序列入侵检测方法 | |
CN112052424B (zh) | 一种内容审核方法及装置 | |
CN112182225A (zh) | 一种多模态场景目标基于半监督深度学习的知识管理方法 | |
Li et al. | Improving performance of log anomaly detection with semantic and time features based on bilstm-attention | |
CN116882402A (zh) | 基于多任务的电力营销小样本命名实体识别方法 | |
CN116578700A (zh) | 日志分类方法、日志分类装置、设备及介质 | |
CN115098687A (zh) | 面向电力sdh光传输系统调度运行的告警排查方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |