DCdetector: Dual Attention Contrastive Representation Learning for Time Series Anomaly Detection

时间序列异常检测的双注意对比表征学习 KDD2023


摘要

关键词:时间序列异常检测,对比学习,表示学习,自监督学习

时间序列异常检测对于广泛的应用至关重要。它旨在从时间序列中的正态样本分布中识别出异常样本。这项任务最根本的挑战是学习一个能够有效区分异常的表示图。基于重建的方法仍然占主导地位,但带有异常的表示学习可能会因其巨大的异常损失而损害性能。另一方面,对比学习旨在找到一种能够清晰区分任何实例与其他实例的表示,这可以为时间序列异常检测带来更自然、更有前景的表示。本文提出了一种多尺度双注意对比表征学习模型DCdetector。DCdetector利用一种新颖的双注意不对称设计来创建置换环境和纯对比损失来指导学习过程,从而学习出具有优越判别能力的置换不变表征。大量的实验表明,DCdetector在多个时间序列异常检测基准数据集上取得了最先进的结果。代码可在此URL1公开获取。


一、简介

时间序列异常检测在现实应用中有着广泛的应用,包括但不限于工业设备状态监测、金融欺诈检测、故障诊断、汽车日常监控维护等[3,20,27,57,79]。随着不同传感器的快速发展,在许多不同的应用中,已经在系统运行期间收集了大规模的时间序列数据[44,71,77]。有效发现系统中的异常模式对于确保安全、避免经济损失至关重要[81]。例如,在能源行业中,及时发现风力发电机传感器的异常有助于避免灾难性故障。在金融行业,检测欺诈对于减少经济损失至关重要。

然而,从大量复杂的时间序列中发现异常模式是一项挑战。首先,我们仍在确定这些异常会是什么样子。异常也被称为离群值或新颖性,这意味着观察不寻常的,不规则的,不一致的,意想不到的,罕见的,错误的,或者仅仅是奇怪的,这取决于情况[59]。此外,典型的情况通常是复杂的,这使得很难定义什么是不寻常的或
意外的。例如,风力涡轮机在不同的天气情况下以不同的模式工作。其次,异常通常是罕见的,因此需要工作来获得标签[80]。大多数监督或半监督方法在给定有限的标记训练数据的情况下无法工作。第三,异常检测模型应该考虑时间序列数据的时间、多维和非平稳特征[78]。多维性描述了多元时间序列中维度之间通常存在依赖关系,非平稳性意味着时间序列的统计特征是不稳定的。具体来说,时间依赖性是指相邻点之间存在潜在的相互依赖性。虽然每个点都应该被标记为正常或异常,但将单个点视为样本是不合理的。

为了应对这些挑战,研究人员设计了各种时间序列异常检测方法。它们可以大致为分类为统计、经典机器学习和基于深度学习的方法[6,59]。机器学习方法,特别是基于深度学习的方法,由于其强大的表示优势,已经取得了很大的成功。大多数监督和半监督方法[14,18,51,53,87,90]无法处理有限标记数据的挑战,特别是异
常是动态的,以前从未观察到的新异常可能会出现。无监督方法在对标记数据没有严格要求的情况下很受欢迎,包括基于一类分类、基于概率、基于距离、基于预测、基于重构的方法[11,24,42,59,66,85,92]。

基于重建的方法学习一个模型来重建正态样本,因此无法被学习模型重建的实例是异常。这种方法正在迅速发展,因为它通过将其与不同的机器学习模型相结合来处理复杂数据的能力,以及实例表现异常异常的可解释性。然而,在不受异常阻碍的情况下,为正常数据学习一个重建良好的模型通常是具有挑战性的。在时间序列异常检测中,情况甚至更糟,因为异常的数量是未知的,正常点和异常点可能出现在一个实例中,这使得学习一个干净的、重建良好的法向点模型变得更加困难。

近年来,对比代表性学习因其设计的多样性和在计算机视觉领域下游任务中的突出表现而受到关注[13,15,29,82]。然而,对比代表性学习在时间序列异常检测领域的有效性仍有待探索。本文提出了一种双注意对比表征学习异常检测器dc检测器来解决时间序列异常检测中的难题。我们的dc检测器的关键思想是正态时间序列点共享潜在模式,这意味着正态点与其他点具有很强的相关性。相比之下,异常点则没有(即与其他点的弱相关性)。从不同的观点学习异常的一致表示将是困难的,但对于正常点来说很容易。主要动机是,如果正常点和异常点的表示是可区分的,我们可以在没有高质量重建模型的情况下检测异常。

具体来说,我们提出了一个具有两个分支和双重关注模块的对比结构,两个分支共享网络权重。这个模型是基于两个分支的相似性来训练的,因为正规点占大多数。异常的表示不一致会很明显。因此,如果没有一个高质量的重建模型,正常和异常数据之间的表示差异就会被放大。为了捕捉时间序列中的时间依赖性,dc检测器采用基于补丁的注意力网络作为基本模块。提出了一种多尺度设计,以减少修补过程中的信息丢失。对于多变量时间序列,dc检测器采用通道无关设计,有效地将所有通道表示成表示。特别是,dc检测器不需要事先了解异常情况,因此可以处理以前从未观察到的新异常值。我们的dc检测器的主要贡献总结如下:

•架构:设计了一个基于对比学习的双分支注意结构来学习一个排列不变的表征,该表征扩大了表征差异在正常点和异常点之间。此外,还提出了信道无关补丁来增强时间序列中的局部语义信息。在注意力模块中提出了多尺度,以减少补片过程中的信息丢失。
•优化:基于两个分支的相似性设计了一个有效且鲁棒的损失函数。请注意,该模型是纯粹对比训练的,没有
重建损失,这减少了异常的干扰。
•性能和理由:dc检测器在七个多变量和一个单变量时间序列异常检测基准数据集上实现了与最先进的方法相
当或优越的性能。我们还提供论证讨论,以解释我们的模型如何在没有负样本的情况下避免崩溃。

