链接:https://arxiv.org/pdf/1905.13628.pdf

TL;DR

对于时间序列中异常检测的问题,以前的方法都是基于RNN预测。文中基于CNN提出了一种时间序列分割的方法,并且在此基础上提出了一种迁移学习的框架用于异常检测。在人工数据集和真实数据集上有比较好的结果。

Algorithm/Model

首先文中的观点比较新颖:将时间序列中的异常检测问题看成图像分割的类似的问题。然后使用图像分割中效果比较好的U-net架构来处理时间序列。
文中使用的U-net架构如下所示:

对于文中提到的分割方法就是讲时间序列分段,每一段都输入模型测试是否发生异常并且每个时间点至少要被测试一次,文中给出了测试三次的图例:

至于时间序列分段,当然理想情况下都可以取模型输入大小,但是对于周期比较长的数据可以选择比较大的snapshot,然后下采样来调整到模型输入大小,反之则上采样。还有以下两点问题:

  1. Input Normalization
    对于不同量级的数据,用不同形式的数据表示可能会有不同的感觉,如下图所示:

    因此,需要人工确定数据的大小量级,然后在此基础上标准化并且在此基础上检测异常。

  2. Augmentation
    序列的扩充方法:zooming, adding random trend, reversing series, applying a random linear operation, random mutation between multiple series, etc.

Transfer learning

对于数据样本明显不足的情况下,利用迁移学习明显是一个比较好的方法。文中定义了三种异常数据来预训练模型:

  1. additive outlier。
  2. anomalous temporary changes.
  3. violaitions of cyclic patterns.

以上的异常都针对于单变量异常,对于多变量异常,文中不能简单地使用Transfer learning训练得到的权重,因此又提出了一个多变量模型,如下图所示:

Experiment Detail

在不同的数据集上测试的效果如下:

Thoughts

文中方法根据图像分割模型类推来检测异常,在不同的数据集上测试效果可以,但是缺少比较的算法,因此并不能说明文中提出的方法是非常有效的。

联系作者