鲁棒对比单类时间序列异常检测方法RoCA及其在受污染数据中的应用

RoCA: Robust Contrastive One-class Time Series Anomaly Detection with Contaminated Data

摘要 Abstract

时间序列信号的累积以及标签的缺乏使得时间序列异常检测(Anomaly Detection, AD)成为深度学习的一种自监督任务。基于正态性假设的方法面临以下三个局限性:(1)单一假设很难全面描述正态性或导致偏差。(2)某些假设可能违背异常检测的原则。(3)其基本假设是训练数据未被污染(无异常),而在实际应用中这一假设并不现实,导致鲁棒性下降。本文提出了一种新的鲁棒方法RoCA,据我们所知,这是首次解决上述三个挑战的方法。该方法在一个单一的训练过程中融合了单类分类和对比学习的分离假设,以刻画更为完整的所谓正态性。此外,它在整个训练过程中监控训练数据并计算一个精心设计的异常分数。这个分数有助于识别潜在的异常,进而用于定义分类边界,受到异常暴露概念的启发。在AIOps数据集上的性能比未考虑污染时(COCA)提高了6%。在两个大型高维多变量数据集上,性能提高了5%到10%。RoCA在单变量和多变量数据集上的平均性能最高。源代码可在https://github.com/ruiking04/RoCA获取。

The accumulation of time-series signals and the absence of labels make time-series Anomaly Detection (AD) a self-supervised task of deep learning. Methods based on normality assumptions face the following three limitations: (1) A single assumption could hardly characterize the whole normality or lead to some deviation. (2) Some assumptions may go against the principle of AD. (3) Their basic assumption is that the training data is uncontaminated (free of anomalies), which is unrealistic in practice, leading to a decline in robustness. This paper proposes a novel robust approach, RoCA, which is the first to address all of the above three challenges, as far as we are aware. It fuses the separated assumptions of one-class classification and contrastive learning in a single training process to characterize a more complete so-called normality. Additionally, it monitors the training data and computes a carefully designed anomaly score throughout the training process. This score helps identify latent anomalies, which are then used to define the classification boundary, inspired by the concept of outlier exposure. The performance on AIOps datasets improved by 6% compared to when contamination was not considered (COCA). On two large and high-dimensional multivariate datasets, the performance increased by 5% to 10%. RoCA achieves the highest average performance on both univariate and multivariate datasets. The source code is available at https://github.com/ruiking04/RoCA.