《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测

“异常检测——从经典算法到深度学习”

  • 0 概论
  • 1 基于隔离森林的异常检测算法
  • 2 基于LOF的异常检测算法
  • 3 基于One-Class SVM的异常检测算法
  • 4 基于高斯概率密度异常检测算法
  • 5 Opprentice——异常检测经典算法最终篇
  • 6 基于重构概率的 VAE 异常检测
  • 7 基于条件VAE异常检测
  • 8 Donut: 基于 VAE 的 Web 应用周期性 KPI 无监督异常检测
  • 9 异常检测资料汇总(持续更新&抛砖引玉)
  • 10 Bagel: 基于条件 VAE 的鲁棒无监督KPI异常检测
  • 11 ADS: 针对大量出现的KPI流快速部署异常检测模型
  • 12 Buzz: 对复杂 KPI 基于VAE对抗训练的非监督异常检测
  • 13 MAD: 基于GANs的时间序列数据多元异常检测
  • 14 对于流数据基于 RRCF 的异常检测
  • 15 通过无监督和主动学习进行实用的白盒异常检测
  • 16 基于VAE和LOF的无监督KPI异常检测算法
  • 17 基于 VAE-LSTM 混合模型的时间异常检测

有关的:

  • VAE 模型基本原理简单介绍
  • GAN 数学原理简单介绍以及代码实践

17. 基于 VAE-LSTM 混合模型的时间异常检测

论文题目:Anomaly Dection For Time Series using VAE-LSTM hybrid model
CCF B类会议 ICASSP 2020
论文下载:源地址|蓝奏云地址2
论文翻译|源地址

17.1 论文概述

论文提出一种 VAE 与 LSTM 的组合模型,并通过实验证明自己的模型是可靠的,有效的。

这是一篇小论文(共5页,参考文献占1页),简单精悍类型的,值得一读。

我们需要关注作者如何结合这两个模型以及实验是如何完成的。

17.2 如何结合VAE与LSTM两个模型

《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测
从上往下看,首先是一个原始的时间窗口,接下进行编码(VAE 的 encoder),得到的是低维度的向量集。把它们内嵌(embedding)到 LSTM 中,用来预测下一个窗口的内嵌(embedding)。再进行 解码(VAE的Decoder),得到的是重构的窗口。

从左到右,先异常检测值=预测误差。中间是整个网络结构,右边是每一层的解释。

总结一下,变分自编码的隐变量(即图片中的embedding)作为LSTM的输入,用来预测下一个隐变量(embedding),最后将预测误差作为异常值。

17.3 如何训练VAE-LSTM模型

《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测
图片左侧不包含异常数据,用于训练。

训练VAE的过程没有做修改,使用的是默认的ELBO作为损失函数。

训练LSTM的过程与其他LSTM一样,希望训练后的模型具有很好的预测能力。

%5B%5Chat%7Be%7D_t%5E2%2C%20%5Ccdot%5Ccdot%5Ccdot%2C%20%5Chat%7Be%7D_t%5Ek%5D%20%3D%20%5Ctext%7BLSTM%7D%28%5Be_t%5E1%2C%5Ccdot%5Ccdot%5Ccdot%2Ce_t%5E%7Bk-1%7D%5D%29%20%5Ctag%7B1%7D

这个地方省略了LSTM的原理,损失函数,就把它当成一个预测回归模型即可。

17.4 VAE-LSTM如何进行异常检测

完成训练以后,VAE-LSTM已经具备很好的预测能力,注意是预测下一个窗口的对应的VAE的隐变量,并根据这个隐变量,使用训练好的VAE进行重构。

%5Chat%7Bw%7D_%7Bt-%28k-i%29%5Ctimes%20p%7D%3D%5Ctext%7BDecoder%7D%28%5Chat%7Be%7D_t%5Ei%29%2C%20%5C%20%5C%20%5C%20i%3D2%2C...%2Ck.%20%5Ctag%7B2%7D

对于重构的窗口,可以定义一个函数d_tw_t

d_t%3D%20%5Csum_%7Bi%3D2%7D%5Ek%20%5Cleft%5C%7C%20%5Chat%7Bw%7D_%7Bt-%28k-i%29%5Ctimes%20p%7D%20-w_%7Bt-%28k-i%29%5Ctimes%20p%7D%20%5Cright%5C%7C%20%5Ctag%7B3%7D

然后根据实际情况定义一个阈值%5Cthetad_t

17.5 实验部分

17.5.1 数据集与实验效果

论文使用了五个数据集,对比实验包括 VAE与ARMA。
《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测
具体的数据集可以在 github 源码上看到,具体地址是:https://github.com/lin-shuyu/VAE-LSTM-for-anomaly-detection/tree/master/datasets

17.5.2 使用源码

源地址

步骤1克隆源码到本地。

$ git clone https://github.com/lin-shuyu/VAE-LSTM-for-anomaly-detection

步骤 2查看一下本地是不是安装了 tennsorflow,并看一下版本。

$ pip show tensorflow

如果安装了高版本的tensorflow,尽量降低到1.x,避免后面出现问题。需要注意的是如果出现如下问题是python版本太高而导致的,需要降低python版本后再安装tensorflow 1.x,我环境下python的版本是3.7,安装的tensorflow是1.15.4
《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测
确保tensorflow1.x安装完成以后,就可以准备跑代码了。

步骤4安装其他所需依赖

$ cd VAE-LSTM-for-anomaly-detection
$ pip install -r requirements.txt

步骤5跑源码提供的测试代码。

注意一定要先跳转到code目录,然后执行下面的train.py脚本。

$ cd code
$ python train.py --config NAB_config.json

需要大概几分钟的时候,训练完成以后,再打开源码提供的NAB-anomaly-detection.ipynb,因此需要环境安装了 anaconda,打开后,就可以Restart & Run All即可。

![在这里插入图片描述](https://img-blog.csdnimg.cn/6292fe00ee234046abb811cd9e6aa68a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc21pbGUteWFu,size_20,color_FFFFFF,t_70,g_se,x_16

《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测
《异常检测——从经典算法到深度学习》17 基于 VAE-LSTM 混合模型的时间异常检测

17.6 总结

文章简洁明了,主要内容应包括:

  • 学习如何制作复合模型;
  • 跑通源码后,可以在此基础上进行修改,实现一些自己的算法;
  • 数据集在git仓库中提供,可以拿过来用。

Smileyan
2022.3.28 15:42

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年3月29日 下午2:33
下一篇 2022年3月29日 下午2:47

相关推荐