二、相关工作

在本节中,我们展示了这项工作的相关文献。相关工作包括异常检测和对比表征学习。
时间序列异常检测。检测时间序列异常的方法有很多种,包括统计方法、经典机器学习方法和深度学习方法[63]。统计方法包括使用移动平均线、指数平滑[56]和自回归集成移动平均(ARIMA)模型[9]。机器学习方法包括聚类算法,如k-means[34]和基于密度的方法,以及分类算法,如决策树[35,46]和支持向量机(svm)。深度学习方法包括使用自编码器、变分自编码器(VAEs)[53,61]和循环神经网络(rnn)[12,66],如长短期记忆(LSTM)网络[85]。最近在时间序列异常检测方面的工作还包括基于生成对抗网络(GANs)的方法[16,16,41,91]和基于深度
强化学习(DRL)的方法[30,84]。一般来说,深度学习方法在识别时间序列数据中的异常方面更有效,特别是当数据是高维或非线性的时候。

另一种观点认为,时间序列异常检测模型大致可以分为两类:有监督和无监督异常检测算法。当异常标签可用或负担得起时,监督方法可以表现得更好。这样的方法可以追溯到AutoEncoder[61]、LSTM-VAE[53]、Spectral Residual (SR)[57]、RobustTAD[26]等。另一方面,在异常标签难以获得的情况下,可以应用无监督异常检测算法。这种多功能性导致了社区长期以来对开发新的无监督时间序列异常检测方法的兴趣,包括DAGMM[92]、OmniAnomaly[66]、GDN[24]、RDSSM[42]等。无监督深度学习方法在时间序列异常检测中得到了广泛的研究。其主要原因如下。首先,在现实世界的应用中,通常很难或负担不起获得所有时间序列序列的标签。其次,深度模型在表示学习方面很强大,在无监督设置下有可能获得不错的检测精度。其中大多数是基于重建方法,即为法向点学习一个重建良好的模型;然后,重构失败的实例就是异常。

最近,一些已经提出了基于自监督学习的方法来增强无监督异常检测中的泛化能力[33,88,90]。

对比表征学习(contrast Representation Learning)。对比表示学习的目标是学习一个嵌入空间,在这个空间中,相似的数据样本彼此保持接近,而不相似的数据样本相距很远。对比学习的思想可以追溯到Inst-Dic[73]。经典对比模型创建<正、负>样本对来学习一种表示,其中正样本彼此靠近(拉在一起),远离负样本(推开)[13,15,29,82]。他们的关键设计是关于如何定义负样本和处理高计算能力/大批量需求[37]。另一方面,BYOL[28]和SimSiam[17]消除了负样本的参与,这样一个简单的siamese模型(SimSiam)实现了与其他最先进的复杂架构相当的性能。

利用对比设计使两类样本的距离变大,是很有启发性的。我们尝试通过精心设计的基于多尺度补丁的关注模块来区分时间序列异常点和正态点。此外,我们的dc检测器也没有负样本,即使没有“停止梯度”也不会陷入平凡的解决方案。
在这里插入图片描述
图1:三种方法的架构比较。基于重建的方法使用表征神经网络来学习法线点的模式并进行重建。在Anomaly Transformer中,利用高斯核学习先验差异,利用transformer模块学习关联差异;最小极大关联学习也很关键,并且包含了重建损失。dcdetector简洁,没有特别设计的高斯核或最小极大学习策略,也没有重建损失。

三、方法学

考虑一个长度为T的多元时间序列:
X = ( x 1 , x 2 , … , x T ) , \mathcal{X}=(x_1,x_2,\ldots,x_T), X=(x1,x2,,xT),
其中每个数据点 x t ∈ R d x_t\in\mathbb{R}^d xtRd是在某一时间戳𝑡从工业传感器或机器中获取的,𝑑为数据维度,例如传感器或机器的数量。我们的问题可以看作是给定输入时间序列X,对于另一个长度为𝑇’且模态与训练序列相同的未知测试序列X𝑡𝑒𝑠𝑡,我们希望预测Y𝑡𝑒𝑠𝑡=(𝑦1,𝑦2,…)。 y t ∈ { 0 , 1 } y_{t}\in\{0,1\} yt{0,1},其中1为异常数据点,0为正常数据点。

如前所述,表示学习是处理时间序列复杂模式的强大工具。由于在实践中获得标签的成本很高,所以无监督和自监督的方法更受欢迎。时间序列异常检测的关键问题是将异常点与正态点区分开来。学习表现出广泛差异而没有异常的表征是有希望的。我们用双重注意结构放大了对比表征学习的优势。

在某种程度上,我们在这里使用的突出的感应偏置与异常变压器探索[75]相似。也就是说,与相邻点相比,异常与整个序列的联系或相互作用更少。异常变压器通过学习到的高斯核与注意权分布之间的关联差异来检测异常。相比之下,我们提出了dcdetector,它通过双注意自监督对比型结构以更通用和简洁的方式实现了类似的目标。

为了更好地定位我们在时间序列异常检测领域的工作,我们对三种方法进行了简要的比较。需要注意的是,异常变压器是一系列显式关联建模工作的表示[7,19,23,89],并不意味着它是唯一的。我们只是想与这里最接近的作品做一个更直接的比较。图1显示了三种方法的架构比较。基于重建的方法(图1(a))使用表征神经网络来学习法向点的模式并进行重建。异常变压器(图1(b))利用了很难从异常点到整个序列建立非平凡关联的观察结果。因此,用高斯克尔nel学习先验差异,用变压器模块学习关联差异。MinMax关联学习对于异常变压器也是至关重要的,并且可以控制重建损失。相比之下,所提出的DCdetector(图1©)是简洁的,因为它不需要专门设计的高斯核,MinMax学习策略或重建损失。DCdetector主要利用设计的基于对比学习的双分支注意对不同视点的异常进行差异学习,放大异常点与正态点之间的差异。简单和有效有助于DCdetector的多功能性。

3.1 总体架构

