1.本技术涉及计算机技术领域,具体而言,涉及一种日志检测方法、装置、电子设备及存储介质。
背景技术:
2.设备或程序的运行会产生日志,通过日志可以判断设备或程序的运行情况。而部分日志可能存在异常,因此,会对检测日志进行检测,解析日志以提取日志中的关键语义信息或特征,通过关键语义信息或特征判断日志是否异常。
3.目前对日志进行检测的方式存在检测准确性较低的问题。
4.例如,一些检测方式会将日志解析为具有预设日志模板结构的结构化信息,再对结构化信息进行异常检测。而在使用日志模板时,可能无法对日志模板中没有的日志事件进行检测,以及在将日志中的信息转换为日志模板中的事件时,可能丢失部分信息,因此,使用日志模板会影响日志检测的准确性。再例如,一些异常检测模型对输入数据有尺寸和大小要求,因此,会将日志中的信息进行拆分,而拆分可能使得数据丢失,以及可能使得上下文关系难以识别匹配,影响日志异常检测的准确性。
技术实现要素:
5.有鉴于此,本技术旨在提供一种日志检测方法、装置、电子设备及存储介质,以提高对日志异常检测的准确性。
6.第一方面,本技术实施例提供一种日志检测方法,包括:对日志进行语义向量化处理,得到所述日志对应的句向量;所述句向量用于表征所述日志的语义;将所述句向量输入预先训练好的检测模型中,得到所述日志的检测结果。
7.相较于使用日志模板来提取日志的语义,本技术实施例中,将日志的语句转换为句向量,可以对日志语义更为完整地提取,减少日志语义的丢失或减少改变日志语句所包含的信息,提高日志语义的完整性,由此,使用该句向量进行异常检测时,可以减少因语义不完整导致的检测错误,提高对日志检测的准确性。
8.一实施例中,所述对日志进行语义向量化处理,包括:将所述日志输入预先训练好的语义模型,以获得所述语义模型的输出结果;所述语义模型用于将所述日志转换为所述句向量输出。
9.本技术实施例中,在进行日志检测时,利用语义模型进行句向量的转换,可以简化将日志转换为句向量的复杂程度,提高句向量转换的效率。由于模型训练可以提高模型对语义识别的准确性,因此,使用预先训练好的语义模型可以使得将日志转换为句向量具有较高的准确性。
10.一实施例中,所述语义模型为基于对抗训练后的bert(bidirectional encoder representations from transformers,一种基于双向编码器的神经网络)模型。
11.本技术实施例中,bert模型对文本语义识别具有较高的准确性,使用bert模型构
建语义模型,可以有效提高语义模型从日志中提取语义的准确性,从而使句向量所表达的语义更为准确,提高日志检测的准确性。此外,bert模型可以根据任务需求进行模型上的微调,以使得其能够更好地使用任务需求,由此,可以将bert模型调整为更适用于句向量的转换,使得语义模型能够更好地理解和表示日志的语义和上下文信息,提高语义模型句向量转换的准确性。而本技术所使用的bert模型是基于对抗训练得到的,对抗训练可以bert模型的自适应性,以使得在日志出现新的异常数据时,bert模型同样具有较高的语义识别准确性。
12.一实施例中,所述语义模型包括词嵌入层,所述词嵌入层用于在所述句向量中添加位置编码,所述位置编码表征所述句向量所表征的语义在所述日志中的位置。
13.本技术实施例中,在句向量中添加位置编码,可以建立句向量中各单词或句子之间的位置序列关系,在进行异常检测时,可以基于位置编码检测句向量的上下文内容,再利用上下文内容检测位置编码的异常,相较于仅凭单一语句的语义进行异常检测,结合上下文内容对句向量的语义进行异常检测可以提高异常检测的准确性。
14.一实施例中,所述检测模型为transformer(一种神经网络)模型。
15.本技术实施例中,transformer为设置有多头自注意力机制的模型,多头自注意力机制可以使得模型可以考虑输入数据的位置及顺序。由此,利用transformer模型构建的检测模型,可以使得检测模型可以对句向量语义进行上下文关联,从而提高对日志检测的准确性。
16.一实施例中,在将所述日志输入预先训练好的语义模型之前,所述方法还包括:对所述日志进行以下至少一种预处理:在所述日志中加入分隔符拆分所述日志的语句、将所述日志中的大写字母转换为小写字母、删除所述日志中的非字符标记。
17.本技术实施例中,基于分隔符拆分日志,可以使语义模型能够更准确地识别日志中的语句,更准确地识别日志的语义。将日志中的大写字母转换为小写字母,可以降低语义识别难度,提高语义识别准确性与效率。非字符标记不提供任何有效信息,将非字符标记删除,可以降低非字符标记对语义识别效率和准确性的负面影响。
18.一实施例中,所述检测模型通过以下方式得到:将训练集中的同一训练数据输入多个预设检测模型中;其中,各所述预设检测模型中任一所述预设检测模型为:预设的初始检测模型,或者,在所述初始检测模型上丢弃部分计算单元得到的模型;且,各所述预设检测模型所具有的计算单元的组合不同;基于预设损失函数对各所述预设检测模型输出的分类概率进行计算,得到输出结果;基于所述输出结果更新所述初始检测模型;重复上述过程,直至完成预设次数的训练,得到训练好的检测模型。
19.本技术实施例中,通过将训练数据输入不同计算单元组合的预设检测模型中,由此,可以使得每一预设检测模型输出的分类概率不同,在利用损失函数调整分类概率,得到输出结果后,可以使得每次对初始检测模型进行调整所依赖的输出结果存在差异,由此,可以有效减少对初始检测模型存在偏向,从而减少出现过拟合、过度适应的情况,使得训练完成的检测模型对于不同的日志均有较高的检测准确型。
20.一实施例中,所述预设损失函数为:
[0021][0022]
其中,和分别表示不同预设检测模型输出分类概率的数据分布;i表示数据分布中的数据点,d
kl
表示kl(kullback-leibler divergence,相对熵)散度分布计算,li表示预设损失函数。
[0023]
本技术实施例中,通过上述预设损失函数,可以对两个预设检测模型输出分类概率的数据分布进行约束,使得二者统一,从而得到的输出结果能够综合两个预设检测模型的计算特点,进而利用输出结果对检测模型进行调整后,可以有效降低检测模型出现偏向于输出某一类结果的情况,降低检测模型出现过拟合的可能性。
[0024]
第二方面,本技术实施例提供一种日志检测装置,包括:向量化模块,用于对日志进行语义向量化处理,得到所述日志对应的句向量;所述句向量用于表征所述日志的语义;分类模块,用于将所述句向量输入预先训练好的检测模型中,得到所述日志的检测结果。
[0025]
第三方面,本技术实施例提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行,以执行如第一方面所述的方法。
[0026]
第四方面,本技术实施例提供一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如第一方面所述的方法。
附图说明
[0027]
为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0028]
图1为本技术一实施例提供的一种日志检测方法的流程图;
[0029]
图2为本技术一实施例提供的句向量的示意图;
[0030]
图3为本技术一实施例提供的日志检测装置的示意图;
[0031]
图4为本技术一实施例提供的电子设备的示意图。
[0032]
图标:日志检测装置200;向量化模块210;分类模块220;电子设备300;处理器310;存储器320。
具体实施方式
[0033]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0034]
请参阅图1,图1为本技术一实施例所提供的日志检测的流程图。
[0035]
s110,对日志进行语义向量化处理,得到日志对应的句向量。
[0036]
句向量能够表征整个句子语义的向量,通过句向量,可以对文本进行聚类,处理大规模的文本相似度比较,或者基于语义搜索的信息检索等。在日志的异常检测中,需识别日志中句子的语义来判断日志是否异常,因此,在本实施例中,可以对日志进行语义向量化处理,将日志转换为句向量,利用句向量表征日志的语义,从而使用句向量进行日志异常的检测。
[0037]
相较于使用日志模板来提取日志的语义,将日志的语句转换为句向量是对日志语句完整地转换,不存在日志语句的拆分或变形。此外,通过日志模板提取日志的语义时,若日志中出现日志模板未定义的事件,则可能无法提取语义。而本技术实施例中将日志转换为句向量,句向量是对日志语义完整的表达,则在对日志语义的特征提取阶段,不会导致日志中信息的丢失,从而保证日志的完整性,因此,在异常检测时,是使用完整日志进行检测,可以更为准确的识别日志的语义,提高检测的准确性。
[0038]
一实施例中,对日志进行语义向量化处理,可以包括:将日志输入预先训练好的语义模型,以获得语义模型的输出结果。语义模型用于将日志转换为句向量输出。
[0039]
本实施例中,可以利用预先训练好的语义模型进行句向量的转换。例如,可以使用skip-thought模型、quick-thought模型、bilstm模型、infersent模型等将日志转换为句向量。各类模型的具体实现可以参考现有技术,在此不再展开。
[0040]
本实施例中,可以根据日志类型选用对应的句向量模型,例如,日志中连贯性语句较多,则可以选用skip-thought模型,又或者,在需要使句向量具有较高的语义准确性时,可以使用监督训练的神经网络模型,如infersent模型。上述仅为示例,不作为对本技术的限制。
[0041]
在本技术所提供的一些实施例中,语义模型可以为bert模型。
[0042]
bert模型为一种预训练模型,可以通过在大规模未标记文本上进行预训练,学习出通用的语言表示,然后可以将这些学习到的表示用于各种下游自然语言处理任务等。
[0043]
例如,bert模型可以根据具体任务的需求在数据集上进行优化,以使得bert可以更好的进行语义识别。在本技术实施例中,可以使用带有异常标签的训练集对bert模型的顶层分类器或其他任务相关的层进行训练,以使得bert模型可以更好的理解和表示日志的语义及联系上下文信息,从而使得bert模型所提出的句向量可以便于检测模型更准确地分析异常。
[0044]
在一些实施例中,将日志输入bert模型进行处理前,需将日志语句转换为bert模型所能够识别的输入编码。
[0045]
请参阅图2,图2为本技术一实施例提供的词向量示意图。
[0046]
输入编码包括词嵌入张量和句子分段嵌入张量,词嵌入张量即图2中的token embeddings,用符号cls表示,句子分段嵌入张量即segment embeddings,用符号sep表示。例如,原本日志中的语句kernel info cache error ras error condition,可以表示为:[cls]kernel info cache error[sep]ras error condition[sep]。利用词嵌入张量和句子分段张量,可以便于日志语句的识别,减少将多个单词识别为一个单词的情况,或减少句子分段错误导致语义错误的情况,如将句子分为a句和b句。由此,可以提高语义提取的准确性,继而提高日志异常检测的准确性。
[0047]
其中,输入编码可以通过词嵌入层进行词嵌入张量和句子分段嵌入张量的嵌入。此外,输入编码还可以包括位置编码,词嵌入层还可以在句向量中添加位置编码,位置编码表征句向量所表征的语义在日志中的位置。
[0048]
句向量所表征的语义在日志中的位置指该句向量中各单词在日志中的位置,位置也可以理解为顺序。以如图2为例,对于句向量[cls]kernel info cache error[sep]ras error condition[sep],利用e0至e9分别表示各单词在该句子中的位置。由此,通过位置编码,一方面,可以增强所提取的语义之间的上下文联系,另一方便,便于检测模型根据位置编码联系上下文检测日志异常,提高日志检测的准确性。
[0049]
接着,将输入编码输入bert模型的编码器、自注意力层、前馈神经网络、池化层等,得到bert模型输出的句向量。需要说明的是,本技术关于bert模型未提及或具体说明的内容可以参考现有技术,为简洁说明,在此不再展开。
[0050]
尽管bert模型在一定程度上能够识别语义信息,然而,由于日志会随着时间的推移发生变化,出现bert模型训练过程中未出现的异常,例如,程序的更新会导致新的异常问题出现,该类问题未在模型训练中出现,导致bert模型可能无法准确识别语义。因此,在本技术实施例中,在对bert模型进行训练时,还可以对bert模型进行对抗训练,以提高bert模型的自适应性和鲁棒性能。
[0051]
在本技术提供的一实施例中,对bert模型进行对抗训练包括:对bert模型进行正则化处理,接着,基于adam(adaptive moment estimation,自适应矩估计)优化算法对正则化处理后的bert模型进行参数更新限制。
[0052]
通过对bert模型进行正则化处理,正则化处理可以使得bert模型在一定扰动范围内输出尽可能一致的概率分布,从而使得bert模型能够微调模型的参数,以提高对新日志的识别准确性,降低bert模型过拟合和泛化的可能性。通过adam算法,可以防止bert模型在实际使用过程中参数更新过大,减少bert模型出现异常的可能性。
[0053]
其中,adam算法可以根据每个参数的梯度的一阶矩估计和二阶矩估计自适应地调整学习率。对于异常日志检测,它可以根据不同的参数进行自适应调整,因此可以更好地适应不同的异常日志特征。同时,在异常日志检测中,由于大多数单词在异常日志中出现的频率很低,梯度通常是稀疏的。adam算法在处理稀疏梯度时表现良好,并且能够减少参数更新的方差,使得模型训练更加稳定。此外,adam算法结合了动量和学习率调整的策略,能够加速模型的收敛速度。在文本预训练模型中,这对于处理大规模语料库和复杂的语言结构非常有益,能够更快地学习到有用的语言表示和特征,由此,可以提高bert模型的训练速度,以及可以提高bert模型使用时提取语义信息的准确性和效率。最后,adam算法对于超参数的选择自适应性功能高,对于初始学习率和其他超参数的选择并不敏感,这使得它在异常日志检测中更容易使用和调整,减少了超参数调优的负担。
[0054]
综上,通过基于adam优化算法对bert模型进行参数更新限制,可以提高bert模型的训练效率、语义提取的准确性等,提高bert模型的性能。
[0055]
正则化方法和adam算法的具体实现原理可以参考现有技术,在此不再展开。需要说明的是,本技术再对bert模型进行对抗训练的过程中,通过先对bert模型进行正则化处理,再利用adam优化算法对bert模型的参数更新进行限制,由此,可以使得bert模型可以更新自身的参数,以实现对新的日志的识别,同时,还可以防止参数的更新过大从而出现异
常。
[0056]
在本技术实施例提供的一种实施例中,可以基于以下两个公式对bert模型进行正则化处理:
[0057]
min
θ
f(θ)=(θ)
srs
()
[0058][0059]
其中,λs为预设的最小化损失函数的系数,θ表征bert模型的任意参数,n表示bert模型参数θ对应的n个数据,xi和分别表示bert模型参数θ对应的不同数据,f(xi;θ)和分别为xi和各自对应的极大似然估计,min
θ
f(θ)为bert模型的最小化损失函数,rs()为正则化处理的公式,ls为度量函数,l(θ)表征bert模型的整体损失。
[0060]
上述公式通过度量函数ls去控制我们施加扰动的范围,以使我们的损失值达到最小,由此实现对bert模型的正则化处理。
[0061]
上述仅为本技术的一种实施例,正则化处理和adam优化算法的具体原理可以参考现有技术,在此不再进一步说明。
[0062]
一实施例中,在将日志输入预先训练好的语义模型之前,还可以对日志进行预处理,预处理包括但不限于:在日志中加入分隔符拆分日志中的语句、将日志中的大写字母转换为小写字母、删除日志中的非字符标记。
[0063]
在日志中,部分语句可能为长句,包括多个字符或单词等,不便于句向量时的语义识别,因此,在本实施例,可以使用分隔符拆分日志,以使得日志中的语义更易被语义模型所识别。其中,分隔符可以是空格、冒号、逗号等。示例性地,日志中的原始语句为namesystem.addstoredblock,则可以分隔为name system.add stored block。其中,分隔符还可以是其他形式,上述仅为示例。此外,可以通过预设的词库识别语句中的单词,再利用分隔符区别不同的单词;又或是利用单词的大小写进行单词的识别,例如,识别两个相邻的大写字母,在第二个大写字母前增加分隔符。上述仅为示例,但不作为限制,还可以由其他方式识别单词以增加分隔符,在此不再展开。
[0064]
在一些实施例中,bert模型配置有分词的算法,因此,可以在预处理时进行对日志进行简单的拆分时,可以不进行日志拆分,在进行语义向量话处理时,再基于bert模型进行日志语句的拆分。
[0065]
接着,预处理还可以是将日志中的大写字母转换为小写字母。大小写字母存在区别,若同时识别大小写字母,可能会增大语义模型的运算量,或影响语义模型对语义识别的准确性。因此,在本实施例中,可以将大写字母转换为小写字母,降低日志语句的复杂度,提高语义模型的运算效率及识别的准确性。示例性地,日志中的原始语句为name system.add stored block,则可以转换为name system.add stored block。
[0066]
接着,预处理还可以包括删除日志中的非字符标记。非字符包含运算符、标点符号和数字等。非字符标记通常不提供日志异常检测所需信息,因此,将非字符标记删除,可以简化输入语义模型的日志,减少日志语句的复杂度,提高语义模型的运算效率及识别的准确性。示例性地,原始日志消息为:“block 348190.14.5namesystem.addstoredblock:blockmap updated:《3124452213421》is added to《1542890》size《18997462》”。则可以转
换为:“block*namesystem.addstoredblock:blockmap updated:《*》is added to《*》size《*》”。其中,符号*表示删除内容。
[0067]
s120,将句向量输入预先训练好的检测模型中,得到日志的检测结果。
[0068]
检测模型可以根据日志的语义以识别日志的异常。在本技术实施例中,检测模型可以是使用机器学习的方法对日志的特征向量进行学习,得到的一个用于检测日常日志的异常的模型。例如,检测模型可以是实现聚类分析、决策树、深度学习等方法的模型。
[0069]
示例性地,可以人工将训练用的日志标记为正常或异常后,提取日志的语义特征进行聚类分析,其中,可以对各个类型特征赋予不同权重,然后将特征向量进行归一化处理,之后计算特征向量之间的相似性(即距离大小),最后将相似性与预设阈值进行对比,判断日志是否为异常。上述仅为示例,不作为对本技术的限制。不同类型的检测模型可能有不同的训练方式,上述仅为示例,不作为对本技术的限制。
[0070]
本实施例中,检测模型可以是输出分类概率,即输出正常的概率和异常的概率,并将分类概率进行对比,将概率更高的分类作为检测结果。例如,正常概率为30%,异常概率为70%,则可以确定该日志异常。
[0071]
一实施例中,检测模型可以为训练好的transformer模型。
[0072]
transformer为一种基于注意力机制的深度学习模型,transformer模型的编码器和解码器配置有多头自注意力机制。多头自注意力机制允许输入序列中的每个位置与其他位置进行交互,捕捉到输入序列内部的依赖关系和重要特征。多头自注意力机制能够对输入序列进行多个不同位置的注意力计算,获得每个位置对其他位置的注意力权重,将所有注意力权重加权求和能够得到每个位置的上下文表示。
[0073]
在本实施例中,以transformer模型构建检测模型,则可以利用transformer模型的多头自注意力机制对句向量进行语义的检测,由此,在对日志进行异常检测时,多头自注意力机制可以增强句向量所表达语义与上下文之间的联系,以上下文来判断日志是否异常,可以提高日志检测的准确性。
[0074]
在一些实施例中,还可以在transformer模型的输出层配置异常的分类,例如,异常的分类包括但不限于事件计数错误、时间间隔错误、变量取值错误、事件序列错误、变量分布错误等。输出层可以根据预测结果与预设的异常分类进行匹配,从而输出对应的异常类型。其中,输出层还可以输出各异常分类的概率,将概率最高的异常分类作为transformer模型的输出。例如,事件计数错误概率为35%,时间间隔错误概率为25%,事件序列错误概率为20%,变量分布错误概率为20%,则确定日志异常分类为事件计数错误。
[0075]
在一些实施例中,transformer模型还可以设置其他的计算单元,以提高transformer模型对句向量的分类准确性。例如,可以引入残差连接(residual connection)、层归一化(layer normalization)等,残差连接可以解决深度神经网络训练过程中的梯度消失和梯度爆炸等问题,层归一化可以提高模型训练速度与模型的精度,使得模型输出结果更稳定。上述仅为示例,不作为对本技术的限制。
[0076]
需要说明的是,构建语义检测模型的方式可以参考现有技术,不同场景下可以根据需求选择不同类型的模型构建语义检测模型。本技术关于transformer模型未提及或具体说明的内容可以参考现有技术,为简洁说明,在此不再展开。
[0077]
一实施例中,检测模型可以通过以下方式得到:将训练集中的同一训练数据输入
多个预设检测模型中;其中,各预设检测模型中任一预设检测模型为:预设的初始检测模型,或者,在初始检测模型上丢弃部分计算单元得到的模型;且,各预设检测模型所具有的计算单元的组合不同;基于预设损失函数对各预设检测模型输出的分类概率进行计算,得到输出结果;基于输出结果更新初始检测模型;重复上述过程,直至完成预设次数的训练,得到训练好的检测模型。
[0078]
若训练集的数据有限,或者训练集中各类数据不够均衡,那么,使用训练集对神经网络模型进行训练,可能使得神经网络模型过拟合、共同适应或过渡适应等情况,使得训练完成的模型更偏向于输出某一类结果。而实际使用时,被检测的日志的数量众多,实际出现异常的情况可能由多种,实际检测的数据可能在训练集中未出现过或数量极少,则检测模型对于该类数据的异常检测可能出现预测的分类概率与该数据的实际分类不匹配的情况,影响异常检测的准确性。特别是在一些多分类的场景中,若预测概率偏向某一类,则有较大可能出现分类错误。
[0079]
因此,在本技术的实施例中,使用训练集对预设的初始检测模型进行训练时,可以丢弃初始检测模型的部分计算单元,使得丢弃计算单元后的检测模型与初始检测模型存在一些差异,且由于丢弃的计算单元不同,会使得丢弃计算单元后的检测模型所具有的计算单元的组合不同,相当于得到不同的预设检测模型。由此,可以将相同的数据分别输入不同的预设检测模型,得到不同预设检测模型的分类概率,再利用预设损失函数对不同预设检测模型输出的分类概率进行调整,得到一个统一的输出结果对初始检测模型进行校正。
[0080]
需要说明的是,本技术中的不同预设检测模型为同一初始检测模型丢弃不同计算单元得到,本质还是可以认定为是同一检测模型,不同预设检测模型仅是为了区分提出的概念。
[0081]
示例性地,一个初始检测模型包括100个计算单元,分别为1号至100号,则在进行训练时,可以先丢弃奇数号的计算单元,即1号、3号
…
99号计算单元,利用偶数号的计算单元对数据a进行检测,得到第一个输出p1,接着,再丢弃偶数号的计算单元,利用奇数号的计算单元对数据a进行检测,得到第二个输出p2,由此,再利用预设损失函数对p1和p2进行调整,得到输出结果p,并基于p对初始检测模型的权重等参数进行调整。上述仅为示例,实际丢弃计算单元时还可以有其他方式,如按序丢弃、随机丢弃等,在此不再展开。
[0082]
对于同一训练集,可以通过丢弃不同的计算单元,使得每次训练的检测模型存在差异,可以有效减小检测模型输出相同结果的可能,从而每次获得的输出结果均可以用于对检测模型进行不同的调整,减少检测模型出现过拟合、过度适应的情况。
[0083]
目前transformer模型的损失函数通常是对模型一个输出结果进行调整,而在本技术所提供的训练方法中,对于同一数据,需要重复输入检测模型中,即至少分两次输入检测模型,那么,若以常规的损失函数对进行调整,损失函数无法统一两次分类概率之间的差异,因此,在本技术实施例,还提供一种损失函数,以对上述训练过程中每两个预设检测模型输出的分类概率进行约束,使得两个分类概率统一为一个输出结果,一方面,提高训练效率,另一方面,使得不同检测模型能够尽可能使得分类概率一致。
[0084]
一实施例中,预设损失函数为:
[0085][0086]
其中,和分别表示不同预设检测模型输出分类概率的数据分布;i表示数据分布中的数据点,d
kl
表示kl散度分布计算,li表示预设损失函数,α为预设的散度系数。其中,kl散度分布计算可以参考现有技术,在此不再展开说明。
[0087]
预设损失函数可以综合不同预设检测模型的特征,利用预设损失函数计算得到的输出结果对初始检测模型进行调整,可以使得,通过上述预设损失函数,可以将不同预设检测模型输出的分类概率的数据分布约束为尽可能的一致,由此,可以降低检测模型出现过拟合的可能性,提高检测模型对不同日志进行异常检测的准确性。
[0088]
在一些实施例中,还可以使用不同的方法提高模型的训练效率,例如,将adam优化算法应用至模型训练中,以最小化预设损失函数。adam算法可以参考现有技术,在此不再赘述。
[0089]
基于同一发明构思,本技术实施例还提供一种日志检测装置200,请参阅图3,图3为本技术实施例提供日志检测装置200的示意图。日志检测装置200包括:向量化模块210和分类模块220。
[0090]
向量化模块210用于对日志进行语义向量化处理,得到日志对应的句向量;句向量用于表征日志的语义。
[0091]
分类模块220包括检测模型,分类模块220用于将句向量输入预先训练好的检测模型中,得到日志的检测结果。
[0092]
一实施例,向量化模块210还用于将日志输入预先训练好的语义模型,以获得语义模型的输出结果;语义模型用于将日志转换为句向量输出中,向量化模块210还包括预先训练好的语义模型。其中,语义模型可以是经对抗训练后的bert模型。
[0093]
一实施例中,语义模型包括词嵌入层,词嵌入层用于在句向量中添加位置编码,位置编码表征句向量所表征的语义在日志中的位置。
[0094]
一实施例中,分类模块220可以包括transformer模型构建的检测模型。
[0095]
一实施例中,向量化模块210还用于对日志进行以下至少一种预处理:基于分隔符拆分日志、将日志中的大写字母转换为小写字母、删除日志中的非字符标记。
[0096]
一实施例中,分类模块220中的检测模型通过以下方式得到:将训练集中的同一训练数据输入多个预设检测模型中;其中,各预设检测模型中任一预设检测模型为:预设的初始检测模型,或者,在初始检测模型上丢弃部分计算单元得到的模型;且,各预设检测模型所具有的计算单元的组合不同;基于预设损失函数对各预设检测模型输出的分类概率进行计算,得到输出结果;基于输出结果更新初始检测模型;重复上述过程,直至完成预设次数的训练,得到训练好的检测模型。
[0097]
一实施例中,预设损失函数为:
[0098][0099]
其中,和分别表示两次输出结果的数据分布;i表示数据分布中的数据点,d
kl
表示kl散度分布计算,li表示预设损失函数,α为预设的散度系数。
[0100]
本技术所提供的日志检测装置200所实现的功能与前述实施例所提供的日志检测方法相似,为简洁描述,在此不再展开,日志检测装置200所实现的功能可以参考前述的日志检测方法。
[0101]
请参照图4,图4为本技术实施例还提供一种电子设备的示意图,其可以作为前述的日志检测方法的执行主体,包括:处理器310和存储器320,处理器310和存储器320通信连接。
[0102]
其中,存储器320存储有可被处理器310执行的计算机可读指令,计算机可读指令可被处理器310执行,以使处理器310能够执行前述实施例中的日志检测方法。
[0103]
处理器310和存储器320包括但不限于通过通信总线连接。
[0104]
处理器310可以是一种集成电路芯片,具有信号处理能力。处理器310可以是通用处理器,包括cpu(central processing unit,中央处理器)、np(network processor,网络处理器)等;还可以是数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0105]
存储器320可以包括但不限于ram(random access memory,随机存取存储器),rom(read only memory,只读存储器),prom(programmable read-only memory,可编程只读存储器),eprom(erasable programmable read-only memory,可擦除编程只读存储器),eeprom(electric erasable programmable read-only memory,带电可擦除可编程只读存储器)等。
[0106]
可以理解,电子设备300还可以包括更多自身所需的通用模块,在本技术实施例不作一一介绍。
[0107]
基于同一发明构思,本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在计算机上运行时,使得计算机执行上述实施例中提供的方法。
[0108]
该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如dvd(digital videodisc,数字化视频光盘))、或者半导体介质(例如ssd(solid state disk,固态硬盘))等。
[0109]
所述日志检测方法如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或
部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0110]
在本技术所提供的实施例中,应该理解到,所揭露的方法和装置,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的。在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0111]
以上各实施例可以在不冲突的情况下自由组合,组合得到的实施例涵盖在本技术的保护范围之内。
[0112]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
[0113]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。