一种基于邻域信息融合注意力机制的时序异常检测方法
未命名
09-08
阅读:128
评论:0
1.本发明涉及一种时序异常检测方法,特别是一种基于邻域信息融合注意力机制的时序异常检测方法。
背景技术:
2.时间序列异常检测是一种经典时间序列分析方法,其对各领域来说都具有重大意义。时间序列异常检测则是从历史时序数据中学习其模式,并对实时的时序数据进行监测,当其模式发生突变时进行异常报警。该任务可以应用在智能运维、工业自动化等领域,例如对网络设备进行实时监控并能够在某设备发生异常时实现自动化报警;对大规模的工业设备的监测指标进行检测,设备发生异常时实现自动报警并辅助专业技术人员进行问题排查。
3.传统的时间序列异常检测方法通过假设数据遵循某种分布,在该分布以外的数据被判定为异常。由于时间序列数据的动态性质,其数据分布会随着时间发生偏移,因此传统的时间序列异常检测方法已经无法很好地解决该任务。
技术实现要素:
4.发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于邻域信息融合注意力机制的时序异常检测方法。
5.为了解决上述技术问题,本发明公开了一种基于邻域信息融合注意力机制的时序异常检测方法,包含以下步骤:
6.步骤1,对数据集中的包含时间序列的文本数据进行预处理,包括:
7.首先对数据集中每一条时间序列进行归一化操作,将所有数据放缩到同样的范围,其次对序列进行窗口化,每个窗口长度为t,窗口滑动步长为t,即将时间序列切分为不重叠的子窗口。
8.步骤2,搭建基于序列分解和注意力机制的神经网络模型即异常检测模型,所述异常检测模型利用神经网络来提取输入数据的多层次特征,并利用所提取到的多层次特征进行重构,得到输入数据的重构结果;
9.所述的搭建异常检测模型,包括:
10.步骤2-1,搭建序列分解注意力模块,包括三个部分:序列分解层,异常注意力层,以及全连接层,具体包括:
11.步骤2-1-1,搭建序列分解层:
12.将步骤1中经过预处理的数据进行序列分解,包括:信息融合以及生成两个分量,即趋势性分量和季节性分量;
13.其中,信息融合即将当前窗口即原始窗口数据与前后两个窗口数据进行拼接:
[0014][0015]
其中,是拼接后的数据,是当前窗口即原始窗口数据,是前一个窗口
数据,是后一个窗口数据,concat{
·
}是拼接操作;所述窗口即步骤1的预处理中划分得到的窗口;
[0016]
完成拼接后,通过平均池化操作将拼接后的数据提取趋势性分量表示如下:
[0017][0018]
其中,avgpool(
·
)是平均池化操作,步长为3;
[0019]
最后,通过将趋势性分量与原始窗口数据做差获取季节性分量表示如下:
[0020]
;
[0021]
步骤2-1-2,搭建异常注意力层:
[0022]
通过权重矩阵来计算注意力机制中的σ矩阵:
[0023][0024]
其中,是注意力机制中的矩阵分量,σ是可学习的高斯核参数,是模型的输入数据,分别是注意力机制中的查询权重矩阵、键值权重矩阵、注意力权重矩阵,w
σ
是高斯核参数权重矩阵;
[0025]
将步骤2-1-1中提取的季节性分量作为输入,分别建模先验关联和序列关联,用于定义步骤3中的损失函数及步骤4中的异常分数;
[0026]
所述的建模先验关联,具体包括:
[0027]
先验关联采用一个可学习的高斯核来计算相对时间距离的先验信息,具体建模方式如下:
[0028][0029]
其中,表示先验关联,rescale(
·
)是指基于高斯核对数据进行放缩,l表示输入数据窗口长度,i,j表示同一条数据上的任意两个数据点编号,σi表示第i个数据的高斯核参数,exp()表示以自然常数e为底的指数函数。
[0030]
所述的建模序列关联,基于注意力机制进行提取,建模方式如下:
[0031][0032]
其中,表示序列关联,表示转置操作,表示注意力机制中的键值矩阵,d
model
表示模型的维度(超参数),softmax()表示softmax函数;
[0033]
通过序列关联来提取输入数据的全局注意力权重,并得到注意力分量
[0034][0035]
存储注意力权重的矩阵分量是序列分解注意力模块的第一个输出。
[0036]
步骤2-1-3,搭建全连接层:
[0037]
所述全连接层用于提取步骤2-1-1中得到的趋势性分量,由三层的全连接神经网络以及relu函数构成,表示如下:
[0038]
[0039]
其中,feedforward()表示全连接层,s1为全连接层的输出,是序列分解注意力模块的第二个输出。
[0040]
步骤2-2,基于序列分解注意力模块搭建异常检测模型,包括双层序列分解注意力模块,残差连接模块以及重构模块,具体包括:
[0041]
叠加两层序列分解注意力模块,第一层序列分解注意力模块的输入是步骤2-1-1中拼接后的数据,对第一层序列分解注意力模块中的异常注意力层的输出进行边缘填充后,作为第二层序列分解注意力模块的输入;另外,将原始窗口数据输入单独的异常注意力层,作为残差连接模块;最终将上述三个模块的输出通过重构模块进行拼接后输入全连接层,作为异常检测模型的输出层。
[0042]
所述的进行边缘填充,即用0值对数据进行填充至三倍长度。
[0043]
步骤3,训练步骤2所述的异常检测模型,包括:定义损失函数和神经网络超参数,基于无监督的重构任务对异常检测模型中的参数进行迭代优化,得到训练完成的异常检测模型;
[0044]
所述的训练异常检测模型,具体包括:
[0045]
步骤3-1,设计损失函数,包括重构损失和注意力关联差异损失,具体损失函数如下:
[0046][0047]
其中,表示模型重构结果,||||2表示向量的l2范数,λ是超参数,assdis(
·
)是关联差异,具体计算公式如下:
[0048][0049]
其中,kl(
·
||
·
)是由和的的每一行对应的两个离散分布所计算得到的kl散度,l表示输出数据窗口长度;
[0050]
步骤3-2,定义实验相关配置:训练模型之前,首先定义超参数和用于更新模型参数的模型优化器,然后设置学习率调度器以及最大迭代次数或相关的早停策略;
[0051]
步骤3-3,对异常检测模型进行无监督训练,对数据集中的数据进行重构任务,并基于步骤3-1中定义的损失函数进行梯度更新,获取训练好的异常检测模型。
[0052]
步骤4,利用步骤3中得到的训练完成的异常检测模型对待测试的时间序列数据进行处理,根据该异常检测模型输出计算异常分数,并判断输入的待测试的时间序列数据是否异常,具体包括:
[0053]
步骤4-1,设计异常分数计算方法,即通过步骤3-1中所设计的关联差异来计算异常分数,具体如下:
[0054][0055]
其中,表示异常分数,softmax()表示softmax函数,
⊙
表示矩阵对应元素求乘积,表示l-2范数;
[0056]
步骤4-2,利用步骤3中训练好的异常检测模型,对数据集中数据进行处理,并利用步骤4-1中的异常分数计算方法来计算数据集中每个数据的异常分数;
[0057]
步骤4-3,通过分位数来确定异常判定阈值,如果异常分数超过阈值,则将该数据
判定为异常数据。
[0058]
步骤5,将步骤1至步骤4所述的方法应用于包含时间序列文本数据的技术系统的数据集,对数据集中的时间序列文本数据进行异常检测。
[0059]
有益效果:
[0060]
相比以往的时间序列异常检测方法,本发明的优势在于:通过引入序列分解和异常注意力机制,,在不增加模型复杂度的前提下优化了模型对窗口边缘数据的建模,并且通过叠加模块不断地把序列关联和先验关联相近的趋势项提取出来,使异常注意力的关联差异更好地反应周期性异常的异常程度,同时使得模型能够提取深层语义特征。
附图说明
[0061]
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0062]
图1为本发明流程图。
[0063]
图2为异常检测网络结构图。
[0064]
图3为序列分解对比示意图。
[0065]
图4为本发明在服务器监测数据集上的实际效果示意图。
具体实施方式
[0066]
鉴于神经网络强大的特征提取能力,基于深度学习的时间序列异常检测方法逐渐成为主流。这类方法又可以分为基于预测误差的异常检测方法和基于重构误差的异常检测方法。基于预测误差的异常检测方法的主要思想是根据时间序列预测模型对时序数据进行预测,然后计算预测值与实际值的偏差,如果偏差超过一定阈值,则认为该序列产生了异常;基于重构误差的异常检测是基于自编码器(autoencoder)的,也就是通过编码器将原始数据进行压缩编码成一个低维编码,然后利用解码器进行解码还原,解码的目标是完全还原原始数据。
[0067]
如图1所示,本发明公开了一种基于邻域信息融合注意力机制的时间序列异常检测方法,包含如下步骤:
[0068]
步骤1,对数据集中的包含时间序列的文本数据进行预处理;
[0069]
步骤2,搭建一个基于序列分解和注意力机制的神经网络模型,利用网络来提取多层次特征,并利用所提取到的特征进行重构,得到输入数据的重构结果;
[0070]
步骤3,训练步骤2所述模型,包括:定义损失函数和实验相关设置,基于无监督的重构任务对网络模型中的模型参数进行迭代优化,得到异常检测模型;
[0071]
步骤4,利用步骤3中训练得到的异常检测模型对待测试的时间序列数据进行处理,根据模型输出计算异常分数,并判断是否异常。
[0072]
步骤1具体包括如下步骤:
[0073]
对数据集中每一条时间序列进行归一化操作,将每一条时间序列缩放至最小值为0,最大值为1:
[0074]
[0075]
其次对序列进行窗口化,每个窗口长度为t,窗口滑动步长为t,即将每一条时间序列切分为k个不重叠的长度为t的子窗口,便于后续模型提取时序依赖特征并进行异常检测。
[0076]
步骤2具体包括如下步骤:
[0077]
步骤2-1,搭建序列分解注意力模块,该模块包括三个部分:序列分解层,异常注意力层,以及全连接层;
[0078]
步骤2-2,搭建完整的异常检测网络,如图2所示,包括双层序列分解注意力模块,残差连接模块以及重构模块;
[0079]
步骤2-1具体包括如下步骤:
[0080]
步骤2-1-1,序列分解层将原始数据进行序列分解,以融合更多信息并生成两个分量,如图3所示。首先,将原始窗口数据与前后两个窗口数据进行拼接:
[0081][0082]
其中,是输入窗口数据,是前一个窗口数据,是后一个窗口数据,concat{
·
}是拼接操作。
[0083]
完成拼接后,通过平均池化来将前后两个窗口数据融合入原始数据,并提取趋势性分量:
[0084][0085]
其中,avgpool(
·
)是指平均池化操作,步长为3,就是序列分解后的趋势性分量,可以反映序列长期的发展趋势或者状态。
[0086]
最后,通过与原始窗口做差来获取季节性分量:
[0087][0088]
即季节性分量,能够反映序列短期内的快速变化的部分;
[0089]
步骤2-1-2,首先选择合适的注意力模块(采用anomaly transformer,一种异常注意力模块,参考文献:xu j,wu h,wang j,et al.anomaly transformer:time series anomaly detection with association discrepancy[j].arxiv preprint arxiv:2110.02642,2021.),异常注意力层将步骤2-1-1中提取的季节性分量作为输入,分别建模了先验关联和序列关联。首先通过权重矩阵来计算(引用:vaswani,ashish,et al."attention is all you need."advances in neural information processing systems 30(2017).)注意力机制中的σ:
[0090][0091]
其中,是transformer架构中的矩阵分量,σ是可学习的高斯核参数。
[0092]
首先建模先验关联,先验关联采用了一个可学习的高斯核来计算相对时间距离的先验信息,该设计利用高斯核的单峰特性,使得注意力集中在相邻区域。高斯核中使用了一个可学习的尺度参数,使先验关联适应各种时间序列模式,例如异常段的不同长度,具体建模方式如下:
[0093][0094]
rescale(
·
)是指基于该高斯核对数据进行放缩,为每一个数据点根据其高斯核参数生成先验单峰权重,越接近的数据点权重越大。先验关联可以迫使模型将注意力集中在数据点临近区域。
[0095]
然后建模序列关联,序列关联是基于注意力机制来进行提取的,建模方式如下:
[0096][0097]
通过序列关联来提取输入数据的全局注意力权重,并得到注意力分量
[0098][0099]
注意力分量是序列分解-注意力模块的其中一个输出,传入网络的下一层;
[0100]
步骤2-1-3,全连接层主要用于提取步骤2-1-1中通过序列分解得到的趋势性分量,全连接层由三层的全连接神经网络以及relu函数构成:
[0101][0102]
全连接层的输出s1作为序列分解注意力模块的第二个输出,传入网络下一层;
[0103]
步骤2-2具体包括如下步骤:
[0104]
搭建异常检测网络,如图2所示,步骤2-1得到序列分解注意力模块后,将其叠加两层,第一层的输入是原始窗口序列数据和前后两个窗口数据的拼接结果,对第一层中的注意力层的输出进行填充后作为第二层的输入。另外,原始窗口数据也会输入单独的注意力层,作为残差连接模块,最终将这三个模块的输出拼接后输入全连接层作为模型的输出层;
[0105]
步骤3具体包括如下步骤:
[0106]
步骤3-1,设计重构任务的损失函数,包括重构损失和注意力关联差异损失,具体来说,损失函数由两部分组成,分别是重构损失和注意力关联差异损失。重构损失反映的是模型对序列的重构效果,可以指导模型寻找最具信息量的注意力权重;对于注意力关联差异损失,其可以引导序列关联的分布与先验关联的分布尽可能不同,加强模型对异常点的判定能力,具体损失函数如下:
[0107][0108]
其中,assdis(
·
)是指关联差异,它表示先验关联和序列关联之间的信息增益,可以用于量化两个分布之间的差异,具体计算公式如下:
[0109][0110]
其中,kl(
·
||
·
)是由和的的每一行对应的两个离散分布所计算得到的kl散度。
[0111]
步骤3-2,定义实验相关配置,训练模型之前,首先定义超参数和用于更新模型参数的模型优化器,非重叠的滑动窗口长度l设定为100,异常注意力模块的模型超参数d
model
设定为512,损失函数中的超参数λ设定为3,训练批次大小为32;然后设置学习率调度器以及最大迭代次数或相关的早停策略,采用adam优化器(参考:kingma,diederik p.,and jimmy ba."adam:amethod for stochastic optimization."arxiv preprint arxiv:1412.6980(2014).),初始学习率为10-4
,早停策略设定为10轮以内结束。
[0112]
步骤3-3,对模型进行无监督训练,对数据集中的数据进行重构任务,并基于步骤3-1中定义的损失函数进行梯度更新,获取训练好的异常检测模型。
[0113]
步骤4具体包括如下步骤:
[0114]
步骤4-1,设计异常分数计算公式,异常分数可以通过步骤3-1中所设计的关联差异来进行评估,异常数据的关联差异会比正常数据更大:
[0115][0116]
步骤4-2,利用步骤3中训练好的网络,对原始时间序列进行处理,并利用步骤6-1中的异常分数计算公式来计算每个数据点的异常分数;
[0117]
步骤4-3,通过分位数来确定异常判定阈值,其中,将swat数据集的分位数设定为0.1%,wadi数据集的分位数设定为1%(ucr数据集无需设定分位数,因为该数据集每条数据有且仅有一段异常),如果数据点在步骤6-2中计算的异常分数超过该阈值,则将该点判定为异常点,否则判定为正常点。
[0118]
实施例1:
[0119]
本实施例在标准公开数据集ucr、swat、wadi上进行了实验。,上述数据集中包含时间序列的文本数据,以csv等格式存储于计算机中;本发明与主流方法anomaly transformer[会议iclr2022提出的方法]、lstm-vae[会议icra2018提出的方法]、ts2vec[会议aaai2022提出的方法]、deep-svdd[会议icml2018提出的方法]、lstm[会议sigkdd2018提出的方法]和isolation forest[会议icdm2008提出的方法]作比较,实验结果如表1和表2所示,表1展示了不同方法在swat和wadi数据集上的准确率、召回率和f1分数三种指标,表2展示了不同方法在ucr数据集上的acc@1,acc@2,acc@3指标:
[0120][0121]
表1
[0122][0123]
表2
[0124]
可以看出,对比不同领域的公开数据集,本发明均能取得更好的效果,从能够全面评估异常检测能力的f1指标来看,本发明在所有数据集上均取得了最好的效果,并且在复杂的ucr数据集上,其acc@1(top 1准确率),acc@2(top 2准确率)和acc@3(top 3准确率)指标均取得了最好的效果,有效的证明了本发明的异常检测性能。
[0125]
实施例2:
[0126]
本发明中所述的一种基于邻域信息融合注意力机制的时序异常检测方法可以应用于服务器设备故障监测,本实施例介绍了本方法在真实采集的服务器性能监测数据集上的实施步骤及效果,具体包括:
[0127]
步骤1,对数据集中的时间序列数据进行预处理,数据集为真实采集的跨度为45天的服务器性能监测数据,该数据集为csv格式,存储于计算机中,其中包含服务器的19个指标(包括处理器相关指标,内存相关指标,网络指标等等),采集频率为5分钟。这个步骤包含:
[0128]
对数据集中每一条时间序列进行归一化操作,将每一条时间序列缩放至最小值为0,最大值为1:
[0129][0130]
其次对序列进行窗口化,每个窗口长度为t,窗口滑动步长为t,即将每一条时间序列切分为k个不重叠的长度为t的子窗口,便于后续模型提取时序依赖特征并进行异常检测。
[0131]
步骤2,搭建基于序列分解和注意力机制的神经网络模型即异常检测模型,所述异常检测模型利用神经网络来提取输入数据的多层次特征,并利用所提取到的多层次特征进行重构,得到输入数据的重构结果,这个步骤包含:
[0132]
步骤2-1,搭建序列分解注意力模块,包括三个部分:序列分解层,异常注意力层,以及全连接层,这个步骤包含:
[0133]
步骤2-1-1,搭建序列分解层:
[0134]
将步骤1中经过预处理的数据进行序列分解,包括:信息融合以及生成两个分量,即趋势性分量和季节性分量;
[0135]
其中,信息融合即将当前窗口即原始窗口数据与前后两个窗口数据进行拼接:
[0136][0137]
其中,是拼接后的数据,是当前窗口即原始窗口数据,是前一个窗口数据,是后一个窗口数据,concat{
·
}是拼接操作;所述窗口即步骤1的预处理中划分得到的窗口;
[0138]
完成拼接后,通过平均池化操作将拼接后的数据提取趋势性分量表示如下:
[0139][0140]
其中,avgpool(
·
)是平均池化操作,步长为3;
[0141]
最后,通过将趋势性分量与原始窗口数据做差获取季节性分量表示如下:
[0142][0143]
步骤2-1-2,搭建异常注意力层:
[0144]
将步骤2-1-1中提取的季节性分量作为输入,分别建模了先验关联和序列关联。
[0145]
首先通过权重矩阵来计算注意力机制(引用:vaswani,ashish,et al."attention is all you need."advances in neural information processing systems 30(2017).)中的σ矩阵:
[0146][0147]
其中,是注意力机制中的矩阵分量,σ是可学习的高斯核参数。
[0148]
首先建模先验关联,先验关联采用了一个可学习的高斯核来计算相对时间距离的先验信息,该设计利用高斯核的单峰特性,使得注意力集中在相邻区域。高斯核中使用了一个可学习的尺度参数,使先验关联适应各种时间序列模式,例如异常段的不同长度,具体建模方式如下:
[0149][0150]
rescale(
·
)是指基于该高斯核对数据进行放缩,为每一个数据点根据其高斯核参数生成先验单峰权重,越接近的数据点权重越大。先验关联可以迫使模型将注意力集中在数据点临近区域。
[0151]
然后建模序列关联,序列关联是基于注意力机制来进行提取的,建模方式如下:
[0152][0153]
通过序列关联来提取输入数据的全局注意力权重,并得到注意力分量
[0154][0155]
注意力分量是序列分解注意力模块的第一个输出;
[0156]
步骤2-1-3,搭建全连接层:
[0157]
所述全连接层用于提取步骤2-1-1中得到的趋势性分量,由三层的全连接神经网络以及relu函数构成,表示如下:
[0158][0159]
其中,feedforward()表示全连接层,s1为全连接层的输出,是序列分解注意力模块的第二个输出。
[0160]
步骤2-2,基于序列分解注意力模块搭建异常检测模型,包括双层序列分解注意力模块,残差连接模块以及重构模块,这个步骤包含:
[0161]
叠加两层序列分解注意力模块,第一层序列分解注意力模块的输入是步骤2-1-1中拼接后的数据,对第一层序列分解注意力模块中的异常注意力层的输出进行边缘填充,即用0值对数据进行填充至三倍长度,并作为第二层序列分解注意力模块的输入;另外,将原始窗口数据输入单独的异常注意力层,作为残差连接模块;最终将上述三个模块的输出通过重构模块进行拼接后输入全连接层,作为异常检测模型的输出层。
[0162]
步骤3,训练步骤2所述的异常检测模型,包括:定义损失函数和神经网络超参数,基于无监督的重构任务对异常检测模型中的参数进行迭代优化,得到训练完成的异常检测模型,这个步骤包括:
[0163]
步骤3-1,设计重构任务的损失函数,包括重构损失和注意力关联差异损失,具体来说,损失函数由两部分组成,分别是重构损失和注意力关联差异损失。重构损失反映的是模型对序列的重构效果,可以指导模型寻找最具信息量的注意力权重;对于注意力关联差异损失,其可以引导序列关联的分布与先验关联的分布尽可能不同,加强模型对异常点的判定能力,具体损失函数如下:
[0164][0165]
其中,assdis(
·
)是指关联差异,它表示先验关联和序列关联之间的信息增益,可以用于量化两个分布之间的差异,具体计算公式如下:
[0166][0167]
其中,kl(
·
||
·
)是由和的的每一行对应的两个离散分布所计算得到的kl散度。
[0168]
步骤3-2,定义实验相关配置,训练模型之前,首先定义超参数和用于更新模型参数的模型优化器,非重叠的滑动窗口长度l设定为100,异常注意力模块的模型超参数d
model
设定为512,损失函数中的超参数λ设定为3,训练批次大小为32;然后设置学习率调度器以及最大迭代次数或相关的早停策略,采用adam优化器,初始学习率为10-4
,早停策略设定为10轮以内结束。
[0169]
步骤3-3,对模型进行无监督训练,对数据集中的数据进行重构任务,并基于步骤3-1中定义的损失函数进行梯度更新,获取训练好的异常检测模型。
[0170]
步骤4,利用步骤3中得到的训练完成的异常检测模型对待测试的时间序列数据进行处理,根据该异常检测模型输出计算异常分数,并判断输入的待测试的时间序列数据是否异常,这个步骤包括:
[0171]
步骤4-1,设计异常分数计算公式,异常分数可以通过步骤3-1中所设计的关联差异来进行评估,异常数据的关联差异会比正常数据更大:
[0172][0173]
步骤4-2,利用步骤3中训练好的网络,对原始时间序列进行处理,并利用步骤6-1中的异常分数计算公式来计算每个数据点的异常分数;
[0174]
步骤4-3,通过分位数来确定异常判定阈值,此处分位数设定为1%,如果异常分数超过阈值,则将该数据判定为异常数据,图4展示了部分异常检测的效果,图中四个指标分别代表cpu占用率(指标1)、网络吞/吐量(指标2/3),磁盘读写量(指标4),其中阴影部分为本发明识别出来的异常。识别出来的第一个异常存在明显的网络波动,第二个异常存在cpu的短暂高负载、网络波动和磁盘高负载,均是有效的异常。因此,本发明能够精准地识别异常,当服务器发生故障时,能够迅速报警并且辅助专业人员进行故障排查。
[0175]
具体实现中,本技术提供计算机存储介质以及对应的数据处理单元,其中,该计算机存储介质能够存储计算机程序,所述计算机程序通过数据处理单元执行时可运行本发明提供的一种基于邻域信息融合注意力机制的时序异常检测方法的发明内容以及各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
[0176]
本领域的技术人员可以清楚地了解到本发明实施例中的技术方案可借助计算机程序以及其对应的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序即软件产品的形式体现出来,该计算机程序软件产品可以存储在存储介质中,包括若干指令用以使得一台包含数据处理单元的设备(可以是个人计算机,服务器,单片机,muu或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0177]
本发明提供了一种基于邻域信息融合注意力机制的时序异常检测方法的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
技术特征:
1.一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,包含以下步骤:步骤1,对数据集中的包含时间序列的文本数据进行预处理;步骤2,搭建基于序列分解和注意力机制的神经网络模型即异常检测模型,所述异常检测模型利用神经网络来提取输入数据的多层次特征,并利用所提取到的多层次特征进行重构,得到输入数据的重构结果;步骤3,训练步骤2所述的异常检测模型,包括:定义损失函数和神经网络超参数,基于无监督的重构任务对异常检测模型中的参数进行迭代优化,得到训练完成的异常检测模型;步骤4,利用步骤3中得到的训练完成的异常检测模型对待测试的时间序列数据进行处理,根据该异常检测模型输出计算异常分数,并判断输入的待测试的时间序列数据是否异常;步骤5,将步骤1至步骤4所述的方法应用于包含时间序列文本数据的技术系统的数据集,对数据集中的时间序列文本数据进行异常检测。2.根据权利要求1所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤1所述的预处理,包括:首先对数据集中每一条时间序列进行归一化操作,将所有数据放缩到同样的范围,其次对序列进行窗口化,每个窗口长度为t,窗口滑动步长为t,即将时间序列切分为不重叠的子窗口。3.根据权利要求2所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤2所述的搭建异常检测模型,包括:步骤2-1,搭建序列分解注意力模块,包括三个部分:序列分解层,异常注意力层,以及全连接层;步骤2-2,基于序列分解注意力模块搭建异常检测模型,包括双层序列分解注意力模块,残差连接模块以及重构模块。4.根据权利要求3所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤2-1所述的搭建序列分解注意力模块,具体包括:步骤2-1-1,搭建序列分解层:将步骤1中经过预处理的数据进行序列分解,包括:信息融合以及生成两个分量,即趋势性分量和季节性分量;其中,信息融合即将当前窗口即原始窗口数据与前后两个窗口数据进行拼接:其中,是拼接后的数据,是当前窗口即原始窗口数据,是前一个窗口数据,是后一个窗口数据,concat{
·
}是拼接操作;所述窗口即步骤1的预处理中划分得到的窗口;完成拼接后,通过平均池化操作将拼接后的数据提取趋势性分量表示如下:
其中,avgpool(
·
)是平均池化操作,步长为3;最后,通过将趋势性分量与原始窗口数据做差获取季节性分量表示如下:;步骤2-1-2,搭建异常注意力层:通过权重矩阵来计算注意力机制中的矩阵:其中,是注意力机制中的矩阵分量,σ是可学习的高斯核参数,是模型的输入数据,分别是注意力机制中的查询权重矩阵、键值权重矩阵、注意力权重矩阵,w
σ
是高斯核参数权重矩阵;将步骤2-1-1中提取的季节性分量作为输入,分别建模先验关联和序列关联,用于定义步骤3中的损失函数及步骤4中的异常分数;步骤2-1-3,搭建全连接层:所述全连接层用于提取步骤2-1-1中得到的趋势性分量,由三层的全连接神经网络以及relu函数构成,表示如下:其中,feedforward()表示全连接层,s1为全连接层的输出,是序列分解注意力模块的第二个输出。5.根据权利要求4所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤2-1-2中所述的建模先验关联,具体包括:先验关联采用一个可学习的高斯核来计算相对时间距离的先验信息,具体建模方式如下:其中,表示先验关联,rescale(
·
)是指基于高斯核对数据进行放缩,l表示输入数据窗口长度,i,j表示同一条数据上的任意两个数据点编号,σ
i
表示第i个数据的高斯核参数,exp()表示以自然常数e为底的指数函数。6.根据权利要求5所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤2-1-2中所述的建模序列关联,基于注意力机制进行提取,建模方式如下:其中,表示序列关联,表示转置操作,表示注意力机制中的键值矩阵,d
model
表示模型的维度(超参数),softmax()表示softmax函数;通过序列关联来提取输入数据的全局注意力权重,并得到注意力分量通过序列关联来提取输入数据的全局注意力权重,并得到注意力分量存储注意力权重的矩阵分量是序列分解注意力模块的第一个输出。7.根据权利要求6所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤2-2所述的基于序列分解注意力模块搭建异常检测模型,具体包括:
叠加两层序列分解注意力模块,第一层序列分解注意力模块的输入是步骤2-1-1中拼接后的数据,对第一层序列分解注意力模块中的异常注意力层的输出进行边缘填充后,作为第二层序列分解注意力模块的输入;另外,将原始窗口数据输入单独的异常注意力层,作为残差连接模块;最终将上述三个模块的输出通过重构模块进行拼接后输入全连接层,作为异常检测模型的输出层。8.根据权利要求7所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤3所述的训练异常检测模型,具体包括:步骤3-1,设计损失函数,包括重构损失和注意力关联差异损失,具体损失函数如下:其中,表示模型重构结果,||||2表示向量的l2范数,λ是超参数,assdis(
·
)是关联差异,具体计算公式如下:其中,kl(
·
||
·
)是由和的的每一行对应的两个离散分布所计算得到的kl散度,l表示输出数据窗口长度;步骤3-2,定义实验相关配置:训练模型之前,首先定义超参数和用于更新模型参数的模型优化器,然后设置学习率调度器以及最大迭代次数或相关的早停策略;步骤3-3,对异常检测模型进行无监督训练,对数据集中的数据进行重构任务,并基于步骤3-1中定义的损失函数进行梯度更新,获取训练好的异常检测模型。9.根据权利要求8所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤4所述的判断输入的待测试的时间序列数据是否异常,具体包括:步骤4-1,设计异常分数计算方法,即通过步骤3-1中所设计的关联差异来计算异常分数,具体如下:其中,表示异常分数,softmax()表示softmax函数,
⊙
表示矩阵对应元素求乘积,表示l-2范数;步骤4-2,利用步骤3中训练好的异常检测模型,对数据集中数据进行处理,并利用步骤4-1中的异常分数计算方法来计算数据集中每个数据的异常分数;步骤4-3,通过分位数来确定异常判定阈值,如果异常分数超过阈值,则将该数据判定为异常数据。10.根据权利要求9所述的一种基于邻域信息融合注意力机制的时序异常检测方法,其特征在于,步骤2-2中所述的进行边缘填充,即用0值对数据进行填充至三倍长度。
技术总结
本发明公开了一种基于邻域信息融合注意力机制的时序异常检测方法,包含如下步骤:步骤1,对数据集中的时间序列数据进行预处理;步骤2,搭建基于序列分解和注意力机制的神经网络模型,通过所述网络完成对训练数据的特征提取以及重构;步骤3,使用深度学习算法对网络进行无监督预训练;步骤4,利用最终得到的模型进行异常检测。本发明提供的方法通过结合序列分解和注意力机制,融合邻域信息并加强注意力模块对输入窗口数据的边缘部分的建模能力,能够显著提升无监督场景下模型的异常检测效果。显著提升无监督场景下模型的异常检测效果。显著提升无监督场景下模型的异常检测效果。
技术研发人员:杨育彬 陈迪
受保护的技术使用者:南京大学
技术研发日:2023.05.31
技术公布日:2023/9/5
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
