[对比学习][时间序列异常检测]CARLA: Self-supervised contrastive representationlearning for time series anomaly

论文背景与目标:

         时间序列异常检测(TSAD)的一个主要挑战是在许多现实场景中缺乏标记数据。现有的异常检测方法大多侧重于以无监督的方式学习未标记时间序列的正常行为。正常边界通常被严格定义,导致轻微的偏差被归类为异常,从而导致高假阳性率和有限的归纳正常模式的能力。

        当前的多数时间序列对比学习方法直接套用了图片对比学习中的思路,将时间序列进行数据增强作为正样本,而将远距离时间序列或者实际异常时间序列视为负样本,但时间序列和图片之间并不完全相同,举个例子说明,如果我们对一个时间序列进行了过大的数据增强,那么实际上他就转化成了异常样本,而一个远距离的时间异常序列,也可能与一个正常的时间序列表现相似,却被系统作为了负样本进行学习,这会让系统变的低效而盲目。为此,作者提出了CARLA模型.

模型核心思想:

        谈模型前,先和大家谈谈对比学习中正负样本的选择。

        对比学习最关键的点,便是正确合理的选择正样本与负样本,避免带来错误信息,正样本的选择有如下思路:

  1. 在无联系场景下,我们可以选择临近样本,与目标样本相近的样本,在图片中,可以视为图片切块后的上下左右四个角度的切片。
  2. 在无联系场景下,我们可以选择图片的变换与转置,比如将一个图片进行裁剪,变换,变色,作为正样本让图片学习
  3. 在有联系场景下,我们可以选择有效样本作为正样本,比如社交网络中,我们会选择与目标用户有过交互的用户作为正样本

而负样本的选择又有如下思路:

  1. 有监督环境且多数据量下,可以选择实际异常样本,比如在某个数据集中,可以有很多被标注过的异常样本,我们就可以将其作为负样本。这是最理想的状况,训练效果一般很好,但是在实际场景中不多见。
  2. 有监督环境且少数据量下,可以选择异常样本数据增强,使用gan网络或者半监督学习,生成额外的异常样本作为负样本。
  3. 在有联系场景下,可以选择无关样本,比如社交网络中,可以选择未交互用户作为负样本
  4. 在无监督环境下,我们可以选择随机样本,如果没有明确的标签信息,负样本可以通过随机选择不同图片进行配对。假设大部分图片是正常的,模型会学会把不相似的图片(可能是异常图片)推开。在无监督的场景下,可能会存在一些正常图片被误认为是负样本,但模型依然能从中提取有用的信息。
  5. 图像分类任务中,选择非同类样本作为异常样本,系统便可自己学会分类。

    那么结合上述分析,在时间序列异常检测这个任务场景下,我们该如何选择正负样本?

     作者的答案是通过CARLA通过注入异常(如点异常和子序列异常)来生成负样本。它采用对比学习的方式,鼓励模型对时间上接近的正常窗口生成相似的表示,而对异常窗口生成差异明显的表示。即显示的插入异常,生成异常样本作为负样本,选择与目标序列相近的样本作为正样本。这样的选择可以有效的保证正负样本的有效性,而不被错误识别,这种思想可以被推广到各种应用场景中,比如工业场景下图片异常检测,标签量稀少,异常情况未知,我们可以通过人为的生成异常供系统学习。

模型网络架构:

1. 前置任务阶段(Pretext Stage)

  • 网络架构:这一阶段使用了ResNet架构,该架构在时间序列分类任务中表现良好。ResNet的多通道结构能够提取时间序列中的多维特征,每个通道对应一个时间序列的维度。通过使用不同的卷积核大小,ResNet可以在不同的时间尺度上捕捉特征。
  • 功能:CARLA通过注入异常(如点异常和子序列异常)来生成负样本。它采用对比学习的方式,鼓励模型对时间上接近的正常窗口生成相似的表示,而对异常窗口生成差异明显的表示。通过三元组损失函数,模型能够学到更具区分性的特征表示,即能够有效地区分正常与异常数据。

