热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最近几篇多维时间序列异常诊断论文综述

近几年大数据和人工智能技术逐渐成熟,运维领域多年来面临的困境有望得到突破。AIOps就是在这样一个环境下自然孕育而生。IT运维数据天生就有数据量大,维

近几年大数据和人工智能技术逐渐成熟,运维领域多年来面临的困境有望得到突破。AIOps就是在这样一个环境下自然孕育而生。

IT运维数据天生就有数据量大,维度多,时序等特征,结合人工智能算法,通过训练,就可以让机器自动发现系统异常,快速找到关联的根因,甚至可以根据历史数据提前做出预测。

近些年关于AIOps的研究越来越热门,其中,多维时间序列的异常检测和故障诊断是其中非常重要的一个课题方向。本次和大家分享的,是最近整理的几个基于深度学习进行多维时间序列数据中异常检测/故障诊断的研究工作。

AAAI 2019

A deep neural network for unsupervised anomaly detection and diagnosis in multivariate time series data

图片

论文地址:https://ojs.aaai.org//index.php/AAAI/article/view/3942

论文源码:-

论文摘要:该论文提出Multi-Scale Convolutional Recurrent Encoder-Decoder (MSCRED),用于多变量时序数据的异常检测。MSCRED首先构建多尺度的signature matrices,用于描述不同时间步对应的=系统状态,然后,在给定的signature matrices上,利用卷积编码器去编码变量之间的相关特性,同时利用基于attention的卷积LSTM(ConvLSTM)去捕获时间依赖特性。最后利用解码器重构特征以及利用residual signature matrices去检测和诊断异常。

Method

Problem Statement

给定n维时序数据 图片,假设数据不存在异常,我们希望达到两个目的:

  1. Anomaly detection:检测T时刻之后某一时刻的异常事件

  2. Anomaly diagnosis:识别最有可能导致异常的时间序列,并且量化异常程度。

Characterizing Status with Signature Matrices

有研究表明不同时间序列对之间的相关性对于描述系统状态至关重要。给定 t-w 时刻到 t 时刻的时序段,文中基于该时序段内两个序列的成对内积构建了一个 n x n 的 signature matrix。假设当前的两个序列为图片图片 。计算两个序列的相关性:

图片

其中分母是缩放因子。特征矩阵不仅可以捕获两个时间序列之间的形状相似性和值尺度相关性,而且对输入噪声具有鲁棒性,因为某些时间序列的不稳定对特征矩阵的影响很小。通过选择不同的w值,可以获得不同尺度下的特征。文中选取了三个时间尺度:10,30,60。也就是每一个时间步,都有3个特征矩阵。每一个特征矩阵的大小与时序数据的维度一致。所以对于维度较少的时序数据来说,可能会存在问题。

图片

Convolutional Encoder

采用全卷机编码器对Signature Matrices的空间模式进行进一步的编码。经过4层卷积核,将原始Signature Matrices 编码成不同大小的特征图,总共4层,后续会在这4层特征图上分别进行ConvLSTM操作。整个过程如图(a)所示。

Attention based ConvLSTM

由于在每一层特征图上都进行ConvLSTM,如果时间步比较长,则LSTM的性能将会下降,因此采用attention机制,对先前的每一个时间步的隐含特征分配权重。文中选择的时间步为5,也就是以当前时间步为基准,考虑之前的5个时间步。对于当前时间步对应的隐含状态,计算先前时间步对其的影响:

图片

计算方法是基本的attention计算方法。整个过程如图(b)所示。

Convolutional Decoder

最后利用卷积解码器,再反向重构,重构的时候,需要加入ConvLSTM提取的特征,最后得到重构的Signature Matrices。整个过程如图(c)所示。整个过程的损失函数定义为重构误差。后续在原始Signature Matrices和重构Signature Matrices的差异矩阵上,进行异常检测和诊断。

KDD 2020

USAD: UnSupervised Anomaly Detection on Multivariate Time Series

