一种基于深度学习的系统状态诊断方法
技术领域
本发明涉及信息处理和人工智能的技术领域,更具体地,涉及一种基于深度学习的系统状态诊断方法。
背景技术
系统日志为诊断当前系统状态提供了重要的利用资源,而手动检测日志异常耗时,并且在实际操作中容易出错,在需要实时作出判断的场景下难以实施。而随着机器学习理论的发展和不断完善,在各种判断和分析场景下深度学习的表现都取得了超越人类智能的成绩,因此从高性能、低成本和高性价比的角度出发考虑,系统状态诊断开始被机器学习替代。其中,深度学习模型总是默认数据在类型上会有一个均衡的分布,因此均衡的数据能够让模型有更好的性能表现。但实际场景中,数据却总是呈现不平衡分布的状况,难以满足理想状况下的数据分布要求,进而影响对诊断的判断。
2019年2月15日公开的中国专利申请CN109343990A提供了一种基于深度学习的云计算系统自动化故障检测方法,该方法基于聚类将格式和内容相似的日志进行聚集,进而提取日志模式;将每个模式作为一个词,并将离散模式集作为一个文档,从而得到低维度特征空间;使用递归神经网络处理标记数据以得到跨序列的依赖性,从而生成信号以检测云计算系统异常。该发明使用递归神经网络处理标记数据,虽然考虑到短期与长期数据对数据分析与挖掘的影响,但存在实时性差的缺陷,并且依赖标记后的日志数据,数据分布区域稀疏,分类效果差,进而使诊断结果不准确。
发明内容
本发明为克服上述现有技术对系统状态诊断精度低的缺陷,提供一种基于深度学习的系统状态诊断方法,可以实时获取系统的当前状态,实时性高,结果准确。
为解决上述技术问题,本发明的技术方案如下:
本发明提供了一种基于深度学习的系统状态诊断方法,包括:
S1:获取系统的历史日志信息作为训练数据;
S2:将训练数据输入预设的对抗生成网络中,训练对抗生成网络中的判别器和生成器,获得训练好的判别器和生成器;
S3:将训练数据和噪声数据混合后输入训练好的生成器中,生成日志序列;
S4:对日志序列进行预处理,获得预处理后的日志序列;
S5:对预处理后的日志序列进行分类,获得类型特征,并将类型特征添加进预处理后的日志序列中,获得标注类型特征的日志序列;
S6:对标注类型特征的日志序列学习时空特征,获得系统正常状态下日志信息的类别出现的顺序;
S7:根据日志信息的类别出现的顺序,预测下一时间出现的日志信息的类型分布概率,基于分布概率划分置信区间;
S8:获取系统的实时日志信息,对实时日志信息进行处理,获得实时日志信息的真实类型特征;
S9:比较实时日志信息的真实类型特征和置信区间,获得系统的当前状态。
优选地,所述步骤S1中,获取系统的历史日志信息作为训练数据时,需要对系统的历史日志信息进行分割,具体为:
设置滑动窗口,滑动窗口大小为a,每次沿历史日志信息的时序方向移动b个单位,将历史日志信息分割成一系列上下文集合,将所述上下文集合作为训练数据。
优选地,所述步骤S2中,训练对抗生成网络中的判别器和生成器,获得训练好的生成器的具体方法为:
S2.1:固定生成器权重,将训练数据输入到判别器中进行训练,更新判别器权重;
S2.2:固定判别器权重,将训练数据输入到生成器中进行训练,更新生成器权重;
S2.3:重复S2.1-S2.2,直到生成器和判别器之间达到平衡。
实际情况中,训练数据呈现不平衡分布的状况,无法满足理想状况下数据的分布要求;对抗生成网络可以有效缓解数据分布不平衡的问题,生成符合真实数学分布的日志序列。
优选地,所述步骤S4中,对日志序列进行预处理,包括:
S4.1:对日志序列进行结构化处理,获得结构化日志序列;
S4.2:对结构化日志序列进行数值化处理,获得数值化日志序列。
日志序列以非结构化的文本数据形式呈现,需要将非结构化的日志序列解析转换为结构化的表示形式,以满足后续的数据要求。
优选地,所述步骤S4.1中,对日志序列进行结构化处理的具体方法为:
利用Drain解析器构建解析树,根据日志序列包含的日志令牌的长度和类别,寻找对应的日志事件,利用日志事件模板生成结构化日志序列。
优选地,所述步骤S4.2中,对结构化日志序列进行数值化处理的具体方法为:
利用文本词嵌入算法将结构化日志序列映射到数学空间上,获得每个词的向量表达形式,作为数值化日志序列。
词嵌入是单词的一种数值化表示方式,将一个单词映射到一个高维的词向量中,在这个向量空间中,词性相近的词会在距离上很接近,有利于提高训练的收敛速度和预测精度。
优选地,所述步骤S5中,对预处理后的日志序列进行分类,获得类型特征的具体方法为:
基于数值化日志序列,利用对比学习的方法,在对应的历史日志信息中随机选取c个词,在数学空间上为所述c个词分别寻找d个空间距离最近向量词汇;用所述向量词汇分别替换历史日志信息上的c个词,获得历史日志信息的多条增广日志数据;
由同一历史日志信息获得的增广日志数据和该历史日志信息视为正例,训练数据中的其他历史日志信息视为负例;对比学习形成一个球形空间,将互为正例的历史日志信息和增广日志数据在球形空间上聚合,并与负例拉远距离,获得球形空间上的日志类型分布,即类型特征。
由同一历史日志信息增广出来的增广日志数据在数学空间上会有与原历史日志信息更相似的数学表达,在数学空间上的相似使其天然的适于做原历史日志信息的正例;对比学习是自监督学习中的一种,不依赖标注数据,从无标注数据中自动学习特征知识,对比学习将所有数据均匀地投影到球形空间上,同类的数据在空间上尽可能聚合,不同类型的数据在空间上尽可能拉远,从而实现准确分类,获得类型特征,大大提高分类精确度。
优选地,所述步骤S6中,利用现有的bert模型对标注类型特征的日志序列学习时空特征,获得系统正常状态下日志信息类别出现的顺序。
优选地,所述步骤S8中,对实时日志信息进行处理包括:
S8.1:对实时日志信息进行结构化处理,获得结构互化实时日志信息;
S8.2:对结构互化实时日志信息进行数字化处理,获得数字化实时日志信息;
S8.3:对数字化实时日志信息进行对比学习,获得实时日志信息的真实类型特征。
优选地,所述步骤S9中,比较实时日志信息的真实类型特征和置信区间,获得系统的当前状态的具体方法为:
比较实时日志信息的真实类型特征和置信区间,当实时日志信息的真实类型特征符合置信区间上的预测类型特征时,系统状态正常;当实时日志信息的真实类型特征不符合置信区间上的预测类型特征时,系统状态异常。
与现有技术相比,本发明技术方案的有益效果是:
本发明首先利用系统的历史日志信息作为训练数据,训练对抗生成网络中的判别器和生成器,之后利用训练好的生成器生成符合真实数学分布的日志序列;对日志序列预处理后进行分类,获得类型特征,提高了分类精确度;对标注类型特征的日志序列学习时空特征,并对下一时间出现的日志信息的类型进行预测,时空特征反映出正常状态下日志信息的类别出现的顺序,预测精度高;基于下一时间出现的日志信息的类型的分布概率划分置信区间,比较实时日志信息的真实类型特征与置信区间,获得系统的当前状态。利用本发明对系统状态进行诊断时,可以实时获取系统的当前状态,实时性高,结果准确。
附图说明
图1为实施例所述的基于深度学习的系统状态诊断方法的流程图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例
本实施例提供了一种基于深度学习的系统状态诊断方法,如图1所示,包括:
S1:获取系统的历史日志信息作为训练数据;
获取系统的历史日志信息作为训练数据时,需要对系统的历史日志信息进行分割,具体为:
设置滑动窗口,滑动窗口大小为a,每次沿历史日志信息的时序方向移动b个单位,将历史日志信息分割成一系列上下文集合,将所述上下文集合作为训练数据。本实施例中,设置滑动窗口大小为3,每次沿历史日志信息的时序方向移动3个单位。
S2:将训练数据输入预设的对抗生成网络中,训练对抗生成网络中的判别器和生成器,获得训练好的判别器和生成器;具体方法为:
S2.1:固定生成器权重,将训练数据输入到判别器中进行训练,更新判别器权重;
S2.2:固定判别器权重,将训练数据输入到生成器中进行训练,更新生成器权重;
S2.3:重复S2.1-S2.2,直到生成器和判别器之间达到平衡。
S3:将训练数据和噪声数据混合后输入训练好的生成器中,生成日志序列;
实际情况中,训练数据呈现不平衡分布的状况,无法满足理想状况下数据的分布要求;对抗生成网络可以有效缓解数据分布不平衡的问题,生成符合真实数学分布的日志序列。
S4:对日志序列进行预处理,获得预处理后的日志序列;
所述预处理包括:
S4.1:对日志序列进行结构化处理,获得结构化日志序列;
利用Drain解析器构建解析树,根据日志序列包含的日志令牌的长度和类别,寻找对应的日志事件,利用日志事件模板生成结构化日志序列;
日志序列以非结构化的文本数据形式呈现,需要将非结构化的日志序列解析转换为结构化的表示形式,以满足后续的数据要求;
S4.2:对结构化日志序列进行数值化处理,获得数值化日志序列。
利用文本词嵌入算法将结构化日志序列映射到数学空间上,获得每个词的向量表达形式,作为数值化日志序列;
词嵌入是单词的一种数值化表示方式,将一个单词映射到一个高维的词向量中,在这个向量空间中,词性相近的词会在距离上很接近,有利于提高训练的收敛速度和预测精度。
S5:对预处理后的日志序列进行分类,获得类型特征,并将类型特征添加进预处理后的日志序列中,获得标注类型特征的日志序列;
对预处理后的日志序列进行分类,获得类型特征的具体方法为:
基于数值化日志序列,利用对比学习的方法,在对应的历史日志信息中随机选取c个词,在数学空间上为所述c个词分别寻找d个空间距离最近向量词汇;用所述向量词汇分别替换历史日志信息上的c个词,获得历史日志信息的多条增广日志数据;
本实施例中,在对应的历史日志信息中随机选取3个词,在数学空间上为所述3个词分别寻找3个空间距离最近向量词汇,用所述向量词汇分别替换历史日志信息上的3个词,获得历史日志信息的多条增广日志数据。
由同一历史日志信息获得的增广日志数据和该历史日志信息视为正例,训练数据中的其他历史日志信息视为负例;对比学习形成一个球形空间,将互为正例的历史日志信息和增广日志数据在球形空间上聚合,并与负例拉远距离,获得球形空间上的日志类型分布,即类型特征。
由同一历史日志信息增广出来的增广日志数据在数学空间上会有与原历史日志信息更相似的数学表达,在数学空间上的相似使其天然的适于做原历史日志信息的正例;对比学习是自监督学习中的一种,不依赖标注数据,从无标注数据中自动学习特征知识,对比学习将所有数据均匀地投影到球形空间上,同类的数据在空间上尽可能聚合,不同类型的数据在空间上尽可能拉远,从而实现准确分类,获得类型特征,大大提高分类精确度。
S6:对标注类型特征的日志序列学习时空特征,获得系统正常状态下日志信息的类别出现的顺序;
利用现有的bert模型对标注类型特征的日志序列学习时空特征。
S7:根据日志信息的类别出现的顺序,预测下一时间出现的日志信息的类型分布概率,基于分布概率划分置信区间;
本实施例中,将下一时间可能出现的日志信息的类型概率最高的前3个类型作为置信区间。
S8:获取系统的实时日志信息,对实时日志信息进行处理,获得实时日志信息的真实类型特征;
对实时日志信息进行处理包括:
S8.1:对实时日志信息进行结构化处理,获得结构互化实时日志信息;
S8.2:对结构互化实时日志信息进行数字化处理,获得数字化实时日志信息;
S8.3:对数字化实时日志信息进行对比学习,获得实时日志信息的真实类型特征。
S9:比较实时日志信息的真实类型特征和置信区间,获得系统的当前状态。
具体为:比较实时日志信息的真实类型特征和置信区间,当实时日志信息的真实类型特征符合置信区间上的预测类型特征时,系统状态正常;当实时日志信息的真实类型特征不符合置信区间上的预测类型特征时,系统状态异常。
本实施例选取系统的历史日志信息,设置一个滑动窗口,滑动窗口大小为3,每次沿着历史日志信息的时序方向移动三个单位,将历史日志信息按分割成一系列上下文的集合后作为训练数据,输入对抗生成网络;固定住生成器权重,利用训练数据对判别器进行训练,并更新判别器权重。再固定住判别器的权重,利用训练数据对生成器进行训练,更新生成器权重。将训练数据和噪声数据混合输入训练好的生成器中,有效缓解数据分布不平衡的问题,生成符合真实数学分布的日志序列;日志序列以非结构化的文本数据呈现,需要利用Drain解析器对日志序列进行解析准换,处理成结构化的数据表示;再利用文本词嵌入的方法对结构化日志序列进行数值化处理,映射到数学空间上,将每一个词映射到一个高维的词向量中,形成数值化日志序列,在这个向量空间中,词性相近的词会在距离上很接近,有利于提高训练的收敛速度和预测精度;基于数值化日志序列,利用对比学习的方法对其进行分类,在对应的历史日志信息中随机选取3个词,在数学空间上为所述3个词分别寻找3个空间距离最近向量词汇;用所述向量词汇分别替换历史日志信息上的3个词,获得历史日志信息的多条增广日志数据;对比学习形成一个球形空间,将互为正例的历史日志信息和增广日志数据在球形空间上聚合,并与负例拉远距离,获得球形空间上的日志类型分布,即类型特征,能够有效提高分类精确度;将类型特征添加进预处理后的日志序列中,获得标注类型特征的日志序列,利用现有的bert模型对标注类型特征的日志序列学习时空特征,并对下一时间出现的日志信息的类型进行预测,时空特征反映出正常状态下日志信息的类别出现的顺序,预测精度高;将下一时间可能出现的日志信息的类型概率最高的前3个类型作为置信区间,比较实时日志信息的真实类型特征与置信区间,当实时日志信息的真实类型特征符合置信区间上的预测类型特征时,系统状态正常;当实时日志信息的真实类型特征不符合置信区间上的预测类型特征时,系统状态异常。利用本实施例对系统状态进行诊断时,可以实时获取系统的当前状态,实时性高,结果准确。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。