《异常检测——从经典算法到深度学习》19 OmniAnomaly:基于随机循环网络的多元时间序列鲁棒异常检测

Posted smile-yan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《异常检测——从经典算法到深度学习》19 OmniAnomaly:基于随机循环网络的多元时间序列鲁棒异常检测相关的知识,希望对你有一定的参考价值。

《异常检测——从经典算法到深度学习》

相关:

19. 基于随机循环网络的多元时间序列鲁棒异常检测

论文下载:netman
源码地址:github
数据集:https://s3-us-west-2.amazonaws.com/telemanom/data.zip
数据集对应的标签:https://raw.githubusercontent.com/khundman/telemanom/master/labeled_anomalies.csv

19.1 论文概述

OmniAnomaly是一种将门控递归单元(GRU)和变分自动编码器(VAE)相结合的随机递归神经网络模型,其核心思想是学习多元时间序列的正态模式,并利用重构概率进行异常判断。

可以概括为以下几个关键字:

  • 多元时间序列数据;适用的数据类型。
  • RNN,循环神经网络。
  • VAE,变分自编码。
  • VAE 使用重构概率进行异常检测。
  • 算法具有良好的鲁棒性。

接下来我们关注一下论文的 contribution。

  • 提出了一种新的随机循环神经网络 OmniAnomery,用于多变量时间序列的异常检测。 OmniAnomery 是第一个多元时间序列异常检测算法,它能够处理随机变量之间显式的时间相关性,以学习工业设备监控所需的输入数据的鲁棒性复现。
  • 我们提出了第一个异常解释方法,用于基于随机的多元时间序列异常检测算法,该算法不仅适用于OmniAnomery,还适用于其他算法,如[16]。 全异常解释精度可达0.89。
  • 实验表明 OmniAnomaly 的异常阈值自动选择效果比 GRU, planar NF, stochastic variable connection 和 adjusted Peaks-Over-Threshold 方法更好。
  • 通过大量的实验,我们发现OmniAntory在三个真实数据集中的 F1-score 为0.86,效果优良且鲁棒性更好。
  • 为了更好地重现本文的结果,我们在GitHub1上公开发布了我们的代码和服务器实验数据集。

这部分 contribution 读起来多少有些不适,重新概括大概为:

  • 是一个基于随机循环神经网络、应用于多元时间序列异常检测的算法;
  • 对于三个真实数据进行实验,F1-score 优于其他现有算法;
  • 具有很好的异常阈值自动选择方法。

了解大概内容以后,再看一下论文的总体结构:


大致过程可以概述为:

  1. 输入多元时间序列数据;
  2. 预处理后得到训练集与测试集;
  3. 训练集送去训练,测试集送去测试(训练后再开始测试)
  4. 自动选择异常阈值
  5. 根据异常阈值,检测器对异常分数进行处理,输出异常判定结果。

接下来看一下论文的具体内容,为了快速抓住重点,加速阅读,我们跳过那些作用不大的背景描述,直接看一些重要部分吧。

19.2 相关技术背景介绍(GRU / VAE / Planar NF)

对应原文中的 3.3 节

  • GRU (Gated Recurrent Unit) :门控循环神经⽹络(Gated Recurrent Neural Network)是一种 RNN,它通过可以学习的⻔来控制信息的流动。而 门控循环单元(Gated Recurrent Unit,GRU)是⼀种常⽤的门控循环神经⽹络。论文中应用GRU来捕捉时间序列中复杂的时间相关性。

  • VAE (Variational Auto-Encoder) :一种深度贝叶斯模型,它通过使用低维度的隐藏层来重构输入数据。从输入数据到隐藏层的过程称为 变分网络(Inferance Network) ,从隐藏层到重构数据的过程称为 生成网络(Generative Network)

  • SGVB (Stochastic Gradient Variational Bayes) : 随机梯度变分贝叶斯,是一种变分推理算法,常常用在 VAE 中,来训练参数 ϕ \\phi ϕ θ \\theta θ 使得 ELBO (Evidence Lower Bound,记作 L ( x t ) \\mathcalL(x_t) L(xt) ) 最大化。

    关于 VAE,我们介绍了很多很多次,可以参考 VAE 模型基本原理简单介绍