图2显示了DCdetector的整体架构,它由四个主要组件组成:Forward Process模块、Dual Attention contrast Structure模块、Representation Discrepancy模块和Anomaly Criterion模块。
在这里插入图片描述
图2:DCdetector框架的工作流程。DCdetector主要由四个部分组成:Forward Process模块、Dual Attention contrast Structure模块、Representation Discrepancy模块和Anomaly Criterion模块。
在这里插入图片描述
图3:具有通道独立性的基本补丁注意。将多变量时间序列输入中的每个通道视为单个时间序列,并划分为多个patch。每个通道共享相同的自关注网络,并将表示结果连接起来作为最终输出。

Forward Process模块中的输入多变量时间序列通过实例规范化模块进行规范化[38,69]。实例规范化的输入都来自独立通道本身。它可以看作是对全球信息的巩固和调整,是一种更稳定的训练处理方法。信道独立假设已被证明有助于多变量时间序列预测任务[43,62],以减少参数数量和过拟合问题。我们的dc检测器遵循这样的通道独立性设置,通过修补来简化注意网络。

更具体地说,具有通道独立性的基本补丁注意如图3所示。多元时间序列输入 ( X ∈ R T × d ) (X\in\mathbb{R}^{T\times d}) (XRT×d)中的每个通道被视为单个时间序列 ( X i ∈ R T × 1 , i ^ = 1 , 2 , … , d ) (\mathcal{X}^{i}\in\mathbb{R}^{T\times1},\hat{i}=1,2,\ldots,d) (XiRT×1,i^=1,2,,d),并分为补丁。各通道共享相同的自关注网络,表示结果 ( X ′ i ∈ R N × 1 , i = 1 , 2 , … , d ) ({\mathcal X}^{\prime i}\in\mathbb{R}^{N\times1},i=1,2,\ldots,d) (XiRN×1,i=1,2,,d)被连接为最终输出 ( X ′ ∈ R N × d ) (X^{\prime}\in\mathbb{R}^{N\times d}) (XRN×d)。在实现阶段,在时间序列数据中运行滑动窗口被广泛应用于时间序列异常检测任务中[64,75],对主要设计的影响很小。更多的实现细节将留在实验部分。

双注意对比结构模块在我们的设计中是至关重要的。它学习不同视图下输入的表示。其见解是,对于正态点,即使在不同的视图中,它们中的大多数也会共享相同的潜在模式(强相关性不易被破坏)。然而,由于异常是罕见的,没有明确的模式,它们很难与正态点或它们之间共享潜在模式(即异常与其他点的相关性较弱)。因此,不同视图中正常点表示的差异很小,而异常点表示的差异很大。我们可以用一个设计良好的表示差异准则来区分异常点和正态点。关于双注意对比结构和表征差异的详细内容将在下文的3.2节和3.3节中详细介绍。

对于异常准则,我们根据两种表示之间的差异计算异常分数,并使用先验阈值进行异常检测。细节将留在3.4节中。

3.2 双重注意对比结构

在dc检测器中,我们提出了一种具有双重注意的对比表示学习结构,以从不同的角度获得输入时间序列的表示。具体来说,对于补丁操作,dc检测器将补丁表示和补丁内表示作为两个视图。请注意,它与传统的对比学习不同,在传统的对比学习中,原始数据和增强数据被认为是原始数据的两个视图。此外,dc检测器不像典型的对比方法那样构造<正、负>对[29,73]。相反,其基本设置与仅使用阳性样本的对比方法相似[17,28]。

3.2.1双重注意。如图2所示,输入的时间序列 X ∈ R T × d X\in\mathbb{R}^{T\times d} XRT×d被打补丁为 X ∈ R P × N × d X\in\mathbb{R}^{P\times N\times d} XRP×N×d,其中,P 为补丁的大小,N为补丁的个数。然后,我们将通道信息与批处理维度融合,输入大小变为 X ∈ R P × N \mathcal{X}\in\mathbb{R}^{P\times N} XRP×N有了这样的补丁时间序列,DCdetector通过自注意网络学习在patch-wise和in-patch视图中的表示。我们的双重注意力可以编码为𝐿层,因此为了简单起见,我们只使用其中一个层作为示例。

对于patch-wise表示,将单个patch视为一个单元,并通过多头自注意网络(称为patch-wise attention)来建模patch之间的依赖关系。其中,在patch_size §维度上进行嵌入操作,嵌入的形状为 X N ∈ R N × d m o d e l X_{N}\in\mathbb{R}^{N\times d_{model}} XNRN×dmodel。然后,我们采用多头注意力权重来计算patch表示。首先,初始化查询query和键key:
Q N i , K N i = W Q i X N i , W K i X N i 1 ≤ i ≤ H , ( 1 ) Q_{Ni},\mathcal{K}_{Ni}=\mathcal{W}_{Qi}\mathcal{X}_{Ni},\mathcal{W}_{\mathcal{K}i}\mathcal{X}_{\mathcal{N}i}\quad1\leq i\leq H,\quad(1) QNi,KNi=WQiXNi,WKiXNi1iH,(1)

式中, Q N i , K N i ∈ R N × d m o d e l H Q_{\mathcal{N}i},\mathcal{K}_{\mathcal{N}i}\in\mathbb{R}^{N\times\frac{d_{model}}{H}} QNi,KNiRN×Hdmodel分别表示查询q和关键字k, W Q i , W K i ∈ R d m o d e l H × d m o d e l H W_{Q_i},W_{\mathcal{K}_i}\in\mathbb{R}^{\frac{d_{model}}{H}\times\frac{d_{model}}{H}} WQi,WKiRHdmodel×Hdmodel表示 Q N i , K N i Q_{Ni},\mathcal{K}_{Ni} QNi,KNi的可学习参数矩阵,𝐻为头部数。然后,计算注意力权重:
A t t n N i = S o f t m a x ( Q N i K N i T d m o d e l H ) , ( 2 ) Attn_{N_{i}}=Softmax(\frac{Q_{Ni}\mathcal{K}_{Ni}^{T}}{\sqrt{\frac{d_{model}}{H}}}),\quad\quad(2) AttnNi=Softmax(Hdmodel QNiKNiT),(2)

