结合图结构学习与图注意力网络的多维时序异常检测方法

文档序号:35932352发布日期:2023-11-05 10:05阅读:86来源:国知局
结合图结构学习与图注意力网络的多维时序异常检测方法

本发明涉及时间序列(简称时序)异常检测,特指一种结合图结构学习与图注意力网络的多维时序异常检测方法。


背景技术:

1、多维时序异常检测,英文名称multivariate time series anomaly detection,是指从海量的多维时序中识别和挖掘不正常的数据或事件的过程。随着数据中心的大型化和复杂化,it系统的服务器、存储设备的数量逐渐扩大,众多相互关联的监测设备随着服务器系统的运行不断产生海量的多维时序数据,例如体现系统硬件(服务器、路由器等)健康状态的指标,包括cpu/内存占用率、网卡吞吐率等。多维时序异常检测方法以数据驱动的角度及时发现时序数据中的异常并提前预警,避免造成无法弥补的损失,为系统的可用性、可靠性和稳定性提供保证。

2、基于传统机器学习的方法进行多维时序异常检测的典型方法是iforest算法(详见文献“isolation-based anomaly detection”,2012,“基于孤立的异常检测”),该方法通过对数据空间的随机切分,刻画数据样本跟其他样本的疏离程度,从而判定数据的异常程度。然而,iforest算法忽略了多维时序数据独特的时间维度属性,导致无法对时序维度异常的多维时序数据进行检测。

3、由于深度学习技术的巨大潜力,许多基于神经网络的多维时序异常检测方法被陆续提出。其中,usad算法(详见文献“usad:unsupervised anomaly detection onmultivariate time series”,2020,“usad:多维时序数据无监督异常检测”)基于自编码器架构,利用对抗性训练学习并放大包含异常多维时序数据的重构误差,有效建模了多维时序数据时间关联性。omnianomaly算法(详见文献“robust anomaly detection formultivariate time series through stochastic recurrent neural network[c]”,2019,“基于随机递归神经网络的多维时序鲁棒异常检测”)将门控递归单元和变分自动编码器相结合,学习多维时序的正态分布,并利用重构概率进行异常检测。然而,由于神经网络算法是黑盒算法,其将多维时序数据不同维度间的依赖关系封装进隐藏层,形成一种隐藏状态。大多数方法无法明确的对具有潜在依赖关系的时序维度进行建模,而依赖关系对多维时序异常检测是有辅助与提升的。近年来,图神经网络gnn(即graph neural network)在处理图结构中节点之间的依赖关系和消息传递方面取得了巨大的成功。为了充分利用多维时序中各个维度之间的依赖关系,近期已经有相关工作将图神经网络技术应用于多维时序的研究之中。基于图神经网络的多维时序异常检测方法包括以下步骤:

4、第一步,从多维时序数据中学习并构建一个未定义的图结构,其中图的“节点”和“边”分别表示多维时序中的各个维度以及维度之间的依赖关系;

5、第二步,上述构建的图结构和多维时序数据共同作为图神经网络的输入,对目标系统(如:大规模服务器系统)产生的多维时序数据进行异常检测。

6、2020年,mtgnn算法(详见文献“connecting the dots:multivariate timeseries forecasting with graph neural networks[c]”,2020,“连接点:利用图神经网络进行多维时序预测”)从图结构的角度利用图神经网络对多维时序数据展开研究。该方法提出了一个新的图学习模块来捕获各个维度之间隐藏的依赖关系,同时提出一个用于建模多维时序数据与图结构的联合框架。然而,大多数基于图神经网络的多维时序异常检测方法都侧重于如何构建复杂的、“引人注目”的图网络结构,而忽视了如何从多维时序提取高质量图结构以作为图神经网络输入的基础。具体而言,大多数方法是通过计算维度向量之间的相似度(或其他距离度量),并根据topk原则确定相关联的邻居节点并构建图结构,以输入至图神经网络。这种方法具有以下缺陷:(1)空间距离上的接近并不意味着拓扑结构中存在稳固的依赖关系,此方法无法有效提取时序各个维度间的潜在复杂依赖关系,无法检测表现于多维度依赖关系异常的异常数据;(2)大多数研究所提取的图结构只表明了维度之间依赖关系的方向,而未对依赖关系的强度进行量化,同样影响异常检测任务的准确度;(3)图结构的稀疏性大多取决于topk原则中参数k的取值,导致异常检测任务的准确度严重依赖于参数的设置。

7、综上所述,基于深度学习的多维时序异常检测方法虽然能够捕获目标系统中复杂的时序分布,但对时序各个维度间的潜在复杂依赖关系关注不足,进而导致无法检测表现于多维依赖关系异常的异常数据,或因时间序列模式提取的不准确而造成大量误报。因此,如何提出并利用多维时序数据中维度间的依赖关系,提高多维时序异常检测的准确度,是本领域研究人员正在研究的热点问题。


