发明内容
本发明目的是提供一种多变量时间序列异常检测的方法及系统,用于检测通过实体设备采集的多变量时间序列数据中的多种异常;能够及时发现设备故障,降低设备运行风险,实时检测网络运营状态,降低异常误警率。
为满足上述需求,本专利提供了一种基于并行Transofmer-GRU的多变量时序异常检测方法及系统,其特征在于,包括以下过程:
1.基于并行Transofmer-GRU的多变量时序异常检测方法及系统,其特征在于,包括以下步骤:
S1:将数据进行预处理,并且以滑动窗口的形式输入到系统当中;对数据进行划分,按照比例设置训练集和测试集;
S2:将数据分别输入到T-Transformer-GRU和F-Transformer-GRU中提取远距离时间依赖和全局特征的关联性,并将两者所提取的信息进行结合,形成新的数据维度;
S3:通过GRU对新特征进行学习,将其传入重构模块和预测模块中,重构模块是由自动编码器网络组成,对数据进行重构,通过重构误差的方式来检测异常;预测模块由全连接层组成,通过预测下一时刻的数据与标签进行比较,以此来训练模型,达到预测异常的目的;
S4:根据预测模块和重构模块的结果进行最优化组合,使其达到最优秀的异常检测效果,并计算异常检测得分;
S5:通过BF(蛮力破解)算法确定合适的阈值;
S6:最后,将异常分数与所设定的阈值进行比较,超过阈值的数据视为异常数据,输出最终的异常检测结果。
2.如权利要求1所述的方法,其特征在于,所述步骤S2中,特征提取模块所用到的T-Transformer-GRU和F-Transformer-GRU是我们对Transformer模型进行的改进,将其原有的decoder端替换为GRU,用于更新信息并进一步学习新捕获的时序信息,这样的结构不需要对其解码端输入数据,更适用于时序异常检测场景中,并且可以减少参数量,提升运算效率;通过并行Transformer-GRU的方式来同时捕获时间信息和全局特征关系,能够更全面的提取时序数据中特征的潜在关联性。
3.如权利要求1所述的方法,其特征在于,所述步骤S3中,重构模块利用自编码器(AE)将高维数据压缩成低维数据,再将低维数据进行重构,若重构后的数据不符合原始数据的概率分布,便视为异常数据。
4.如权利要求1所述的方法,其特征在于,所述步骤S4中,基于预测的异常检测对检测数据变得更加敏感,不同场景下异常的预测性能差异很大,导致模型的检测性能不稳定,而基于重构的方法是研究数据的概率分布,对数据类型的要求较低;因此,基于重构的方法往往比基于预测的方法更稳定,但基于重构的方法容易忽略重建误差小的异常数据;因此,根据任务的重要性,以重构为模型检测异常数据的主要任务,将基于预测的方法辅助重构无法捕获的异常;对两者进行最优化组合,实现更全面的异常检测,避免异常疏漏。
5.基于并行Transofmer-GRU的多变量时序异常检测方法及系统,其特征在于,包括以下模块:数据处理模块,特征提取模块,异常检测模块,判定模块和输出模块;该系统将数据传入数据处理模块中,将数据进行规则化处理;然后通过特征提取模块,捕获数据中的关键关联关系;将其传入到异常检测模块中,利用所设定的算法对其进行检测;最后输入到判定模块中,得出最终的异常检测结果并进行输出。
本发明的优势在于:
1.提出了一种新的多变量时序异常检测模型,该模型通过并行Transformer-GRU,可以同时提取时间序列中的特征关系和远程时间依赖性。
2.改进了Transformer模型,使其更适合从时序数据中提取信息,并更广泛地用于其他场景中的多变量时序异常检测任务。
3.将基于重构和基于预测的异常检测方式进行最优化组合,使其按照两者检测异常的不同性质来进行结合并获得总的异常检测评分,这样能够能更全面的捕获异常,防止异常疏漏。
具体实施方法
为了使本发明的目的及技术方案更加清晰,对本发明中的技术方案进行清楚、完整地描述;此处所描述的具体实施例仅用以解释本发明的实施,不限定本发明。
在可选的实施例中,图1示例性地展示了一种基于并行Transofmer-GRU的多变量时序异常检测方法及系统的流程。
步骤1:对原始数据进行预处理
在此步骤中,为了避免模型受到数据极值的影响,增强模型训练的稳定性,提高模型学习的速度,我们将通过以下方式对数据进行规范化:
其中,xm,n是要规范化的数据,min(xn)和max(xn)是每列数据中的最小值和最大值,a是防止分母为0的固定值;所有训练和测试数据都分类到[0,1]的范围内,将处理后的数据缩放到指定的空间,最后在测试后通过逆归一化恢复数据;所有数据被划分为多个滑动窗口,作为数据输入的标准长度。
ωt={Xt,……,Xt+h+1}。
系统不再关注各个时间戳之间的关系,而是使用整个滑动窗口中包含的信息来获取下一个时间戳的异常分数,并将所有数据划分为
这种数据输入方式可以更好地把握长时间序列之间的时间相关性,避免独立数据的突变影响检测效果。
步骤2:对数据进行特征提取,通过两个并行的Transformer-GRU结构分别捕获时间序列数据的长距离时间依赖性和特征关系,并对时间序列数据进行重新建模。
步骤21:Transformer-GRU其结构如图2所示,通过多头注意力分别检测时间维度和特征维度建模的多变量时序数据,获得各特征与各特征的时间隐藏信息之间的关系;三个矩阵MQ、MK、MV分别表示为查询矩阵Q、键矩阵K和值矩阵V;自注意力的计算公式为:
其中σ表示softmax激活函数,它将我们获得的权重映射到[0,1]和,
用于缩放权重以增强训练的稳定性。
步骤22:将每个时间戳的特征视为我们的词向量,计算输入中各种特征之间的权重 xi(i∈feats)(输入已添加到位置编码中),计算公式为:
ai=σ(KTqi)
其中ai是当前特征与其他特征之间的权重,我们得到每个输入时间戳中每个特征之间的关系。
步骤23:利用多头注意力机制捕获时间序列数据的远距离信息依赖性和变量之间的关联性,如图3所示,公式如下。
MultiAt(Q,K,V)=Concat(At1,At2,…,Afeats)
步骤24:将一组原始的M
Q、M
K、M
V转换为多组这样的矩阵,意味着我们可以专注于来自多个空间的输入矩阵的信息,并从多个角度抓取数据的特征关系;得到的Z
i和x
i残差连接成一个可变的X
attention,并被归一化;我们使用批处理归一化,
(Xattention),这可以减少异常值的干扰,并更适合时间序列异常检测任;通过前馈神经网络传递归一化数据以进行线性激活。
最后,GRU作为Transformer的解码端,用于更新信息并进一步了解变量之间的隐藏关联;同理,T-Transformer-GRU通过更改滑动窗口的维度,将所有时间戳作为输入,利用注意力机制捕获远距离时间依赖,提取时序数据中的时间信息,然后将其提取的信息通过GRU进行学习。
步骤3:为了聚合多尺度信息,获得更好的时间序列表示,模型将获取的时间维度和特征维度拼接在一起,形成一个新颖的数据维度;GRU用于对新颖的时间序列进行建模,减小高维特征的维度,并输出包含所有先前信息的最后一个隐藏层。
在此步骤中,GRU由复位门rt和更新门ft两部分组成,我们以编码器的输出Zt作为GRU在当前时刻的输入;更新关口后,保留重要功能,忽略当下以前不相关的功能,公式如下:
其中[]表示cancat,·表示矩阵乘法,σ表示Sigmoid激活函数;更新门ft是控制前一时刻保留的隐藏层信息ht-1对当前时刻输入Zt的影响,复位门rt是根据当前输入,h′t忘记前一时刻和当前时刻的无关信息;记录当前时刻学习的状态,最后记录当前时刻的隐藏层状态h。
步骤4:将GRU学习的新的顺序表示输入到重构模块和预测模块中,两者通过不同的异常检测方式来判别异常,然后将两者进行最优化组合,使其得到最终的异常检测得分。
在此步骤中,我们利用自动编码器的原理将并行Transformer-GRU的输出串联起来,然后将其输入到GRU中,构建基于GRU的自动编码器网络进行重构;在这一部分中,我们首先将其隐藏层ht重新编码为与原始数据相同的形状,然后将其输入到GRU模型中; GRU在编码端学习隐藏向量的信息表示,然后对其进行解码;解码潜向量h1…hwindos size用作GRU的输出x;重构模块的损失函数是均方根误差(RMSE),即
其中,
表示当前时间戳t和第i个特征的重构值;x
t,i表示为当前时间戳t对应的实际值。
预测模块是由全连接层组成,使用的损失函数是均方根误差(RMSE),其公式如下。
其中feats是数据集中的特征数量,
表示第i个特征在当前时间戳t的预测值,而 x
t,i表示与预测值对应的真实值;我们将GRU的输出传递到一个全连接层,对下一个时间戳的值进行预测。
此外,由于预测值通常不准确或不可预测的,因此基于重构的方法比基于预测的方法具有更好的检测效果;然而,基于预测的方法也可以检测重构无法捕获的异常,因此我们将重构方法作为异常检测的主要任务,并将下一阶段的时间戳异常检测作为副任务;两个阶段同时执行,损失函数表示两者的加权和;损失函数的公式如下。
Losstotal=λLossrecon+(1-λ)Losspre
经过大量的实验证明当λ为0.7时,模型能够达到最优的检测效果;最后,我们将上述重构误差与预测误差相结合,得到当前时间戳t的最终异常得分,其公式如下:
其中β是一个超参数,我们设置该超参数是为了优化预测任务和重建任务的组合效果,并通过实验获得最优组合比,β值为1.2。
步骤5:通过BF算法找到检测模型性能的最佳阈值。
在此步骤中,BF(暴力破解)算法的原理是通过设定一个范围,将该范围的数值带入系统中进行叠代更新,以根据不同的阈值计算F1值,找到最佳F1值并返回以获得此结果的阈值;从而确定该模型的最佳阈值。
步骤6:将最终的异常检测分数与设置的阈值进行对比,超过阈值的数据视为异常数据,以此来输出最后的结果。
最终通过本方法对多变量时间序列进行异常检测,相较于之前传统的检测方法在精度和准确率方面有了明显提升,并且降低了训练时长,减少了模型的训练参数,能够更加快速且全面的检测异常;并且通过实验不同场景的异常检测数据集,证明该方面具有较强的泛化能力,能够广泛适用于多种时序异常检测任务,为时序异常检测提供了一种新的思路。
综上所述,尽管已经给出本发明的实施例,但这仅是本发明较好的实施例而已,并非是对本发明其他形式的限制,对于本领域的技术人员而言,对该方法进行技术内容的替换修改和变更和组合达到等同效果,这些方式仍属于本发明技术的保护范围内。