Advertisement

Real-Time Deep Learning-Based Anomaly Detection Approach for Multivariate Data Streams文章翻译

阅读量:

基于Apache Flink以及实时深度学习的多元数据流的异常检测方法

摘要

为了识别复杂系统中的异常行为,在过去几年中基于深度学习的多元时间序列异常检测算法受到了学术界的广泛关注。尽管现有的多种异常检测算法已得到广泛应用[1-3],然而目前还没有研究如何在流处理框架下实现多元数据流上的这些检测算法的应用。针对这一问题背景我们需要解决的核心技术难点在于:如何在实时数据处理环境中高效地执行多元时间序列的异常检测任务。为此本研究提出了一个新的解决方案即一种结合Apache Flink实时深度学习框架的新方法该方法通过构建一个基于LSTM编码器-解码器模型用于重建多元输入序列并在此基础上开发了一种新型的时间序列相似性度量方法进而实现对未知模式变化的有效捕捉与响应机制。实验结果表明该方法能够在多个实际工业场景中获得优异的时间延迟性能并且能够有效减少系统的运行维护成本从而实现了复杂系统状态监控效率的重大提升

1 介绍

在现实世界的应用场景中, 通过持续监控大型系统, 包括电厂中的压力传感器、温度湿度传感器等设备, 以及服务器集群中的各项性能参数(如CPU负载、内存使用率等), 可以持续采集并生成大量元数据. 在这一海量数据流中, 识别数据流中的异常情况以及系统的异常行为被视为一项关键任务. 这种情况下, 系统管理员便能够及时收到关键问题的通知, 并采取相应措施解决问题, 从而保证系统的健康运行状态. 传统的做法是为每一个测量点设定正常运行的基准值. 如果任何一个测量值超出这一预设范围, 则被判定为异常状态.

为了有效应对这一挑战,在多元时间序列数据分析领域已持续几十年的发展中不断涌现出了多种异常检测算法

早期的研究主要依赖机器学习模型来进行异常模式识别

在本研究中,我们致力于开发一种基于深度学习的多元数据流实时异常检测系统,该系统采用Apache Flink作为底层流处理框架。具体而言,我们首先参考文献[2]中的研究,构建了一个LSTM双向编码器-解码网络模型用于对多元序列进行重构,并在此基础上设计了一个基于重建误差的异常检测算法。随后,我们进一步开发了一个支持实时处理多元数据流的Flink程序。值得注意的是,Flink采用了even-driven模式,这种模式特别适合在无界数据流上执行有状态计算任务。为了简化用户编程流程,Flink提供了面向图计算的编程模型,该模型以有向无环图的形式表示数据流动关系,其中每个节点代表特定的数据转换操作符,负责对输入数据流进行相应的功能映射。通过集成这些操作符实现的数据流转换流程,即可满足复杂业务需求。

在这里插入图片描述

图1 基于Apache Flink的多元数据流异常检测的整体架构

图1呈现了我们Flink程序的整体架构图,该系统由dataSource、streamWindowing和 anomalyDetection三个核心模块构成.其中dataSource工作流程负责接收原始数据流并将其传递至DataStream对象,DataStream对象作为处理数据流的基础类型.随后从DataStream生成一个多段连续的数据序列.该系统利用训练好的LSTM encoder-decoder模型对上述序列进行分析,并根据检测算法返回的结果提醒潜在异常.

本文其余部分的结构安排如下。在第二部分里,我们首先阐述了一种多元序列的异常检测方法。接着,在第三部分详细说明了Flink运算符的具体实现细节;最后,在第四部分对全文进行了总结和展望。

2 多元序列的异常检测

我们关注的是一个长度为T的多元时间序列X = \{x_1, x_2, \dots, x_t, \dots, x_T\},其中每个数据点x_t ∈ R^m是一个m维向量。这些向量用于获取时间步长t的m个变量值。鉴于大多数实际应用场景中缺乏标注式的异常样本,在大量常规时序数据中选取多个完整的窗口片段或采用滑动窗口方法收集长度为T的正常片段来训练LSTM编码器-解码器模型。通过计算输入序列中各时间点重构误差得到其异常评分值;评分越高,则表示该时间点越可能是异常。当输入序列中含有足够多的异常样本时,则判断该整个输入序列存在显著偏差。

2.1 重构LSTM encoder-decoder模型

LSTM encoder-decoder 模型由 LSTM 编码器和 LSTM 解码器组成,如图2所示。

在这里插入图片描述

图2 LSTM encoder-decoder模型从输入序列 X 到输出重构序列 X’ 的推理步骤