技术实现思路

1、本发明要解决的技术问题是提供一种结合图结构学习与图注意力网络的多维时序异常检测方法,利用图结构学习从数据驱动的角度充分捕获多维时序中各个维度之间的依赖关系,并利用图注意力网络计算图结构中相邻节点(即:有依赖关系的维度)的注意力函数,在对各个维度的未来趋势进行预测的基础下进行多维时序异常检测,使得能够检测表现于多维依赖关系异常的异常数据,提高时间序列模式提取的准确性和多维时序异常检测的准确度,减少误报,为目标系统的可用性、可靠性和稳定性提供保证。

2、为解决上述技术问题,本发明技术方案是:

3、构建由历史多维时序数据库、系统输入模块、预处理模块、多维时序检测模型和异常定位模块组成的结合图结构学习与图注意力网络的多维时序异常检测系统。系统输入模块获取历史多维时序值集合mtrain,预处理模块对mtrain进行切分,得到历史多维时序片段集合strain。使用adam优化方法和strain对异常检测系统进行训练。训练后的异常检测系统对目标系统进行异常检测。本发明通过多维时序检测模型计算维度之间可变时滞传递熵并构建邻接矩阵,挖掘多维时序片段内不同维度间依赖关系,提高了检测准确度。

4、本发明包括以下步骤:

5、第一步:构建结合图结构学习与图注意力网络的多维时序异常检测系统(简称异常检测系统)。该异常检测系统由历史多维时序数据库、系统输入模块、预处理模块、多维时序检测模型和异常定位模块组成。

6、历史多维时序数据库与系统输入模块相连,该数据库存储相同时间间隔的历史多维时序数据,用于训练多维时序检测模型。历史多维时序数据库的一条历史多维时序数据为一个二元组(t,value),其中:t为该历史多维时序数据的记录时间;value向量是维度为n的值向量,value的第n个维度表示目标系统中第n个状态指标的值,n为正整数且1≤n≤n;令历史多维时序数据库包含的历史多维时序数据总数为ttrain,ttrain和n均为正整数。例如,目标系统是大规模服务器系统,value表示大规模服务器系统各部件状态的指标如cpu占用率、cpu温度、内存占用率、显卡温度、网络吞吐率等值,cpu占用率、cpu温度、内存占用率、显卡温度、网络吞吐率构成维度为5(n=5)的值向量value。

7、系统输入模块与历史多维时序数据库、目标系统、预处理模块和多维时序检测模型相连。目标系统是异常检测系统的检测对象,目标系统内部传感器会以相同时间间隔记录维度为n的待检测多维时序数据值向量,一条待检测多维时序数据为一个二元组(t,value),t和value的含义与历史多维时序数据库的含义相同,令目标系统包含的待检测多维时序数据总数为tdetect,tdetect为正整数。在异常检测系统训练阶段,系统输入模块从历史多维时序数据库读取ttrain条历史多维时序数据的value向量,得到历史多维时序值集合,将历史多维时序值集合发送给预处理模块和多维时序检测模型。在对目标系统进行异常检测时,系统输入模块读取目标系统记录的tdetect条待检测多维时序数据的value向量,得到待检测多维时序值集合,将待检测多维时序值集合发送给预处理模块和多维时序检测模型。

8、预处理模块与系统输入模块和多维时序检测模型相连。在异常检测系统训练阶段,预处理模块从系统输入模块接收历史多维时序值集合,将接收的历史多维时序值集合切分为历史多维时序片段,每个多维时序片段长度为w,得到历史多维时序片段集合,将历史多维时序片段集合发送给多维时序检测模型。在对目标系统进行异常检测时,预处理模块从系统输入模块接收待检测多维时序值集合,将接收的待检测多维时序值集合切分为长度为w的待检测多维时序片段,得到待检测多维时序片段集合,将待检测多维时序片段集合发送给多维时序检测模型。

