最近刚开始读时间序列异常检测相关的论文,因此本文包含了很多论文中用到方法的背景知识。但本人功力尚浅,有很多介绍不清楚的地方,欢迎大家留言批评指正。
Multivariate Time-series Anomaly Detection via Graph Attention Network是来自ICDM2020的文章,本文提出了一种多变量时间序列异常检测的自监督框架。本文亮点有两个:
高效和准确的时间序列异常检测有助于公司持续监控其关键指标,并及时对潜在事件发出警报。可以将多变量时间序列看作一个矩阵:
大部分异常检测方法采用正常数据建模,因为异常通常是少见的。再计算测试数据的预测误差或者重构误差,超过给定阈值即认为发生异常。
本文结合了基于预测的模型和基于重构的模型。因此从这两方面来介绍。
多变量异常检测–基于预测的模型
LSTM-NDT(KDD2018)提出了一种无监督的方法由LSTM网络生成预测。用LSTM学习时序数据做预测。预测每个单通道的值,收集每一步误差构成误差向量,对误差作加权平均的平滑处理,根据平滑后的数据计算阈值,高于阈值的标为异常样本。
DAGMM(ICLR 2018)深度自动编码高斯混合模型专注于无时间依赖性的多变量数据的异常检测。DAGMM由两个主要组件组成:压缩网络和估计网络。(1)压缩网络通过深度自动编码器对输入样本执行降维,将降维后的表示与重构误差拼接起来输入下游结构 (2)估计网络接受上游低维信息,并在高斯混合框架内预测它们异常的可能性。
多变量异常检测–基于重建的模型:通过重构原始输入来学习整个时间序列的表示。
LSTM-VAE将VAE的前馈神经网络换为LSTM,但没有考虑变量之间的依赖性。
OmniAnomaly(KDD2019)结合了GRU和VAE,用于多变量时间序列异常检测的随机递归神经网络。考虑了时间依赖性和多变量时间序列的随机性(其中GRU结合了时间依赖性,VAE结合了随机性)。本文是基于OmniAnomaly提出的改进,所以先介绍GRU和VAE。
GRU是对LSTM的改进。LSTM有三个门函数:输入门、遗忘门和输出门。GRU两个门函数:更新门和重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门控制前一状态有多少信息被写入到当前的候选集上,重置门越小,前一状态的信息被写入的越少。
GRU的参数更少,因而训练稍快,需要更少的数据来泛化。
VAE为变分自编码器。希望构建一个从隐变量 Z 生成目标数据 X 的模型。是在自编码器基础上的。举个例子来了解什么是变分自编码。例子来源:http://www.atyun.com/17976.html
假设任何人像图片都可以由表情、肤色、性别、发型等几个特征的取值来唯一确定。
上面的示例使用固定值来描述输入图像潜在特征。但在实际情况中,更多时候倾向于将每个潜在特征表示为可能值的范围。例如,如果输入蒙娜丽莎的照片,将微笑特征设定为特定的单值(相当于断定蒙娜丽莎笑了或者没笑)显然不如将微笑特征设定为某个取值范围(例如将微笑特征设定为x到y范围内的某个数,这个范围内既有数值可以表示蒙娜丽莎笑了又有数值可以表示蒙娜丽莎没笑)更合适。而变分自编码器便是用“取值的概率分布”代替原先的单值。经过变分自编码器的编码,每张图片的微笑特征不再是自编码器中的单值而是一个概率分布。
解码时,将从每个潜在状态分布中随机采样,生成一个向量作为解码器模型的输入。
VAE利用两个神经网络建立两个概率密度分布模型:一个用于隐变量 Z 后验分布的近似,称为推断网络;另一个根据隐变量生成变量X’ 的条件分布,称为生成网络。 尽管VAE 整体结构与自编码器AE 结构类似,但VAE 的作用原理和AE 的作用原理完全不同。VAE 的“编码器”和“解码器” 的输出都是受参数约束变量的概率分布,而不是某种特定的编码。
如下图,推断网络是生成的隐变量Z的分布参数。
多变量时间序列异常检测旨在检测实体级的异常。
输入: x ∈ R n × k x\in R^{n\times k} x∈Rn×k .其中n为时间戳的长度,k为输入中的特征数。对于一个长时间序列,使用一个长度为n的滑动窗口来生成固定长度的输入。
输出: y ∈ R n y\in R^n y∈Rn.其中, y i ∈ { 0 , 1 } y_{i}\in\{0,1\} yi∈{0,1}表示第i个时间戳是否为异常。
数据归一化–应用于训练集和测试集。使用训练数据中的最大值和最小值对时间序列进行归一化
数据清洗–应用于训练集
基于预测和基于重构的模型对训练数据中的不规则和异常实例很敏感。为了缓解这个问题,本文采用了一种SR单变量异常检测方法来检测训练数据中每个单独的时间序列中的异常时间戳。检测到的异常时间戳将被该时间戳附近的正常值替换。
SR
作者发现大量图片做均值之后的log振幅谱趋近于一条直线,那么一张图片的log振幅谱减去平均图片的log振幅谱就是显著部分。步骤如下:
GAT的背景基础知识可参考:https://zhuanlan.zhihu.com/p/339087706
一般给定有n个节点的一个图,即{v1、v2、···、vn},其中vi是每个节点的特征向量,GAT层节点的输出表示如下:
其中hi表示节点i的输出,与输入vi的形状相同;σ为 sigmoid激活函数;αij是衡量节点j对节点i的贡献的注意力得分,节点j是i的相邻节点之一;L表示节点i的相邻节点数。 αij计算公式:
代表拼接操作;m是节点的特征向量的维数。
面向特征的图注意力层–检测没有任何先验的多变量相关性
将多变量时间序列视为一个完整的图,其中每个节点代表一个特征,每条边表示两个对应特征之间的关系。
输出:k × n
面向时间的图注意力层
将滑动窗口内的所有时间戳视为一个完整的图。节点xt表示时间戳t处的特征向量,其相邻节点包括当前滑动窗口中的所有其他时间戳。如下图红框圈起来的是某个时间戳下的一个节点。
输出:n × k
最终输出:n × 3k (如下图,是拼接了原始数据+相关序列特征+时序依赖特征)
同时更新预测和重建两个模型的参数。损失函数定义为:
基于预测的模型预测下一时间戳的值。在GRU层之后叠加三个全连接层,损失函数采用均方误差:
基于重建的模型旨在学习数据潜在表示的分布。优化目标是找到与数据分布最接近的重构的最佳模型参数。
对应于联合优化目标,每个时间戳都有两个结果。一个是由基于预测的模型计算出的预测值 { x i ^ ∣ i = 1 , 2 , . . . . . . , k } \{\hat{x_{i}}|i=1,2,......,k\} {xi^∣i=1,2,......,k},另一个是由基于重建的模型得到的重建概率 { p i ^ ∣ i = 1 , 2 , . . . . . . , k } \{\hat{p_{i}}|i=1,2,......,k\} {pi^∣i=1,2,......,k}。最终的推理分数需要平衡两个模型的优点,以最大限度地提高异常检测的整体有效性。计算每个特征的推理分数si,并将所有特征的总和作为最终的推理分数。如果其对应的推理分数大于阈值,则时间戳为异常。推理得分计算方式:
其中,γ是超参数,通过验证集上的网格搜索来选择。
实验设置: 滑动窗口n=100,γ=0.8,Adam优化器,epoch=100,初始学习率为0.001。评价指标采用的精确率,召回率,F1分数.作者没有采用AUC,因为现有方法的AUC都太高了,看不出区分性。
OmniAnomaly:没有关注模型中的特征相关性
DAGMM:没有考虑时间信息
重建模型在MSL和TSA表现由于基于预测的模型,基于预测的模型在SMAP数据集上表现优于基于重建的模型。不同模型在不同数据集上表现有差异,因此联合优化是很有必要的。
异常通常发生在一个连续的段中,需要尽快检测并快速采取行动,从发生异常到检测到异常的时间成为延迟时间。本文比较了和OmniAnomaly在不同延迟下的F1分数。随着延迟时间增加,F1分数是在逐渐增加的。本文方法几乎一直优于OmniAnomaly,并且在延迟时间较短时本文性能更多的优于OmniAnomaly。说明本文所提出的基于图注意网络的异常检测模型能够在实时场景中及时预警潜在的事件。
如下表前两行。不使用特征图注意力层会导致f1得分平均下降了3.2%,不使用时间图注意力层会导致f1得分下降了2.5%。
下图为关于DATA_SENT_FROM_FLINK的特征的图注意力分数,分数越高,颜色越深。可以看到发生异常前,CPU和DATA_RECEIVERD_ON_FLINK与DATA_SENT_FROM_FLINK的相关性是很高的,说明这三个特征会有相同的变化趋势。但是发生异常时,CPU和DATA_RECEIVERD_ON_FLINK与DATA_SENT_FROM_FLINK的注意力分数变低。因此,捕捉特征之间的注意力分数可以更好的判断异常。
如下表后两行。基于重建的模型比基于预测的模型具有更好的性能,但两者都显著降低了联合优化模型的性能。
基于重构的模型可以弥补基于预测的模型对时间序列的随机性很敏感的缺点,对扰动和噪声更具有鲁棒性;基于重建的模型能够很好地捕捉全局数据分布,但它可能会忽略破坏时间序列周期性的突然扰动。基于预测的模型可以弥补这一缺点。因此结合起来效果是最好的。
本文方法还可以辅助判断异常原因,更快的解决异常。根据模型的推理分数排序,选择了推理得分最大的几个特征作为异常根本原因的候选特征。在top5候选特征下准确率均达到了70%以上。
本文提出了一种基于图注意力网络的多变量时间序列异常检测框架。通过学习多变量时间序列的特征和时间关系,利用联合优化策略,本文的方法在三个数据集上都优于其他SOTA的模型。此外,模型还具有良好的异常诊断能力,这有助于找到异常事件的实际根本原因。
未来工作: