![cover](https://img-blog.csdnimg.cn/e42481fe54414221bdbc99bc046fe06a.png)
【阅读论文】基于VAE-LSTM混合模型的时间序列异常检测
在这项工作中,我们提出了一种VAE-LSTM混合模型,作为一种无监督的时间序列异常检测方法。我们的模型既利用VAE模块在短窗口上形成稳健的局部特征,又利用LSTM模块在从VAE模块推断的特征之上估计序列中的长期相关性。因此,我们的检测算法能够识别跨越多个时间尺度的异常。我们证明了我们的检测算法在五个现实世界问题上的有效性,并发现我们的方法优于其他三种常用的检测方法。关键词:异常检测、时间序列、深度
Anomaly Detection for Time Series Using VAE-LSTM Hybrid Model
CCFB
Shuyu LinRonald ClarkRobert BirkeSandro SchönbornNiki TrigoniStephen J. Roberts
International Conference on Acoustics, Speech, and Signal Processing May 2020
摘要
在这项工作中,我们提出了一种VAE-LSTM混合模型,作为一种无监督的时间序列异常检测方法。我们的模型既利用VAE模块在短窗口上形成稳健的局部特征,又利用LSTM模块在从VAE模块推断的特征之上估计序列中的长期相关性。因此,我们的检测算法能够识别跨越多个时间尺度的异常。我们证明了我们的检测算法在五个现实世界问题上的有效性,并发现我们的方法优于其他三种常用的检测方法。
关键词:异常检测、时间序列、深度学习、无监督学习
一、简介
时间序列的异常检测涉及检测时间上的意外系统行为,以提供信息性见解。在许多工业应用中,异常检测用于监测传感器故障,提醒用户外部攻击,并在早期阶段检测潜在的灾难事件[1]。尽管有这些好处,但设计一个好的异常检测算法是极具挑战性的。这是因为训练数据通常不平衡,很少有标记的异常。此外,大多数异常行为都不是先验已知的,并且期望一个好的异常算法能够检测到甚至看不见的异常。由于这些限制,异常检测算法通常必须以无监督的方式进行训练。
从广义上讲,我们可以描述时间序列中常见的三种类型的异常:即点异常、上下文异常和集体异常[2]。在这三种类型中,点异常是最容易检测的,因为在检测过程中可以独立处理数据点,并且不需要考虑时间关系。因此,简单的阈值方法或基于多层感知器(MLP)的方法[3]对点异常相对有效。相反,背景和集体反常现象更具挑战性。上下文异常取决于周围数据点的值,因此检测它们需要局部信息,并且具有较大感受野的卷积神经网络(CNN)已被证明在这种情况下工作良好[4]。当一系列数据点一起表现出异常行为时,就会出现集体异常。由于集体异常总是在相当长的一段时间内按顺序发生,循环神经网络(RNNs)已被证明是有效的[5]。然而,尽管已经提出了许多成功的方法,但没有一种现有的方法能很好地适用于所有异常类型。
在本文中,我们提出了一种混合异常检测方法,该方法将深度生成模型(以变分自编码器(VAE)的形式)的表示学习能力与长短期记忆RNN (LSTM)的时间建模能力相结合,如图1所示。通过VAE模块,我们的模型旨在捕捉局部窗口上时间序列的结构规律,而LSTM模块试图对长期趋势建模。VAE和LSTM单元都不需要标记异常进行训练。本文所包含的算法和实验代码可在https://github.com/linshuyu/VAE-LSTM-for-anomaly-detection上获得。综上所述,我们的贡献是:
- 我们利用VAE模型将短窗口的局部信息总结为低维嵌入。
- 我们利用LSTM模型,它作用于VAE模型产生的低维嵌入,以长期管理顺序模式。
- 分层结构允许我们检测在短期和长期内发生的异常。
- 本文的其余部分结构如下。我们首先简要介绍VAE和LSTM模型以及它们用于异常检测的方法。然后,我们提出了我们的混合VAE-LSTM模型,然后给出了我们的和其他方法在真实世界时间序列上的检测结果。最后,我们提出了未来研究的方向。
二、背景及相关工作
在本节中,我们概述了两个机器学习模型,即VAE和LSTM,它们是我们异常检测算法的主要构建块。我们还涉及现有的异常检测算法。
VAE: VAE[6,7]是一种生成概率模型,以学习嵌入方案而闻名,可以推断大多数训练数据的生成因子。这使得vae非常适合模拟异常检测任务中的正常行为。因此,vae在各种工作中被用于异常检测,取得了很好的效果[8,9,10,11]。然而,仅基于VAE的异常检测算法在检测长期异常时往往失败,因为VAE模型无法分析局部短窗口以外的信息。我们的方法通过使用vae作为局部特征提取器,并将其与LSTM模块耦合来处理长期趋势,从而克服了这一限制。
LSTM: LSTM是一种RNN,可以捕获输入中的长期依赖关系。这使得它们非常适合我们不经常发生异常的任务。研究人员探索了使用RNN模型进行异常检测的思路[5,12]。我们的方法与那些方法的不同之处在于,我们的LSTM模块不应用于原始样本,而是应用于表示局部窗口的嵌入。这样的设置使我们的算法能够忽略冗余的原始样本,并在较长时间内跟踪事件。
混合:混合模型是视频分析的常用方法,其中使用表示学习模块提取单个图像帧中的空间信息,应用顺序模块对一系列帧之间的时间相关性建模[13,14]。[15]应用这种混合模型来检测监控视频片段中的罕见事件。我们的方法与视频应用中的混合模型之间的主要区别在于,视频的表示学习模块应用于图像,即单个时间戳上的数据点,而时间序列的表示学习模块处理短时间内的数据点序列,以形成后一个顺序模块的局部时间基础。
三、我们的模型
给定时间序列X = {x1, x2,····,xN},其中xi∈Rm是第i个时间戳的m维读数,包含m个不同通道的信息,我们将异常检测任务制定如下:在时刻t (L≤t≤N),我们允许使用L个过去读数序列,即St = [xt−L+1,···,xt],来预测一个二进制输出∈{0,1},其中1表示St发生了异常。这样的公式使得我们的算法可以在线检测。图1给出了我们的检测算法的概述,该算法由一个用于提取短窗口局部特征的VAE模块和一个用于估计长期趋势的LSTM模块组成。在本节中,我们将首先介绍如何以无监督的方式训练这两个模块,然后解释如何将我们的算法用于异常检测。
Fig. 1. 我们的 VAE-LSTM 模型在给定时间序列的
k
k
k 个连续窗口序列上检测异常。第
i
i
i 个窗口
w
i
w_i
wi 被编码成一个低维嵌入(embedding)
e
i
e_i
ei,该
e
i
e_i
ei 用于 LSTM 模型以预测下一个窗口的嵌入
e
^
i
+
1
\hat e_{i+1}
e^i+1。然后这个预测的嵌入用来解码来重构这个原始的窗口
w
^
i
+
1
\hat w_{i+1}
w^i+1. 这个重构错误用作异常分数。
3.1. 训练VAE-LSTM模型
为了以无监督的方式训练VAE-LSTM模型,我们首先需要从给定的时间序列中分离训练集和测试集。图2给出了一个训练测试集分离的示例,其中我们将给定时间序列中不包含异常的连续段作为训练数据,其余包含异常的时间序列作为测试数据进行评估。
Fig. 2. 纽约出租车请求时间序列上的训练和测试集分离示例。
VAE模型由编码器和解码器组成。它以
p
p
p 个连续读数的局部窗口作为输入,通过编码器估计
q
q
q 维的低维嵌入,并通过解码器重建原始窗口。为了训练VAE模型,我们从训练数据中生成滚动窗口(rolling windows)。比如,
w
t
=
[
x
t
−
p
+
1
,
.
.
.
,
x
t
]
w_t=[x_{t-p+1},...,x_t]
wt=[xt−p+1,...,xt] 表示窗口在时间
t
t
t 结束。LSTM 模型在
k
k
k 个不重叠窗口序列的 VAE 嵌入上运行。我们使用
W
t
=
[
w
t
−
(
k
−
1
)
×
p
,
w
t
−
(
k
−
2
)
×
p
,
.
.
.
,
w
t
]
W_t = [w_{t-(k-1)\times p}, w_{t-(k-2)\times p}, ..., w_t]
Wt=[wt−(k−1)×p,wt−(k−2)×p,...,wt] 来表示窗口序列在
t
t
t 时刻结束,使用
E
t
=
[
e
t
1
,
.
.
.
,
e
t
k
]
E_t = [e^1_t,...,e_t^k]
Et=[et1,...,etk] 来表示对应
W
t
W_t
Wt 的内嵌,
e
t
i
e^i_t
eti 表示
W
t
W_t
Wt 窗口中 第
i
i
i 个内嵌。对于读取的训练数据
N
t
r
a
i
n
N_{train}
Ntrain,我们可以生成
N
t
r
a
i
n
−
p
N_{train}-p
Ntrain−p 个滚动序列,用来训练 VAE 模型,而
N
t
r
a
i
n
−
p
k
N_{train}-pk
Ntrain−pk 个滚动窗口用来训练 LSTM 模型。我们保留从训练数据中随机抽取10%的生成序列作为验证集,验证集中的所有窗口和序列都被排除在训练之外。
利用训练集中的剩余窗口,我们优化VAE模型参数,以最大化[16]中定义的ELBO损失。在对VAE模型进行优化后,我们使用训练后的VAE模型中的编码器来估计训练集中的所有嵌入序列
E
t
E_t
Et。为了训练 LSTM 模型,我们让 LSTM 模型从一个序列
E
t
E_t
Et 中取前
k
−
1
k-1
k−1 个内嵌,即
[
e
^
t
2
,
.
.
.
,
e
^
t
k
]
=
LSTM
(
[
e
t
1
,
.
.
.
,
e
t
k
−
1
]
)
[\hat e^2_t, ..., \hat e^k_t] = \text{LSTM}([e_t^1,...,e_t^{k-1}])
[e^t2,...,e^tk]=LSTM([et1,...,etk−1]) 我们通过最小化最终嵌入的预测误差来优化 LSTM 模型参数,即
min
∣
∣
e
^
t
k
−
e
t
k
∣
∣
\text{min}||\hat e^k_t-e^k_t||
min∣∣e^tk−etk∣∣。请注意,VAE和LSTM单元的所有模型参数均已优化,没有异常标签。
3.2. 基于VAE-LSTM模型的异常检测
经过训练,我们的VAE-LSTM模型可以用于实时异常检测。在 t t t 时刻,VAE-LSTM 模型对一个测试序列 W t W_t Wt 进行分析,这个序列包含 t t t 之前的 k × p k\times p k×p 个历史读取足迹。我们的模型首先使用 VAE 的 编码器(encoder)来评估 W t W_t Wt 中的内嵌序列 E t E_t Et 。然后它将前 k − 1 k-1 k−1 个内嵌用于 LSTM 模型来预测下一个 k − 1 k-1 k−1 个内嵌 [ e ^ t 2 , . . . , e ^ t k ] [\hat e^2_t, ..., \hat e^k_t] [e^t2,...,e^tk],如 公式1中 给定的一样。最后,我们的模型使用预测的内嵌和VAE的解码器 来重构最后的 k − 1 k-1 k−1 个窗,即 w ^ t − ( k − i ) × p = Decoder ( e ^ t i ) , i = 2 , . . . , k . \hat w_{t-(k-i)\times p} = \text{Decoder}(\hat e_t^i), \ \ i = 2, ...,k. w^t−(k−i)×p=Decoder(e^ti), i=2,...,k. 利用重构的窗口,我们可以定义一个分数函数 d t d_t dt,通过总结 W t W_t Wt的预测误差来标记异常行为,即 d t = ∑ i = 2 k ∣ ∣ w ^ t − ( k − i ) × p − w t − ( k − i ) × p ∣ ∣ 2 d_t=\sum_{i=2}^k ||\hat w_{t-(k-i)\times p}-w_{t-(k-i)\times p}||_2 dt=i=2∑k∣∣w^t−(k−i)×p−wt−(k−i)×p∣∣2 为了检测异常,我们也需要对分数函数 d t d_t dt 定义一个阈值 θ \theta θ ,通过这个阈值我们可以在 t t t 时刻标记异常警告 y t = 1 y_t=1 yt=1 。对应的序列 W t W_t Wt 将会被标记为可能异常事件已经发生的不确定窗口。有充足的数据时,我们应该使用一个包含正常数据与异常数据的验证集来定义 θ \theta θ 。在此验证集上给出最佳性能的阈值(如F1分数或其他指标)是给定时间序列的检测阈值。例如,当数据有限时,我们可以使用仅包含正态样本的验证来评估分数函数的分布,并将阈值定义为该分布的给定百分位数。
四、实验与结果
我们在五个真实世界中评估了我们的VAE-LSTM算法 具有实际异常事件的时间序列:办公室环境温度、亚马逊网络服务(AWS)和亚马逊东海岸数据中心服务器的CPU使用情况、工业机器内部温度和纽约市出租车乘客数量[18]。我们将我们的算法与其他三种常用的时间序列异常检测算法进行了比较:VAE 8、LSTM-AD和 ARMA [17]。表一列出了数值结果以及检测窗口长度。我们评估了三个指标:准确性、召回率和FI分数(所有指标都是在给出最佳FI分数的阈值下评估的)。每个数据集的检测窗口长度在所有方法中都是相等的。我们的出现了!更长的时间是因为我们模型的层次结构允许我们在更长的时间内检测事件。计算检测结果中的真阳性和假阳性/阴性可能很困难,因为异常事件仅在单个时间戳发生,而所有检测算法都在一个窗口内进行推理。我们采取了一个简单的策略由[1]提出,以缓解这一问题。
图3显示了机器温度系列上所有四种方法给出的异常检测结果的可视化。LSTM-AD在大多数数据集中实现了高精度,但召回率较低,表明检测到的异常准确,但漏掉真实异常的可能性较高(图3.c)。VAE具有良好的召回率,但精确度较低,表明存在大量假阳性检测(图3.b)。ARMA在精确度和召回率方面都表现不佳,其检测结果显然是最差的(图3.d)。
图3所示。使用我们的VAE- lstm, VAE, LSTM-AD和ARMA方法在工业机器温度系列上检测到异常。蓝色线:时间序列,红色虚线:地面真相异常,绿色短线:检测到的异常,浅黄色窗口:检测到的异常窗口。
相比之下,我们的VAE-LSTM算法实现了对所有数据集的100%重新调用,这意味着没有遗漏异常,并且能够检测所有类型的异常。同时,我们的方法也达到了相当高的精度,表明误报率较低。例如,在时间t=2000左右的环境温度序列(图4.a)中报告了一个假位置。通过目视检查,突出显示的窗口中存在一个不寻常的尖峰,因此,提高人类监管人员的注意力可能是明智的。我们认为,这种预防措施在故障关键场景中确实是有益的。我们的方法在精确性和召回率方面都有很好的表现,因此获得了很高的FI分数,领先于所有其他方法。我们的方法的检测结果示例如图3a和图4所示。
图4所示。VAE-LSTM混合模型检测异常。
我们方法的一个潜在缺点是,在某些情况下,正常检测会出现延迟。例如,EC2 CPU利用率系列中的第一个异常仅在大约150个时间步后检测到。这可以通过使用多个缩放窗口来缓解,我们将此留给未来的研究。
五、结论
在这项工作中,我们提出了一种VAE-LSTM混合模型作为时间序列异常检测的无监督学习方法。我们的模型既利用VAE模块在短窗口上形成局部特征,又利用LSTM模块估计序列中的长期相关性。因此,我们的检测算法能够识别可能跨越多个时间尺度的所有类型的异常。我们在五个真实世界序列上证明了我们的检测算法的有效性,并表明我们的方法优于其他常用的检测方法。
[1]LIN S, CLARK R, BIRKE R, 等. Anomaly Detection for Time Series Using VAE-LSTM Hybrid Model[C/OL]//ICASSP 2020 - 2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Barcelona, Spain. 2020. http://dx.doi.org/10.1109/icassp40776.2020.9053558. DOI:10.1109/icassp40776.2020.9053558.
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)