9、多维时序检测模型与系统输入模块、预处理模块和异常定位模块相连。多维时序检测模型由模型输入模块、时序离散化模块、可变时滞传递熵计算模块、邻接矩阵构建模块、图注意力特征提取模块和全连接输出模块组成,其中图注意力特征提取模块是图注意力网络,全连接输出模块是全连接层网络。在异常检测系统训练阶段,模型输入模块从预处理模块接收历史多维时序片段集合,按批次选取历史多维时序片段集合的子集作为历史多维时序片段训练集,将历史多维时序片段训练集发送给时序离散化模块和图注意力特征提取模块;时序离散化模块从模型输入模块接收历史多维时序片段训练集,利用sax方法(详见文献“experiencing sax:a novel symbolic representation oftime series[j]”,2007,“感受sax:时间序列的一种新颖的符号表示”)对历史多维时序片段训练集进行时间序列离散化处理,得到离散化后的历史多维时序片段集合,将离散化后的历史多维时序片段集合发送给可变时滞传递熵计算模块;可变时滞传递熵计算模块从时序离散化模块接收离散化后的历史多维时序片段集合,对离散化后的历史多维时序片段集合进行可变时滞传递熵计算,得到历史多维时序传递熵矩阵集合,将历史多维时序传递熵矩阵集合发送给邻接矩阵构建模块;邻接矩阵构建模块从可变时滞传递熵计算模块接收历史多维时序传递熵矩阵集合,对历史多维时序传递熵矩阵集合进行稀疏化处理并使用softmax函数进行归一化,得到历史多维时序邻接矩阵集合,将历史多维时序邻接矩阵集合发送给图注意力特征提取模块;图注意力特征提取模块从模型输入模块接收历史多维时序片段训练集,从邻接矩阵构建模块接收历史多维时序邻接矩阵集合,利用图注意力机制对历史多维时序片段训练集和历史多维时序邻接矩阵集合进行计算,得到历史多维时序注意力表征矩阵集合,将历史多维时序注意力表征矩阵集合发送给全连接输出模块;全连接输出模块从系统输入模块接收历史多维时序值集合,从图注意力特征提取模块接收历史多维时序注意力表征矩阵集合,利用全连接层网络对历史多维时序注意力表征矩阵集合进行预测,得到历史多维时序预测值矩阵,将历史多维时序预测值矩阵和从历史多维时序值集合提取的历史多维时序真实值矩阵之间的欧氏距离作为损失值进行最小化优化,将优化后得到的训练好的多维时序检测模型参数进行保存。在对目标系统进行异常检测时,多维时序检测模型的模型输入模块从预处理模块接收待检测多维时序片段集合,将待检测多维时序片段集合发送给时序离散化模块和图注意力特征提取模块;时序离散化模块从模型输入模块接收待检测多维时序片段集合,利用sax方法对待检测多维时序片段集合进行时间序列离散化处理,得到离散化后的待检测多维时序片段集合,将离散化后的待检测多维时序片段集合发送给可变时滞传递熵计算模块;可变时滞传递熵计算模块从时序离散化模块接收离散化后的待检测多维时序片段集合,对离散化后的待检测多维时序片段集合进行可变时滞传递熵计算,得到待检测多维时序传递熵矩阵集合,将待检测多维时序传递熵矩阵集合发送给邻接矩阵构建模块;邻接矩阵构建模块从可变时滞传递熵计算模块接收待检测多维时序传递熵矩阵集合,对待检测多维时序传递熵矩阵集合进行稀疏化处理并使用softmax函数进行归一化,得到待检测多维时序邻接矩阵集合,将待检测多维时序邻接矩阵集合发送给图注意力特征提取模块;图注意力特征提取模块从模型输入模块接收待检测多维时序片段集合,从邻接矩阵构建模块接收待检测多维时序邻接矩阵集合,利用图注意力机制对待检测多维时序片段集合和待检测多维时序邻接矩阵集合进行计算,得到待检测多维时序注意力表征矩阵集合,将待检测多维时序注意力表征矩阵集合发送给全连接输出模块;全连接输出模块从系统输入模块接收待检测多维时序值集合,从图注意力特征提取模块接收待检测多维时序注意力表征矩阵集合,利用全连接层网络对待检测多维时序注意力表征矩阵集合进行预测,得到待检测多维时序预测值矩阵,将待检测多维时序预测值矩阵和从待检测多维时序值集合提取的待检测多维时序真实值矩阵之间的曼哈顿距离作为异常分数,得到异常分数矩阵,将异常分数矩阵发送给异常定位模块。

10、异常定位模块与多维时序检测模型相连。异常定位模块由阈值自动选择模块和异常判定模块组成。在对目标系统进行异常检测时,阈值自动选择模块从多维时序检测模型接收异常分数矩阵,采用evt方法(详见文献“anomaly detection in streams withextreme value theory[c]”,2017,“基于极值理论的流异常检测”)对异常分数进行分析,得到自适应变化阈值,将自适应变化阈值发送给异常判定模块。异常判定模块从阈值自动选择模块接收自适应变化阈值,从多维时序检测模型接收异常分数矩阵,通过判断异常分数矩阵内不同时刻对应的异常分数是否超过自适应变化阈值以确定目标系统在对应时刻是否为异常。若目标系统异常,异常检测系统定位最大异常维度并发送异常告警信息。

11、第二步:系统输入模块访问历史多维时序数据库,读取ttrain条历史多维时序数据的值向量value,得到历史多维时序值集合mtrain,valuei表示第i个时间点n个维度的值向量,valuei=[valuei,1,…,valuei,n,…,valuei,n],i为正整数且1≤i≤ttrain,valuei,n表示第i个时间点第n个维度的值(即目标系统中第i个时间点第n个状态指标的值),n为正整数且1≤n≤n,将mtrain发送给预处理模块和多维时序检测模型。