对于每个时间步长t \in \{1,2,\ldots,T\} ,LSTM encoder依据输入X计算新的隐藏状态h^{E}_{t} ,其中该状态属于实数空间\mathbb{R}^{d}d代表LSTM网络中的单元数量)。注意,在此过程中编码器学习其最终隐藏态h^{E}_{T}作为输入向量X的表示。随后将该初始态h^{E}_{T}用于解码器启动阶段,并通过逆序操作实现对原始输入X的重构。

在解码器中使用LSTM架构,在时间步t处基于以下线性组合生成一个重构数据点x'_t

x'_t = W \cdot h^{(D)}_t + b

其中W代表LSTM架构中的权重矩阵参数;其偏置项b\in\mathbb{R}^m属于m维欧氏空间;随后将该重构数据点x'_t用于更新前一时间步t-1处的隐藏状态h^{(D)}_{t-1};模型训练的目标函数是...

在这里插入图片描述

其中SX是正规序列的集合。

2.2 计算异常检测评分

给定输入序列X和重构序列X',基于LSTM encoder-decoder模型的输出,在每个时间步t上计算误差向量e_t = |x_t - x'_t|。接着,在每个数据点上计算其异常评分a_t = (e_t - \mu)^T \Sigma^{-1} (e_t - \mu),其中\mu\Sigma分别对应于正态分布N(\mu, \Sigma)的均值向量和协方差矩阵。这些参数\mu\Sigma通过验证集中的所有数据点x_t的误差向量e_t进行推导。

依据所有时间步的异常分数来判定输入序列X的状态。当我们在时间步长t处计算相应的异常分数时,若a_t超出阈值τ,则认为数据点x_t属于‘异常数据点’;否则视为‘正常数据点’。特别地,我们注意到当序列X中的异常数据点数量超过δ时(即当且仅当),这种情况下的序列X被视为‘异常序列’。(值得注意的是,在实际应用中偶尔会出现极少数错误重建的数据点;这通常归因于输入序列X中存在一定程度的噪声干扰)。为了使模型在验证集上达到最佳性能(即最大化f1=2×(P×R)/(P+R)),我们特意设定τ和δ的具体数值范围

2.3 异常检测性能评估

数据集。
为了评估第2节所述异常检测方法的效果,在真实世界环境下的表现如何?我们选择了一个名为SMD的新5周长数据集(Server Machine Data)来进行实验。
SMD由一家大型互联网公司[4]下的8台服务器收集了所有观测数据。该集合包括每隔一分钟产生的观测结果(Observation),每个观测结果包含38个指标如TCP活动开启、内存使用率、CPU负载、磁盘写入等指标。对于每台服务器而言,在其运行期间的所有观测都被均分为两组:前半部分作为训练集合用于模型学习;后半部分作为验证集合用于性能评估。
在测试集合中出现的异常情况是由领域专家根据事件报告进行标注的。此外,请参阅表1获取有关SMD详细信息及其字段定义。
表1列出了各字段的具体含义:

在这里插入图片描述

机器ID编号用于标识每台机器,
在训练、验证和测试数据集中所经历的时间步骤数量代表了系统的运行状态。
系统出现故障的时间步数反映了潜在问题的频率。
故障率则衡量了这些故障在整个测试阶段中的占比情况。
连续故障事件的时间段长度有助于评估系统的稳定性。

实验设置与评价指标如下:
我们基于Pytorch平台构建了一个LSTM encoder-decoder模型,并将其部署于一台搭载Intel® Core™ i7-10700k CPU(3.8 GHz)、拥有128GB内存及NVIDIA RTX 3090显卡的高性能服务器上进行训练。在实验过程中,我们对LSTM编码器-解码器模型进行了超参数优化与配置。具体而言,在输入序列数据的处理中,我们设置了滑动窗口长度为100个时间步,并将滑动窗口的重叠部分设定为10个时间步。此外,在网络架构设计方面,则采用了隐藏单元数量固定为200个的设计方案。为了提高训练效率与模型性能,在批处理过程中我们将批次大小设定为5,并采取了早停策略提前终止训练过程(共20 epochs)。最后,在优化算法选择上,则采用了学习率为1\times 1e^{-3}的Adam优化器来处理随机梯度下降问题。

为了评估基于LSTM编码器模型的异常检测性能研究,在该领域中通常采用三个关键指标:包括准确率、召回率以及F1分数等综合评价体系。对于给定的时间序列数据,在存在超过δ的数据偏差时,则被判定为异常现象。在此研究中我们通过设定τ和δ的具体临界值参数范围,并选择使得各设备测试集样本上的F1分数达到最大化的最优组合。随后根据这一最佳参数组合进一步计算出相应的准确率与召回率得分等关键性能指标。