图片

论文地址:https://dl.acm.org/doi/10.1145/3394486.3403392

论文源码:https://github.com/manigalati/usad

论文摘要:该论文提出一种面向多元时序数据的无监督的异常检测方法UnSupervised Anomaly Detection USAD,该方法基于自编码器,同时利用了对抗训练的策略,并在五个公共数据集上进行了实验。USAD 背后的思想是在编码器-解码器架构上进行对抗性训练使其能够学习如何放大异常的输入的重建误差,同时相比与传统的GAN-based方法,更加稳定。

Method

Problem formulation

给定多元时序数据 图片 ,其中 图片 。然后定义在 t 时刻且长度为 K 的时间窗口为 图片 。通过这种方式,我们可以将原始序列 T 分割为多个窗口的集合 图片 ,当存在一个新的时间窗口 图片 ,需要通过窗口的异常得分来对新的未知窗口进行分类,也就是0和1。

Unsupervised Anomaly Detection

采用自编码器是一种常用的方法,基于自编码器的异常检测使用重构误差作为异常分数,因为通常训练数据中只有正常的数据,因此出现异常数据时,往往具有较高的重构误差。但是,如果异常比较接近正常数据,则重构误差很小,因此无法有效检测到异常。发生这种情况是因为 自编码器尽可能地重建输入数据。

为了克服这个问题,理想的自编码器应该能够识别异常输入数据中是否包含正常数据。

一种可能的方案是利用生成对抗网络Generative Adversarial Networks。与基于自编码器的异常检测类似,基于 GAN 的异常检测使用正常数据进行训练。训练后,鉴别器用作异常检测器。如果输入数据与学习数据分布不同,则鉴别器将其视为来自生成器并将其分类为假数据,即异常。

USAD的基本框架为自编码器,同时具有两个不同阶段对抗训练策略。USAD包含三个部分,一个编码器网络 E 以及两个解码器网络 D1 和 D2 。如下图所示

图片

两个解码器共用一个编码器,具体表示为:

图片

训练的时候采用两阶段的训练方式。首先,给定正常输入,训练两个自编码器以实现重构。其次,这两个自编码器 以对抗方式进行训练,其中 AE1 将试图欺骗 AE2,而 AE2 的任务是判断数据是否是真实的(也就是来自输入窗口)或者假的(也就是来自AE1的重构)。

  • Phase 1: Autoencoder training

在第一阶段,目标是训练每个 AE 来重现输入。即给定 W ,两个编码器的输出分别为AE1(W)和AE2(W),所以目标函数为:

图片

  • Phase 2: Adversarial training

首先将来自 AE1 的数据再次由 E 压缩到 Z,然后由 AE2 重建,得到的输出AE2(AE1(W)),这个过程如图中Training阶段中的绿色箭头所示。在对抗训练的策略下,AE1 期望最小化 W 和 AE2(AE1(W)) 之间的差异,而AE2 的目标是最大化这种差异。所以目标函数为

图片

这里大概可以这么理解,AE2的目的是为了识别AE1(W)是AE1重构之后的时间窗口,而不是真实的时间窗口W。因此AE2需要最大化AE2(AE1(W)) 与真实W之间的差异,而AE1为了欺骗AE2,则需要最小化AE2(AE1(W)) 与真实W之间的差异。例如如果AE2(AE1(W))与W非常相似,那么可以认为AE1(W)来自与W,因为只有来自与W的数据才能获得较小的重构误差,也就是将AE1(W)判定为真实的W,这其实是错误的,因为AE1(W)是重构的数据。

  • Two-phase training

在这样的结构中,每个自编码器都双重用途,融合Phase1和Phase2,最终的目标函数为

图片

其中n表示训练epoch。两阶段的训练过程如下所示。

图片

  • Inference or Detection Phase

异常得分(anomaly score)被定义为

图片