12、第三步:预处理模块利用序列数据切分方法对mtrain进行切分,将历史多维时序数据分别与其前(w-1)个时间点的多维时序数据组成历史多维时序片段,得到由长度为w的历史多维时序片段组成的历史多维时序片段集合strain,将strain发送给多维时序检测模型,w为正整数。方法是:

13、3.1初始化strain为空集合,令变量i=1。

14、3.2取mtrain中第i项valuei至第(i+w-1)项valuei+w-1,组成历史多维时序片段si:

15、si=[valuei;valvei+1;…;valvei+w-1]

16、si是由值向量valuei,valuei+1,…,valuei+w-1并联得到的矩阵。

17、3.3将si加入集合strain。

18、3.4令i=i+1。

19、3.5若(i+w-1)≥ttrain,说明预处理模块对mtrain切分完毕,得到包含(ttrain-w+1)个元素的strain,转3.6;若(i+w-1)<ttrain,说明预处理模块未对mtrain切分完毕,转3.2。

20、3.6预处理模块将strain发送给多维时序检测模型。

21、第四步:使用adam优化方法(详见文献“adam:a method for stochasticoptimization”,2014,“adam:一种随机优化的方法”)和strain对第一步构建的异常检测系统中的多维时序检测模型进行训练,通过最小化损失值得到多维时序检测模型的最佳参数。方法是:

22、4.1初始化多维时序检测模型参数,将多维时序检测模型中图注意力特征提取模块的图注意力网络和全连接输出模块的全连接层网络参数都初始化为[0,1]之间的随机数。

23、4.2设置网络模型学习率(rate)为0.001,批处理大小(size)为32,size表示第n_b批训练中包含的多维时序片段数目,多维时序片段的长度(w)为100,训练轮数(epoch)为20。

24、4.3初始化训练迭代参数为n_e=1,初始化批次迭代参数n_b=1(n_b表示当前批次是当前训练迭代轮内的第n_b个批次),训练最大批次大小表示对(ttrain-w+1)/size向下取整,n_b为正整数且1≤n_b≤max_b。

25、4.4对多维时序检测模型进行训练,不断最小化损失值并更新优化模型参数,直到满足训练轮数epoch,终止训练。方法是:

26、4.4.1多维时序检测模型从预处理模块接收strain。

27、4.4.2模型输入模块选取strain中第(n_b·size-size+1)项sn_b·size-size+1至第(n_b·size)项sn_b·size共size个多维时序片段作为第n_b批训练数据,令为历史多维时序片段训练集b:

28、b={sn_b.size-size+1,sn_b·size-size+2,…,sn_b·size}

29、4.4.3模型输入模块将b发送给时序离散化模块和图注意力特征提取模块。

30、4.4.4时序离散化模块采用时序离散化处理方法对从模型输入模块接收的b进行时序离散化处理,得到离散化后的历史多维时序片段集合dtrain。方法是:

31、4.4.4.1初始化dtrain为空集合,令变量size=1。

32、4.4.4.2时序离散化模块选取b中第size项sn_b·size-size+size,令为bsize:

33、bsize=sn_b·size-size+size=[valuen_b.size-size+size;…;valuen_b·size-size+size+w-1]bsize为w×n的二维矩阵。

34、4.4.4.3令变量n=1。

35、4.4.4.4提取bsize中第n列向量,令为bsize,n:

36、bsize,n

37、=[valuen_b·size-size+size,n,valuen_b.size-size+size+1,n,…,valuen_b.size-size+size+w-1,n]

38、bsize,n是维度为w的一维向量。

39、4.4.4.5采用sax算法(详见文献“experiencing sax:a novel symbolicrepresentation of time series[j]”,2007,“感受sax:时序的一种新颖的符号表示”)对bsize,n进行离散化,得到离散形式的值向量dsize,n,dsize,n是维度为w的一维向量。

40、4.4.4.6令n=n+1。

41、4.4.4.7若n≤n,说明时序离散化模块未对bsize离散化完毕,转4.4.4.4;若n>n,说明时序离散化模块对bsize离散化完毕,得到矩阵dsize:

42、dsize=[dsize,1;dsize,2;…;dsize,n]t

43、dsize是由值向量dsize,1,dsize,2,…,dsize,n并联再转置得到的矩阵,dsize为w×n的二维矩阵,且[]t为矩阵转置操作,转4.4.4.8。

44、4.4.4.8将dsize加入集合dtrain。

45、4.4.4.9令size=size+1。

46、4.4.4.10若size≤size,说明时序离散化模块未对b离散化完毕,转4.4.4.2;若size>size,说明时序离散化模块对b离散化完毕,得到dtrain,转4.4.4.11。

47、4.4.4.11时序离散化模块将dtrain发送给可变时滞传递熵计算模块。

