论文阅读:**CTF: Anomaly Detection in High-Dimensional Time Series with Coarse-to-Fine Model Transfer

CTF:在高维时间序列异常检测

CTF:Anomaly Detection in High-Dimensional
Time Series with Coarse-to-Fine Model Transfer

问题:监控数据的维度爆炸问题(机器规模大、关键性能指标多、监控查询频繁)给现有算法带来了可扩展性问题。

解决:基于从粗到细的模型转移框架 CTF

coarse-to-fine model transfer based framework CTF

CTF 预训练一个粗粒度模型,使用该模型将每台机器的特征提取并压缩到一个分布中,根据该分布对机器进行聚类,并进行模型迁移以微调每集群模型以获得高精度。该框架利用每台机器潜在表示分布上的聚类、重用预训练模型和部分层模型微调来提高整体训练效率。我们还证明了聚类算法和距离算法等设计选择的合理性,以实现最佳精度。

1 intro

机器学习解决OPS问题的三大难点:

机器领域:机器数量 up

KPI:每台机器含有的KPI指标数量多

时域:监测数据粒度较细

2

一些解决方案提出首先对机器进行集群[12],并在每个集群内进行异常检测-KPI 和时域的高维使得聚类算法效率低下

无监督RNN-VAE:将原始 MTS 输入转换为低维潜在表示,压缩了 KPI 域中的维度.基于 RNN-V AE 的算法使用潜在表示来提高准确性和鲁棒性(即去噪 [1]),但我们得到了使用低维潜在表示进行聚类以解决维度爆炸问题的灵感。

本文框架实现的三大挑战:

  1. RNNV AE 模型训练和聚类之间存在逻辑依赖关系——对潜在表示进行聚类需要经过训练的 RNN-V AE 模型将原始 MTS 转换为潜在表示,但训练 RNN-V AE 模型(在聚类之前基于非集群大规模多机 MTS 的机器)很难准确和高效(如第 3 段所述)。我们提出了一个从粗到细的模型迁移框架,避免了这种困境(§II-B)。
  2. 仍然面临时域的挑战——潜在表示仍然是一个高维时间序列(每天 2880 个时间点),对聚类不友好。我们建议将时间序列转换为分布,从而提高效率和准确性(§II-B)。
  3. 需要在综合框架下做出几个设计选择,包括模型转移方法(例如微调策略)、聚类算法(例如 DBSCAN、Hierarchical Agglomerative Clustering)和距离度量(例如 KL 散度) 、JS 散度或 Wasserstein 距离)。

离线训练:

首先,它对全机数据集进行采样以训练粗粒度模型;其次,它使用粗粒度模型将每台机器的 MTS 转换为低维潜在表示;第三,它基于潜在表示的分布对机器进行聚类;最后,它将粗粒度模型复制到每个集群并微调每个集群的模型。

在线检测:

使用 per-cluster 模型为 permachine 实时 MTS 生成异常分数,并使用 POT [13] 来决定是否报告异常的阈值。

2 BACKGROUND

A 问题陈述

基于 RNN-V AE 的算法训练模型以记住多数人的特征并对少数人进行去噪。

对于时间序列建模,将一个数据实例(包含历史值)输入到模型中以了解最后一个 KPI 向量,并且模型将重建另一个数据实例作为输出。训练后,由于模型记住了大多数(正常点)特征,模型输出代表正常行为——如果输入与输出显着不同,则最后一个 KPI 向量被识别为异常。

编码器使用 RNN(存储来自前任 KPI 向量的状态)来提取时间特征和密集层以将它们压缩到潜在空间(即从 xt 到 zt)。解码器反转这个过程——它使用 RNN 来恢复潜在空间中的序列,并使用密集层来恢复维度(即从 zt 到 x0t)。输出分布(即 x0t 分布)中输入(即 xt)的概率密度定义为重构概率。

损失函数解读看不懂

目标;在高维时间序列中进行异常检测的框架,牺牲有限的准确性降低训练时间。

B 直觉与分析

直觉: 基于 RNN-V AE 的算法可以使用密集层(V AE 的典型结构)将每个高维 KPI 向量 (L) 压缩为低维潜在表示 ©。随着 KPI 域的压缩,潜在表示 zt 上的成对距离计算可能比原始输入 xt 上的更快 。

