【读论文】Graph Neural Network-Based Anomaly Detection in Multivariate Time Series

1. 这篇文章的主要研究内容

Graph Neural Network-Based Anomaly Detection in Multivariate Time Series:基于图神经网络的多元时间序列异常检测

目标:为多元时间序列数据开发特定的方法,明确地捕获传感器之间的关系图。

现有的方法存在的缺陷:现有的方法没有明确地学习变量之间现有关系的结构,或使用它们来预测时间序列的预期行为。

针对该缺陷做出的改进:为了充分利用多元时间序列中传感器之间的复杂关系,利用图神经网络(GNNs)来学习传感器之间的关系图。

基于图的方法通过用边表示相互依赖关系,为传感器之间的关系建模提供了一种方法。

  • 一般情况下,GNN假设节点的状态受其邻居的状态影响;
  • 图卷积网络(Graph Convolution Networks, GCNs)通过聚合节点的一步邻居的表示来建模节点的特征表示;
  • 图关注网络(graph attention networks, GATs)在聚合过程中使用关注函数来计算不同邻居的不同权重。

提出的方法图偏差网络(Graph Deviation Network, GDN),该方法学习传感器之间的关系图,并从这些模式中检测偏差。该方法包括四个主要部分:

  1. Sensor Embedding,传感器嵌入:利用嵌入向量灵活地捕捉每个传感器的独特特征;
  2. Graph Structure Learning,图结构学习:图结构学习学习传感器对之间的关系,并将其编码为图中的边;
  3. Graph Attention-Based Forecasting,基于图注意的预测:基于对图中相邻传感器的注意函数来预测传感器的未来行为;
  4. Graph Deviation Scoring,图偏差得分:识别并解释从图中学习的传感器关系的偏差,并对这些偏差进行定位和解释。

2. 图偏差网络(Graph Deviation Network, GDN)

1. Problem Statement

训练数据 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 ( 2 ) , . . . , s t r a i n ( T t r a i n ) ] s_{train} = [s^{(1)}_{train} , s^{(2)}_{train} , ... , s^{(T_{train})}_{train}] strain=[strain(1),strain(2),...,strain(Ttrain)] ,其中, s t r a i n ( t ) s^{(t)}_{train} strain(t) 是一个 N N N维向量,表示在 t t t 时刻 N N N个传感器的值。
按照通常的无监督异常检测公式,假设训练数据只包含正常数据。

我们的目标是能够检测到测试数据中的异常,测试数据表示为: s t r a i n = [ s t e s t ( 1 ) , s t e s t ( 2 ) , . . . , s t e s t ( T t e s t ) ] s_{train} = [s^{(1)}_{test} , s^{(2)}_{test} , ... , s^{(T_{test})}_{test}] strain=[stest(1),stest(2),...,stest(Ttest)]

算法的输出是一组大小为 T t e s t T_{test} Ttest 的二进制标签,这组标签指示了在每个时刻 t t t 是否发生异常。 a ( t ) ∈ { 0 , 1 } a(t)\in\{0,1\} a(t){ 0,1},其中 a ( t ) = 1 a(t)=1 a(t)=1 表示 t t t 时刻发生了异常。

2. Overview

该方法包括四个主要部分:

  1. Sensor Embedding,传感器嵌入:利用嵌入向量灵活地捕捉每个传感器的独特特征;
  2. Graph Structure Learning,图结构学习:图结构学习学习传感器对之间的关系,并将其编码为图中的边;
  3. Graph Attention-Based Forecasting,基于图注意的预测:基于对图中相邻传感器的注意函数来预测传感器的未来行为;
  4. Graph Deviation Scoring,图偏差得分:识别并解释从图中学习的传感器关系的偏差,并对这些偏差进行定位和解释。

在这里插入图片描述

(1)Sensor Embedding,传感器嵌入

为每个传感器引入一个嵌入向量来表示其特征: v i ∈ R d v_i \in R^d viRd , for i ∈ { 1 , 2 , . . . , N } i \in \{1,2,...,N\} i{ 1,2,...,N}

这些嵌入向量 v i v_i vi 之间的相似性表示行为的相似性。因此,具有相似嵌入值的传感器之间应该有很高的相关性。

(2)Graph Structure Learning,图结构学习

图结构学习将学习一个加权有向图,其节点表示传感器,边表示传感器之间的依赖关系。
对于传感器 i i i 来说,我们计算传感器 i i i 的嵌入向量与其候选关系 C i C_i Ci的相似度(归一化点积) e j i e_{ji} eji
e j i = v i T v j ∣ ∣ v i ∣ ∣ ⋅ ∣ ∣ v j ∣ ∣ f o r j ∈ C i e_{ji} = \frac{\pmb{v_i}^T\pmb{v_j}}{||\pmb{v_i}|| \cdot ||\pmb{v_j}||} for j \in C_i eji=∣∣vivi∣∣∣∣vjvj∣∣viviTvjvjforjCi

然后选择前 k k k个这样的归一化点积, k k k的值可以由用户根据所需的稀疏程度来选择。
A j i = 1 { j ∈ T o p K ( e k i : k ∈ C i ) } A_{ji} = 1\{j\in TopK({e_{ki}:k\in C_i})\} Aji=1{ jTopK(eki:kCi)}
其中,1{·}为示性函数,即1{值为真的表达式} = 11{值为假的表达式} = 0

在没有先验信息的情况下,传感器 i i i 的候选关系就是除了它自己之外的所有传感器。


(3) Graph Attention-Based Forecasting,基于图注意力的预测