48、4.4.5可变时滞传递熵计算模块采用可变时滞传递熵计算方法对从时序离散化模块接收的dtrain进行可变时滞传递熵计算,得到历史多维时序传递熵矩阵集合atrain。方法是:

49、4.4.5.1初始化atrain为空集合,令变量size=1。

50、4.4.5.2可变时滞传递熵计算模块选取dtrain中第size项,令为dsize,dsize的维度为w×n。

51、4.4.5.3初始化a是维度为n×n且值全为0的二维矩阵,令变量n1=1。

52、4.4.5.4提取dsize中第n1列向量,令为是维度为w的一维向量。

53、4.4.5.5令变量n2=n1+1。

54、4.4.5.6提取dsize中第n2列向量,令为是维度为w的一维向量。

55、4.4.5.7采用vl_te算法(详见文献“variable-lag granger causality andtransfer entropy for time series analysis[j]”,2021,“时序分析的可变时滞格兰杰因果关系和传递熵”)计算和之间的可变时滞传递熵,得到第n1维度对第n2维度的可变时滞传递熵值以及第n2维度对第n1维度的可变时滞传递熵值

56、4.4.5.8令n2=n2+1。

57、4.4.5.9若n2≤n,说明可变时滞传递熵计算模块未对第n1维度的可变时滞传递熵值计算完毕,转4.4.5.6;若n2>n,说明可变时滞传递熵计算模块对第n1维度的可变时滞传递熵值计算完毕,转4.4.5.10。

58、4.4.5.10令n1=n1+1。

59、4.4.5.11若n1≤n,说明可变时滞传递熵计算模块未对dsize中任意两个维度之间的可变时滞传递熵值计算完毕,转4.4.5.4;若n1>n,说明可变时滞传递熵计算模块对dsize中任意两个维度之间的可变时滞传递熵值计算完毕,得到a,转4.4.5.12。

60、4.4.5.12将a加入集合atrain。

61、4.4.5.13令size=size+1。

62、4.4.5.14若size≤size,说明可变时滞传递熵计算模块未对dtrain中全部片段计算完毕,转4.4.5.2;若size>size,说明可变时滞传递熵计算模块对dtrain中全部片段计算完毕,得到atrain,转4.4.5.15。

63、4.4.5.15可变时滞传递熵计算模块将atrain发送给邻接矩阵构建模块。

64、4.4.6邻接矩阵构建模块采用邻接矩阵构建方法对从可变时滞传递熵计算模块接收的atrain进行稀疏化处理并使用softmax函数进行归一化,得到历史多维时序邻接矩阵集合方法是:

65、4.4.6.1初始化为空集合,令变量size=1。

66、4.4.6.2邻接矩阵构建模块选取atrain中第size项,令为asize,asize的维度为n×n。

67、4.4.6.3设置稀疏比例保留asize中值最高的前优选为20%,即保留asize中值最高的前20%,将asize中其余值置为0,得到稀疏传递熵矩阵a′size,a′size的维度为n×n。

68、4.4.6.4初始化a*为维度为n×n且值全为0的二维矩阵,令变量n1=1。

69、4.4.6.5提取a′size中第n1行向量,令为是维度为n的一维向量。

70、4.4.6.6初始化a′size中第n1个维度的邻居维度集合nssize(n1)为空集合,令变量n2=1。

71、4.4.6.7提取中第n2个值

72、4.4.6.8若说明第n1个维度和第n2个维度之间存在依赖关系,将n2加入集合nssize(n1),转4.4.6.9;若说明第n1个维度和第n2个维度之间不存在依赖关系,直接转4.4.6.9;

73、4.4.6.9令n2=n2+1。

74、4.4.6.10若n2≤n,说明邻接矩阵构建模块未对第n1维度的邻居维度集合计算完毕,转4.4.6.7;若n2>n,说明邻接矩阵构建模块对第n1维度的邻居维度集合计算完毕,得到nssize(n1),转4.4.6.11。

75、4.4.6.11令变量n3=1。

76、4.4.6.12若n3∈nssize(n1),使用softmax函数对进行归一化,得到第n1个维度与第n3个维度之间依赖关系的强度

77、

78、为[0,1]之间的实数,越大,代表第n3个维度对第n1个维度的依赖强度越大,转4.4.6.13。若则令转4.4.6.13。

79、4.4.6.13令n3=n3+1。

80、4.4.6.14若n3≤n,说明邻接矩阵构建模块未对a′size的第n1个维度归一化完毕,转4.4.6.12;若n3>n,说明邻接矩阵构建模块对a′size的第n1个维度归一化完毕,转4.4.6.15。

81、4.4.6.15令n1=n1+1。

82、4.4.6.16若n1≤n,说明邻接矩阵构建模块未对a′size归一化完毕,转4.4.6.5;若n1>n,说明邻接矩阵构建模块对a′size归一化完毕,得到a*,转4.4.6.17。