三个挑战:

  1. 聚类和模型训练之间的相互依赖。对潜在表示的聚类依赖于将 xt 转换为 zt 的训练模型,但如果没有聚类,我们将面临训练每台机器模型(成本高昂)和为所有机器训练一个模型(不准确)的困境。

    solution:(1) 我们首先对全机数据集进行采样,以预训练一个粗粒度模型。 (2) 然后我们使用粗粒度模型将每台机器的 MTS 转换为潜在表示。 (3) 然后,我们使用潜在表示的分布将机器分类为 K 个集群。 (4) 最后,我们将粗粒度模型转移到每个集群,并对每个集群的细粒度模型进行微调。 Step 3中的Clustering machine将M个模型减少为K个模型,Step 4中的模型迁移复用了预训练的模型,两者都提高了效率。

  2. 每个机器实体仍然是一长串潜在表示。如果聚类算法计算两个长序列的距离,执行时间仍然不实用。

    solution:对潜在表示序列进行采样以获得分布,并使用该分布进行聚类中的距离计算。

    使用 Wasserstein 距离 [17] 来计算成对距离。用分布来表示一个机器实体很直观:整个公司都有相对固定的业务在机器上运行,每台机器通常执行一种业务(对应的程序);因此,样本可以表示整个时间序列,并且分布比潜在表示的时间序列更适合聚类。

    以分布代替时间序列每台机器的模式是不随时间变化的?

  3. 神经网络 (NN) 训练方法的设计选择。我们转移粗粒度模型来训练每个集群的模型,但是模型转移有几种选择,例如,在新数据集上训练旧模型的所有 NN 层,在新数据集上训练旧模型的部分层(即,微调)。我们应该做出正确的选择来保证效率和准确性(或做出权衡)

    solution:RNN 层很浅且具有确定性,可以提取一般的时间序列特征。相比之下,密集层是深度且随机的,用于学习新数据集的更好表示。因此,我们对 RNN-VAE 网络进行了第一个微调策略:冻结 RNN 以进行特征泛化 [18] [19] 并调整密集层以获得更好的潜在表示和重建。它进一步节省了模型训练时间(冻结 RNN)并提高了准确性(特征泛化)

C 相关技术

Wasserstein Distance. 聚类需要

测量将一个分布“移动”到另一个的最小距离

Wasserstein 距离在两个分布之间重叠较少或没有重叠时特别有用

Hierarchical Agglomerative Clustering.

基于距离矩阵,HAC 迭代合并更接近的集群对并向上移动层次结构,直到所有机器实体合并到一个集群中。

三个优点:首先,它不需要初始参数(例如,集群的数量或距离阈值)。其次,它对距离测量算法不敏感,因为它聚集在距离等级而不是值上。第三,不同层次之间的关系比较明显,便于我们可视化聚类结果。

3 DESIGN

三个步骤——数据预处理、离线模型训练和在线异常检测。

数据预处理:fill(以前一个数值填充),norm(Z-score)

**离线模型训练:**四个步骤

  • 预训练粗粒度模型 用于聚类和模型训练

M × T 个数据实例,CTF 对其中的一部分进行采样以训练模型。

抽取样本原则:首先,我们考虑机器的额外物理属性,例如物理机架、运行的应用程序和机器模型,以及来自每组机器的样本数据实例。其次,在时域中,我们从每台机器的时间序列中统一随机抽取数据实例。将采样的数据实例输入 RNN-V AE 算法进行模型训练; RNN-V AE 模型中的参数被初始化和更新并收敛到一个粗粒度模型 M0

  • 特征提取 将L维KPI向量降为C维

使用 M0,每个机器实体都被转换为潜在空间中更简短的表示分布,称为 zt 分布。

对于每一个机器实体,CTF首先从整个时间序列中抽取一部分KPI向量,然后使用RNN-VAE模型的编码器将KPI向量转换为它的潜在表示(大小为C的向量,C< L,见表 II)。因此,每台机器的 KPI 向量序列被转换为更少的低维潜在表示的分布,即 zt 分布。

  • 机器集群

计算机器实体之间 zt 分布的成对 Wasserstein 距离,并得到所有机器实体的距离矩阵。

距离衡量实体之间的相似性——更接近的分布应该更可能属于同一类。然后 CTF 使用 HAC 根据距离矩阵对机器进行集群,每台机器最终都属于一个特定的集群。

  • 模型转移

将粗粒度模型 M0 复制到每个集群;在每个集群中,使用每个集群的数据进一步训练(即微调)模型。RNN层被冻结,模型参数更新只在dense层上。

在线异常检测

以重构概率衡量故障分数。故障分数阈值选择:Peaks-Over-Threshold (POT)

给定一组历史异常分数,POT 有两个步骤:首先,POT 过滤掉整个总体中某个“低分位数”以下的样本,拟合这些具有广义帕累托分布(GPD)的样本,并得到 GPD 函数;其次,它使用函数和整个人口中的异常分位数(表示为 q)来识别阈值。

参数简单,稳健性高,效率很高。

评估没看!

图没看!

评估原则:可扩展性、可操作性、效率和准确性。

fig1:3个机器,14个metric,3天长的多元时间序列数据

fig2:两个RNN+dense分别是编码器和解码器。

fig3:通过特征提取将L维特征变为C维(xt2zt),通过聚类将M个机器分为K个群,通过抽样将长时间序列变为分布(失去了时序信息?)

一开始是 对所有机器做粗粒度模型,然后在每个类(k类)上做微调,微调只调整dense层。

fig4:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值