评估结果。
表2为每台机器的异常检测算法评价结果。

在这里插入图片描述

在与专家探讨一些实际应用场景时,我们此次重点分析了检测结果中的高召回率。观察到该算法的召回率得分超过0.90,在多个特定场景下表现出色(例如:1-1、1-6、3-1等)。然而,在现有LSTM编码器解码器架构限制下,其精度评分过低(低于0.1),从而使得多台机器设备的F1值受到影响。基于此观察,在未来研究中计划对检测算法进行优化改进措施:一方面通过额外实验寻找最佳超参数组合;另一方面开发新型重建模型以提升对多元时间序列数据建模能力

3 Flink算子实现细节

3.1 dataSource操作符

data source operator captures primitive sensor data and transmits it to the output stream ds. Our program collects values from multiple sensors, so we have ds equipped with a data type comprising sensor_id, value, and timestamp. We implement a custom source function, CustomSrcFunc, by inheriting RichSourceFunction from Apache Flink to read sensor values. Env periodically retrieves environmental information from source s at intervals of t and registers CustomSrcFunc. Once Env's execution() method is invoked, every t interval, CustomSrcFunc reads the value from s and creates a tuple containing id and (value, timestamp). The ds's collect() method then propagates these tuples to output stream ds.

在这里插入图片描述

3.2 streamWindowing操作符

streaming streaming操作符从多个数据源ds聚合多个元素以生成具有形状[l dim]的滑动窗口并将结果传递至window ws的数据流中

在这里插入图片描述

3.3 anomalyDetection运算符

该运算符具备两个功能:连接异质平台和检测异常序列。其一用于连接不同平台(异质),其二用于识别异常模式。前两个操作符基于Java开发;然而我们采用PyTorch框架构建了一个基于LSTM的编码器-解码器模型;我们的目标是实现不同平台间的有效通信;以便将tempwin参数通过客户端发送至该模型进行重新配置;为此我们采用了本地化的客户端-服务器架构来处理数据传输;具体来说我们将深入阐述该客户端-服务器架构的工作原理。

在这里插入图片描述

本地客户端-服务器架构的具体细节如下:本地客户端基于Spring Boot框架构建,并采用非阻塞和响应式行为模式运行;而本地服务器则基于Django Rest框架开发,并通过WebSocket接口与客户端进行通信机制设计。当窗口流ws接收到tempwin参数时,本地客户端会将tempwin数据编码为JSON格式并返回给客户端;随后,在本地服务器端接收该JSON数据后调用serialize方法提取文件内容;由于tempwin具有固定大小传感器(如[l, dim]),系统会将JSON数据值直接复制至对应传感器中;该传感器又被映射至LSTM编码器解码器模型中进行处理以实现数据重建;最后,在检测算法流程中(如第2.2节所述),Web服务器实例在本地启动后,通过response(resultd)方法将检测结果返回给客户端应用。

4 结论

在本文中, 我们开发了一种基于深度学习的新颖方法, 该方法利用 Apache Flink 平台实现多元数据流实时异常检测机制。现有文献报道了多种基于深度学习技术的异常检测算法, 但目前尚无研究针对流处理框架下多元数据流进行此类算法的应用探索。为此, 我们首先构建一个 LSTM 型 encoder-decoder 模型用于输入序列重建, 同时设计一种基于输入与重建序列误差评估的新型异常评分系统。通过真实数据集实验结果表明, 所提出的检测系统展现出良好的性能指标。随后, 我们构建了一个 Flink 程序组, 通过自定义特定运算符序列实现多元数据流的有效处理与转换功能, 并在此基础上实现了对异常事件的实时监控与通知功能。该系统不仅可帮助系统专家快速识别关键问题所在, 而且能通过智能建议提供相应的解决方案以维持复杂系统的运行状态。

衷心感谢。该研究工作得到韩国科学技术院(KISTI)以及韩国信息与通信技术研究院(IITP)的全力支持和监督,在其支持计划(IITP监督项目)下开展,并由韩国政府(MSIT)资助的国家研究基金(NRF, No. 2020R1A2C1004032)提供必要的资源和技术支持。

Anomaly Detection Methodology Based on Deep Learning for Multi-Variable Data Flows in Real-Time Processing, Utilizing Apache Flink.

全部评论 (0)

还没有任何评论哟~