83、4.4.6.17将a*加入集合

84、4.4.6.18令size=size+1。

85、4.4.6.19若size≤size,说明邻接矩阵构建模块未对atrain中全部矩阵处理完毕,转4.4.6.2;若size>size,说明邻接矩阵构建模块对attain中全部矩阵处理完毕,得到转4.4.6.20。

86、4.4.6.20邻接矩阵构建模块将发送给图注意力特征提取模块。

87、4.4.7图注意力特征提取模块从邻接矩阵构建模块接收从模型输入模块接收b,采用图注意力机制计算方法对和b进行图注意力表征,得到历史多维时序注意力表征矩阵集合ztrain。方法是:

88、4.4.7.1初始化ztrain为空集合,令变量size=1。

89、4.4.7.2邻接矩阵构建模块选取中第size项,令为的维度为n×n。

90、4.4.7.3邻接矩阵构建模块选取b中第size项,令为bsize,bsize的维度为w×n。

91、4.4.7.4令变量n1=1。

92、4.4.7.5提取中第n1行向量,令为是维度为n的一维向量。

93、4.4.7.6提取bsize中第n1列向量,令为是维度为w的一维向量。

94、4.4.7.7令中第n1个维度的注意力维度集合为且

95、4.4.7.8令变量n2=1。

96、4.4.7.9若说明第n2个维度不是第n1个维度的注意力维度,转4.4.7.11;若提取bsize中第n2列向量,令为是维度为w的一维向量,转4.4.7.10。

97、4.4.7.10计算和之间的注意力值

98、

99、其中,leakyrelu是非线性激活函数,asize是注意力机制的可学习系数向量,表示向量拼接,weightsize是每个维度共享权重的可训练线性变换矩阵。

100、4.4.7.11令n2=n2+1。

101、4.4.7.12若n2≤n,说明图注意力特征提取模块未对第n1个维度与其邻居维度间的注意力值计算完毕,转4.4.7.9;若n2>n,说明图注意力特征提取模块对第n1个维度与其邻居维度间的注意力值计算完毕,转4.4.7.13。

102、4.4.7.13令变量n3=1。

103、4.4.7.14若说明第n3个维度不是第n1个维度的注意力维度,转4.4.7.15;若使用softmax函数进行归一化,得到第n3个维度对第n1个维度的注意力系数

104、

105、为[0,1]之间的实数,越大,代表第n3个维度对第n1个维度的注意力权重越大。

106、4.4.7.15令n3=n3+1。

107、4.4.7.16若n3≤n,说明图注意力特征提取模块未对第n1个维度与其注意力维度间的注意力系数计算完毕,转4.4.7.14;若n3>n,说明图注意力特征提取模块对第n1个维度与其注意力维度间的注意力系数计算完毕,转4.4.7.17。

108、4.4.7.17计算得到的注意力表征向量

109、

110、是维度为w的一维向量。

111、4.4.7.18令n1=n1+1。

112、4.4.7.19若n1≤n,说明图注意力特征提取模块未完成所有维度的注意力表征计算,转4.4.7.5;若n1>n,说明图注意力特征提取模块完成所有维度的注意力表征计算,得到zsize,zsize=[zsize,1;zsize,2;…;zsize,n]t,zsize的维度是w×n,转4.4.7.20。

113、4.4.7.20将zsize加入集合ztrain。

114、4.4.7.21令size=size+1。

115、4.4.7.22若size≤size,说明图注意力特征提取模块未对b中全部片段图注意力表征完毕,转4.4.7.2;若size>size,说明图注意力特征提取模块对b中全部片段图注意力表征完毕,得到ztrain,转4.4.7.23。

116、4.4.7.23图注意力特征提取模块将ztrain发送给全连接输出模块。

117、4.4.8全连接输出模块从图注意力特征提取模块接收ztrain,采用全连接预测方法对ztrain进行预测,得到历史多维时序预测值矩阵ptrain。方法是:

118、4.4.8.1令变量size=1。

119、4.4.8.2全连接输出模块选取ztrain中第size项,令为zsize,zsize的维度为w×n。

120、4.4.8.3全连接输出模块利用size个堆叠的全连接层网络fθ对zsize进行预测,得到历史多维时序预测值向量psize:

121、

122、psize为历史多维时序预测值向量,psize是维度为n的一维向量,是size个堆叠的全连接层网络fθ第size个网络,zsize,n是zsize中第n个列向量,zsize,n是维度为w的一维向量,n是正整数且1≤n≤n。

123、4.4.8.4令size=size+1。

124、4.4.8.5若size≤size,说明全连接输出模块未对ztrain中的全部片段预测完毕,转4.4.8.2;若size>size,说明全连接输出模块对ztrain中的全部片段预测完毕,得到历史多维时序预测值矩阵ptrain,ptrain=[p1;…;psize;…;psize],ptrain的维度是size×n。