其中 图片 。这两个参数决定了模型对异常的敏感度,在实际使用时可以根据场景进行调节。在文中的实验中,通过增加 a ,FP(False Positives)的数量降低,TP(True Positives)的数量上升。也就是说增加 a 可以增加模型的precision,但同时F1 score也降低,也就是说明recall会降低,也就是模型变得更加保守。

换句话说,当 a 增加,模型逐渐退化为单一的自编码器,也就是仅仅能识别出比较明显的异常,识别的准确率上升,也就是TP会增加,FP会降低,但同时导致的后果是找出的异常数量下降,也就是Recall的值会下将。而增加 b 的值,会使模型变得更加冒险,因此能找到更多的异常,但同时准确率会降低。与文中的实验结果规律相似。而AE2可以视为一个扰动器,为AE1提供了一定的干扰效果。

KDD 2021

Practical Approach to Asynchronous Multivariate Time Series Anomaly Detection and Localization

图片

论文地址:https://dl.acm.org/doi/10.1145/3447548.3467174

论文源码:https://github.com/eBay/RANSynCoders

论文摘要:考虑从现实世界观察到大量时间序列表现出异步和重复变化特点,提出了一种从多元时序数据集中推断异常的实用方法。总的来讲,该解决方案首先利在预训练自动编码器的潜在表示(latent representation)上进行频谱分析从而提取信号中的主要频率,然后将其用于后续网络,该网络学习信号中的相移并生成原始多元变量的同步表示。然后将同步的多元变量的随机子集输入到一组自动编码器中,以最小化分位数重构损失为目标进行学习,然后用于基于投票规则来推断和定位异常。该文提出的是一种无监督的方法,因为监督学习方法面临着无法获得真实标签的问题。相比之下,通过仿真模拟来获得标签无法代表现实世界异常的真实多样性。而异常通常具有模式不一致、稀缺或未标记的特点,因此采用无监督的深度学习方法是合理且实用的。该文所提出方法有两个理论贡献,第一个是无监督方法假设序列的频谱关系是线性相关的,但忽略了隐藏在多元时间序列的固有的非线性特性;第二个是在实际应用中,时间序列的维度经常被异步地观测,这阻碍了模型权重的学习。

Method

Latent spectral density estimation

训练一个隐含空间大小为1的自编码器,目标是最小化50th分位数,定义为 图片 。然后在单变量潜在表示上利用快速傅立叶变换 (FFT) 进行频谱分析来辨识大小为 S 的频率向量 W 。 W 向量包含理论上在序列特征中占主导地位并普遍存在的频率,其中 S 是足以近似多元时间序列 Y 的正弦分量的数量,这里可以定义为 图片

这部分实际上先将多变量时序数据 Y 编码到单变量的隐含状态 Z ,然后在 Z 上进行快速傅里叶变换,最终得到 Z 的频率成分组成 图片 ,其中包含了 S 个频率成分。

Asynchronous multivariate signal model

基于 T 个时间步和 I 个特征对异步多元时序数据进行建模,建模方式如下

图片

其中 S 表示频率成分,图片 以及 图片 表示特征的索引,图片 表示频率成分的索引,图片 表示角频率,图片 表示幅度,相位以及特征的偏置,图片 表示噪声。

w 的初始化是基于自编码器学习到的近似最优值。为了学习 图片 ,首先将模型中的中的角度部分线性化展开为 图片 ,其中图片 。线性化后的形式变得类似于用单位偏置和正弦激活函数训练神经元。这样就可以通过反向传播训练 图片 参数。而噪声项 图片 是通过从拟合的正弦分量中减去原始信号来计算的。

文中给出了一个例子, 显示了使用具有两个频率分量进行建模的特征例子如下图所示,也就是 图片 。这里将某一个特征序列表示为一个拟合的正弦成分以及噪声。

图片

最后还需要将误差表示为时间的函数,文中根据第 i 个特征的第 t 个观测,将噪声表示为

图片

其中 w0 是来自谱密度估计的最高功率的角频率,也就是 W 的 w0 。而原始异步时间序列的 图片 表示为