在时刻 t t t,我们基于历史时间序列数据上大小为 w w w的滑动窗口,将模型的输入定义为 x ( t ) : = [ s ( t − w ) , s ( t − w + 1 ) , . . . , s ( t − 1 ) ] \pmb{x}^{(t)} := [\pmb{s^{(t-w)}}, \pmb{s^{(t-w+1)}}, ... , \pmb{s^{(t-1)}}] xx(t):=[s(tw)s(tw),s(tw+1)s(tw+1),...,s(t1)s(t1)] 。模型需要预测的目标输出是当前时刻的传感器数据,即 s ( t ) s^{(t)} s(t)

为了捕获传感器的不同行为,我们引入了一种基于图注意的特征提取器,基于学习到的图结构将节点信息与相邻节点融合:
z i ( t ) = R e L U ( α i , i W x i ( t ) + ∑ j ∈ N ( i ) α i , j W x j ( t ) ) \pmb{z}^{(t)}_i = ReLU(\alpha_{i,i}\pmb{W}\pmb{x}^{(t)}_i + \sum\limits_{j\in N(i)} \alpha_{i,j} \pmb{W}\pmb{x}^{(t)}_j) zzi(t)=ReLU(αi,iWWxxi(t)+jN(i)αi,jWWxxj(t))其中, x i ( t ) \pmb{x}^{(t)}_i xxi(t) 为模型输入, N ( i ) = { j ∣ A j i > 0 } N(i) = \{ j | A_{ji} > 0 \} N(i)={ jAji>0} W W W 是训练得到的权重矩阵,注意系数 α i , j \alpha_{i,j} αi,j 的计算公式为:

在这里插入图片描述
这样,我们就得到了所有N个节点的表示,即 { z 1 ( t ) , z 2 ( t ) , . . . , z N ( t ) } \{ \pmb{z}^{(t)}_1 , \pmb{z}^{(t)}_2, ... , \pmb{z}^{(t)}_N \} { zz1(t),zz2(t),...,zzN(t)}

对于每个 z i ( t ) \pmb{z}^{(t)}_i zzi(t) ,我们将其与对应的嵌入向量 v i \pmb{v}_i vvi 进行元素相乘(记为 ∘ \circ ),并将所有节点的计算结果作为输出为N维的全连接层的输入,以预测 t t t时刻传感器值的矢量 s ( t ) \pmb{s}^{(t)} ss(t)
s ^ ( t ) = f θ ( [ v 1 ∘ z 1 t , v 2 ∘ z 2 t , . . . , v N ∘ z N t ] ) \pmb{\widehat{s}^{(t)}} = f_\theta ([ \pmb{v}_1 \circ \pmb{z}^{t}_1 , \pmb{v}_2 \circ \pmb{z}^{t}_2 , ... , \pmb{v}_N \circ \pmb{z}^{t}_N ]) s (t)s (t)=fθ([vv1zz1t,vv2zz2t,...,vvNzzNt])
我们希望模型的预测输出与真实值尽量接近,因此使用预测输出 s ^ ( t ) \pmb{\widehat{s}^{(t)}} s (t)s (t) 和观测数据 s ( t ) \pmb{s^{(t)}} s(t)s(t) 之间的均方误差作为损失函数来最小化:
L M S E = 1 T t r a i n − w ∑ t = w + 1 T t r a i n ∣ ∣ s ^ ( t ) − s ( t ) ∣ ∣ 2 2 L_{MSE} = \frac{1}{T_{train - w}} \sum\limits^{T_{train}}_{t=w+1} || \pmb{\widehat{s}^{(t)}} - \pmb{s^{(t)}} ||^2_2 LMSE=Ttrainw1t=w+1Ttrain∣∣s (t)s (t)s(t)s(t)22


(4)Graph Deviation Scoring,图偏差得分

考虑到学习到的关系,我们希望检测和解释偏离这些关系的异常。

传感器 i i i t t t时刻预测行为与观察到的行为之间的偏差: E r r i ( t ) = ∣ s i ( t ) − s ^ ( t ) ∣ Err_i(t) = | s^{(t)}_i - \widehat{s}^{(t)} | Erri(t)=si(t)s (t)

不同的传感器的偏差可能有不同的尺度,因此将每个传感器的偏差做归一化处理: a i ( t ) = E r r i ( t ) − μ ~ i σ ~ i a_i(t) = \frac{Err_i(t) - \widetilde{\mu}_i}{\widetilde{\sigma}_i} ai(t)=σ iErri(t)μ i , 其中 μ ~ i \widetilde{\mu}_i μ i E r r i ( t ) Err_i(t) Erri(t)的中位数, σ ~ i \widetilde{\sigma}_i σ i E r r i ( t ) Err_i(t) Erri(t)四分位距(inter-quartile range, IQR)

Inter-Quartile Range, IQR 是一个分布或一组值的第 1/4 和第 3/4 之间的差异,即 IQR = Q3 - Q1 ,是分布的扩展的一个强有力的度量。

为了计算 t t t时刻的整体异常情况,我们使用 m a x max max函数对传感器进行聚合(因为异常只会影响一小部分传感器,甚至是单个传感器):
A ( t ) = max ⁡ i a i ( t ) A(t) = \max\limits_i a_i(t) A(t)=imaxai(t)
如果 A ( t ) A(t) A(t) 超过设定的阈值,就将 t t t时刻的数据标记为异常。

猜你喜欢

转载自blog.csdn.net/qq_42757191/article/details/126303195