125、4.4.9全连接输出模块从系统输入模块接收mtrain,取mtrain中第(n_b·size-size+w+1)项valuen_b·size-size+w+1至第(n_b·size+w)项valuen_b·size+w,组成历史多维时序真实值矩阵fn_b,使用ptrain和fn_b之间的欧氏距离作为损失值,得到第n_e个训练迭代轮内的第n_b个批次的损失值方法是:

126、4.4.9.1取mtrain中第(n_b·size-size+w+1)项valuen_b·size-size+w+1至第(n_b·size+w)项valuen_b·size+w,组成真实值矩阵fn_b:

127、fn_b=[valuen_b·size-size+w+1;valuen_b·size-size+w+2;…;valuen_b.size+w]

128、fn_b是由值向量valuen_b.size-size+w+1,valuen_b·size-size+w+2,…,valuen_b·size+w并联得到的第n_b批次的真实值矩阵,fn_b的维度是size×n。

129、4.4.9.2计算ptrain与fn_b之间的欧式距离,得到第n_e个训练迭代轮内的第n_b个批次的损失值

130、

131、||ptrain-fn_b||2为矩阵ptrain和矩阵fn_b之间的2-范数,即欧式距离,转4.4.10。

132、4.4.10使用adam优化方法(详见文献“adam:a method for stochasticoptimization”,2014,“adam:一种随机优化的方法”)对最小化,然后以反向传播的方式更新多维时序检测模型参数。

133、4.4.11令n_b=n_b+1。

134、4.4.12若n_b≤max_b,转4.4.2,继续下一个批次训练;若n_b>max_b,说明当前第n_e训练轮次训练完毕,转4.4.13。

135、4.4.13计算第n_e训练轮次损失值的平均值lossne:

136、

137、4.4.14令n_e=n_e+1。

138、4.4.15若n_e≤epoch,重新令n_b=1,转4.4.1,继续进行训练;若n_e>epoch,训练结束,得到训练后的多维时序检测模型参数。

139、第五步:将训练后的多维时序检测模型参数加载到异常检测系统的多维时序检测模型之中,得到训练后的异常检测系统。

140、第六步:训练后的异常检测系统对目标系统进行多维时序异常检测。方法是:

141、6.1系统输入模块访问目标系统,读取目标系统记录的tdetect条待检测多维时序数据的value向量,令待检测多维时序值集合maetect,valuej表示第j个时间点n个维度的值向量,j为正整数且1≤j≤tdetect,将mdetect发送给预处理模块和多维时序检测模型。

142、6.2预处理模块利用第三步所述的序列数据切分方法对mdetect进行切分,将所有待检测多维时序数据分别与其前(w-1)个时间点的多维时序数据组成待检测多维时序片段,得到待检测多维时序片段集合sdetect,令sdetect中多维时序片段数目为t′detect,t′detect=tdetect-w+1,将sdetect发送给多维时序检测模型。

143、6.3多维时序检测模型对sdetect进行多维时序异常检测,得到异常分数矩阵scoredetect。方法是:

144、6.3.1多维时序检测模型的模型输入模块从预处理模块接收sdetect,将sdetect发送给时序离散化模块和图注意力特征提取模块。

145、6.3.2时序离散化模块采用4.4.4步所述的时序离散化处理方法对从模型输入模块接收的sdetect进行时序离散化处理,得到离散化后的待检测多维时序片段集合ddetect,将ddetect发送给可变时滞传递熵计算模块。

146、6.3.3可变时滞传递熵计算模块采用4.4.5步所述的可变时滞传递熵计算方法对从时序离散化模块接收的ddetect进行可变时滞传递熵计算,得到待检测多维时序传递熵矩阵集合adetect,将adetect发送给邻接矩阵构建模块。

147、6.3.4邻接矩阵构建模块采用4.4.6步所述的邻接矩阵构建方法对从可变时滞传递熵计算模块接收的adetect进行稀疏化处理并使用softmax函数进行归一化,得到待检测多维时序邻接矩阵集合将发送给图注意力特征提取模块。

148、6.3.5图注意力特征提取模块从邻接矩阵构建模块接收从模型输入模块接收sdetect,采用4.4.7步所述的图注意力机制计算方法对和sdetect进行图注意力表征,得到待检测多维时序注意力表征矩阵集合zdetect,将zdetect发送给全连接输出模块。

149、6.3.6全连接输出模块从图注意力特征提取模块接收zdetect,采用4.4.8步所述的全连接预测方法对zdetect进行预测,得到待检测多维时序预测值矩阵pdetect。

150、6.3.7全连接输出模块从系统输入模块接收mdetect,取mdetect中第(w+1)项valuew+1至第tdetect项valuetdetect,组成待检测多维时序真实值矩阵fdetect,使用pdetect和fdetect之间的曼哈顿距离作为异常分数,得到异常分数矩阵scoredetect。方法是:

