论文笔记--Graph Neural Network-Based Anomaly Detection in Multivariate Time Series

Graph Neural Network-Based Anomaly Detection in Multivariate Time Series

Summary

给定多元时序数据(传感器数据),如何检测异常事件(系统错误或者被攻击)?怎样捕获传感器之间复杂关系,解释异常偏离了那些关系?现有的方法没有明确学习变量之间关系结构,用它们预测事件序列的预测行为。作者结合结构学习方法和图神经网络,用注意力权重为检测到的异常提供解释。

Problem Statement

挑战

将图神经网络用于时序数据的异常检测需要克服两个问题:

  • 不同传感器有不同的行为(一些可能是测量水压,一些可能是测量流量)。但是传统的GNNs使用相同的参数来建模节点行为。
  • 传感器之间的关系是未知的,需要和模型一起学习得到。

问题定义

论文中训练数据是 N N N个传感器在 T t r a i n T_{train} Ttrain时间的检测数据,表示为 S t r a i n = [ S t r a i n ( 1 ) , … , S t r a i n ( T t r a i n ) ] S_{train} = [S^{(1)}_{train}, \dots, S^{(T_{train})}_{train}] Strain=[Strain(1),,Strain(Ttrain)] S t r a i n ( t ) ∈ R N S^{(t)}_{train} \in R^N Strain(t)RN。 N表示传感器个数。并假设训练数据又正常数据组成。
目标是检测测试数据中的异常,这些数据来自相同的N个传感器,测试集表示为 S t e s t = [ S t e s t ( 1 ) , … , S t e s t ( T t e s t ) ] S_{test} = [S^{(1)}_{test}, \dots, S^{(T_{test})}_{test}] Stest=[Stest(1),,Stest(Ttest)]。算法输出则是一组二值标签,表示每个测试时间点是否为异常。 a ( t ) ∈ { 0 , 1 } a(t) \in \{0, 1\} a(t){ 0,1}.

Method(s)

整体框架

整体框架图如图,包含四个部分。

  • 传感器嵌入(embedding):利用嵌入向量捕获每个传感器的独特特性
  • 图结构学习:学习表示传感器间依赖关系的图结构
  • 基于图注意力的预测:预测每个传感器的未来值
  • 图偏差评分:识别从所学关系中产生的偏差,并对这些偏差进行定位和解释。

传感器嵌入

例子:有两个水箱,每个水箱都包含一个测量水箱中水位的传感器,以及一个测量水箱中水质的传感器。两个水位传感器的行为是相似的,两个水质传感器的行为是相似的。同时,在同一个额水箱中的水位和水质传感器之间也是相关的。
作者希望以一种灵活的方式表示每个传感器,以多维的方式捕获其行为背后的不同“因素”。为此引入embedding
v i ∈ R d , f o r   i ∈ { 1 , 2 , ⋯   , N } v_i \in R_d, for\ i \in \{1,2,\cdots,N\} viRd,for i{ 1,2,,N}
embedding经过随机初始化后,然后在训练过程中学习得到。用embedding之间的相似度表示行为的相似。后面主要用于结构学习,以确定哪些传感器彼此相关和注意机制中,这使得不同类型的传感器可以产生不同的效应。

图结构学习

框架的一个主要目标是学习传感器之间的关系。作者使用一个有向图 A A A来表示,因为传感器之间的依赖模式不必是对称的。一般有两种情况有和没有先验知识。存在先验知识时可以把它转化为一组候选关系为每个传感器i。
C i ⊆ { 1 , 2 , ⋯   , N } / i \mathcal{C}_i \subseteq \{1,2, \cdots ,N\}/ {i} Ci{ 1,2,,N}/i

在没有先验信息的情况下,传感器i的候选关系仅仅是除了自身之外的所有传感器。
然后利用上面的embedding在这些候选项中选择传感器i的依赖关系,公式如下

k根据稀疏性进行判断。

基于图注意力的预测

作者使用基于预测的方式异常检测,可以知道哪个传感器出现异常,哪些方面偏离了正常行为。在时间t,定义模型输入为 X ( t ) ∈ R N × w X_{(t)} \in \mathbb{R}^{N\times w} X(t)RN×w 包含 w w w(作者设置为5)个历史信息。
X ( t ) : = [ S ( t − w ) , S ( t − w + 1 ) , ⋯   , S ( t − 1 ) ] X_{(t)}:=[S_{(t-w)}, S_{(t-w+1)}, \cdots, S_{(t-1)}] X(t):=[S(tw),S(tw+1),,S(t1)]
目标输出则是当前时刻t的信息 S ( t ) S_{(t)} S(t)

特征提取

为了获取传感器之间的关系,引入了一种基于图注意力的特征提取器,以学习到的图结构为基础,融合节点的信息与其邻节点的信息。
计算节点i的聚合表示 z i z_i zi


⊕ \oplus 表示拼接, a是注意力机制学习到的系数向量

输出层

通过上面的特征提取,就可以得到 N N N个节点的特征表示 { z 1 ( t ) , z 2 ( t ) , ⋯   , z N ( t ) } \{z^{(t)}_1, z^{(t)}_2, \cdots, z^{(t)}_N\} { z1(t),z2(t),,zN(t)}。然后以element-wise(对应位)相乘,将每个传感器的表示 z i ( t ) z^{(t)}_i zi(t)乘以 v i v_i vi,再经过 FC 得到输出维度 N N N 的向量来预测 t 时刻 sensor 的值 S ( t ) S_{(t)} S(t)。最后loss函数采用MSE。

图偏差评分

异常得分将t时刻的期望行为与观测行为进行比较,计算t时刻i传感器的的误差值Err

由于不同的传感器可能有非常不同的特性,它们的偏差值也可能有非常不同的尺度。为了防止任何一个传感器产生的偏差超过其他传感器,对每个传感器的误差值进行了归一化

其中用到的是中位数和四分位数。没用均值和标准差,作者这样认为更加稳定。
取所有 sensor 最大的异常值为异常分数

由于模型难以预测到突然变化,作者使用SMA(simple moving average) 来生成平滑分数 A s ( t ) A^{(t)}_s As(t),最后得到的值如果超过设定的阈值那么该时刻被标记为异常。

Evaluation

实验部分采用了两个真实水处理物理试验台系统的传感器数据集来测试 GDN 及其 baselines 的性能对比。操作人员模拟了真实水处理厂的攻击场景,并将其记录为真实和异常。数据集包含两个星期的正常操作数据,这些数据被用作各自模型的训练数据。若干受控的物理攻击在接下来的几天中以不同的间隔进行,这与测试集中的异常情况相对应。

对比实验

消融实验

可解释性

可视化其传感器嵌入向量

嵌入空间中的相似性表明了传感器行为之间的相似性,从这个图符合这一规律。7种颜色代表7类传感器。

理解异常

左图是学习到的传感器之间的图,注意力系数表示边的权重。

案例研究
如WADI数据集文档中所记录的,该异常来自流量传感器1 FIT 001 PV,通过错误读数受到攻击,但错误的读数是在这个传感器的正常范围内
但在攻击期间,GDN检测到1 MV 001 STATUS是异常得分最高的传感器,该传感器的较大偏差说明1 MV 001 STATUS可能是被攻击的传感器,或与被攻击传感器密切相关。而被攻击的正好就是它最紧密的1 FIT 001 PV

Notes

构建可学习的节点embedding,用embedding确认链接的节点。用输入数据结合embedding来计算注意力系数。预测来做异常检测。检测的是整个系统的异常。code

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务