目录
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),该方法学习传感器之间的关系图,并从这些模式中检测偏差。该方法包括四个主要部分:
- Sensor Embedding,传感器嵌入:利用嵌入向量灵活地捕捉每个传感器的独特特征;
- Graph Structure Learning,图结构学习:图结构学习学习传感器对之间的关系,并将其编码为图中的边;
- Graph Attention-Based Forecasting,基于图注意的预测:基于对图中相邻传感器的注意函数来预测传感器的未来行为;
- 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
该方法包括四个主要部分:
- Sensor Embedding,传感器嵌入:利用嵌入向量灵活地捕捉每个传感器的独特特征;
- Graph Structure Learning,图结构学习:图结构学习学习传感器对之间的关系,并将其编码为图中的边;
- Graph Attention-Based Forecasting,基于图注意的预测:基于对图中相邻传感器的注意函数来预测传感器的未来行为;
- Graph Deviation Scoring,图偏差得分:识别并解释从图中学习的传感器关系的偏差,并对这些偏差进行定位和解释。
(1)Sensor Embedding,传感器嵌入
为每个传感器引入一个嵌入向量来表示其特征: v i ∈ R d v_i \in R^d vi∈Rd , 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∣∣viviTvjvjforj∈Ci
然后选择前
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{j∈TopK(eki:k∈Ci)}
其中,1{·}
为示性函数,即1{值为真的表达式} = 1
,1{值为假的表达式} = 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(t−w)s(t−w),s(t−w+1)s(t−w+1),...,s(t−1)s(t−1)] 。模型需要预测的目标输出是当前时刻的传感器数据,即 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)+j∈N(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)={j∣Aji>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θ([vv1∘zz1t,vv2∘zz2t,...,vvN∘zzNt])
我们希望模型的预测输出与真实值尽量接近,因此使用预测输出
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=Ttrain−w1t=w+1∑Ttrain∣∣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时刻的数据标记为异常。