【阅读论文】基于VAE-LSTM混合模型的时间序列异常检测

2023-05-16

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

文章目录

    • 摘要
    • 一、简介
    • 二、背景及相关工作
    • 三、我们的模型
      • 3.1. 训练VAE-LSTM模型
      • 3.2. 基于VAE-LSTM模型的异常检测
    • 四、实验与结果
    • 五、结论

摘要

在这项工作中,我们提出了一种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=[xtp+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(k1)×p,wt(k2)×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 Ntrainp 个滚动序列,用来训练 VAE 模型,而 N t r a i n − p k N_{train}-pk Ntrainpk 个滚动窗口用来训练 LSTM 模型。我们保留从训练数据中随机抽取10%的生成序列作为验证集,验证集中的所有窗口和序列都被排除在训练之外。
利用训练集中的剩余窗口,我们优化VAE模型参数,以最大化[16]中定义的ELBO损失。在对VAE模型进行优化后,我们使用训练后的VAE模型中的编码器来估计训练集中的所有嵌入序列 E t E_t Et。为了训练 LSTM 模型,我们让 LSTM 模型从一个序列 E t E_t Et 中取前 k − 1 k-1 k1 个内嵌,即 [ 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,...,etk1]) 我们通过最小化最终嵌入的预测误差来优化 LSTM 模型参数,即 min ∣ ∣ e ^ t k − e t k ∣ ∣ \text{min}||\hat e^k_t-e^k_t|| min∣∣e^tketk∣∣。请注意,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 k1 个内嵌用于 LSTM 模型来预测下一个 k − 1 k-1 k1 个内嵌 [ e ^ t 2 , . . . , e ^ t k ] [\hat e^2_t, ..., \hat e^k_t] [e^t2,...,e^tk],如 公式1中 给定的一样。最后,我们的模型使用预测的内嵌和VAE的解码器 来重构最后的 k − 1 k-1 k1 个窗,即 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(ki)×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=2k∣∣w^t(ki)×pwt(ki)×p2 为了检测异常,我们也需要对分数函数 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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【阅读论文】基于VAE-LSTM混合模型的时间序列异常检测 的相关文章

