论文笔记:基于图注意力网络的多变量时间序列异常检测Multivariate Time-series Anomaly Detection via Graph Attention Network

本文介绍了基于图注意力网络的多变量时间序列异常检测方法,结合面向特征和时间的图注意力层,以及联合训练预测和重建模型,有效提升异常检测性能。实验表明,该方法在多个数据集上优于SOTA模型,具备良好的实时预警能力和异常诊断能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近刚开始读时间序列异常检测相关的论文,因此本文包含了很多论文中用到方法的背景知识。但本人功力尚浅,有很多介绍不清楚的地方,欢迎大家留言批评指正。

Multivariate Time-series Anomaly Detection via Graph Attention Network是来自ICDM2020的文章,本文提出了一种多变量时间序列异常检测的自监督框架。本文亮点有两个:

  1. 面向特征和面向时间的图注意力层:
    作者将每个单变量时间序列视为一个单独的特征。利用了两个图注意力层,学习多变量时间序列在时间和特征维度上的复杂依赖关系(如下图,学习了时间戳n和特征k维度的相关关系)。面向特征的图注意力层捕获了多个特征之间的关系,而面向时间的图注意力层强调了沿时间维度的依赖关系。
  2. 联合训练基于预测的模型和基于重建的模型:
    基于预测的模型善于捕捉时间序列的周期性信息,基于重建的模型善于捕获时间序列的全局数据分布。本文通过实验证明了它们是互补的。
    在这里插入图片描述

一·背景介绍

1.1 时间序列异常检测

高效和准确的时间序列异常检测有助于公司持续监控其关键指标,并及时对潜在事件发出警报。可以将多变量时间序列看作一个矩阵:
在这里插入图片描述
大部分异常检测方法采用正常数据建模,因为异常通常是少见的。再计算测试数据的预测误差或者重构误差,超过给定阈值即认为发生异常。

1.2 相关工作

本文结合了基于预测的模型和基于重构的模型。因此从这两方面来介绍。
多变量异常检测–基于预测的模型
LSTM-NDT(KDD2018)提出了一种无监督的方法由LSTM网络生成预测。用LSTM学习时序数据做预测。预测每个单通道的值,收集每一步误差构成误差向量,对误差作加权平均的平滑处理,根据平滑后的数据计算阈值,高于阈值的标为异常样本。

在这里插入图片描述DAGMM(ICLR 2018)深度自动编码高斯混合模型专注于无时间依赖性的多变量数据的异常检测。DAGMM由两个主要组件组成:压缩网络和估计网络。(1)压缩网络通过深度自动编码器对输入样本执行降维,将降维后的表示与重构误差拼接起来输入下游结构 (2)估计网络接受上游低维信息,并在高斯混合框架内预测它们异常的可能性。

在这里插入图片描述
多变量异常检测–基于重建的模型:通过重构原始输入来学习整个时间序列的表示。
LSTM-VAE将VAE的前馈神经网络换为LSTM,但没有考虑变量之间的依赖性。
OmniAnomaly(KDD2019)结合了GRU和VAE,用于多变量时间序列异常检测的随机递归神经网络。考虑了时间依赖性和多变量时间序列的随机性(其中GRU结合了时间依赖性,VAE结合了随机性)。本文是基于OmniAnomaly提出的改进,所以先介绍GRU和VAE。

1.3 GRU

GRU是对LSTM的改进。LSTM有三个门函数:输入门、遗忘门和输出门。GRU两个门函数:更新门和重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门控制前一状态有多少信息被写入到当前的候选集上,重置门越小,前一状态的信息被写入的越少。
GRU的参数更少,因而训练稍快,需要更少的数据来泛化。
在这里插入图片描述

1.4 VAE