其中 ELBO 的表达式为

L ( x t ) = E q ϕ ( z t ∣ x t ) [ log ⁡ ( p θ ( x t ∣ z t ) ) ] − D K L [ q ϕ ( z t ∣ x t ) ∣ ∣ p θ ( z t ) ] = E q ϕ ( z t ∣ x t ) [ log ⁡ ( p θ ( x t ∣ z t ) ) + log ⁡ ( p θ ( z t ) ) − log ⁡ ( q ϕ ( z t ∣ x t ) ) ] (1) \\beginaligned \\mathcalL\\left(\\mathbfx_\\mathbft\\right) &=\\mathbbE_q_\\phi\\left(\\mathbfz_\\mathbft | \\mathbfx_\\mathbft\\right)\\left[\\log \\left(p_\\theta\\left(\\mathbfx_\\mathbft | \\mathbfz_\\mathbft\\right)\\right)\\right]-D_K L\\left[q_\\phi\\left(\\mathbfz_\\mathbft | \\mathbfx_\\mathbft\\right)|| p_\\theta\\left(\\mathbfz_\\mathbft\\right)\\right] \\\\ &=\\mathbbE_q_\\phi\\left(\\mathbfz_\\mathbft | \\mathbfx_\\mathbft\\right)\\left[\\log \\left(p_\\theta\\left(\\mathbfx_\\mathbft | \\mathbfz_\\mathbft\\right)\\right)+\\log \\left(p_\\theta\\left(\\mathbfz_\\mathbft\\right)\\right)-\\log \\left(q_\\phi\\left(\\mathbfz_\\mathbft | \\mathbfx_\\mathbft\\right)\\right)\\right] \\endaligned \\tag1 L(xt)=Eqϕ(ztxt)[log(pθ(xtzt))]DKL[qϕ(ztxt)∣∣pθ(zt)]=Eqϕ(ztxt)[log(pθ(xtzt))+log(pθ(zt))log(qϕ(ztxt))](1)

蒙特卡罗积分(Monte Carlo integration)是一种变分推理算法,可以用来计算公式 1 中的均值,如公式 2 所示,其中, z t ( l ) z_\\mathbft^(l) zt(l) 是从 q ϕ ( z t ∣ x t ) q_\\phi\\left(\\mathbfz_\\mathbft | \\mathbfx_\\mathbft\\right) qϕ(ztxt) l l l 次的采样结果。:

L ( x t ) ≈ 1 L ∑ l = 1 L [ log ⁡ ( p θ ( x t ∣ z t ( l ) ) ) + log ⁡ ( p θ ( z t ( l ) ) ) − log ⁡ ( q ϕ ( z t ( l ) ∣ x t ) ) ] (2) \\mathcalL\\left(\\mathbfx_\\mathbft\\right) \\approx \\frac1L \\sum_l=1^L\\left[\\log \\left(p_\\theta\\left(\\mathbfx_\\mathbft | \\mathbfz_\\mathbft^(l)\\right)\\right)+\\log \\left(p_\\theta\\left(\\mathbfz_\\mathbft^(l)\\right)\\right)-\\log \\left(q_\\phi\\left(\\mathbfz_\\mathbft^(l) | \\mathbfx_\\mathbft\\right)\\right)\\right] \\tag2 L(xt)L1l=1L[log(pθ(xtzt(l)))+log(pθ(zt(l)))log(qϕ(zt(l)xt))](2)

在变分网络 q n e t qnet qnet 中, q ϕ ( z t ∣ x t ) q_\\phi\\left(\\mathbfz_\\mathbft |\\mathbfx_\\mathbft\\right) qϕ(z《异常检测——从经典算法到深度学习》19 OmniAnomaly:基于随机循环网络的多元时间序列鲁棒异常检测

异常检测——从经典算法到深度学习》14 对于流数据基于 RRCF 的异常检测

《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法

异常检测——从经典算法到深度学习》14 对于流数据基于 RRCF 的异常检测

异常检测——从经典算法到深度学习》14 对于流数据基于 RRCF 的异常检测

《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测