2. 自监督分类阶段(Self-supervised Classification Stage)

  • 网络架构:在这个阶段,CARLA使用了预训练好的ResNet作为特征提取器,并根据前置阶段中学习到的特征表示,计算每个时间序列窗口的最近邻和最远邻表示。这些表示通过自监督分类被用于最终的异常检测。
  • 功能:模型基于每个窗口与其最近邻和最远邻之间的相似度,最大化正常窗口与其最近邻的相似度,最小化异常窗口与最远邻的相似度,从而提高异常检测的准确性。最终,通过对窗口进行分类,模型能够区分正常与异常时间序列。

3.损失函数

1. 前置任务阶段的损失函数三元组损失函数(Triplet Loss)

  • 目标:前置任务阶段的主要目标是通过对比学习优化特征表示,使得时间序列中相邻的正常窗口具有相似的表示,而与注入异常的窗口之间具有较大的差异。
  • 损失函数:三元组损失函数被用来实现这一目标。具体来说,三元组损失函数使用“锚点样本(anchor)”、一个“正样本(positive sample)”以及一个“负样本(negative sample)”来优化模型。它的目标是最小化锚点样本和正样本之间的距离,同时最大化锚点样本和负样本之间的距离。公式如下: LPretext=∑tripletsmax⁡(d(a,p)−d(a,n)+α,0)L_{\text{Pretext}} = \sum_{\text{triplets}} \max\left( d(a, p) - d(a, n) + \alpha, 0 \right)LPretext​=triplets∑​max(d(a,p)−d(a,n)+α,0) 其中,d(a,p)d(a, p)d(a,p) 表示锚点和正样本之间的距离,d(a,n)d(a, n)d(a,n) 表示锚点和负样本之间的距离,α\alphaα 是一个用于控制正负样本间最小距离的超参数。

2. 自监督分类阶段的损失函数对比损失函数(Contrastive Loss)

  • 目标:自监督分类阶段的目标是进一步增强表示空间中的区分性,确保正常样本与其最近邻样本的表示保持相似,而异常样本与其最远邻样本的表示差异化更大。
  • 损失函数:自监督分类阶段使用对比损失函数来最大化正常窗口与最近邻窗口的相似性,同时最小化正常窗口与最远邻窗口的相似性。这个损失函数基于表示空间中的邻近关系,分为“一致性损失(Consistency Loss)”和“不一致性损失(Inconsistency Loss)”:
    • 一致性损失:用于最大化锚点样本和其最近邻样本的相似性。 Lconsistency=−∑w∈B∑n∈Nwlog⁡similarity(w,n)L_{\text{consistency}} = - \sum_{w \in B} \sum_{n \in N_w} \log \text{similarity}(w, n)Lconsistency​=−w∈B∑​n∈Nw​∑​logsimilarity(w,n)
    • 不一致性损失:用于最小化锚点样本和其最远邻样本的相似性。 Linconsistency=−∑w∈B∑f∈Fwlog⁡similarity(w,f)L_{\text{inconsistency}} = - \sum_{w \in B} \sum_{f \in F_w} \log \text{similarity}(w, f)Linconsistency​=−w∈B∑​f∈Fw​∑​logsimilarity(w,f)
  • 总损失:最终的损失函数是通过结合一致性损失、不一致性损失和一个用于防止模型过拟合的熵损失来进行优化。总损失公式如下: LSelf-supervised=Lconsistency−Linconsistency−β⋅LentropyL_{\text{Self-supervised}} = L_{\text{consistency}} - L_{\text{inconsistency}} - \beta \cdot L_{\text{entropy}}LSelf-supervised​=Lconsistency​−Linconsistency​−β⋅Lentropy​ 其中,β\betaβ 是用于调节熵损失权重的超参数。

conclusion:

        总的来说,CARLA为时间序列异常检测提供了一种新的方法,其强大的对比学习机制为未来的研究和应用奠定了基础​。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值