VAE为变分自编码器。希望构建一个从隐变量 Z 生成目标数据 X 的模型。是在自编码器基础上的。举个例子来了解什么是变分自编码。例子来源:http://www.atyun.com/17976.html
假设任何人像图片都可以由表情、肤色、性别、发型等几个特征的取值来唯一确定。
在这里插入图片描述上面的示例使用固定值来描述输入图像潜在特征。但在实际情况中,更多时候倾向于将每个潜在特征表示为可能值的范围。例如,如果输入蒙娜丽莎的照片,将微笑特征设定为特定的单值(相当于断定蒙娜丽莎笑了或者没笑)显然不如将微笑特征设定为某个取值范围(例如将微笑特征设定为x到y范围内的某个数,这个范围内既有数值可以表示蒙娜丽莎笑了又有数值可以表示蒙娜丽莎没笑)更合适。而变分自编码器便是用“取值的概率分布”代替原先的单值。经过变分自编码器的编码,每张图片的微笑特征不再是自编码器中的单值而是一个概率分布。
在这里插入图片描述在这里插入图片描述解码时,将从每个潜在状态分布中随机采样,生成一个向量作为解码器模型的输入。
VAE利用两个神经网络建立两个概率密度分布模型:一个用于隐变量 Z 后验分布的近似,称为推断网络;另一个根据隐变量生成变量X’ 的条件分布,称为生成网络。 尽管VAE 整体结构与自编码器AE 结构类似,但VAE 的作用原理和AE 的作用原理完全不同。VAE 的“编码器”和“解码器” 的输出都是受参数约束变量的概率分布,而不是某种特定的编码。
在这里插入图片描述如下图,推断网络是生成的隐变量Z的分布参数。
在这里插入图片描述

1.5 主要贡献

  1. 提出了一种新的以自监督的方式解决多变量时间序列异常检测问题的框架。模型在两个公共数据集上显示出优越的性能,达到了SOTA。将生产数据的F1分数也提高了9%,对用户满意度产生了很大影响。
### 关于图神经网络多变量时间序列异常检测中的实现 对于多变量时间序列数据,基于图神经网络(GNNs)的方法能够有效捕捉不同维度之间的复杂依赖关系。一种典型的应用是在异常检测领域,在此背景下GNN可以建模节点间的关系并识别出偏离正常模式的行为。 具体到Graph Neural Network-Based Anomaly Detection in Multivariate Time Series (AAAI 2021),该研究提出了利用时空图卷积来处理时间序列特征提取的任务[^1]。通过构建一个动态变化的邻接矩阵表示各变量间的关联程度,并将其作为输入传递给GCN层以学习潜在的空间结构信息;与此同时,RNN/LSTM等循环单元负责编码时间上的演变规律。最终模型会预测未来时刻的状态分布情况,当实际观测值与预期存在显著差异时即触发警报机制认为发生了异常事件。 下面给出一段简化版Python伪代码用于说明如何搭建这样一个框架: ```python import torch from torch_geometric.nn import GCNConv class ST_GCN(torch.nn.Module): def __init__(self, node_features, hidden_units): super(ST_GCN, self).__init__() self.spatial_conv = GCNConv(node_features, hidden_units) self.temporal_rnn = torch.nn.LSTM(input_size=hidden_units, hidden_size=hidden_units) def forward(self, data): x, edge_index = data.x, data.edge_index # Spatial Convolution Layer h_spatial = torch.relu(self.spatial_conv(x, edge_index)) # Temporal Recurrent Layer output, _ = self.temporal_rnn(h_spatial.unsqueeze(0)) return output.squeeze() # Example usage model = ST_GCN(node_features=..., hidden_units=...) criterion = ... # Define loss function here optimizer = ... for epoch in range(num_epochs): model.train() optimizer.zero_grad() out = model(data) loss = criterion(out[-1], target) # Assuming last time step prediction is compared against ground truth loss.backward() optimizer.step() ``` 上述代码片段展示了怎样组合空间域内的图卷积操作以及时间轴上递归计算的方式来进行联合训练。需要注意的是这只是一个概念性的展示而非完整的解决方案——真实场景下还需要考虑诸如负样本挖掘、超参数调优等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值