其中𝑆𝑜𝑓𝑡𝑚𝑎(·)函数对注意权值进行归一化。最后,连接多头,得到最终的patch-wise的 A t t n N Attn_{\mathcal{N}} AttnN表示形式:
A t t n N = Concat ( A t t n N 1 , ⋯   , A t t n N H ) W N O , ( 3 ) Attn_{N}=\text{Concat}(Attn_{N_{1}},\cdots,Attn_{N_{H}})W_{N}^{O},\quad(3) AttnN=Concat(AttnN1,,AttnNH)WNO,(3)
其中 W N O ∈ R d m o d e l × d m o d e l W_{\mathcal{N}}^{O}\in\mathbb{R}^{d_{model}}\times d_{model} WNORdmodel×dmodel为可学习参数矩阵。

同样,对于in-patch表示,同一补丁中点的依赖关系是通过多头自注意网络(称为in-patch注意)获得的。注意,patch-wise注意网络与in-patch注意网络共享权重。具体来说,在patch_number(N)维上应用另一个嵌入操作,嵌入的形状为 X φ ∈ R P × d m o d e l X_{\varphi}\in\mathbb{R}^{P\times d_{model}} XφRP×dmodel。然后,我们采用多头关注权来计算补丁内表示。首先,初始化query和key:
在这里插入图片描述
式中, Q P i , K P i ∈ R P × d m o d e l H Q_{\mathcal{P}_{i}},\mathcal{K}_{\mathcal{P}_{i}}\in\mathbb{R}^{P\times\frac{d_{model}}{H}} QPi,KPiRP×Hdmodel分别表示query和key, W Q i , W K i ∈ R d m o d e l H × d m o d e l H W_{Q_{i}},W_{\mathcal{K}_{i}}\in\mathbb{R}^{\frac{d_{model}}{H}}\times\frac{d_{model}}{H} WQi,WKiRHdmodel×Hdmodel表示 Q φ i , K N i Q_{\varphi_{i}},\mathcal{K}_{N_{i}} Qφi,KNi的可学习参数矩阵。然后,计算注意力权重:
A t t n P i = S o f t m a x ( Q P i K P i T d m o d e l H ) , ( 5 ) Attn_{\mathcal{P}_i}=Softmax(\frac{Q_{\mathcal{P}_i}\mathcal{K}_{\mathcal{P}_i}^T}{\sqrt{\frac{dmodel}{H}}}),\quad(5) AttnPi=Softmax(Hdmodel QPiKPiT),(5)
其中𝑆𝑜𝑓𝑡𝑚𝑎(·)函数对注意权值进行归一化。最后,连接多头,得到最终的in-patch的 A t t n N Attn_{\mathcal{N}} AttnN表示形式:
A t t n φ = Concat ( A t t n φ 1 , ⋯   , A t t n φ H ) W P O , ( 6 ) Attn\varphi=\text{Concat}(Attn\varphi_1,\cdots,Attn\varphi_H)W_{\mathcal{P}}^O,\quad(6) Attnφ=Concat(Attnφ1,,AttnφH)WPO,(6)
其中 W P O ∈ R d m o d e l × d m o d e l W_{\mathcal{P}}^O\in\mathbb{R}^{d_{model}\times d_{model}} WPORdmodel×dmodel为可学习参数矩阵。
在这里插入图片描述
图4:上采样是如何完成的简单示例。对于patch-wise分支,重复是在in-patch完成的(从patch到点)。对于in-patch分支,重复是从“一个”patch到完整数量的patch(从点到patch)。

注意, W Q i , W K i \mathcal{W}_{Q_i},\mathcal{W}_{\mathcal{K}_i} WQi,WKi两部分是局部注意表示网络和局部注意表示网络中的共享权重。

3.2.2上采样和多尺度设计。虽然patch设计受益于获取局部语义信息,但patch-wise attention忽略了patch中点之间的相关性,in-patch attention忽略了patch之间的相关性。为了比较两种表示网络的结果,我们需要首先进行上采样。对于patch-wise分支,因为我们只有patch之间的依赖关系,重复在in-patch进行上采样(即从patch到点),我们将得到最终的patch-wise表示n。对于in-patch分支,因为只获得patch点之间的依赖关系,重复从“一个”patch到完整数量的patch。我们将得到最终的in-patch表示P。

图4中显示了一个简单的示例,其中一个patch被标记为0.05,一个点被标记为𝑝。这种修补和重复的上采样操作不可避免地会导致信息丢失。为了更好地保留原始数据的信息,dc检测器引入了多尺度的补片表示和上采样设计。最终的表示以不同的尺度(即补丁大小)串联结果。具体来说,我们可以预先设定一个各种补丁的列表,同时进行并行补丁和双注意表示的计算。对每个patch部分进行上采样后,对其求和,得到最终的patch-wise表示N和in-patch表示P,分别为
N = Upsampling ( A t t n N ) , P = Upsampling ( A t t n P ) . ( 7 ) \mathcal{N}=\text{Upsampling}(Attn_{\mathcal{N}}),\quad\mathcal{P}=\text{Upsampling}(Attn_{\mathcal{P}}).\quad(7) N=Upsampling(AttnN),P=Upsampling(AttnP).(7)

3.2.3对比结构。Patch-wise和in-patch分支在两个不同的视图中输出相同输入时间序列的表示。如图2 ©所示,patch-wise样本表示从每个patch中学习相同位置的样本点之间的加权组合。另一方面,斑块内样本表示学习同一斑块内点之间的加权组合。我们可以把这两种表示看作是排列的多视图表示。我们在这里利用的关键归纳偏差是正规点在置换下可以保持它们的表示,而异常点则不能。从这种对偶注意非负对比学习中,我们想要学习一种排列不变表示。学习细节将留在3.3节中。

