【阅读论文】基于VAE-LSTM混淆模子的时间序列非常检测

[复制链接]
查看743 | 回复0 | 2023-8-23 12:08:48 | 显示全部楼层 |阅读模式
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.

来源:https://blog.csdn.net/weixin_46112690/article/details/129976291
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则