文章全名:ANOMALY TRANSFORMER: TIME SERIES ANOMALY DETECTION WITH ASSOCIATION DISCREPANCY
文章链接:pdf (openreview.net)
来源:ICLR 2022 Spotlight
完成单位:清华大学软件学院
摘要
最近,Transformer在点对点表示和点对点关联建模方面展现出了强大的能力,本文发现每个时间点的自注意力权重分布可以体现与整个时间序列的丰富关联。
本文发现由于异常的罕见性,从异常点到整个系列建立非平凡的关联非常困难,因此,异常的关联主要集中在它们相邻的时间点上。
这种对相邻的数据的关注可以作为一种准则来区分正常和异常数据。本文提出了Associate discrepancy,关联差异,来作为区分准则。
此外本文还设计了一种极大极小策略,来进一步放大正常和异常数据在关联差异上的差距。
简介
由于现实世界产生的数据量非常大,并且异常数据非常罕见,而且经常隐藏于大量正常数据中,所以对时间序列的异常检测通常采取无监督的方式来实现。
近些年因为神经网络强大的表示能力,很多方法都使用循环神经网络来提取时间点级别的特征,然后用重构或者自回归来进行自监督学习。常用的异常检测准则有重构和预测误差。
然而,由于异常的罕见性,点对点的表示对于复杂的时间模式来说信息较少,并且可能被正常的时间点所主导,使得异常难以区分。此外,重建或预测误差是逐点计算的,无法提供对时间上下文的全面描述。
本文发现将Transformer应用于时间序列,每个时间点的时间关联可以从自注意力图中获得,该图显示了该时间点在时间维度上与所有时间点的关联权重分布。本文把这种关联称为series association,序列关联,这种可以直接通过Transformer在原始序列上计算得到。
此外,本文观察到由于异常的罕见性和正常模式的主导地位,异常很难与整个系列建立强烈的关联。异常的关联应该集中在相邻的时间点上,因为由于连续性,这些时间点更有可能包含类似的异常模式。本文把这种对邻近的关联称为prior-association,先验关联。
根据以上这两种关联,本文提出了Association Discrepancy,关联差异这种新准则。因为异常数据很难与远处的数据建立联系,因此series association会更趋向于数据点周围的数据,而prior association也是更关注周围的数据,所以异常点数据的association discrepancy就会更小一些。
因此本文提出了一种基于Transformer结构的异常检测网络,将原本的自注意力修改为Anomaly-Attention,包含两个分支结构,分别建模每个时间点的prior association和series association,先验关联是通过一个可学习的高斯核来表示与周围数据点的关联性,序列关联则就是通过自注意力权重来进行表示。
此外还提出了一个极大极小策略来放大正常和异常之间的差异。
方法
Anomaly Transformer
本文将原Transformer结构中的多头自注意力替换为Anomaly Attention模块。
Z
l
=
Layer-Norm
(
Anomaly-Attention
(
X
l
−
1
)
+
X
l
−
1
)
X
l
=
Layer-Norm
(
Feed-Forward
(
Z
l
)
+
Z
l
)
,
\begin{aligned} & \mathcal{Z}^l=\text { Layer-Norm }\left(\text { Anomaly-Attention }\left(\mathcal{X}^{l-1}\right)+\mathcal{X}^{l-1}\right) \\ & \mathcal{X}^l=\text { Layer-Norm }\left(\text { Feed-Forward }\left(\mathcal{Z}^l\right)+\mathcal{Z}^l\right), \end{aligned}
Zl= Layer-Norm ( Anomaly-Attention (Xl−1)+Xl−1)Xl= Layer-Norm ( Feed-Forward (Zl)+Zl),
其中
X
l
∈
R
N
×
d
m
o
d
e
l
\mathcal X^l \in \mathbb R^{N \times d_{model}}
Xl∈RN×dmodel,表示第
l
l
l层的输出,
X
0
=
E
m
b
e
d
d
i
n
g
(
X
)
\mathcal X^0=Embedding(\mathcal X)
X0=Embedding(X)是对原始数据的嵌入,
Z
l
∈
R
N
×
d
m
o
d
e
l
\mathcal Z^l \in \mathbb R^{N \times d_{model}}
Zl∈RN×dmodel是第
l
l
l层隐藏层的输出。Anomaly-Attention是计算关联差异。
- 对于先验关联 P l P^l Pl,本文采用了可学习的高斯核函数,其中心在对应时间点的索引上。这种设计可以利用高斯分布的单峰特点,使数据更加关注邻近的点。同时,为了使得先验关联能够适应不同的时序长度,高斯核函数包含可学习的尺度参数 σ \sigma σ。
- 对于序列关联 S l S^l Sl,它是由标准Transformer中注意力计算获得,一个点的序列关联即是该点在注意力矩阵中对应行的注意力权重分布。该分支是为了挖掘原始序列中的关联,让模型自适应地捕捉最有效果的关联。
I n i t i a l i z a t i o n : Q , K , V , σ = X l − 1 W Q l , X l − 1 W K l , X l − 1 W V l , X l − 1 W σ l P r i o r − A s s o c i a t i o n : P l = Rescale ( [ 1 2 π σ i exp ( − ∣ j − i ∣ 2 2 σ i 2 ) ] i , j ∈ { 1 , ⋯ , N } ) S e r i e s − A s s o c i a t i o n : S l = Softmax ( Q K T d model ) R e c o n s t r u c t i o n : Z ^ l = S l V Initialization: \mathcal{Q}, \mathcal{K}, \mathcal{V}, \sigma=\mathcal{X}^{l-1} W_{\mathcal{Q}}^l, \mathcal{X}^{l-1} W_{\mathcal{K}}^l, \mathcal{X}^{l-1} W_{\mathcal{V}}^l, \mathcal{X}^{l-1} W_\sigma^l \\ Prior-Association: \mathcal{P}^l=\operatorname{Rescale}\left(\left[\frac{1}{\sqrt{2 \pi} \sigma_i} \exp \left(-\frac{|j-i|^2}{2 \sigma_i^2}\right)\right]_{i, j \in\{1, \cdots, N\}}\right) \\ Series-Association: \mathcal{S}^l=\operatorname{Softmax}\left(\frac{\mathcal{Q} \mathcal{K}^{\mathrm{T}}}{\sqrt{d_{\text {model }}}}\right) \\ Reconstruction: \widehat{\mathcal{Z}}^l=\mathcal{S}^l \mathcal{V} Initialization:Q,K,V,σ=Xl−1WQl,Xl−1WKl,Xl−1WVl,Xl−1WσlPrior−Association:Pl=Rescale([2πσi1exp(−2σi2∣j−i∣2)]i,j∈{1,⋯,N})Series−Association:Sl=Softmax(dmodel QKT)Reconstruction:Z l=SlV
Association Discrepancy
本文使用了先验关联和序列关联之间的对称KL散度来衡量关联差异(Association Discrepancy)。
AssDis
(
P
,
S
;
X
)
=
[
1
L
∑
l
=
1
L
(
KL
(
P
i
,
:
l
∥
S
i
,
:
l
)
+
K
L
(
S
i
,
:
l
∥
P
i
,
:
l
)
)
]
i
=
1
,
⋯
,
N
\operatorname{AssDis}(\mathcal{P}, \mathcal{S} ; \mathcal{X})=\left[\frac{1}{L} \sum_{l=1}^L\left(\operatorname{KL}\left(\mathcal{P}_{i,:}^l \| \mathcal{S}_{i,:}^l\right)+\mathrm{KL}\left(\mathcal{S}_{i,:}^l \| \mathcal{P}_{i,:}^l\right)\right)\right]_{i=1, \cdots, N}
AssDis(P,S;X)=[L1l=1∑L(KL(Pi,:l∥Si,:l)+KL(Si,:l∥Pi,:l))]i=1,⋯,N
计算方式是计算每个时间点的先验关联和序列关联之间的对称KL散度,并将各个层的结果进行平均。
KL散度可以用来衡量两种分布之间的差异,关于KL散度的介绍可以参考这篇文章,Kullback-Leibler(KL)散度介绍 - 知乎 (zhihu.com)
Minimax Association Learning
为了无监督地学习表征,本文利用重建误差来进行模型优化。同时,为了增大正常数据和异常数据之间的差距,本文使用了一个关联差异损失来增大关联差异。在这种设计下,由于先验关联的单峰特性,新增的关联差异损失会驱使序列关联更加关注非邻近的区域,从而使得异常点的重建更加的困难,因此更容易与正常数据点进行区别。
L
Total
(
X
^
,
P
,
S
,
λ
;
X
)
=
∥
X
−
X
^
∥
F
2
−
λ
×
∥
AssDis
(
P
,
S
;
X
)
∥
1
\mathcal{L}_{\text {Total }}(\widehat{\mathcal{X}}, \mathcal{P}, \mathcal{S}, \lambda ; \mathcal{X})=\|\mathcal{X}-\widehat{\mathcal{X}}\|_{\mathrm{F}}^2-\lambda \times\|\operatorname{AssDis}(\mathcal{P}, \mathcal{S} ; \mathcal{X})\|_1
LTotal (X
,P,S,λ;X)=∥X−X
∥F2−λ×∥AssDis(P,S;X)∥1
X
^
∈
R
N
×
d
\widehat{\mathcal{X}} \in \mathbb R^{N \times d}
X
∈RN×d表示
X
\mathcal X
X的重建结果。当
λ
>
0
\lambda > 0
λ>0,优化就会尽量扩大关联差异。
Minimax Strategy
直接将关联差异最大化会急剧减小高斯核的规模参数,让先验概率变得没意义,所以本文采用了一个极大极小策略。
对于极小策略,让先验关联 P l \mathcal P^l Pl尽量去逼近序列关联 S l S^l Sl,这个过程会让先验关联适应于各种不同的时间模式。
对于极大策略,直接优化序列差异来扩大关联差异,这个过程会让序列关联将更多注意力放在非临近的区域。
M
i
n
i
m
i
z
e
P
h
a
s
e
:
L
Total
(
X
^
,
P
,
S
detach
,
−
λ
;
X
)
M
a
x
i
m
i
z
e
P
h
a
s
e
:
L
Total
(
X
^
,
P
detach
,
S
,
λ
;
X
)
Minimize \quad Phase: \mathcal{L}_{\text {Total }}\left(\widehat{\mathcal{X}}, \mathcal{P}, \mathcal{S}_{\text {detach }},-\lambda ; \mathcal{X}\right) \\ Maximize\quad Phase: \mathcal{L}_{\text {Total }}\left(\widehat{\mathcal{X}}, \mathcal{P}_{\text {detach }}, \mathcal{S}, \lambda ; \mathcal{X}\right)
MinimizePhase:LTotal (X
,P,Sdetach ,−λ;X)MaximizePhase:LTotal (X
,Pdetach ,S,λ;X)
detach表示停止梯度反向传播。
因为先验关联尽量去趋近于序列关联,所以在最大化阶段,会给序列关联施加一个约束,让序列关联尽量去关注那些非临近的区域,从而能够让自己和先验关联拉开差距。
Association-based Anomaly Criterion
通过将重构误差和关联差异进行结合,就得到了最终的异常判断准则。
Anomaly
Score
(
X
)
=
Softmax
(
−
AssDis
(
P
,
S
;
X
)
)
⊙
[
∥
X
i
,
:
−
X
^
i
,
:
∥
2
2
]
i
=
1
,
⋯
,
N
\operatorname{Anomaly} \operatorname{Score}(\mathcal{X})=\operatorname{Softmax}(-\operatorname{AssDis}(\mathcal{P}, \mathcal{S} ; \mathcal{X})) \odot\left[\left\|\mathcal{X}_{i,:}-\widehat{\mathcal{X}}_{i,:}\right\|_2^2\right]_{i=1, \cdots, N}
AnomalyScore(X)=Softmax(−AssDis(P,S;X))⊙[
Xi,:−X
i,:
22]i=1,⋯,N
实验
数据集
本文的模型在六个数据集上进行了测试
(1) SMD(服务器机器数据集,Su等,2019)是从一家大型互联网公司收集的为期5周的数据集,包含38个维度。
(2) PSM(汇集的服务器指标,Abdulaal等,2021)是eBay内部收集的多个应用服务器节点的数据集,包含26个维度。
(3) MSL(火星科学实验室漫游器)和SMAP(土壤湿度主动被动卫星)是来自NASA的公共数据集(Hundman等,2018),分别包含55个和25个维度,其中包含从航天器监测系统的异常事件报告中得出的遥测异常数据。
(4) SWaT(安全水处理,Mathur&Tippenhauer,2016)是从关键基础设施系统的51个传感器中获取的,在连续运行状态下获得的数据集。
(5) NeurIPS-TS(NeurIPS 2021时间序列基准)是由Lai等人提出的数据集(2021年),包括根据行为驱动的分类法划分的五个时间序列异常场景,包括点-全局、模式-上下文、模式-形状、模式-季节性和模式-趋势。
实现细节
本文采用了非重叠的滑动窗口来获得一系列的子窗口,滑动窗口的大小设置为100。当数据点的异常分数超过某个阈值 δ \delta δ,则认为这个数据点是异常的。阈值的确定是根据验证集中有多少被标记为异常数据来决定的。SWaT数据集r=0.1%,SMD数据集r=0.5%,其他数据集r=1%。当一个数据点被标为异常,则认为这整个窗口的异常点都被成功发现,这与现实场景一致,因为当发现一个异常点后就会对其周围的数据也进行检查。
Anomaly Transformer包含三层,隐层维度 d m o d e l d_{model} dmodel设置为512,多头注意力head数为8, λ \lambda λ设置为3,是loss两部分的trade-off,使用ADAM优化器,初始学习率为 1 0 − 4 10^{-4} 10−4。
本文和18个baseline模型进行了比较。
实验结果
在真实世界的五个数据集中,本文的模型都达到了sota,本文发现那些考虑到时间信息的深度模型表现普遍要好一些,说明了对时间信息建模的有效性。本文提出的模型超越了RNN学习的逐点表示,建模了更丰富的相关性。
在NeurIPS-TS benchmark中,本文的模型也能够达到sota
消融实验
模型分析
为了解释为什么模型能够更准确地检测异常,本文提供了一些可视化和数据结果来说明。
Anomaly criterion visualization
本文提出的基于关联的准则会让异常和正常数据的异常分数更容易区分。相比之下,重构准则的抖动曲线使得检测过程混乱,并在上述两种情况下失败。这验证了本文的准则可以突出异常并为正常和异常点提供明显的值,使得检测更加精确,并降低了误报率。
Prior-association visualization
本文可视化了其在先验关联中最终学得的 σ \sigma σ的大小。不难发现,在异常点处的 σ \sigma σ在整个序列中都比较小,这代表了它与非临接部分的关联较弱,这也支撑了本文认为异常点很难与整个序列构建强关联的判断。
Optimization strategy analysis
为了验证优化策略对于关联学习的影响,本文对比了直接使用重建误差训练、直接最大化关联差异、极小极大关联差异的影响。
如表所示,直接最大化关联差异将会引起高斯先验的优化问题,从而使得效果退化。而最大最小化策略使先验关联对序列关联增加了一个很强的限制,最终可以达到一个更加有辨别能力的结果。