3.3 表征差异

采用双注意对比结构,获得了两个视图(补丁分支和补丁内分支)的表示。我们形式化了一个基于Kullback-Leibler散度(KL散度)的损失函数来度量这两种表示的相似性。直觉是,由于异常是罕见的,正态点共享潜在模式,相同输入的表示应该是相似的。

3.3.1损失函数定义。则P和N的损失函数可以定义为
L P { P , N ; X } } = ∑ K L ( P , S t o p g r a d ( N ) ) + K L ( S t o p g r a d ( N ) , P ) , - L N { P , N ; X ] } = ∑ K L ( N , S t o p g r a d ( P ) ) + K L ( S t o p g r a d ( P ) , N ) , . \begin{aligned} &\mathcal{L}_{\mathcal{P}}\{\mathcal{P},\mathcal{N};\mathcal{X}\}& \}=\sum KL(\mathcal{P},\mathrm{Stopgrad}(\mathcal{N}))+KL(\mathrm{Stopgrad}(\mathcal{N}),\mathcal{P}), \\ &&\text{-} \\ &\mathcal{L}_{\mathcal N}\{\mathcal{P},\mathcal{N};\mathcal{X}]& \}=\sum KL(\mathcal{N},\mathrm{Stopgrad}(\mathcal{P}))+KL(\mathrm{Stopgrad}(\mathcal{P}),\mathcal{N}), \\ &&\text{.} \end{aligned} LP{P,N;X}LN{P,N;X]}=KL(P,Stopgrad(N))+KL(Stopgrad(N),P),-}=KL(N,Stopgrad(P))+KL(Stopgrad(P),N),.

