提高 IT 运维效率,深度解读京东云 AIOps 落地实践(异常检测篇 (二))
作者:张宪波、张静、李东江
如何提高 IT 运维效率是众多运维人员的难题,这不仅是对内容繁杂、持续变化、支持不同业务的需求加以描述、加载和维护的过程,更是对业务需求、过程、结果的管控,以及对整个管理信息系统运行状态的管控。京东云 AIOps 对时间序列异常检测识别的功能让系统效率大大提升。它能基于深度学习对运维时序单指标和多指标指标进行异常检测,快速发现线上业务问题,为运维人员降本增效。
基于深度学习对运维时序单指标和多指标指标进行异常检测,快速发现线上业务问题
时间序列异常检测识别故障对系统的正常运行颇为重要,准确率高的异常检测对系统的稳定性具有重要意义。时间序列的异常检测已经研究了几十年,业界提出了各种有效检测方法。我们提出了一种基于深度学习的时间序列异常检测模型。该模型由三条并行管道组成,每条管道包含一个卷积单元,该卷积单元与改进的注意力机制串联,负责时间和空间特征提取。在京东内部多个数据集对所提出的模型进行评估,结果证明了所提出模型的有效性,所改进的注意力机制的在运维多指标异常检测上有较好的表现。
为了确保系统稳定运行,需要用一个或者多个指标来评价系统是否在正常运行,常用的评价指标有单变量时间序列(UTS)和多变量时间序列(MTS)。例如,交易量和网络流量是关于在线支付的两个常用监测指标。挖掘时间序列的异常值对于系统的稳定性以及根因分析都具有重要意义,及时发现这些异常值,可以有效的降低故障的发生的概率。
现有的时间序列异常检测分析方法大致可分为基于深度学习的方法、基于非深度学习的方法和传统方法。自回归移动(AR)及其变量如自回归平均模型(ARMA)和自回归求和滑动平均模型模型(ARIMA)是分析时间序列的一些基本方法。动态时间规整(DTW)是另一种基于距离的经典异常检测方法,其变种如 DTW-I、 DTW-D 和 DTW-A 为常用的 baseline 方法。异常检测也可以简单看成二分类问题,所以机器学习算法,如隐马尔可夫模型(HMM) ,k 最近邻(k-NN)和支持向量机(SVM) ,也是用于异常检测的常用算法。
上述方法为时间序列分析打下了基础,然而,为了更好地适应特定的实际领域,非深度学习方法不能适应计算机系统复杂和动态的变化,这也是非深度学习方法的一个局限性。深度学习具有强大的特征提取和行为预测能力,这使得深度学习可以很好的适应异常检测,特别是对于有大量输入信息和动态特征的情况。
卷积神经网络(CNN)是实现深度学习的最常使用的框架之一,并逐渐成为图像处理方面的主流技术。除了卷积神经网络(CNN)之外,递归神经网络(RNN)因其对历史信息的记忆能力而在时间序列的异常检测有着很好的表现能力。基于类似的 RNN 设计,其变种长短期记忆人工神经网络(LSTM)和门控递归单元(GRU)在时间序列异常检测问题上具有更好的性能。
基于 DL 的时间序列异常检测模型,如 MC-DCNN ,ALSTM-FCN ,C-LSTM ,TapNet 等在业界被频繁使用。与基于非深度学习的方法相比,这些模型需要很少的先验知识,但能够获得更好的检测结果,特别是当涉及到复杂和传统方法难以解决的情况时,深度学习方法能够很好的处理。
注意力机制已成为业界算法同学的一个广泛选择,基于深度学习的框架结合注意机制往往获得更好的性能。它也被用于异常检测任务,我们对现有的时间序列分析注意机制进行了细微的改进,以更好地适应实际应用。
我们提出了多注意综合卷积网络(Mac-net)异常检测模型。时间序列以快照的形式存储输入到 Mac-net 模型中,Mac-net 模型由三条平行的卷积注意管道和一个全连接组成。卷积注意管道包括 CNN 单元和改进注意力单元。CNN 单元负责空间特征提取,注意单元负责时间特征提取。我们改进的注意力机制将大部分权重分配给重要的历史输入,同时抑制其他较不重要的输入,从而优化权重分配。
模型要检测的时间序列可以是 UTS 或 MTS,这三个并行管道设计为多尺度感知器。我们设计的注意力机制可以很好地捕捉时间序列异常序列的内在特征,通过更多地关注与当前序列严重偏离的历史序列来进行预测,主要是因为这些序列在识别异常与否时比其他序列贡献更大。
我们的模型创新点主要体现在以下两个方面: 提出了一种新的基于深度学习的网络结构 Mac-net,并设计了一种专门用于时间序列分析的放大注意机制,使用公共数据集和京东数据集进行了实验评估,证明了 Mac-net 的有效性和可扩展性。详细模型技术细节如下:
我们首先简要介绍时间序列的异常检测,然后详细说明了 Mac-net 模型的设计细节,以及我们所提出的放大注意机制的算法实现。
时间序列的异常检测
假设一个时间序列的周期为 X = (x0,x1,...,xt-1,xt),其中 t 是当前序列的时间戳,而元素 xi,i ∈[0,t] 是在时间戳 i 处的 m 维观测值,因此,X 是一个矩阵 X∈Rmxn。具体来说,如果 m = 1,X 是 UTS,如果 m > 1,则是 MTS。异常检测是确定当前序列 xt 是否异常。我们采用时间序列的快照图像作为输入,为 CNN 处理提供了方便。简单来说,我们检测的是包含 xt 的子序列,而不是单个点。
Mac-net 模型
Mac-net 模型的总体架构,包括两个主要块,即三个平行的管道和全连接(FC)层。其中,并行管道负责特征提取,CNN 单元提取空间特征,注意力单元提取时间信息,实现权重分配。每个 CNN 单元包括卷积层、批归一化层、激活层和 Dropout 层。这三条管道的卷积层都有 16 个内核,它们的步长为 1。这三个管道的内核大小分别为 2x2、3x3 和 5x5。除了内核大小之外,所有其他设置在三个管道中保持不变,我们使用 ReLU 作为激活函数,Dropout 率为 0.4。
图 1 Mac-net 的体系结构示意图
输入为 h + 1 快照图片,包括一个当前序列和 h 历史序列,并同时输入到三个并行管道中。每个通道地输出相加并取平均值以进行最终检测。并行管道具有不同的内核大小,因而具有不同的感知域。时间序列的快照照片不同于一般的人像照片。尽管在快照图片中有多条曲线(UTS 的一条曲线) ,但图片的大部分区域是空白的,这意味着图片值矩阵中的大多数数字为零,如下图 2 所示,在这种情况下,单一大小的卷积内核可能无法获得全面的洞察力。三条平行管道的混合可以很好地克服这一问题。不同大小的卷积核可以互补地工作,并提供全面的感知。根据我们的实验结果可得, 2x2、3x3 和 5x5 的组合效果最好。每个 CNN 单元后面跟着一个注意力单元。
图 2 (a) UTS 输入序列,(b)值矩阵
最后将每个管道的注意力输出的结果输入到后面的全连接层中。由于每个管道的卷积核大小不一致,所有管道输出的结果直接求和是不行的。在注意力机制后面加个全连接层,以统一输出形状,从而使求和成为可能。总和的平均值最终输入到统一的全连接层。后面包括两个全连接层,分别是 32 个和 2 个神经元。最终输出结果是当前时间序列是否为异常。
放大注意力机制
注意机制最初被提出用于机器翻译,并很快成为集成在深度学习体系结构中的主要设计方法。注意机制的基本思想是模仿生物系统,即使感知到大量的信息,它们也会有意识地关注感知的某些部分。常用的注意机制如加性注意机制、放缩点积注意机制等需要额外的查询参数和关键矩阵计算,这肯定会增加计算开销。此外,这些注意机制计算出的权重被简单地分配给每个元素。为了进一步加强重要因素对注意的影响,同时抑制那些不相关的片段,在深入研究内在时间序列的基础上,我们提出了一种放大注意机制。
注意力机制最常用的形式之一,如(1)所示,是缩放点的产生。
当:
缩放后的点生成,“柔和”地最大化了那些具有较大相似性的元素所产生的效果。对于时间序列而言,与待检测时间序列偏差最大的历史序列对最终决策的贡献最大。以下图 3 中的 UTS 输入为例。红色虚线框是要检测的序列,蓝色虚线框为所需的历史序列。显然 xt-2 与 xt 的偏差最大。根据实际经验,与 xt-1 和 xt-3 相比,xt-2 被认为是识别 xt 异常状态的优先参考。鉴于这种先验知识,在抑制分配给其他权重的同时,放大分配给 xt-2 的权重是非常必要的。因此,我们试图减少分配给那些不太重要的部分的权重。
图 3 UTS 输入样例
红色段 xt 将被检测,蓝色段 xt-1、xt-2 和 xt-3 是作为辅助参考的历史数据段。
实现放大注意力机制有三个主要步骤。首先得到表示历史片段 xt-h ~ xt-1 与当前片段 xt 相似性的相似向量 S = (st-h,st-h+1,... ,st-1)。所需的历史片段数 h,可以根据异常模式确定,通常可以通过试验确定。在我们的示例中,h 被设置为 10,这意味着当前检测需要过去的 10 张历史快照照片。相似度计算方法有很多种,我们选择了余弦距离,如(3)所示
如上所述,我们的目标是挑选出偏离 xt 最多的片段,即相似向量的最小元素。
其次,根据相似性结果得到权重向量 w。与直接将相似性结果 放 softmax 运算的缩放点生成不同,我们使用 log 代替 exp 运算,并将权重向量分成两部分。正如我们所提到的,我们加大了重要历史片段对模型结果所产生的影响。我们使用 log 操作,因为当输入在[0,1]内时,值的变化比 exp 严重得多。
基于以上公式(4),smin 是最终识别的最有价值的信息。同时,[st-h,smin-1]和[smin+1,st-1]不那么重要。为了扩大对重要序列片段的关注,我们将权重计算范围缩小到[smin,sh-1],因为这一子时段包括 xt 的最近相邻的序列。[st-h,smin-1]被赋值为一个很小的值,因为它们远离 xt。
注意力机制的最后一步是得到结果的乘积乘以权重矩阵并归约,即注意力输出=reduce_sum(x’· w) 表 I 给出了注意机制的算法过程。
表一 放大注意机制算法
由于在 Mac-net 中有三个管道,我们得到三个独立的注意力输出,即 、 和。这三个注意力输出的平均值作为并行管道的最终输出,输入到全连接中进行最终输出。
通过我们京东内部数据和公共数据集实验评估来证明 Mac-net 在异常检测任务中的有效性。我们首先在两个 UTS 公共数据集和两个 MTS 公共数据集上评估模型。为了进一步说明该方法在实践中有良好的扩展性和有效性,我们还使用了我们京东内部两个数据集作为测试集。
数据集
我们使用两个 UTS 公共数据集和两个 MTS 公共数据集来演示 Mac-net 的异常检测性能。注意,一些公共数据集最初并非用于异常检测,而是用于时间序列的二分类。尽管如此,异常检测基本上是一项二分类的任务。因此,进行这些实验具有一定的有效性。
两个 UTS 数据集是从 Numenta Anomaly Benchmark (NAB)数据集中选择的。这两个 MTS 数据集收集来自不同领域的各种 MTS。我们选择了 SelfRegulationSCP2 和 Wafer,因为它们的维数和类别与我们的实际情况相似。除了公共数据集,我们选取了两个京东内部模型落地的数据集 A 和 B。下图 4 显示了两个数据集的正常序列(标有 a 的蓝框)和异常序列(标有 b 的红框)。
图 4 数据集 A 和 B 的(a)正常和(b)异常序列的显示
模型评估
Mac-net 模型 首先在上述六个数据集上进行了测试,来证明我们提出的放大注意力机制具有效果提升作用。检测结果见表二。我们选取精确度,召回率,以及 F1-score(F1)作为评估指标,公式如下,其中 tp、 fp 和 fn 代表真正的阳性、假阳性和假阴性。
从表二中我们可以看出,Mac-net 在所有测试数据集上获得了最佳性能。
表二 MAC-NET 在六种数据集上的评价结果
通过模型评估证明了我们的注意机制对现有方法的有一定的提升。同时我们构造了两个比较模型 Abl-mdl-1 和 Abl-mdl-2。Abl-mdl-1 和 Abl-mdl-2 都与 Mac-net 共享相同的架构,只是注意力单元不同。Abl-mdl-1 用缩放点产生取代 Mac-net 中的扩大注意机制,Abl-mdl-2 用 LSTM 层(16 个单元)取代扩大注意机制。从结果可以看出,我们的注意机制优于常用的注意机制和 LSTM 操作。放大注意力机制是基于时间序列的内在特征设计的,并试图以最优方式分配权重。
除了更好的检测精确度外,我们还评估了我们的模型与两个模型(Abl-mdl-1 和 Abl-mdl-2)的收敛速度,如下图 5 所示。两个基于注意力的模型,即 Mac-net 和 Abl-mdl-1,都实现了最快的收敛,而 Abl-mdl-2 则较慢。与其他两个模型相比,在 15-20 个时期的训练期间,Mac-net 震动更少,即到了更稳定的状态。
图 5 Mac 网络、Abl-mdl-1 和 Abl-mdl-2 的收敛速度
• Multi-Attention Integrated Convolutional Network for Anomaly Detection of Time Series. ICCAE.
•ieeexplore 检索: https://ieeexplore.ieee.org/document/9762449
•团队介绍:
京东科技从 2018 年开始建设智能运维,基于京东多年一线运维经验,以大数据和人工智能技术为抓手,形成以应用为中心的一体化智能运维解决方案。利用京东内部历年大促场景的数据积累,对算法进行不断的优化训练,在监控、数据库、网络、资源调度等多个纵向场景取得突破,可移植性强,自研通用化智能基线算法学件 10+,自研通用化异常检测算法学件 10+,场景化异常检测算法方案 5+,具备多种自研通用化根因定位算法学件,可以自动触发多维实时根因定位 ,从上万维度属性值中定位到根因维度,自研 5 种以上增量式学习模板提取与相关分析算法学件,运维知识图谱内涵盖节点 30W+,以应用为中心向外延伸出的图谱关系达 90W+,赋能根因分析快速精准查询调用。发表 IEEE 国际会议论文(AIOps 方向)8 篇,申请 40 余项智能运维专利。
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/87d4e9a176f63b2166ff63923】。文章转载请联系作者。
评论