151、6.3.7.1初始化异常分数矩阵scoredetect为维度为(t′detect×(n+1))且值全为0的二维矩阵,令变量k=1。

152、6.3.7.2提取pdetect中第k行向量,令为pk,pk是维度为n的一维向量。

153、6.3.7.3提取fdetect中第k行向量,令为fk,fk是维度为n的一维向量。

154、6.3.7.4令变量n=1。

155、6.3.7.5提取pk中第n个值,令为pk,n,pk,n表示pk中第n个维度的预测值。

156、6.3.7.6提取fk中第n个值,令为fk,n,fk,n表示fk中第n个维度的真实值。

157、6.3.7.7计算pk,n与fk,n之间的绝对值,作为第n个维度的单独异常分数,并存放至scoredetect第k行第n列的位置,令为scorek,n:

158、scorek,n=|pk,n-fk,n|

159、|pk,n-fk,n|为值pk,n和值fk,n之间的绝对值。

160、6.3.7.8令n=n+1。

161、6.3.7.9若n≤n,说明第k个时间点的各个维度的单独异常分数未计算完毕,转6.3.7.5;若n>n,说明第k个时间点的各个维度的单独异常分数计算完毕,转6.3.7.10。

162、6.3.7.10使用pk与fk之间的曼哈顿距离作为异常分数,并存放至scoredetect第k行第n+1列的位置,令为scorek,n+1:

163、scorek,n+1=||pk-fk||

164、||pk-fk||为向量pk和向量fk之间的1-范数,即曼哈顿距离。

165、6.3.7.11令k=k+1。

166、6.3.7.12若k≤t′detect,说明异常分数未计算完毕,转6.3.7.2;若k>t′detect,说明异常分数计算完毕,得到scoredetect,转6.3.7.13。

167、6.3.7.13将scoredetect发送给异常定位模块。

168、6.4异常定位模块从多维时序检测模型接收scoredetect,判定scoredetect中对应的时刻是否为异常,并定位最大异常维度。方法是:

169、6.4.1异常定位模块中的阈值自动选择模块从多维时序检测模块接收scoredetect,提取scoredetect中第(n+1)列向量,令为score,score是维度为t′detect的一维向量。

170、6.4.2采用evt方法(详见文献“anomaly detection in streams with extremevalue theory[c]”,2017,“基于极值理论的流异常检测”)分析score分布,得到自适应变化阈值threshold,将threshold发送给异常判定模块。

171、6.4.3异常判定模块从全连接输出模块接收scoredetect,从阈值自动选择模块接收threshold,判定是否输出异常告警信息,并定位最大异常维度。方法是:

172、6.4.3.1令变量k=1。

173、6.4.3.2提取scoredetect中第k行向量,令为scorek,scorek是维度为(n+1)的一维向量。

174、6.4.3.3提取scorek中第(n+1)个值,令为scorek,n+1,scorek,n+1表示第k个时间点的异常分数。

175、6.4.3.4若scorek,n+1<threshold,说明第k个时间点系统正常,转6.4.3.6;若scorek,n+1≥threshold,说明第k个时间点系统异常,转6.4.3.5。

176、6.4.3.5使用scorek前n个值中最大值所对应的维度作为第k个时间点的最大异常维度anok:

177、anok=argmax(scorek,1,…,scorek,n,…,scorek,n)

178、argmax()为返回最大值的索引函数,n为正整数且1≤n≤n,转6.4.3.6。

179、6.4.3.6输出告警信息,内容为“第k个时间点系统异常且最大异常维度为anok”,并通知相关人员采取措施进行处理。

180、6.4.3.7令k=k+1。

181、6.4.3.8若k≤t′aetect,说明未检测完毕,转6.4.3.2;若k>t′detect,说明对此次读取的待检测多维时序数据检测完毕,转6.1继续从目标系统读取待检测多维时序数据的value向量,进行下一轮检测。

182、若目标系统正常工作运行,本发明持续对目标系统不断产生的待检测多维时序数据进行异常检测,因此检测过程是死循环。

183、采用本发明可以达到以下技术效果:

184、1.本发明通过可变时滞传递熵计算模块和邻接矩阵构建模块的共同作用,通过计算维度之间的可变时滞传递熵并构建邻接矩阵,实现了多维时序片段内不同维度之间依赖关系的挖掘,有效提高了对多维时序数据维度间异常的检测准确率。

185、2.本发明通过图注意力特征提取模块和全连接输出模块的共同作用,构建图注意力网络和全连接网络对多维时序数据的各维度进行预测,通过计算预测误差进行异常值的判断,可解释性强。同时异常定位模块利用阈值自动选择的功能生成自适应变化阈值,有效缓解了固定阈值带来的误报率较高的问题,进一步提高了针对多维时序数据的异常检测准确率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1