随机推荐

  • 利用MQTT协议与阿里云数据交互的python程序

    利用MQTT协议与阿里云数据交互的python程序 设计目的功能要求和关键问题环境配置问题本地程序如何连接云上设备云上的数据交互问题界面设计问题 阿里云相关操作本地程序 设计目的 设计开发一个py应用程序 xff0c 实现对阿里云数据的双向
  • 中文分词:隐马尔可夫-维特比算法(HMM-Viterbi)附源码

    目录 0 先验知识 1 什么是中文分词 2 数据集的构造 3 训练及预测过程简述 4 训练阶段 xff1a 统计隐马尔可夫模型的参数 5 预测阶段 xff1a 应用 Viterbi 算法 6 完整的 Python 实现代码 0 先验知识 有
  • python学习day1

    打印字 print haha 注释符 单行注释符 xxx 多行注释符 xxx xxx 34 34 定义变量 a 61 10 定义数字 b 61 haha ni hao 定义字符串 print a print b 赋值 b 61 a 用户交互
  • 系统学习-----firewalld概述

    动态防火墙后台服务程序 xff1a 提供一个动态管理的防火墙 xff0c 用以支持网络 Zone xff0c 来分配对一个网络链接和界面一定程序的信息 xff0c 它具备对IPv4和Ipv6防火墙设置的支持 它支持以太网桥 xff0c 并有
  • 系统学习----DHCP服务原理

    文章目录 DHCPDHCP优点DHCP相关概念DHCP租约更新DHCP运行过程 DHCP DHCP xff1a 动态主机设置协议 xff0c 是一个局域网协议 xff0c 使用UDP协议工作 主要有两个用途 xff1a 用于局域网或网络服务
  • 区块链技术及应用---区块链技术(一)

    文章目录 第一章 疯狂的比特币及其原理机制1 1 比特币诞生1 2 疯狂的比特币1 2 1 疯狂的价格1 2 2 疯狂的矿机和芯片 1 3 通俗地讲比特币机制1 4比特币交易1 5 比特币挖矿1 5 1 数学难题1 5 2 矿池原理 1 6
  • OpenFlow协议是什么

    为什么学习OpenFlow xff1f 实践SDN的首选主流南向接口协议P4和PISA的前身 OpenFlow起源 Ethane项目是OpenFlow的前身 集中式 主动式 xff0c 基于Flow控制2008年的Open Flow论文最初
  • OpenDaylight(ODL)学习笔记

    什么是OpenDaylight xff1f OpenDaylight是SDN开发及运行的一个平台 OpenDaylight架构特点 基于OSGi的模块化设计多南向协议 OpenFlow xff0c Netconf xff0c OVSDB 模
  • Vue / axios / props 调用后端接口数据并渲染到页面

    情景介绍 给了一个可视化大屏的代码 xff0c 代码上写的是假数据 现在要调用后端接口获取数据 xff0c 并将其渲染到页面上 分析问题 给的代码是一个 vue 组件嵌套一个子组件 xff0c 要把数据渲染到子组件上 要调用后端接口 xff
  • Element-ui关于el-icon无法正常显示的问题(已解决)

    在使用element ui组件库的时候 xff0c 使用自带的图标不显示 xff0c 查了好多篇博客 xff0c 都说是element ui的版本老了 xff0c 在package json中修改版本重新安装就行 xff0c 但是我的情况不
  • el-dialog关闭后表单数据缓存没清空【已解决】

    情景介绍 系统中有 新增 和 修改 两个功能 xff0c 共用一个对话框 要求新增时对话框内容为空 xff0c 修改时内容默认填充旧数据 遇到的问题是 xff0c 点击新增后内容填充了 xff0c 关闭对话框再点击新增或者其他条目的修改 x
  • Vue中父组件向子组件传值,子组件没有接收到

    情景介绍 父组件调用接口获取数据 xff0c 然后通过props传值给子组件 xff0c 子组件拿到数据后渲染到 el table 表格组件中 结果子组件没有将数据渲染到表格中 xff0c 但是控制台打印是获取到数据的 问题分析 先看父组件
  • 数字通信系统的性能及可靠性

    目录 1 数字通信系统的性能 2 数字通信系统的可靠性 1 数字通信系统的性能 数字通信系统的性能由码元速率 信息速率 频带利用率表示 每个码元所携带的信息量I定义如下 xff1a 这里 P 是每个码元的概率 xff0c M 是码元的个数
  • 前端学习资源分享

    学习资源 编程导航 xff08 包含以下所有资源 xff0c 强烈推荐 x1f44d xff09 xff1a https www code nav cn freeCodecamp 在线编程 xff1a https learn freecod
  • 嵌入式方向分析

    很多计算机 电子信息类专业的学生都想把嵌入式开发作为自己的职业目标 xff0c 但是因为嵌入式涉及的知识太多 xff0c 太杂 xff0c 太广 xff0c 很多嵌入式初学者陷入嵌入式知识的海洋中 xff0c 东学一点 xff0c 西学一点
  • UWB-DW1000初始化、发送和接收详解(一)

    DWM1000简介 DWM1000板子上的DW1000芯片 xff0c 是基于CMOS的 低功耗的无线收发集成电路 xff0c 遵循IEEE 802 15 4 2011协议中的UWB标准芯片 DWM1000不需要用户去设计电路 xff0c
  • 云计算-弹性存储

    云盘 挂载到ECS上的磁盘 NAS 文件存储 OSS 对象存储 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img 1NMdcten 1653882562436 https files mdnice com user
  • computers & security投稿教程

    在computers amp security上投稿了一篇论文 xff0c 中间还是遇到一些不太懂的东西 xff0c 在此记录下来 1 首先打开官网 xff0c 链接 https www editorialmanager com cose
  • 【SDN测试题】

    SDN测试题 一 判断题 NFV与SDN的基础都是通用服务器 云计算以及虚拟化技术 正确答案 xff1a 对 安装OpenvSwitch时必须根据系统内核版本选择相应的Open vSwitch版本 正确答案 xff1a 对 执行命令ovs
  • 【阅读论文】基于VAE-LSTM混合模型的时间序列异常检测

    Anomaly Detection for Time Series Using VAE LSTM Hybrid Model CCFB Shuyu LinRonald ClarkRobert BirkeSandro Sch nbornNiki