论文研读
综述文章
GNN4TS包括四个基本维度:
- 预测
- 分类
- 异常检测
- 插补
异常检测(P10)
异常检测用于识别偏离正常数据生成过程的数据观测值。无监督前提下的传统方法包括:
基于距离的方法:异常点在特征空间中与其他点的“距离”明显较大,因此不属于某个“簇”或“群体”。典型方法包括:
-
KNN
- 计算每个点与其最近的 k 个邻居的距离
- 若该距离的平均值很大 → 该点可能是异常
-
LOF
- 衡量一个点的密度与其邻域点的密度的比值
- 低密度点(与邻居差异大)被视为异常
-
DBSCAN(密度聚类)
- 离群点不属于任何高密度区域,即为异常
该类方法计算开销高,对高维数据处理能力很差,并且无法获取时间序列的前后关系。
基于分布的方法:异常点是那些不符合总体概率分布假设的数据点。
- 高斯模型
- ARIMA残差检测
该类方法依赖分布假设,对非高斯分布数据不稳健。
深度学习下有两种主要策略用于无监督异常检测:
重构:模型学习如何重建原始输入序列,并使用重构误差来判断异常。考虑模型在训练中只输入正常数据,即其只会重建正常数据;当输入为异常序列时,模型无法准确重建它,因而重构误差变大。误差越大,越可能是异常。
常见形式:
- Autoencoder / Seq2Seq(LSTM 编码器-解码器)
- Graph Autoencoder(用于图结构数据)
- Variational Autoencoder (VAE)(支持概率输出)
预测:模型学习如何预测下一个时间点(或未来若干步),异常点表现为“预测误差高”的时间点。要求样本之间通常存在时序模式。如果为正常点,模型应当能够准确预测;如果预测结果严重偏离实际观测值,可能为异常数据。
常见形式:
- LSTM/GRU 预测模型
- Temporal Convolutional Network (TCN)
- Spatio-Temporal GNN(如 ST-GCN, GDN)
通用方法
将异常检测视为一项无监督任务依赖于模型学习给定数据集的正态性概念,深度学习架构一般部署一个由主干模块和评分模块组成的二叉模块化框架:
- 主干模型用于拟合给定的训练数据(假定为正常值或包含极少的异常)
- 评分模块通过将主干模块的输出与观察到的时间序列数据(实际数据)进行比较,生成一个分数
“分数”旨在衡量正常和异常情况下预期信号之间的差异。评分函数通常首先计算每个单独通道的差异,然后将所有通道的差异合并为一个异常值。
大多数异常检测模型都遵循相同的主干-评分器架构,但是主干模块从标准数据中学习数据结构的方式,以及评分模块的实现方式可以基于三类不同的方法实现:
- 重构
- 预测
- 关系差异框架(relational discrepancy)
重构:框架的运行假设时,重构误差在正常时期较低,在异常时期较高,旨在将输入复制为输出,类似于自动编码器。一旦学习了数据结构,模型应该在正常时期很好地逼近输入,但在异常时期会遇到困难。然后,评分模型根据重构的输出计算差异分数,以识别异常事件。
GNN与其他架构类型的一个关键区别在于主干重建期用STGNN实现。
预测:依赖假设为预测误差在正常时期应该较低,但在异常时期应该较高。主干模块被一个经过训练可以进行一步预测的图神经网络 (GNN) 预测器所取代。在部署期间,预测器进行一步预测,并将预测结果提供给评分器。评分器将预测结果与实际观测信号进行比较,以计算差异,例如绝对误差或均方误差。代表性架构为GDN。
虽然预测差异框架与重建差异框架可能相似,但它们依赖于根本不同的原理和实施策略。重建差异框架将当前输入投射到潜在空间,尝试重建它,并在重建失败时识别异常。该方法在训练和推理过程中都使用当前输入数据,重点关注模型重建训练数据的能力,而不是样本外数据的能力。相反,预测差异框架使用历史数据预测当前值,并通过将预测与实际观测值进行比较来识别异常。重建侧重于复制当前输入,而预测则强调预测未来数据点并通过预测误差检测异常。
GDN(Graph Deviation Network)
旨在充分利用多变量时间序列中传感器之间的复杂关系,并指出了两个挑战:
- 不同的传感器具有显著不同的行为(特征变量代表的物理含义不同)
- 传感器之间的关系未知
GDN方法包括四个部分:
- 传感器嵌入(Embedding),使用嵌入向量灵活捕捉每个传感器的独特特性
- 图结构学习,学习传感器之间的关系
- 基于图注意力机制预测每个传感器在其邻近传感器上的未来值
- 图偏差评分
GDN的输入为:
在每个时间刻度,由个传感器值组成的N维向量,并在不同时刻进行组合,以构成时间序列数据。
GDN的输出为:
一组二进制标签,用于指示每个测试时间点是否为异常