式中,X为输入时间序列,𝐾𝐿(·||·)为KL散度距离,P和N分别为inpatch分支和patch-wise分支的表示结果矩阵。停止梯度(标记为’ Stopgrad ')操作也用于我们的损失函数中,以异步训练两个分支。则总损失函数L定义为
在这里插入图片描述
与大多数基于重构框架[59]的异常检测工作不同,DCdetector是一个基于表示学习的自监督框架,我们的模型中没有使用重构部分。毫无疑问,重建有助于发现与预期行为不同的异常。然而,构建一个合适的编码器和解码器来“’reconstruct”时间序列并不容易,因为它们预计会有异常的干扰。此外,由于没有充分考虑潜在的模式信息,限制了表征的能力。

3.3.2关于模型崩溃的讨论。有趣的是,只有单一类型的输入(或者说,不包括负样本),我们的dc检测器模型不会陷入平凡的解决方案(模型崩溃)。SimSiam[17]在其设置中避免了模型崩溃以停止梯度操作。然而,我们发现在没有停止梯度的情况下,DCdetector仍然可以工作,尽管在相同的参数下,没有停止梯度的版本并没有获得最好的性能。详细情况见消融研究(第4.5.1节)。

一个可能的解释是我们的两个分支完全不对称。按照[86]提出的统一视角,考虑分支的输出向量为𝑍,𝑍可分解为𝑜和𝑟两部分,分别为𝑍=𝑜+𝑟,其中𝑜= IE[𝑍]为中心向量,定义为整个表示空间中𝑍的平均值,𝑟为残差向量。当坍缩发生时,所有向量𝑍落向中心向量𝑜,且𝑜优于𝑟。两个分支记为𝑍𝑝=𝑜𝑝+𝑟𝑝,𝑍𝑛=𝑜𝑛+𝑟𝑛,如果分支是对称的,即𝑜𝑝=𝑜𝑛,则它们之间的距离为𝑍𝑝-𝑍𝑛=𝑟𝑝-𝑟𝑛。由于𝑟𝑝和𝑟𝑛来自相同的输入示例,这将导致崩溃。幸运的是,DCdetector中的两个分支是不对称的,因此即使𝑟𝑝和𝑟𝑛相似,𝑜𝑝也不容易与𝑜𝑛相同。因此,由于我们的非对称设计,DCdetector很难落入一个平凡的解决方案。

3.4 Anomaly Criterion

由于法向点通常共享潜在模式(它们之间具有很强的相关性),因此不同视图下法向点的表示结果距离小于异常的表示距离。定义 X ∈ R T × d {\mathcal X}\in\mathbb{R}^{T\times d} XRT×d的最终异常评分为

AnomalyScore ⁡ ( X ) = ∑ K L ( P , Stopgrad ⁡ ( N ) ) + K L ( N , Stopgrad ⁡ ( P ) ) . \operatorname{AnomalyScore}(\mathcal{X})=\sum KL(\mathcal{P},\operatorname{Stopgrad}(\mathcal{N}))+KL(\mathcal{N},\operatorname{Stopgrad}(\mathcal{P})). AnomalyScore(X)=KL(P,Stopgrad(N))+KL(N,Stopgrad(P)).
这是一个逐点的异常分数,异常点分数高于正常点分数。

根据每个点的异常得分,使用超参数阈值𝛿来判断某个点是否异常(1),如果得分超过该阈值,则输出Y为异常。那就是

Y i = { 1 :anomaly AnomalyScore ( X i ) ≥ δ 0 :normal AnomalyScore ( X i ) < δ . ( 12 ) \mathcal{Y}_i=\begin{cases}1\text{:anomaly}&\text{AnomalyScore}(\mathcal{X}_i)\ge\delta\\0\text{:normal}&\text{AnomalyScore}(\mathcal{X}_i)<\delta.\end{cases}\quad(12) Yi={1:anomaly0:normalAnomalyScore(Xi)δAnomalyScore(Xi)<δ.(12)

四、 实验

4.1 基准数据集

我们采用来自5个实际应用的8个代表性基准来评估DCdetector:(1) MSL(火星科学实验室数据集)是由NASA收集的,显示了来自火星探测器[32]的传感器和执行器数据的状况。(2) SMAP (Soil Moisture Active - Passive dataset)也由NASA收集,它提供了火星探测器[32]使用的土壤样本和遥测信息。与MSL相比,SMAP具有更多的点异常。(3) PSM (Pooled Server Metrics dataset)是一个来自eBay Server Machines的公共数据集,具有25维[1]。(4) SMD (Server Machine Dataset)是从一家互联网公司的计算集群中收集的长达5周的数据集,该数据集堆栈了28台机器的资源利用访问轨迹[66]。(5) SWaT(安全水处理)是一个基于51维传感器的数据集,收集自连续运行[47]的关键基础设施系统。(6) NIPS-TS-SWAN是从Spaceweather HMI活动区Patch系列中提取的太阳光球矢量磁图中提取的公开可获取的综合多元时间序列基准[5,40]。(7) NIPS-TS-GECCO是面向“物联网”的饮用水水质数据集,发表于2018年遗传与进化计算会议[40,48]。除了上述多变量时间序列数据集,我们还对单变量时间序列数据集进行了测试。(8) UCR由KDD2021多数据集时间序列异常检测大赛提供,包含250个子数据集,来自各种自然来源[21,36]。它是数据集子序列异常的单变量时间序列。在每个时间序列中,只有一个异常。附录B中的表8总结了八个基准数据集的更多细节。

4.2 基线和评价标准

我们将我们的模型与26条基线进行了综合评价,包括基于重建的模型:AutoEncoder[61]、LSTM-VAE[53]、OmniAnomaly[66]、BeatGAN[91]、InterFusion[45]、Anomaly Transformer [75];基于自回归的模型:VAR[4]、Autoregression[58]、LSTM- rnn[8]、LSTM[32]、CL-MPPCA [67];密度估计模型:LOF[10]、mppcadd[76]、DAGMM [92];基于聚类的方法:DeepSVDD[60]、THOC[64]、ITAD [65];经典方法:OCSVM[68]、基于OCSVM的子序列聚类(OCSVM*)、ifforest[46]、基于ifforest的子序列聚类(IFores [32], CL-MPPCA [67];密度估计模型:LOF[10]、mppcadd[76]、DAGMM [92];基于聚类的方法:DeepSVDD[60]、THOC[64]、ITAD [65];经典方法:OCSVM[68]、基于OCSVM的子序列聚类(OCSVM*)、ifforest[46]、基于ifforest的子序列聚类(ifforest *)、梯度增强回归(GBRT) [25];变化点检测和时间序列分割方法:BOCPD[2]、U-Time[55]、TS-CP2[22]。我们还将我们的模型与时间序列子序列异常检测算法Matrix Profile[83]进行了比较。
在这里插入图片描述
表1:实际多变量数据集的总体结果。表现从低到高排序。P、R和F1分别代表准确率、召回率和F1得分。所有结果以%表示,最好的用粗体表示,次优的用下划线表示。

在这里插入图片描述
表2:实际多变量数据集上的多指标结果。affp和affr分别是隶属度量[31]的精度和召回率。R_A_R和R_A_P分别为Range-AUC-ROC和Range-AUC-PR[52],分别表示在ROC曲线和PR曲线下根据标签变换得到的两个分数。V_ROC和V_RR分别是基于ROC曲线和PR曲线[52]创建的曲面下的体积。所有结果以%表示,最好的结果以Bold表示。

此外,我们采用多种评价标准进行综合比较,包括常用的评价指标:正确率、精密度、召回率、f1分;最近提出的评价指标:隶属关系精度/召回率对[31]和表面下体积[52]。F1-score是最广泛使用的度量,但不考虑异常事件。关联精度和召回是根据真实事件和预测事件之间的距离来计算的。VUS度量基于接收算子特征(receiver operator characteristic, ROC)曲线考虑异常事件。不同的量度提供不同的评估视图。我们采用常用的调整技术进行公平比较[64,66,74,75],根据该技术,如果识别出异常段中的单个时间点,则认为异常段中的所有异常都已被检测到。

4.3 实现细节

我们在实现中总结了所有默认超参数,如下所示。我们的DCdetector模型包含三个编码器层(𝐿= 3)。隐藏状态的维度𝑑𝑚𝑜𝑑𝑒𝑙是256,为了简单起见,注意头的数量𝐻是1。我们为不同的数据集选择了不同的补丁大小和窗口大小选项,如附录b中的表8所示。我们的模型将异常定义为异常评分超过超参数阈值𝛿的时间点,其默认值为1。以上超参数选择和权衡的所有实验请参见附录c。所有实验均在PyTorch[54]中实现,使用一个NVIDIA Tesla-V100 32GB GPU。使用带默认参数的[39]进行优化。我们将初始学习率设置为10−4,批处理大小设置为128,所有数据集都有3个epoch。
在这里插入图片描述
表3:NIPS-TS数据集的总体结果。表现从低到高排序。所有的结果都以%表示,最好的用粗体表示,次优的用下划线表示。
在这里插入图片描述
表4:单变量数据集的总体结果。结果以%表示,最好的结果以Bold表示。

4.4 主要结果

4.4.1多变量异常检测。我们首先在5个真实的多变量数据集上用19个竞争基线评估我们的dc检测器,如表1所示。可以看出,我们提出的DCdetector在大多数基准数据集中,在广泛使用的F1度量[57,75]下都能达到SOTA结果。值得一提的是,如何公平地评价异常检测算法的性能是近年来研究的热点。Precision、Recall和F1分数仍然是最广泛使用的比较指标。提出了一些额外的度量(隶属关系精度/查全率对,VUS等)来弥补它们的不足[31,52,64,66,74,75]。为了判断哪个指标是我们工作范围之外的最佳指标,我们在这里包含了所有指标。由于最近的Anomaly Transformer比其他基线模型取得了更好的结果,我们主要在这个多指标比较中评估DCdetector和Anomaly Transformer,如表2所示。可以看到,在大多数度量中,DCdetector的性能更好,或者至少与Anomaly Transformer相当。

我们还评估了表3中另外两个数据集NIPSTS-SWANand NIPS-TS-GECCO的性能,它们比上述五个数据集具有更多异常类型,更具挑战性。虽然两个数据集的异常率最高(NIPS-TS-SWAN为32.6%),最低(NIPS-TS-GECCO为1.1%),但DCdetector仍然能够达到SOTA结果,完全优于其他方法。同样,表5总结了DCdetector和Anomaly Transformer之间的多指标比较,DCdetector在大多数指标上仍然取得了更好的性能。

4.4.2单变量异常检测。在这一部分中,我们比较了dc检测器和异常变压器在单变量时间序列异常检测中的性能。我们分别对UCR数据集中的每个子数据集进行训练和测试,平均结果如表4所示。计数表示有多少子数据集已经到达SOTA。UCR的子数据集都只有一段子序列异常,dcdetector可以正确识别和定位这些子序列异常,并获得最优结果。

4.5 模型分析

4.5.1消融研究。表6为停止梯度的消融研究。根据3.3节中的损失函数定义,我们在L{P,N;X},分别记为补丁方向分支和补丁内分支的停止梯度。使用两站梯度模块,我们可以看到dc检测器获得了最好的性能。如果不包含停止梯度,则DCdetector仍然工作并且不会陷入平凡的解决方案。此外,在这种设置下,它的性能优于除异常变压器之外的所有基线。此外,我们还对表7中两种主要的预处理方法(用于去噪的双边滤波器和用于归一化的实例归一化)如何影响我们的方法的性能进行了消融研究。可以看出,当单独使用时,它们中的任何一个都略微提高了我们的模型的性能。但是,如果同时使用它们,性能就会下降。因此,我们最终的DCdetector只包含用于预处理的实例规范化模块。更多关于多尺度补丁、窗口大小、注意头、嵌入维数、编码器层、异常阈值和损失函数度量的消融研究见附录C。

4.5.2可视化分析。我们通过在图5中可视化不同的异常来展示DCdetector是如何工作的。我们使用[40]中报道的合成数据生成方法来生成具有不同类型异常的单变量时间序列,包括点方向异常(全球点和上下文点异常)和模式方向异常(季节、群体和趋势异常)[40]。可以看出,从异常分数相对较高的正态点开始,DCdetector可以更好地鲁棒检测到各种异常。

4.5.3参数灵敏度。我们还研究了dc检测器的参数灵敏度。图6(a)显示了不同窗口大小下的性能。如前所述,不能将单个点作为时间序列中的实例。窗口分割在分析中应用广泛,窗口大小是一个重要的参数。对于我们的主要评估,窗口大小通常设置为60或100。尽管如此,图6(a)的结果表明,DCdetector在很大范围的窗口大小(从30到210)下是稳健的。实际上,在窗口大小范围内[45,195],性能波动小于2.3%。图6(b)显示了不同多尺度尺寸下的性能。横坐标是用于多尺度注意的补丁大小组合,即我们将几个双注意模块与给定的补丁大小组合组合在一起。与窗口大小不同,多尺度设计有助于dc检测器的最终性能,不同的贴片大小组合导致不同的性能。注意,在研究窗口大小的参数灵敏度时,尺度大小固定为[3,5]。在研究尺度大小的参数灵敏度时,窗口大小固定为60。图6©显示了不同编码器层数下的性能,因为许多深度神经网络的性能受到层数的影响。图6(d)和图6(e)显示了不同头数或𝑑𝑚𝑜𝑑𝑒𝑙大小下的模型表现。可以看出,在注意头数和𝑑𝑚𝑜𝑑𝑒𝑙尺寸较小的情况下,DCdetector的性能最好。不同𝑑𝑚𝑜𝑑𝑒𝑙大小的内存和时间使用情况如图7所示。根据图7和图6(e),我们将隐藏状态的维度设置为𝑑𝑚𝑜𝑑𝑒𝑙= 256,以权衡性能和复杂性,可以看到,在𝑑𝑚𝑜𝑑𝑒𝑙= 256下,DCdetector可以很好地工作,并且具有高效的运行时间和较小的内存消耗。
在这里插入图片描述
表5:NIPS-TS数据集的多指标结果。所有结果以%表示,最好的结果以Bold表示。

在这里插入图片描述
表6:DCdetector停止梯度消融研究。所有结果以%表示,最好的结果以Bold表示。
在这里插入图片描述
表7:DCdetector Forward Process模块的烧蚀研究。所有结果以%表示,最好的结果以Bold表示。
在这里插入图片描述
图5:对于不同类型的异常,DCdetector和anomaly Transformer的地真值异常和异常评分的可视化比较。

在这里插入图片描述
图6:DCdetector主要超参数的参数灵敏度研究。
在这里插入图片描述
图7:在不同𝑑𝑚𝑜𝑑𝑒𝑙大小的训练期间,平均GPU内存成本和100次迭代的平均运行时间。

五、 结论

本文提出了一种新的时间序列异常检测算法DCdetector。我们在dc检测器中设计了一个基于对比学习的双分支注意结构来学习排列不变表示。这种表示扩大了正常点和异常点之间的差异,提高了检测精度。此外,还采用了多尺度和信道无关补丁两种附加设计来提高性能。此外,我们提出了一个没有重建误差的纯对比损失函数,与广泛使用的重建损失函数相比,经验证明了对比损失函数的有效性。最后,大量的实验表明,与各种最先进的算法相比,DCdetector在八个基准数据集上达到了最佳或相当的性能。

六、 致谢

本工作由阿里巴巴集团通过阿里巴巴研究实习生计划提供支持。

在这里插入图片描述
本文介绍了两种主要算法及其代码,分别是DCdetector outline(算法1)和Dual Attention contrast Structure(算法2)。
对于DCdetector Outliner (Algorithm 1),我们使用PyTorch[54]中的nn.ModuleList()来定义多个补丁尺度,并对每组补丁大小执行嵌入和双关注操作。实例归一化后,分别在补丁数(二进制)维和补丁大小(二进制)维中计算补丁型编码器和补丁内编码器。最后,我们对不同的补丁尺度进行平均,得到最终的补丁表示N和补丁内表示P。
在这里插入图片描述
对于双注意对比结构(算法2),我们分别基于Eq.1 - Eq.3和使用Eq.4 - Eq.6计算patch-wise表示。最后,我们采用不同的上采样方法使两种表示的形状相同,以便随后比较表示差异。注意,我们不需要计算具体的注意值,因为只进行了两次表示,并且注意权重也可以用作表示以及提高代码的效率。此外,这里只显示了双注意对比结构的单个斑块尺度,在进行上采样时可能会出现信息丢失。然而,多补丁尺度将弥补这一问题,如算法1所示。

B 数据集描述

我们在表8中总结了用于评估的七个基准数据集。这些数据集包括单变量和多变量时间序列场景,具有不同的类型和异常比率。MSL、SMAP、PSM、SMD、SWaT、NIPS-TS-SWAN和NIPS-TS-GECCO是多变量时间序列数据集。UCR是一个单变量时间序列数据集。

C额外学习
为了验证所提出的dc探测器参数的灵敏度,本部分进行了更多的烧蚀实验。我们在这里提供比4.5.1节更详细的结果。我们还显示了在训练过程中使用的内存以及迭代时间。

C.1损失函数中度量的研究
我们使用不同的统计距离计算补丁表示与补丁内表示之间的差异,结果如表9所示。3.3节中提出的损失函数可以在所有基准测试中获得SOTA性能。注意,只使用简单的KL散度,这是一个不对称的损失函数,我们仍然可以得到一个可比的结果。然而,对于Jensen-Shannon (JS)分歧,存在明显的性能下降,特别是对于MSL基准测试。

C.2多尺度补片研究

对多补丁尺度∈{[1],[3],[5],[1,3],[1,5],[3,5],[1,3,5]}进行测试。补丁大小偏好为奇数,以防止上采样过程中的信息丢失。通常,多尺度设计的结果是更大的内存,不同的数据集具有不同的最佳多补丁尺度。这可能是由于不同情况下不同的信息密度和异常类型。评估结果的细节如表10所示。

C.3窗口大小的研究

窗口大小是时间序列分析中一个重要的超参数。它用于将时间序列分割成多个实例,因为通常单个点不能视为一个样本。表11中的结果表明,DCdetector在不同的窗口大小下都相当健壮。实际上,在大范围内[45,195],性能略低于所有基准测试的最佳性能。此外,我们还测试了窗口大小对内存成本和运行时间的影响。窗口大小对内存开销的影响是计算复杂度的二次曲线。因此,滑动窗口大小和内存成本/运行时间之间的权衡是非常重要的,尤其是在现实场景中。幸运的是,在所有基准测试中,DCdetector可以在小于105的窗口大小下实现最佳工作,这大大降低了模型的复杂性及其内存成本。

C.4注意头的研究
多头注意在注意网络中得到了广泛的应用。我们研究了注意头数𝐻对dc检测器的影响。一般情况下,注意头的个数是偶数,所以我们设𝐻∈{1,2,4,8}。幸运的是,在注意头数较小的情况下,如表12所示,我们的模型仍然取得了很好的性能(最好的或略低于最好的)。因此,DCdetector在运行时不需要很大的内存。

C.5嵌入维数研究
嵌入维数𝑑𝑚𝑜𝑑𝑒𝑙是注意力网络中的另一个重要参数。作为隐藏通道的一个超参数,它可能会对模型性能、内存成本和运行效率产生影响。我们将𝑑𝑚𝑜𝑑𝑒𝑙∈{128,256,512,1024}作为Transformer[70]建议的超参数。对于SMAP和PSM,它对最终结果的影响很小。对于MSL来说,它在𝑑𝑚𝑜𝑑𝑒𝑙尺寸小、内存小的情况下实现了最佳性能。总体而言,所提出的dc检测器在内存成本小、实时性好的情况下,也能取得相当好的性能。详情见表13

C.6编码器层研究

许多深度模型的性能依赖于网络层的数量𝐿。我们还在表14中显示了编码器层数的影响。我们将𝐿∈{1,2,3,4,5}作为Transformer[70]建议的超参数。不同的基准测试有不同的最优参数。幸运的是,我们的模型可以在不超过3层的情况下获得最佳性能,并且不会在编码器层过少或编码器层过多时失败。

C.7异常阈值研究

异常阈值𝛿是一个超参数,根据Eq. 12,它可能会影响异常是否被确定。所有基准测试的默认值都是1。如表15所示,在0.5 ~ 1的范围内,对最终的模型性能影响不大。PSM和SMAP对异常阈值的鲁棒性也优于MSL。对于三个基准测试,当𝛿等于0.7或0.8时,其最佳结果出现。

在这里插入图片描述
表8:基准数据集的详细信息。AR (anomaly ratio)表示整个数据集的异常比例。

在这里插入图片描述
表9:损失函数中指标的消融研究。所有结果都以%为单位。最好的是用粗体写的。

在这里插入图片描述
表10:多尺度补片结果的消融研究(窗口大小=60)。所有结果都以%为单位。最好的是用粗体写的。
在这里插入图片描述
表11:消融研究窗口大小结果(斑块大小=[3,5])。所有结果都以%为单位。最好的是用粗体写的。

在这里插入图片描述
表12注意头消融研究𝐻结果(斑块大小=[3,5],窗口大小=60)。所有结果都以%为单位。最好的是用粗体写的。

在这里插入图片描述
表13:埋入𝑑𝑚𝑜𝑑𝑒𝑙消融研究结果(patch size=[3,5], window size=60)。所有结果都以%为单位。最好的是用粗体写的。
在这里插入图片描述
表14编码器层消融研究𝐿结果(patch size=[3,5], window size=60)。所有结果都以%为单位。最好的是用粗体写的。

在这里插入图片描述
表15异常阈值消融研究𝛿结果(patch size=[3,5], window size=60)。所有结果都以%为单位。最好的是用粗体写的。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值