本发明涉及一种时序异常检测方法,特别是一种基于关联差异和timesblock编码器的时序异常检测方法。
背景技术:
1、时间序列异常检测是指在时间序列数据中识别出与预期模式或行为明显不同的数据点或模式。其应用广泛,涵盖金融领域的欺诈检测、工业生产中的故障监测、网络安全中的异常检测等。通过分析时间序列数据的变化趋势,异常检测能够帮助发现异常事件,提前预警或采取必要的行动,以维护系统的稳定性和安全性。
2、传统的时间序列异常检测方法包括基于统计学的方法(如均值、方差、分布等)、基于机器学习的方法(如支持向量机、孤立森林、神经网络等)以及基于规则的方法(如阈值设定、规则匹配等)。然而,这些方法在应对复杂的时间序列数据时存在一些不足之处。例如,传统统计方法可能对非线性、非平稳的数据表现不佳;机器学习方法需要大量标记数据且对超参数敏感;而基于规则的方法可能无法适应数据动态变化的特点,难以准确捕捉异常。
技术实现思路
1、本发明的目的是针对现有技术的不足,解决更有效地捕获正常数据与异常数据之间序列关联和先验关联的关联差异,使得异常分数更好的反映异常数据的异常程度的问题,本发明的技术方案为:一种基于关联差异和timesblock编码器的时序异常检测方法,利用基于关联差异和timesblock编码器的时序异常检测模型进行检测;
2、所述模型包括异常注意力模块和timesblock重构模块,所述异常注意力模块包括异常注意力层和前馈神经网络层,所述timesblock重构模块包括升维模块、特征提取模块、降维模块和全连接层,其中,所述异常注意力模块的输出作为所述timesblock重构模块的输入,所述timesblock重构模块的全连接层作为所述模型的输出层;
3、所述检测方法,包括:
4、步骤10:获得时间序列数据集;
5、步骤20:所述异常注意力模块扩大时间序列数据先验关联和序列关联的关联差异,得到包含有时间序列数据特征的隐状态,所述timesblock重构模块通过挖掘异常注意力模块输出的隐状态中特征的多周期信息对所述时间序列数据进行重构;
6、步骤30:对所述模型进行训练,定义损失函数和模型优化器,设置模型超参数,通过让所述模型在训练数据集上执行重构任务对模型进行迭代优化,得到优化后的模型;
7、步骤40:将所述优化后的模型在训练集和测试集上进行推理,计算异常分数,并以数据集中正常数据的比例为分位点确定阈值,将测试数据中异常分数超过阈值的数据判定为异常数据;
8、其中:
9、步骤20中所述模型的异常注意力模块的所述异常注意力层:
10、使用权重矩阵计算异常注意力机制中的查询矩阵q、键矩阵k、值矩阵v及高斯核参数σ矩阵;
11、使用可学习的高斯核,计算窗口中第i个时间与第j个时间点的关联权值g(|j-i|;σi);
12、通过所述关联权值g(|j-i|;σi),计算第l层的先验关联矩阵pl;
13、通过所述查询矩阵q、键矩阵k,计算第l层的序列关联矩阵sl;
14、将所述第l层的序列关联矩阵sl与所述值矩阵v相乘,得到隐藏表示
15、将上述隐藏表示与第l-1层异常注意力层的输出xl-1残差连接,并进行归一化处理,计算第l层异常注意力层的隐藏表示zl;
16、将所述第l层异常注意力层的隐藏表示zl与经过1维卷积操作的zl残差连接,并进行归一化处理,再输入第l层前馈神经网络,第l层前馈神经网络输出xl;
17、所述timesblock重构模块的所述升维模块:
18、对1维序列x1d使用快速傅里叶变换在频域下分析时间序列,计算各个频率所对应的振幅a;
19、根据所述振幅a,计算最高的k个振幅所对应的频率{f1,…,fk};
20、根据所述最高的k个振幅所对应的频率{f1,…,fk},计算各个频率所对应的子序列长度pi;
21、按照所述子序列长度pi对所述1维序列x1d进行分割,再拼接为第i频率所对应的2维张量
22、所述timesblock重构模块的所述特征提取模块:
23、提取所述第i频率所对应的2维张量的特征
24、所述timesblock重构模块的所述数据降维模块:
25、根据所述特征获取第i频率所对应的2维张量降维后得到的1维序列
26、将各个频率所对应的所述振幅a中不同频率所对应的分量输入softmax函数得到权重;
27、对所述第i频率所对应的2维张量降维后得到的1维序列进行加权求和,得到xld,以将不同频率对应的特征进行融合。
28、作为优选方案,步骤10中的时间序列数据,基于如下方式得到:对数据集中时间序列进行标准化操作,使得每个传感器的数据的平均值为0,标准差为1,将数据分为若干个滑动窗口,每个窗口长度为n。
29、作为优选方案,其中,所述异常注意力模块的所述异常注意力层:
30、使用权重矩阵计算异常注意力机制中的查询矩阵q、键矩阵k、值矩阵v及高斯核参数σ矩阵,第l层的异常注意力层由下式表示:
31、
32、式中,q,k,v分别为注意力机制中的查询矩阵、键矩阵和值矩阵,σ为高斯核参数,xl-1代表第l-1层的输出,分别是第l层异常注意力层的查询权重矩阵、键权重矩阵和值权重矩阵,其中l∈{1,…,l},l为异常注意力的总层数,是第l层异常注意力层的高斯核参数权重矩阵;
33、使用可学习的高斯核,计算窗口中第i个时间与第j个时间点的关联权值g(|j-i|;σi)由下式表示:
34、
35、式中,g(|j-i|;σi)为窗口中第i个时间与第j个时间点的关联权值,σi表示窗口中第i个时间点数据的高斯核参数,exp(·)表示以自然常数e为底的指数函数;
36、通过所述关联权值g(|j-i|;σi),计算第l层的先验关联矩阵pl,由下式表示:
37、pl=rescale([g(|j-i|;σi)]i,j∈{1,…,n})
38、式中,pl为第l层的先验关联矩阵,n表示输入数据的窗口长度,rescale(·)为放缩操作;
39、通过所述查询矩阵q、键矩阵k,计算第l层的序列关联矩阵sl,由下式表示:
40、
41、式中,sl表示第l层的序列关联矩阵,t表示转置操作,dmodel表示模型的维度,softmax(·)表示softmax函数;
42、将所述第l层的序列关联矩阵sl与所述值矩阵v相乘,得到隐藏表示由下式表示:
43、
44、将上述隐藏表示与第l-1层异常注意力层的输出xl-1残差连接,并进行归一化处理,计算第l层异常注意力层的隐藏表示zl,由下式表示:
45、
46、式中,zl为第l层异常注意力层的隐藏表示,layer-norm(·)表示层归一化操作,加号表示残差连接;
47、将所述第l层异常注意力层的隐藏表示zl与经过1维卷积操作的zl残差连接,并进行归一化处理,再输入第l层前馈神经网络,第l层前馈神经网络输出xl,由下式表示:
48、xl=layer-norm(feed-forward(zl)+zl)
49、式中,xl为第l层前馈神经网络的输出,feed-forward(·)为1维卷积操作,layer-norm(·)表示层归一化操作,加号表示残差连接。
50、作为优选方案,其中,所述timesblock重构模块的所述升维模块:
51、对1维序列x1d使用快速傅里叶变换在频域下分析时间序列,计算各个频率所对应的振幅a,由下式表示:
52、a=avg(amp(fft(x1d)))
53、式中,x1d为1维的输入序列,fft(·)为快速傅里叶变换,amp(·)为计算振幅操作,avg(·)为取平均操作,a为各个频率所对应的振幅;
54、根据所述振幅a,计算最高的k个振幅所对应的频率{f1,…,fk},由下式表示:
55、
56、式中,{f1,…,fk}为最大的k个振幅所对应的频率,n表示时间窗口长度,topk(·)表示找出输入中最大的前k个值;
57、根据所述最高的k个振幅所对应的频率{f1,…,fk},计算各个频率所对应的子序列长度pi,由下式表示:
58、
59、式中,pi为第i个频率所对应的子序列长度,n为窗口长度;
60、按照所述子序列长度pi对所述1维序列x1d进行分割,再拼接为第i频率所对应的2维张量由下式表示:
61、
62、式中,为第i频率所对应的2维张量,padding(·)为填0操作,reshapepi,fi(·)表示将1维序列转换为pi行fi列的2维张量;
63、其中,所述timesblock重构模块的所述特征提取模块:
64、提取所述第i频率所对应的2维张量的特征由下式表示:
65、
66、式中,为第i频率所对应的2维张量输入inception网络后所提取到的特征;
67、其中,所述timesblock重构模块的所述数据降维模块:
68、根据所述特征获取第i频率所对应的2维张量降维后得到的1维序列由下式表示:
69、
70、式中,为第i频率所对应的2维张量降维后得到的1维序列,trunc(·)为截断操作,表示将pi行fi列的2维张量转换为1行pi×fi列的1维序列;
71、将振幅a中各个频率所对应的分量输入softmax函数得到权重,由下式表示:
72、
73、对所述第i频率所对应的2维张量降维后得到的1维序列进行加权求和,得到xld,以将不同频率对应的特征进行融合,由下式表示:
74、
75、式中,为振幅a中不同频率所对应的分量。
76、作为优选方案,所述模型中的异常注意力模块包括多个异常注意力层,前一层异常注意力层的输出是后一层异常注意力层的输入,最后一层异常注意力层的输出是timesblock重构模块的输入。
77、作为优选方案,所述模型中的异常注意力模块包括三层异常注意力层。
78、作为优选方案,步骤30中所述模型的训练,具体步骤包括:
79、步骤31:设计损失函数,包括重构损失和关联差异损失,由下式表示:
80、
81、式中,为模型最终的重构结果,‖·‖f表示f范数,λ为超参数,p表示多层的先验关联矩阵,s表示多层的序列关联矩阵,x表示一个窗口的输入数据;
82、assdis(·)为关联差异,assdis(·),由下式表示:
83、
84、式中,kl(·‖·)为kl散度,l为异常注意力模块的总层数,表示第l层异常注意力层序列关联矩阵的第i行,表示第l层的异常注意力层先验关联矩阵的第i行;
85、步骤32,设置训练相关配置:设置超参数,选择模型优化器;
86、步骤33,对模型进行训练,在训练集上进行重构任务,根据所述损失函数进行梯度更新对模型进行优化,保存模型。
87、作为优选方案,窗口长度n设置为100,窗口滑动步长为50,异常注意力模块的模型维度dmodel为64,损失函数中的超参数λ为3,batch size大小为64,学习率为0.0001,选择adam优化器。
88、作为优选方案,步骤40中所述异常分数,基于下式计算:
89、
90、其中,anomalyscore(x)表示输入x的异常分数,⊙表示矩阵对应元素相乘,xi,:表示输入数据中一个窗口的第i个时间点的数据,表示模型重构结果中一个窗口的第i个时间点的数据。
91、有益效果:相比之前的时间序列异常检测算法,本发明的优势在于:通过将异常注意力模块和timesblock模块相结合,利用timesblock模块捕获隐状态的多周期信息,将其转化为2维序列并使用2d卷积捕获特征,强化了模型的重构能力,能够更有效地捕获正常数据与异常数据之间序列关联和先验关联的关联差异,使得异常分数更好的反映异常数据的异常程度。