图片

其中 图片

Synchronized representation

基于上面提到的公式,文中将异步的特征采样时间 图片 ,以及异步的相位差 图片图片 对齐到了参考时间戳 图片 ,如下所示

图片

其中 图片 是基于特征的相位移动,它将异步特征上的每一个观测移动至参考时序帧,该操作是特征级别的,也就是说同一个特征的所有观测值具有相同的移动量,图片图片 分别是原始序列和投影噪声的同步表示。文中仍然给了一个例子来说明,该例子显示了 eBay 从 4 个不同时区的用户活动中收集的 4 个异步特征的示例及其同步表示。

图片

Embedded representation learning

将上述参数估计和多元序列同步表征过程嵌入到整个网络学习过程中,如下图所示。

图片

上述的网络需要两个输入:一个是多元时序数据 Y ,还有一个是特征对应的时间戳矩阵 T 。最终获得的同步表征 图片 将作为后续RANCoders的输入。

RANCoders: Bootstrapped autoencoders for feature-bounds construction

提出了一种利用自动编码器进行异常检测的替代方法。该方法显著利用了同步多元序列增强空间共线性,并且在异步时序数据上表现非常好。

首先,作者认为输入的较小子集应该包含足够的信息,从而以足够的质量重建整个序列。因此,文中利用具有一组 N 个弱深度编码器(weak deep encoders)作为特征bagging模型。这样的机制可以在异常推理时采用少数服从多数的机制。也就是具有N个编码器,可以同时编码输入。

其次,作者认为对于异常检测这个任务来讲,重建输入信号的阈值边界更有效,而不是尝试重建输入,然后进行不可靠的阈值选择过程用于异常推断。

基于以上原则,训练了两组深度解码器,分别为 图片 以及 图片 ,从每个编码器中重建多元时序数据的边界,通过最小化分位数重建损失来进行训练

图片

上面这个公式是针对下界的损失函数,其中, 图片 是重构的边界,LB是下界, n 表示自编码器的索引。针对上界的损失函数与下界损失函数相同,将LB换为UB即可。

Anomaly inference and localization

采用以上方法的两个突出优势是可以实际推断异常并进一步解释多元数据集中异常的潜在来源。但是文中重点讨论了第一个属性,因为潜在来源在数据集中没有基准。

对于异常推断,通过将 RANCoders 输入与解码的边界进行比较,这个过程可以表达为

图片

对于每一个时间步,输出结果均为2维数组,大小为 图片 ,因为在上一个小节中,采用了 N 个弱深度编码器,每个编码器都会有一个结果。然后采用投票的策略,即输出中的 1 多于 0 时,观察结果被标记为异常。

以上就是这篇论文的主要内容,总体来说模型部分还是比较好理解的,主要的特点就是将异步时序数据的同步化表征融入到整个模型框架中。


推荐阅读
  • 论文阅读:《Bag of Tricks for LongTailed Visual Recognition with Deep Convolutional Neural Networks》
    基于深度卷积神经网络的长尾视觉识别技巧包摘要近年来,挑战性长尾分布上的视觉识别技术取得了很大的进展,主要基于各种复杂的范式(如元学习)。除了这些复杂 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • Visualizing and Understanding Convolutional Networks(ZFNet网络)论文阅读笔记
    VisualizingandUnderstandingConvolutionalNetworksZFNet网络架构论文阅读笔记2022.4.4论文地址https:arxiv ... [详细]
  • https:www.bilibili.comvideoav43996494?p61补充说明(修正前面代码存在问题):#先验框筛选defchoose_anchor_boxes(sel ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了如何使用动态尺寸巧妙地将R中的数组子集化。作者通过解释数组的三个维度以及第三个维度的长度可变性,提出了一种周期性子集化数组的方法,并举例说明了如何创建第二个数组。这个方法对于制作模拟模型非常有用。 ... [详细]
author-avatar
温尧乔761975
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有