CN113204590B - 基于序列化自编码器的无监督kpi异常检测方法 - Google Patents

基于序列化自编码器的无监督kpi异常检测方法 Download PDF

Info

Publication number
CN113204590B
CN113204590B CN202110597955.XA CN202110597955A CN113204590B CN 113204590 B CN113204590 B CN 113204590B CN 202110597955 A CN202110597955 A CN 202110597955A CN 113204590 B CN113204590 B CN 113204590B
Authority
CN
China
Prior art keywords
module
kpi
value
vector
online
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110597955.XA
Other languages
English (en)
Other versions
CN113204590A (zh
Inventor
苏金树
赵娜
韩彪
蔡阳
陈曙晖
陶静
赵宝康
赵锋
魏子令
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202110597955.XA priority Critical patent/CN113204590B/zh
Publication of CN113204590A publication Critical patent/CN113204590A/zh
Application granted granted Critical
Publication of CN113204590B publication Critical patent/CN113204590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Abstract

本发明公开了一种基于序列化自编码器的无监督KPI异常检测方法,目的是提高KPI异常检测的准确性和鲁棒性。技术方案是构建基于序列化自编码器的无监督KPI异常检测系统;输入模块提取KPI值向量;数据预处理模块对KPI值向量进行预处理;离线训练模块对标准化后的KPI值向量进行切分,构建异常检测模型并对模型进行训练;自动阈值选择模块计算阈值;有效检测窗口设置模块获取有效窗口值;输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合,对在线KPI序列进行检测,得到检测结果;显示模块显示检测结果。采用本发明可解决漏报率高、误报率高等问题,有效提高KPI异常检测的准确率。

Description

基于序列化自编码器的无监督KPI异常检测方法
技术领域
本发明属于信息技术系统智能运维技术领域,具体涉及一种基于序列化自编码器(自编码器是一种特殊结构的深度神经网络,包括编码器和解码器两个对称的结构)的无监督KPI(Key Performance Indicator,关键性能指标)异常检测方法。
背景技术
近年来随着云计算业务的广泛部署、数据中心规模的不断扩大、网络和通信系统的不断发展,互联网企业、运营商、金融机构等内部的IT架构在数量和规模上不断扩展,IT系统的服务器、存储设备、网络设备等数量越来越多,系统结构也愈加复杂多样,而保障IT系统的稳定性、可用性和高效性的运维工作必不可少,且运维人员任务愈加繁重,时常处于“救火”状态。当前IT系统的运维人员面临极大的工作压力,传统的依靠人力的运维模式已难以适应大规模IT系统发展的需求。同时,相比于传统运维的方式,大数据时代的运维面临着集群规模更大、业务组件更多、监控可视化与智能化更为复杂等诸多难题。综上所述,从机器规模到数据规模的扩大,传统的运维方式和方法已经不能满足现今互联网产品快速迭代的需求,为了保障良好的用户体验和业务效果,亟需更高效、更智能化的系统运维技术。
人工智能是撬动IT系统智能化的支点。随着大数据时代的到来,在海量数据场景下,利用大数据和人工智能等技术赋能现代化IT运维管理是当前运维领域的研究热点。2016年Gartner正式提出了智能运维(Artificial Intelligence for IT Operations,AIOps)的概念,即利用人工智能技术赋能IT运维,旨在利用AI算法分析海量运维数据,自动、准确地发现和定位问题,提高运维效率。当大数据、人工智能等技术赋能传统行业、驱动变革时,运维结合AI技术则把IT行业中原来完全依靠人工经验、重复枯燥的工作,推向了自动化、智能化的运维,引领运维的下一步发展方向,极大减轻了运维和研发人员的负担。运维的技术体系伴随着IT系统的快速发展而愈加完善,从最开始的纯人工运维到脚本和开源工具的使用,再到平台建设,运维也紧跟时代的步伐,逐渐向智能化方向发展。在海量数据场景下,AIOps开始成为下一代运维技术发展的热点。
自动化、智能化的KPI(Key Performance Indicator,关键性能指标)异常检测工作是智能运维的首要和关键环节。KPI可以直观地反应系统的实时状态,因此,为保证系统的可用性、可靠性和稳定性,及时发现故障、解决故障,为用户提供更好的服务体验,运维系统收集和监测各类KPI。KPI可分为两种:一种是业务级KPI(Business-related KPI),比如页面访问量、APP连接错误数量等,此类KPI可以反应系统规模、质量等;另一种是机器级KPI(Machine-level KPI),包括CPU/内存使用率、网卡吞吐率等,此类KPI可以反应系统硬件(服务器、路由器等)的健康状态。
IT系统中的KPI异常检测工作是当前智能运维领域的研究热点,已有方法取得了一定的效果,但依然还有很多工作值得深入。现有KPI异常检测工作面临以下挑战:
1.大规模IT系统需要对海量KPI进行监控,运维人员亟需更加自动化、智能化的异常检测方法以迅速、准确地发现问题,进而进行故障的移除和定位;
2.实际环境中产生的KPI比较复杂,除故障导致的异常点外,还有缺失点、噪声点等,增加了对KPI建模的难度;
3.在KPI中,异常值的分布仅占整体数据的很小部分,这造成了KPI的正负样本不均衡。此外,对于海量KPI,人工标注成本过高。
无监督方法可以很好地处理KPI缺乏标签且正负样本不均衡的问题。目前,针对KPI的无监督异常检测方法在工业界主要使用Liu等人提出的iForest(Liu FT,Ting K M,Zhou Z H.Isolation forest[C]//2008Eighth IEEE International Conference onData Mining.IEEE,2008:413-422.译为:孤立森林算法)。该算法利用集成学习的方法构造“树”,通过计算各节点到根节点的距离进行异常点的判断,距离根节点越近,异常值越大,即是异常点的可能性也最大。iForest可以实现线性时间复杂度,但需要人工预先设置异常点比例。
现有的无监督KPI异常检测的研究点主要集中在深度生成模型的研究与应用上,其中的典型代表包括Xu等人提出的基于变分自编码器(Variational Autoencoder,VAE)的Donut算法(Xu H,Chen W,Zhao N,et al.Unsupervised Anomaly Detection viaVariational Auto-encoder for Seasonal KPIs in Web Applications[C]//Proceedings of the 2018World Wide Web Conference.2018:187-196.译为:基于变分自编码器适用于web应用的无监督异常检测)及其改进版Bagel算法(Li Z,Chen W,PeiD.Robust and Unsupervised KPI Anomaly Detection Based on ConditionalVariational Autoencoder[C]//2018IEEE 37th International Performance Computingand Communications Conference(IPCCC).IEEE,2018:1-9.译为:基于条件变分自编码器的鲁棒性无监督异常检测算法)。Bagel算法在Donut算法的基础上利用条件变分自编码器(Conditional Variational Autoencoder,CVAE)将时间信息作为条件,对原始数据进行重构。二者取得了一定的成果,但以上两种方法仅在周期型KPI数据上表现良好。
综上所述,现有无监督KPI异常检测方法主要存在以下问题:
1.KPI本质上是时间序列数据,时间信息是其本质属性,但现有方法将KPI数据当作非序列数据(non-sequential data)进行处理,导致检测准确率不理想;
2.需要人工设置异常检测的阈值,这与人工异常检测方法在本质上存在同样的问题:阈值设置过高则漏报率高,阈值设置过低则误报率高。
发明内容
本发明要解决的技术问题是提供一种基于序列化自编码器的无监督KPI异常检测方法。首先,该方法为KPI提供一种序列化的异常检测方法,通过对现有针对时间序列异常检测模型进行改进,将KPI作为序列数据进行训练和检测,可以实现较高的准确性和鲁棒性;其次,该方法在保证准确性的前提下,支持运维人员设置有效检测时间段,使运维人员可以更加灵活地按需设置有效检测时段,一定程度上减少系统告警数量,进而减缓告警风暴的发生;最后,该方法在数据预处理阶段利用线性插值(Linear Interpolation)方法对缺失点进行自动填充,在检测阶段之前利用极值理论(Extreme Value Theory,EVT)实现自动阈值选择功能,避免人工设置阈值带来的误报率/漏报率权衡的问题。
为解决上述技术问题,本发明的技术方案是:在利用自编码器重构数据的基础上,利用集成学习的方法,结合循环神经网络(Recurrent Neural Network,RNN)和残差网络(Residual Networks,ResNet)的思想,通过构造不同结构的序列化自编码器,对原始数据进行重构,在保留前序节点信息的同时保证自编码器结构的随机性,降低模型过拟合的风险,提高KPI异常检测的准确性和鲁棒性。在数据预处理阶段,由于缺失点是否恰当处理将直接影响模型的检测效果,本发明对原始KPI序列中的缺失点采用线性插值方法进行填充,线性插值填充可以避免缺失点直接补零或取中值等方法对数据整体分布的影响,且执行速度不影响系统整体性能。利用极值定理实现自动阈值的选择,可在检测阶段降低漏报率和误报率,提高检测结果的准确性。最后本发明允许在有效窗口内进行异常值的检测,进而在保证系统检测准确性的同时,有效降低告警数量。
本发明包括以下具体步骤:
第一步,构建基于序列化自编码器的无监督KPI异常检测系统(简称异常检测系统)。异常检测系统由历史KPI序列数据库、在线KPI序列数据库、输入模块、数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块、输出模块和显示模块组成。
历史KPI序列数据库与输入模块相连,该数据库存储历史KPI序列,用于训练模型。历史KPI序列的每一条由三元组(Time,Value,Label)表示,其中:Time=(t1,…,ti,…,tT)表示时间向量,按时间升序排列;Value=V=(v1,…,vi,…,vT)表示KPI值向量,vi表示第i个时刻历史KPI序列的值,若vi=NaN,即空值,则表示该点为缺失点,T为历史KPI序列长度;Label=(l1,…,li…,lT)表示标签向量。以一条KPI中的第i条记录为例,1≤i≤T,(ti,vi,li)表示在ti时刻的KPI值为vi,对应的标签为li,li取值为0或者1,0表示正常,1表示异常。标签的值由运维工程师进行标注得到,在无监督训练过程中并未使用,标签的值仅在衡量异常检测系统检测效果时使用。
在线KPI序列数据库与输入模块相连,该数据库用于存储在线KPI数据,由二元组(Time,Value)表示,其中Time向量和Value向量与历史KPI序列的含义相同。
输入模块与历史KPI序列数据库、在线KPI序列数据库和数据预处理模块相连,训练阶段输入模块从历史KPI序列数据库读取历史KPI序列,从中提取历史KPI值向量,将历史KPI值向量发送给数据预处理模块;检测阶段输入模块从在线KPI序列数据库读取在线KPI序列,从中提取在线KPI值向量,将在线KPI值向量发送给数据预处理模块。
数据预处理模块与输入模块、离线训练模块和在线检测模块相连,数据预处理模块从输入模块接收KPI值向量(包括历史KPI值向量和在线KPI值向量),首先采用线性插值方法对KPI值向量中的缺失点进行填充,然后对填充后的KPI值向量进行标准化处理,将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块。数据预处理模块包含缺失点线性插值填充模块和KPI值向量标准化模块。
缺失点线性插值填充模块从输入模块接收KPI值向量(包括历史KPI值向量和在线KPI值向量),处理KPI值向量中的缺失点,采用线性插值方法对KPI值向量中的缺失点进行填充,形成完整的KPI值向量,即填充后的KPI值向量,将填充后的KPI值向量发送给KPI值向量标准化模块。
KPI值向量标准化模块从缺失点线性插值填充模块接收填充后的KPI值向量,对填充后的KPI值向量进行标准化计算,获得标准化后的KPI值向量(包括标准化后的历史KPI值向量和标准化后的在线KPI值向量),并将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块。
离线训练模块(即基于序列化自编码器的KPI异常检测模型训练模块)与数据预处理模块、自动阈值选择模块和在线检测模块相连。离线训练模块从数据预处理模块接收标准化后的历史KPI值向量,将标准化后的历史KPI值向量作为输入对异常检测模型进行训练,得到异常分值和训练好的模型,将异常分值发送到自动阈值选择模块,同时将训练好的模型发送给在线检测模块。
自动阈值选择模块与离线训练模块和在线检测模块相连,采用极值理论进行计算并得到阈值,将阈值发送给在线检测模块。
有效检测窗口设置模块与在线检测模块相连,有效检测窗口设置模块接收运维人员设置的有效检测窗口值,将有效检测窗口值发送给在线检测模块。
在线检测模块与数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块和输出模块相连。在线检测模块从数据预处理模块接收标准化后的在线KPI值向量,从离线训练模块接收训练好的模型,从自动阈值选择模块接收阈值,从有效检测窗口设置模块接收有效窗口值,根据这些输入对在线KPI序列进行异常检测并得到检测结果,将检测结果发送到输出模块。
输出模块与在线检测模块相连,从在线检测模块接收检测结果,将检测结果发送到显示模块。
显示模块与输出模块相连,动态显示检测结果,若有异常结果则发送告警信息,由运维人员进行处理。
第二步:输入模块访问历史KPI序列数据库,从读取到的历史KPI序列提取KPI值向量V,将V发送到数据预处理模块。
第三步:数据预处理模块采用缺失点线性插值填充和标准化处理方法对KPI值向量C进行预处理,方法是:
3.1缺失点线性插值填充模块采用线性插值方法对C中的缺失点按公式一进行填充,将填充后的KPI值向量V′发送给KPI值向量标准化模块。
V′=V.interpolate(method=′linear′) 公式一
interpolate()函数为pandas库(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.inter polate.html)提供的插值函数,参数method=′linear′表示使用线性方法进行插值计算。V′=(v′1,…,v′i,…,v′T),v′i是填充后的vi
3.2KPI值向量标准化模块对V′进行标准化操作,得到标准化后的KPI值向量Vnorm。标准化公式如下:
Figure BDA0003091875290000061
Figure BDA0003091875290000062
Figure BDA0003091875290000063
其中:μ代表V′的均值,σ代表V′的方差,向量Vnorm代表标准化后的KPI值向量。
3.3KPI值向量标准化模块将Vnorm发送给离线训练模块。
第四步:离线训练模块对Vnorm进行切分;然后构建基于序列化自编码器的KPI异常检测模型并对模型进行训练。方法为:
4.1离线训练模块从KPI值向量标准化模块接收Vnorm
4.2离线训练模块对Vnorm进行切分:令切分数为P,P为正整数,优选P=10,利用numpy库(https://numpy.org/)的array_split()函数(https://numpy.org/doc/stable/reference/generated/numpy.array_split.html)对Vnorm进行不均等划分,得到切分后的KPI值向量Vpart
Figure BDA0003091875290000071
Figure BDA0003091875290000072
为例,
Figure BDA0003091875290000073
为第p个切分向量,1≤p≤P,
Figure BDA0003091875290000074
表示
Figure BDA0003091875290000075
中的第r个值,
Figure BDA0003091875290000076
表示
Figure BDA0003091875290000077
中的最后一个值,R为采用array_split()函数对Vnorm切分后的
Figure BDA0003091875290000078
中的值的个数。array_split()函数的切分规则是:对于长度为T的Vnorm,前T%P(%是取模操作)个组的大小是
Figure BDA0003091875290000079
剩下组的大小是
Figure BDA00030918752900000710
其中
Figure BDA00030918752900000711
表示对T/P下取整。
4.3离线训练模块采用基于随机跨步连接的RNN(Random Step Connection RNN,RSCR)方法构建由N个不同结构的序列化自编码器组成的无监督KPI异常检测模型;再对序列化自编码器组成的无监督KPI异常检测模型进行离线训练,其中N个序列化自编码器均接收Vpart作为输入,N为正整数,优选N=20。具体方法是:
4.3.1构建基于序列化自编码器的无监督KPI异常检测模型,方法是:
4.3.1.1构建N个序列化编码器,方法是:
4.3.1.1.1令变量j=0;
4.3.1.1.2如果j=0,构建第一个编码器并得到第一个编码器的输出第一元组,方法是:利用tf.nn.dynamic_rnn函数(https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/dynamic_rnn,tf.nn.dynamic_rnn函数是tensorflow封装的用来实现递归神经网络(RNN)的函数)构造一个隐藏层节点个数为h的LSTM(Long Short-Term Memory,长短时记忆网络),h=16,得到第一个编码器;第一个编码器以
Figure BDA00030918752900000712
作为输入,输出第一元组(E1 p,Z1 p),并保存,其中
Figure BDA00030918752900000713
表示第一神经元输出状态向量,
Figure BDA00030918752900000714
为E1 p中第r个值,
Figure BDA00030918752900000715
代表第一隐藏层状态,
Figure BDA00030918752900000716
为Z1 p中第r个值;转4.3.1.1.6,如果j≠0,转4.3.1.1.3;
4.3.1.1.3如果j=1,构建第二个编码器并得到第二个编码器的输出第二元组,方法是利用tf.nn.dynamic_rnn函数构造一个隐藏节点个数为h个的Basic LSTM
(https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/rnn_cell/BasicLSTM Cell?hl=ko,遗忘偏置为1的LSTM,实现方法基于OED(Outlier EnsemblesDetection)方法:参见https://github.com/tungk/OED),h=16,得到第二个编码器;第二个编码器以
Figure BDA0003091875290000081
作为输入:输出第二元组(E2 p,Z2 p),并保存,其中
Figure BDA0003091875290000082
表示第二神经元输出状态向量,
Figure BDA0003091875290000083
为E2 p中第r个值,
Figure BDA0003091875290000084
代表第二隐藏层状态,
Figure BDA0003091875290000085
为Z2 p中第r个值,转4.3.1.1.6;如果j≠1且j≠0转4.3.1.1.4;
4.3.1.1.4如果1<j<N,转4.3.1.1.5;如果j≥N,转4.3.1.1.7
4.3.1.1.5,构建第3到第N个编码器并得到第3到第N个编码器的输出,方法是:
4.3.1.1.5.1令变量q=3;
4.3.1.1.5.2如果q≤N,转4.3.1.1.5.3;否则转4.3.1.1.6;
4.3.1.1.5.3构建第q个编码器并以
Figure BDA0003091875290000086
作为输入:利用tf.nn.dynamic_rnn函数构造一个基于RSCR的LSTM(简称RSCR-LSTM),隐藏节点个数h=16。得到第q个编码器;第q个编码器以
Figure BDA0003091875290000087
作为输入:输出第q元组(Eq p,Zq p),并保存,其中
Figure BDA0003091875290000088
表示第q神经元输出状态向量,
Figure BDA0003091875290000089
为Eq p中第r个值,
Figure BDA00030918752900000810
代表第q隐藏层状态,
Figure BDA00030918752900000811
为Zq p中第r个值。此处实现也基于OED方法,但与OED方法不同的是隐藏层状态计算方法:
Figure BDA00030918752900000812
由三个元素决定:当前时刻输入
Figure BDA00030918752900000813
直接前序节点隐藏状态值
Figure BDA00030918752900000814
L步前的节点隐藏状态值
Figure BDA00030918752900000815
L表示跨步步长,取1到N之间的随机值,得到
Figure BDA00030918752900000816
为:
Figure BDA00030918752900000817
其中M为随机数,M∈{0,1},0表示无连接,1表示有连接,tanh(·)为一种神经网络激活函数(https://www.tensorflow.org/api_docs/python/tf/math/tanh),sigmoid(·)为另一种神经网络激活函数(https://www.tensorflow.org/api_docs/python/tf/math/sigmoid)。
4.3.1.1.5.4令q=q+1,转4.3.1.1.5.2;
4.3.1.1.6令变量j=j+1,转4.3.1.1.2;
4.3.1.1.7输出N个元组{(E1 p,Z1 p),(E2 p,Z2 p),…,(Eq p,Zq p),…,(EN p,ZN p)}给共享层,(E1 p,Z1 p)为第一元组,其中
Figure BDA0003091875290000091
表示第一神经元输出状态向量,
Figure BDA0003091875290000092
为E1 p中第r个值,
Figure BDA0003091875290000093
代表第一隐藏层状态,
Figure BDA0003091875290000094
为Z1 p中第r个值;(E2 p,Z2 p)为第二元组,其中
Figure BDA0003091875290000095
Figure BDA0003091875290000096
表示第二神经元输出状态向量,
Figure BDA0003091875290000097
为E2 p中第r个值,
Figure BDA0003091875290000098
代表第二隐藏层状态,
Figure BDA0003091875290000099
为Z2 p中第r个值;(Eq p,Zq p)为第q元组,
Figure BDA00030918752900000910
表示第q神经元输出状态向量,
Figure BDA00030918752900000911
为Eq p中第r个值,
Figure BDA00030918752900000912
Figure BDA00030918752900000913
代表第q隐藏层状态,
Figure BDA00030918752900000914
为Zq p中第r个值;(EN p,ZN p)为第N元组,
Figure BDA00030918752900000915
表示第N神经元输出状态向量,
Figure BDA00030918752900000916
为EN p中第r个值,
Figure BDA00030918752900000917
代表第N隐藏层状态,
Figure BDA00030918752900000918
为ZN p中第r个值;
转4.3.1.2;
4.3.1.2构建共享层,方法是:
4.3.1.2.1共享层从N个编码器接收N个元组,即{(E1 p,Z1 p),(E2 p,Z2 p),…,(Eq p,Zq p),…,(EN p,ZN p)}。
4.3.1.2.2将权重矩阵W赋初值为0,矩阵大小为16×16;
4.3.1.2.3将N个编码器最后一个隐藏节点的状态形成向量
Figure BDA00030918752900000919
Figure BDA00030918752900000920
将Zlast及最后一个节点隐藏层对应的权重
Figure BDA00030918752900000921
Figure BDA00030918752900000922
串联得到共享层
Figure BDA00030918752900000923
Figure BDA0003091875290000101
其中concatenate(Zlast·Wlast)为numpy库的串联函数(https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html),
Figure BDA0003091875290000102
Figure BDA0003091875290000103
表示将
Figure BDA0003091875290000104
Figure BDA0003091875290000105
相乘。
4.3.1.3构建N个解码器,将
Figure BDA0003091875290000106
作为N个解码器的输入,方法是:
4.3.1.3.1令变量k=0;
4.3.1.3.2如果k=0,构造第一个解码器:利用tf.contrib.seq2seq.BasicDecoder函数(https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/contrib/seq2seq/pyth on/ops/basic_decoder.py)构造一个隐藏节点个数为h′个的LSTM,此处h′=h×N,输出重构向量
Figure BDA0003091875290000107
转4.3.1.3.6,如果k≠0,转4.3.1.3.3;
4.3.1.3.3如果k=1,构建第二个解码器,利用tf.contrib.seq2seq.BasicDecoder函数构建一个隐藏节点个数为h′的LSTM,此处h′=h×N,输出重构向量
Figure BDA0003091875290000108
转4.3.1.3.6,如果k≠0且k≠1,转4.3.1.3.4;
4.3.1.3.4如果1<k<N,转4.3.1.3.5;如果k≥N,转4.3.1.3.7;
4.3.1.3.5构造第3到第N个解码器,方法是:
4.3.1.3.5.1令变量g=3;
4.3.1.3.5.2如果g≤N,转4.3.1.3.5.3;否则转4.3.1.3.6;
4.3.1.3.5.3构建第g个解码器:利用tf.contrib.seq2seq.BasicDecoder函数构建隐藏节点个数为h′的RSCR-RNN,h′=h×N,输出重构向量
Figure BDA0003091875290000109
Figure BDA00030918752900001010
4.3.1.3.5.4令g=g+1,转4.3.1.3.5.2;
4.3.1.3.6令变量k=k+1,转4.3.1.3.2;
4.3.1.3.7输出N个重构向量
Figure BDA00030918752900001011
转4.3.1.3.8;
4.3.1.3.8定义损失函数和优化函数,方法为:
4.3.1.3.8.1定义损失函数loss:
Figure BDA0003091875290000111
其中:inputr表示输入向量的第r个值;outputr表示输出向量的第r个值;l1_regularizer(Zshare)表示对Zshare进行L1正则化的函数(https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/contrib/layers/python/layers/regularizers.py)。
4.3.1.3.8.2采用Adam(https://www.tensorflow.org/swift/api_docs/Classes/Adam)作为模型训练的优化函数。
至此,基于序列化自编码器的KPI异常检测模型构建完毕,转4.3.2。
4.3.2对基于序列化自编码器的KPI异常检测模型进行离线训练,方法是:
4.3.2.1令变量p=1;
4.3.2.2将
Figure BDA0003091875290000112
输入至基于序列化自编码器的KPI异常检测模型;
4.3.2.3创建tensorflow的会话(session,简称sess)(创建会话方法:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/client/session.py);
4.3.2.2.1令变量iter=0,令迭代次数ITER=50;
4.3.2.2.2利用sess.run()方法(参见https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/client/session.py)采用输入数据
Figure BDA0003091875290000113
进行训练;
4.3.2.2.3如果iter<ITER,令iter=iter+1,转4.3.2.2.2,否则训练完成,得到模型对
Figure BDA0003091875290000114
的重构向量
Figure BDA0003091875290000115
记为
Figure BDA0003091875290000116
转4.3.2.3;
4.3.2.3计算异常分值,方法是:
4.3.2.3.1令变量b=0;
4.3.2.3.2根据
Figure BDA0003091875290000117
Figure BDA0003091875290000118
计算N个序列化自编码器中第b个自编码器对第p个切分向量的重构误差
Figure BDA0003091875290000119
Figure BDA0003091875290000121
4.3.2.3.3如果b<N,令b=b+1,转4.3.2.3.2;否则输出第p个切分向量的N个重构误差:
Figure BDA0003091875290000122
0≤b≤N-1,转4.3.2.3.4;
4.3.2.3.4取Errorp的中位数作为最终异常分值
Figure BDA0003091875290000123
Figure BDA0003091875290000124
Figure BDA0003091875290000125
表示取
Figure BDA0003091875290000126
中的中位数。
4.3.2.3.5如果p≤P,令变量p=p+1,转4.3.2.2;否则得到最终异常分值向量Score,
Figure BDA0003091875290000127
至此,模型训练结束,得到训练后的基于序列化自编码器的无监督KPI异常检测模型(简称异常检测模型),转4.4;
4.4离线训练模块将Score发送给自动阈值选择模块,将异常检测模型发送给在线检测模块。
第五步:自动阈值选择模块根据Score计算阈值,方法是:
5.1自动阈值选择模块从离线训练模块接收Score;
5.2自动阈值选择模块采用EVT方法(EVT方法见文献Siffer A,Fouque P A,Termier A,et al.Anomaly detection in streams with extreme value theory[C]//Proceedings of the 23rd ACM SIGKDD International Conference on KnowledgeDiscovery and Data Mining.2017:极值理论流数据异常检测中的应用,第4页算法1)分析Score分布,得到阈值Threshold。
5.3自动阈值选择模块将阈值Threshold发送给在线检测模块;
第六步:有效检测窗口设置模块接收运维人员设置的模块检测有效窗口值w,w为正整数且1≤w≤10,优选取值1、5或10,将w发送给在线检测模块。
第七步:输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合,对在线KPI序列进行检测:
7.1输入模块读取在线KPI序列数据库,提取在线KPI值向量Vonline,用A表示Vonline长度,将Vonline发送到数据预处理模块。
7.2数据预处理模块采用第三步所述的缺失点线性插值填充和标准化处理方法对Vonline进行预处理,得到标准化后的在线KPI值向量Vonline_norm,记
Figure BDA0003091875290000131
1≤a≤A。
7.3在线检测模块利用异常检测模型,利用第五步得到的阈值Threshold、第六步设置的有效窗口值w,对Vonline_norm进行检测,方法如下:
7.3.1在线检测模块将Vonline_norm输入至异常检测模型,得到N个重构的KPI值向量,第x个重构KPI值向量记为
Figure BDA0003091875290000132
Figure BDA0003091875290000133
1≤x≤N,
Figure BDA0003091875290000134
Figure BDA0003091875290000135
中第a个值。
7.3.2在线检查模块分别计算N个序列化自编码器的重构误差,方法是:
7.3.2.1令x=1;
7.3.2.2计算并保存第x个自编码器的KPI值向量的重构误差向量
Figure BDA0003091875290000136
方法是:
Figure BDA0003091875290000137
7.3.2.3令x=x+1,如果x≤N,转7.3.1.2,否则计算结束,输出N个自编码器的重构误差向量Errorrestore
Figure BDA0003091875290000138
7.3.3根据Errorrestore计算异常检测模型的异常分值,方法是:
7.3.3.1令a=1;
7.3.3.2读取并保存N个重构误差,方法是:
7.3.3.2.1令u=1;
7.3.3.2.2从Errorrestore读取
Figure BDA0003091875290000139
并保存;
7.3.3.2.3令u=u+1,如果u≤N,转7.3.3.2.2,否则输出
Figure BDA00030918752900001310
Figure BDA00030918752900001311
转7.3.3.2.4;
7.3.3.2.4取
Figure BDA00030918752900001312
的中位数作为第a个KPI值的异常分值,并保存,方法是:
Figure BDA0003091875290000141
median()为numpy的中位数计算函数(https://numpy.org/doc/stable/reference/generated/numpy.median.html)。
7.3.3.3令a=a+1,如果a≤A,转7.3.2.2;否则输出异常检测模型的异常分值SCoreonline
Figure BDA0003091875290000142
转7.3.4;
7.3.4将阈值Threshold与SCoreonline进行比较,方法是:
7.3.4.1令变量a=1;
7.3.4.2判断第a个KPI值是否异常,方法是:
如果
Figure BDA0003091875290000143
令检测结果ya=0,表示正常,否则令ya=1,表示异常;保存ya,转7.3.4.3。
7.3.4.3令a=a+1,如果a≤A,转7.3.3.2;否则比较完毕,输出检测结果向量Y,Y=(y1,…,ya,…,yA)。
7.3.5根据窗口值w,向在线检测模块输入检测结果向量Y,在线检测模块计算窗口内的异常值向量
Figure BDA0003091875290000144
其中
Figure BDA0003091875290000145
方法为:
7.3.5.1令d=1;
7.3.5.2计算
Figure BDA0003091875290000146
表示在窗口范围内对向量值yd、yd+1、…、yd+w-1进行“或”计算,如果
Figure BDA0003091875290000147
表示异常窗口,如果
Figure BDA0003091875290000148
表示正常窗口。
7.3.5.3若d≤m,令d=d+1,转7.3.5.2;若d>m,说明计算完毕,得到最终的检测结果Yw
Figure BDA0003091875290000149
转7.3.6;
7.3.6将Yw发送给输出模块,转第八步。
第八步:输出模块从在线检测模块接收检测结果Yw,将检测结果发送到显示模块。
第九步:显示模块显示检测结果Yw,若Yw中有“异常”结果(即有
Figure BDA00030918752900001410
)则显示告警信息,提醒运维人员处理。
采用本发明可以达到以下技术效果:
1.本发明第一步设计了能够对不同分布特征的KPI序列进行准确检测的异常检测系统,第四步采用随机跨步连接方法构建了基于序列化自编码器的无监督KPI异常检测模型,将不同结构的序列化自编码器对历史KPI序列进行训练,能够有效提高KPI异常检测的准确率。
2.本发明第四步构建基于序列化自编码器的KPI异常检测模型,并对模型进行训练,通过计算重构误差进行异常值的判断,可解释性强,同时第五步提供了自动阈值选择功能,有效缓解了固定阈值方法带来的误报率或漏报率较高的问题。
3.本发明为运维人员提供了有效检测窗口值,运维人员通过有效检测窗口值对应的有效检测窗口可以根据需要灵活设置有效检测时间,从而降低系统告警数量,有效减缓告警风暴的产生。
附图说明
图1是本发明第一步构建的基于序列化自编码器的无监督KPI异常检测系统逻辑结构图。
图2是本发明总体流程图。
图3是本发明第四步离线训练模块对Vnorm进行切分并构建基于序列化自编码器的KPI异常检测模型并对模型进行训练的流程图。
图4是本发明第七步:输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合对在线KPI序列进行检测的流程图。
具体实施方式:
图2是本发明总体流程图。如图2所示,本发明包括以下步骤:
第一步,构建基于序列化自编码器的无监督KPI异常检测系统(简称异常检测系统)。异常检测系统如图1所示,由历史KPI序列数据库、在线KPI序列数据库、输入模块、数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块、输出模块和显示模块组成。
历史KPI序列数据库与输入模块相连,该数据库存储历史KPI序列,用于训练模型。历史KPI序列的每一条由三元组(Time,Value,Label)表示,其中:Time=(t1,…,ti,…,tT)表示时间向量,按时间升序排列;Value=V=(v1,…,vi,…,vT)表示KPI值向量,vi表示第i个时刻历史KPI序列的值,若vi=NaN,即空值,则表示该点为缺失点,T为历史KPI序列长度;Label=(l1,…,li…,lT)表示标签向量。以一条KPI中的第i条记录为例,1≤i≤T,(ti,vi,li)表示在ti时刻的KPI值为vi,对应的标签为li,li取值为0或者1,0表示正常,1表示异常。标签的值由运维工程师进行标注得到,在无监督训练过程中并未使用,标签的值仅在衡量异常检测系统检测效果时使用。
在线KPI序列数据库与输入模块相连,该数据库用于存储在线KPI数据,由二元组(Time,Value)表示,其中Time向量和Value向量与历史KPI序列的含义相同。
输入模块与历史KPI序列数据库、在线KPI序列数据库和数据预处理模块相连,训练阶段输入模块从历史KPI序列数据库读取历史KPI序列,从中提取历史KPI值向量,将历史KPI值向量发送给数据预处理模块;检测阶段输入模块从在线KPI序列数据库读取在线KPI序列,从中提取在线KPI值向量,将在线KPI值向量发送给数据预处理模块。
数据预处理模块与输入模块、离线训练模块和在线检测模块相连,数据预处理模块从输入模块接收KPI值向量(包括历史KPI值向量和在线KPI值向量),首先采用线性插值方法对KPI值向量中的缺失点进行填充,然后对填充后的KPI值向量进行标准化处理,将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块。数据预处理模块包含缺失点线性插值填充模块和KPI值向量标准化模块。
缺失点线性插值填充模块从输入模块接收KPI值向量(包括历史KPI值向量和在线KPI值向量),处理KPI值向量中的缺失点,采用线性插值方法对KPI值向量中的缺失点进行填充,形成完整的KPI值向量,即填充后的KPI值向量,将填充后的KPI值向量发送给KPI值向量标准化模块。
KPI值向量标准化模块从缺失点线性插值填充模块接收填充后的KPI值向量,对填充后的KPI值向量进行标准化计算,获得标准化后的KPI值向量(包括标准化后的历史KPI值向量和标准化后的在线KPI值向量),并将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块。
离线训练模块(即基于序列化自编码器的KPI异常检测模型训练模块)与数据预处理模块、自动阈值选择模块和在线检测模块相连。离线训练模块从数据预处理模块接收标准化后的历史KPI值向量,将标准化后的历史KPI值向量作为输入对异常检测模型进行训练,得到异常分值和训练好的模型,将异常分值发送到自动阈值选择模块,同时将训练好的模型发送给在线检测模块。
自动阈值选择模块与离线训练模块和在线检测模块相连,采用极值理论进行计算并得到阈值,将阈值发送给在线检测模块。
有效检测窗口设置模块与在线检测模块相连,有效检测窗口设置模块接收运维人员设置的有效检测窗口值,将有效检测窗口值发送给在线检测模块。
在线检测模块与数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块和输出模块相连。在线检测模块从数据预处理模块接收标准化后的在线KPI值向量,从离线训练模块接收训练好的模型,从自动阈值选择模块接收阈值,从有效检测窗口设置模块接收有效窗口值,根据这些输入对在线KPI序列进行异常检测并得到检测结果,将检测结果发送到输出模块。
输出模块与在线检测模块相连,从在线检测模块接收检测结果,将检测结果发送到显示模块。
显示模块与输出模块相连,动态显示检测结果,若有异常结果则发送告警信息,由运维人员进行处理。
第二步:输入模块访问历史KPI序列数据库,从读取到的历史KPI序列提取KPI值向量V,将V发送到数据预处理模块。
第三步:数据预处理模块采用缺失点线性插值填充和标准化处理方法对KPI值向量V进行预处理,方法是:
3.1缺失点线性插值填充模块采用线性插值方法对V中的缺失点按公式一进行填充,将填充后的KPI值向量V′发送给KPI值向量标准化模块。
V′=V.interpolate(method=′linear′) 公式一
interpolate()函数为pandas库(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.inter polate.html)提供的插值函数,参数method=′linear′表示使用线性方法进行插值计算。V′=(v′1,…,v′i,…,v′T),v′i是填充后的vi
3.2KPI值向量标准化模块对V′进行标准化操作,得到标准化后的KPI值向量Vnorm。标准化公式如下:
Figure BDA0003091875290000181
Figure BDA0003091875290000182
Figure BDA0003091875290000183
其中:μ代表V′的均值,σ代表V′的方差,向量Vnorm代表标准化后的KPI值向量。
3.3KPI值向量标准化模块将Vnorm发送给离线训练模块。
第四步:如图3所示,离线训练模块对Vnorm进行切分;然后构建基于序列化自编码器的KPI异常检测模型并对模型进行训练。方法为:
4.1离线训练模块从KPI值向量标准化模块接收Vnorm
4.2离线训练模块对Vnorm进行切分:令切分数为P,P为正整数,优选P=10,利用numpy库的array_split()函数对Vnorm进行不均等划分,得到切分后的KPI值向量Vpart
Figure BDA0003091875290000184
Figure BDA0003091875290000185
为例,
Figure BDA0003091875290000186
为第p个切分向量,1≤p≤P,
Figure BDA0003091875290000187
表示
Figure BDA0003091875290000188
中的第r个值,
Figure BDA0003091875290000189
表示
Figure BDA00030918752900001810
中的最后一个值,R为采用array_split()函数对Vnorm切分后的
Figure BDA00030918752900001811
中的值的个数。array_split()函数的切分规则是:对于长度为T的Vnorm,前T%P(%是取模操作)个组的大小是
Figure BDA00030918752900001812
+1,剩下组的大小是
Figure BDA00030918752900001813
其中
Figure BDA00030918752900001814
表示对T/P下取整。
4.3离线训练模块采用基于随机跨步连接的RNN方法构建由N个不同结构的序列化自编码器组成的无监督KPI异常检测模型;再对序列化自编码器组成的无监督KPI异常检测模型进行离线训练,其中N个序列化自编码器均接收Vpart作为输入,N为正整数,优选N=20。具体方法是:
4.3.1构建基于序列化自编码器的无监督KPI异常检测模型,方法是:
4.3.1.1构建N个序列化编码器,方法是:
4.3.1.1.1令变量j=0;
4.3.1.1.2如果j=0,构建第一个编码器并得到第一个编码器的输出第一元组,方法是:利用tf.nn.dynamic_rnn函数构造一个隐藏层节点个数为h的LSTM(Long Short-TermMemory,长短时记忆网络),h=16,得到第一个编码器;第一个编码器以
Figure BDA0003091875290000191
作为输入,输出第一元组(E1 p,Z1 p),并保存,其中
Figure BDA0003091875290000192
Figure BDA0003091875290000193
表示第一神经元输出状态向量,
Figure BDA0003091875290000194
为E1 p中第r个值,
Figure BDA0003091875290000195
代表第一隐藏层状态,
Figure BDA0003091875290000196
为Z1 p中第r个值;转4.3.1.1.6,如果j≠0,转4.3.1.1.3;
4.3.1.1.3如果j=1,构建第二个编码器并得到第二个编码器的输出第二元组,方法是利用tf.nn.dynamic_rnn函数构造一个隐藏节点个数为h个的Basic LSTM(https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/rnn_cell/BasicLSTM Cell?hl=ko,遗忘偏置为1的LSTM,实现方法基于OED方法:h=16,得到第二个编码器;第二个编码器以
Figure BDA0003091875290000197
作为输入:输出第二元组(E2 p,Z2 p),并保存,其中
Figure BDA0003091875290000198
表示第二神经元输出状态向量,
Figure BDA0003091875290000199
为E2 p中第r个值,
Figure BDA00030918752900001910
代表第二隐藏层状态,
Figure BDA00030918752900001911
为Z2 p中第r个值,转4.3.1.1.6;如果j≠1且j≠0转4.3.1.1.4;
4.3.1.1.4如果1<j<N,转4.3.1.1.5;如果j≥N,转4.3.1.1.7;
4.3.1.1.5,构建第3到第N个编码器并得到第3到第N个编码器的输出,方法是:
4.3.1.1.5.1令变量q=3;
4.3.1.1.5.2如果q≤N,转4.3.1.1.5.3;否则转4.3.1.1.6;
4.3.1.1.5.3构建第q个编码器并以
Figure BDA0003091875290000201
作为输入:利用tf.nn.dynamic_rnn函数构造一个基于RSCR的LSTM(简称RSCR-LSTM),隐藏节点个数h=16。得到第q个编码器;第q个编码器以
Figure BDA0003091875290000202
作为输入:输出第q元组(Eq p,Zq p),并保存,其中
Figure BDA0003091875290000203
表示第q神经元输出状态向量,
Figure BDA0003091875290000204
为Eq p中第r个值,
Figure BDA0003091875290000205
代表第q隐藏层状态,
Figure BDA0003091875290000206
为Zq p中第r个值。此处实现也基于OED方法,但与OED方法不同的是隐藏层状态计算方法:
Figure BDA0003091875290000207
由三个元素决定:当前时刻输入
Figure BDA0003091875290000208
直接前序节点隐藏状态值
Figure BDA0003091875290000209
L步前的节点隐藏状态值
Figure BDA00030918752900002010
L表示跨步步长,取1到N之间的随机值,得到
Figure BDA00030918752900002011
为:
Figure BDA00030918752900002012
其中M为随机数,M∈{0,1},0表示无连接,1表示有连接,tanh(·)为一种神经网络激活函数,sigmoid(·)为另一种神经网络激活函数。
4.3.1.1.5.4令q=q+1,转4.3.1.1.5.2;
4.3.1.1.6令变量j=j+1,转4.3.1.1.2;
4.3.1.1.7输出N个元组{(E1 p,Z1 p),(E2 p,Z2 p),…,(Eq p,Zq p),…,(EN p,ZN p)}给共享层,(E1 p,Z1 p)为第一元组,其中
Figure BDA00030918752900002013
表示第一神经元输出状态向量,
Figure BDA00030918752900002014
为E1 p中第r个值,
Figure BDA00030918752900002015
代表第一隐藏层状态,
Figure BDA00030918752900002016
为Z1 p中第r个值;(E2 p,Z2 p)为第二元组,其中
Figure BDA00030918752900002017
Figure BDA00030918752900002018
表示第二神经元输出状态向量,
Figure BDA00030918752900002019
为E2 p中第r个值,
Figure BDA00030918752900002020
代表第二隐藏层状态,
Figure BDA00030918752900002021
为Z2 p中第r个值;(Eq p,Zq p)为第q元组,
Figure BDA00030918752900002022
表示第q神经元输出状态向量,
Figure BDA00030918752900002023
为Eq p中第r个值,
Figure BDA00030918752900002024
Figure BDA00030918752900002025
代表第q隐藏层状态,
Figure BDA00030918752900002026
为Xq p中第r个值;(EN p,ZN p)为第N元组,
Figure BDA00030918752900002027
表示第N神经元输出状态向量,
Figure BDA0003091875290000211
为EN p中第r个值,
Figure BDA0003091875290000212
代表第N隐藏层状态,
Figure BDA0003091875290000213
为ZN p中第r个值;
转4.3.1.2;
4.3.1.2构建共享层,方法是:
4.3.1.2.1共享层从N个编码器接收N个元组,即{(E1 p,Z1 p),(E2 p,Z2 p),…,(Eq p,Zq p),…,(EN p,ZN p)}。
4.3.1.2.2将权重矩阵W赋初值为0,矩阵大小为16×16;
4.3.1.2.3将N个编码器最后一个隐藏节点的状态形成向量
Figure BDA0003091875290000214
Figure BDA0003091875290000215
将Zlast及最后一个节点隐藏层对应的权重
Figure BDA0003091875290000216
Figure BDA0003091875290000217
串联得到共享层
Figure BDA0003091875290000218
Figure BDA0003091875290000219
其中concatenate(Zlast·Wlast)为numpy库的串联函数,
Figure BDA00030918752900002110
表示将
Figure BDA00030918752900002111
Figure BDA00030918752900002112
相乘。
4.3.1.3构建N个解码器,将
Figure BDA00030918752900002113
作为N个解码器的输入,方法是:
4.3.1.3.1令变量k=0;
4.3.1.3.2如果k=0,构造第一个解码器:利用tf.contrib.seq2seq.BasicDecoder函数构造一个隐藏节点个数为h′个的LSTM,此处h′=h×N,输出重构向量
Figure BDA00030918752900002114
转4.3.1.3.6,如果k≠0,转4.3.1.3.3;
4.3.1.3.3如果k=1,构建第二个解码器,利用tf.contrib.seq2seq.BasicDecoder函数构建一个隐藏节点个数为h′的LSTM,此处h′=h×N,输出重构向量
Figure BDA00030918752900002115
转4.3.1.3.6,如果k≠0且k≠1,转4.3.1.3.4;
4.3.1.3.4如果1<k<N,转4.3.1.3.5;如果k≥N,转4.3.1.3.7;
4.3.1.3.5构造第3到第N个解码器,方法是:
4.3.1.3.5.1令变量g=3;
4.3.1.3.5.2如果g≤N,转4.3.1.3.5.3;否则转4.3.1.3.6;
4.3.1.3.5.3构建第g个解码器:利用tf.contrib.seq2seq.BasicDecoder函数构建隐藏节点个数为h′的RSCR-RNN,h′=h×N,输出重构向量
Figure BDA0003091875290000221
Figure BDA0003091875290000222
4.3.1.3.5.4令g=g+1,转4.3.1.3.5.2;
4.3.1.3.6令变量k=k+1,转4.3.1.3.2;
4.3.1.3.7输出N个重构向量
Figure BDA0003091875290000223
转4.3.1.3.8;4.3.1.3.8定义损失函数和优化函数,方法为:
4.3.1.3.8.1定义损失函数loss:
Figure BDA0003091875290000224
其中:inputr表示输入向量的第r个值;outputr表示输出向量的第r个值;l1_regularizer(Zshare)表示对Zshare进行L1正则化的函数。
4.3.1.3.8.2采用Adam作为模型训练的优化函数。
至此,基于序列化自编码器的KPI异常检测模型构建完毕,转4.3.2。
4.3.2对基于序列化自编码器的KPI异常检测模型进行离线训练,方法是:
4.3.2.1令变量p=1;
4.3.2.2将
Figure BDA0003091875290000225
输入至基于序列化自编码器的KPI异常检测模型;
4.3.2.3创建tensorflow的会话(session,简称sess);
4.3.2.2.1令变量iter=0,令迭代次数ITER=50;
4.3.2.2.2利用sess.run()方采用输入数据
Figure BDA0003091875290000226
进行训练;
4.3.2.2.3如果iter<ITER,令iter=iter+1,转4.3.2.2.2,否则训练完成,得到模型对
Figure BDA0003091875290000227
的重构向量
Figure BDA0003091875290000228
记为
Figure BDA0003091875290000229
转4.3.2.3;
4.3.2.3计算异常分值,方法是:
4.3.2.3.1令变量b=0;
4.3.2.3.2根据
Figure BDA00030918752900002210
Figure BDA00030918752900002211
计算N个序列化自编码器中第b个自编码器对第p个切分向量的重构误差
Figure BDA0003091875290000231
Figure BDA0003091875290000232
4.3.2.3.3如果b<N,令b=b+1,转4.3.2.3.2;否则输出第p个切分向量的N个重构误差:
Figure BDA0003091875290000233
0≤b≤N-1,转4.3.2.3.4;
4.3.2.3.4取Errorp的中位数作为最终异常分值
Figure BDA0003091875290000234
Figure BDA0003091875290000235
Figure BDA0003091875290000236
表示取
Figure BDA0003091875290000237
中的中位数。
4.3.2.3.5如果p≤P,令变量p=p+1,转4.3.2.2;否则得到最终异常分值向量Score,
Figure BDA0003091875290000238
至此,模型训练结束,得到训练后的基于序列化自编码器的无监督KPI异常检测模型(简称异常检测模型),转4.4;
4.4离线训练模块将Score发送给自动阈值选择模块,将异常检测模型发送给在线检测模块。
第五步:自动阈值选择模块根据Score计算阈值,方法是:
5.1自动阈值选择模块从离线训练模块接收Score;
5.2自动阈值选择模块采用EVT方法分析Score分布,得到阈值Threshold。
5.3自动阈值选择模块将阈值Threshold发送给在线检测模块;
第六步:有效检测窗口设置模块接收运维人员设置的模块检测有效窗口值w,w为正整数且1≤w≤10,优选取值1、5或10,将w发送给在线检测模块。
第七步:如图4所示,输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合,对在线KPI序列进行检测:
7.1输入模块读取在线KPI序列数据库,提取在线KPI值向量Vonline,用A表示Vonline长度,将Vonline发送到数据预处理模块。
7.2数据预处理模块采用第三步所述的缺失点线性插值填充和标准化处理方法对Vonline进行预处理,得到标准化后的在线KPI值向量Vonline_norm,记
Figure BDA0003091875290000241
1≤a≤A。
7.3在线检测模块利用异常检测模型,利用第五步得到的阈值Threshold、第六步设置的有效窗口值w,对Vonline_norm进行检测,方法如下:
7.3.1在线检测模块将Vonline_norm输入至异常检测模型,得到N个重构的KPI值向量,第x个重构KPI值向量记为
Figure BDA0003091875290000242
Figure BDA0003091875290000243
1≤x≤N,
Figure BDA0003091875290000244
Figure BDA0003091875290000245
中第a个值。
7.3.2在线检查模块分别计算N个序列化自编码器的重构误差,方法是:
7.3.2.1令x=1;
7.3.2.2计算并保存第x个自编码器的KPI值向量的重构误差向量
Figure BDA0003091875290000246
方法是:
Figure BDA0003091875290000247
7.3.2.3令x=x+1,如果x≤N,转7.3.1.2,否则计算结束,输出N个自编码器的重构误差向量Errorrestore
Figure BDA0003091875290000248
7.3.3根据Errorrestore计算异常检测模型的异常分值,方法是:
7.3.3.1令a=1;
7.3.3.2读取并保存N个重构误差,方法是:
7.3.3.2.1令u=1;
7.3.3.2.2从Errorrestore读取
Figure BDA0003091875290000249
并保存;
7.3.3.2.3令u=u+1,如果u≤N,转7.3.3.2.2,否则输出
Figure BDA00030918752900002410
Figure BDA00030918752900002411
转7.3.3.2.4;
7.3.3.2.4取
Figure BDA00030918752900002412
的中位数作为第a个KPI值的异常分值,并保存,方法是:
Figure BDA00030918752900002413
median()为numpy的中位数计算函数。
7.3.3.3令a=a+1,如果a≤A,转7.3.2.2;否则输出异常检测模型的异常分值Scoreonline
Figure BDA0003091875290000251
转7.3.4;
7.3.4将阈值Threshold与Scoreonline进行比较,方法是:
7.3.4.1令变量a=1;
7.3.4.2判断第a个KPI值是否异常,方法是:
如果
Figure BDA0003091875290000252
令检测结果ya=0,表示正常,否则令ya=1,表示异常;保存ya,转7.3.4.3。
7.3.4.3令a=a+1,如果a≤A,转7.3.3.2;否则比较完毕,输出检测结果向量Y,Y=(y1,…,ya,…,yA)。
7.3.5根据窗口值w,向在线检测模块输入检测结果向量Y,在线检测模块计算窗口内的异常值向量
Figure BDA0003091875290000253
其中
Figure BDA0003091875290000254
方法为:
7.3.5.1令d=1;
7.3.5.2计算
Figure BDA0003091875290000255
表示在窗口范围内对向量值yd、yd+1、…、yd+w-1进行“或”计算,如果
Figure BDA0003091875290000256
表示异常窗口,如果
Figure BDA0003091875290000257
表示正常窗口。
7.3.5.3若d≤m,令d=d+1,转7.3.5.2;若d>m,说明计算完毕,得到最终的检测结果Yw
Figure BDA0003091875290000258
转7.3.6;
7.3.6将Yw发送给输出模块,转第八步。
第八步:输出模块从在线检测模块接收检测结果Yw,将检测结果发送到显示模块。
第九步:显示模块显示检测结果Yw,若Yw中有“异常”结果(即有
Figure BDA0003091875290000259
)则显示告警信息,提醒运维人员处理。

Claims (8)

1.一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于包括以下步骤:
第一步,构建基于序列化自编码器的无监督KPI异常检测系统,简称异常检测系统;异常检测系统由历史KPI序列数据库、在线KPI序列数据库、输入模块、数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块、输出模块和显示模块组成;
历史KPI序列数据库与输入模块相连,该数据库存储历史KPI序列,用于训练模型;历史KPI序列的每一条由三元组(Time,Value,Label)表示,其中:Time=(t1,...,ti,...,tT)表示时间向量,按时间升序排列;Value=V=(v1,...,vi,...,vT)表示KPI值向量,vi表示第i个时刻历史KPI序列的值,若vi=NaN,即空值,则表示该点为缺失点,T为历史KPI序列长度;Label=(l1,...,li...,lT)表示标签向量;第i条记录(ti,vi,li)表示在ti时刻的KPI值为vi,对应的标签为li,li取值为0或者1,0表示正常,1表示异常;1≤i≤T;
在线KPI序列数据库与输入模块相连,该数据库用于存储在线KPI数据,由二元组(Time,Value)表示,其中Time向量和Value向量与历史KPI序列的含义相同;
输入模块与历史KPI序列数据库、在线KPI序列数据库和数据预处理模块相连,训练阶段输入模块从历史KPI序列数据库读取历史KPI序列,从中提取历史KPI值向量,将历史KPI值向量发送给数据预处理模块;检测阶段输入模块从在线KPI序列数据库读取在线KPI序列,从中提取在线KPI值向量,将在线KPI值向量发送给数据预处理模块;
数据预处理模块与输入模块、离线训练模块和在线检测模块相连,数据预处理模块从输入模块历史KPI值向量和在线KPI值向量,采用线性插值方法对KPI值向量中的缺失点进行填充,并对填充后的KPI值向量进行标准化处理,将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块;数据预处理模块包含缺失点线性插值填充模块和KPI值向量标准化模块;
缺失点线性插值填充模块从输入模块接收历史KPI值向量和在线KPI值向量,处理KPI值向量中的缺失点,采用线性插值方法对KPI值向量中的缺失点进行填充,形成完整的KPI值向量,即填充后的KPI值向量,将填充后的KPI值向量发送给KPI值向量标准化模块;
KPI值向量标准化模块从缺失点线性插值填充模块接收填充后的KPI值向量,对填充后的KPI值向量进行标准化计算,获得标准化后的历史KPI值向量和标准化后的在线KPI值向量,将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块;
离线训练模块即基于序列化自编码器的KPI异常检测模型训练模块与数据预处理模块、自动阈值选择模块和在线检测模块相连;离线训练模块从数据预处理模块接收标准化后的历史KPI值向量,将标准化后的历史KPI值向量作为输入对异常检测模型进行训练,得到异常分值和训练好的模型,将异常分值发送到自动阈值选择模块,同时将训练好的模型发送给在线检测模块;
自动阈值选择模块与离线训练模块和在线检测模块相连,采用极值理论进行计算并得到阈值,将阈值发送给在线检测模块;
有效检测窗口设置模块与在线检测模块相连,有效检测窗口设置模块接收运维人员设置的有效检测窗口值,将有效检测窗口值发送给在线检测模块;
在线检测模块与数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块和输出模块相连;在线检测模块从数据预处理模块接收标准化后的在线KPI值向量,从离线训练模块接收训练好的模型,从自动阈值选择模块接收阈值,从有效检测窗口设置模块接收有效窗口值,根据这些输入对在线KPI序列进行异常检测并得到检测结果,将检测结果发送到输出模块;
输出模块与在线检测模块相连,从在线检测模块接收检测结果,将检测结果发送到显示模块;
显示模块与输出模块相连,动态显示检测结果,若有异常结果则发送告警信息,由运维人员进行处理;
第二步:输入模块访问历史KPI序列数据库,从读取到的历史KPI序列提取KPI值向量V,将V发送到数据预处理模块;
第三步:数据预处理模块采用缺失点线性插值填充和标准化处理方法对KPI值向量V进行预处理,方法是:
3.1缺失点线性插值填充模块采用线性插值方法对V中的缺失点进行填充,将填充后的KPI值向量V′发送给KPI值向量标准化模块;V′=(v′1,...,v′i,...,v′T),v′i是填充后的vi
3.2 KPI值向量标准化模块对V′进行标准化操作,得到标准化后的KPI值向量Vnorm
3.3 KPI值向量标准化模块将Vnorm发送给离线训练模块;
第四步:离线训练模块对Vnorm进行切分;然后构建基于序列化自编码器的KPI异常检测模型,并对模型进行训练;方法为:
4.1离线训练模块从KPI值向量标准化模块接收Vnorm
4.2离线训练模块对Vnorm进行切分,得到切分后的KPI值向量Vpart
Figure FDA0003091875280000031
Figure FDA0003091875280000032
为第p个切分向量,1≤p≤P,P为切分数,为正整数,
Figure FDA00030918752800000312
表示
Figure FDA0003091875280000033
中的第r个值,
Figure FDA00030918752800000313
表示
Figure FDA0003091875280000034
中的最后一个值,R为Vnorm切分后的
Figure FDA0003091875280000035
中的值的个数;
4.3离线训练模块采用基于随机跨步连接的RNN方法构建由N个不同结构的序列化自编码器组成的无监督KPI异常检测模型;再对序列化自编码器组成的无监督KPI异常检测模型进行离线训练,其中N个序列化自编码器均接收Vpart作为输入,N为正整数;具体方法是:
4.3.1离线训练模块构建基于序列化自编码器的无监督KPI异常检测模型,得到基于序列化自编码器的KPI异常检测模型;
4.3.2对基于序列化自编码器的KPI异常检测模型进行离线训练,得到异常分值向量Score,
Figure FDA0003091875280000036
和训练后的基于序列化自编码器的无监督KPI异常检测模型,简称异常检测模型;
Figure FDA0003091875280000037
为最终异常分值:
Figure FDA0003091875280000038
Figure FDA0003091875280000039
表示取
Figure FDA00030918752800000310
中的中位数;
Figure FDA00030918752800000311
为N个序列化自编码器中第b个自编码器对第p个切分向量
Figure FDA0003091875280000049
的重构误差;0≤b≤N-1;
4.4离线训练模块将Score发送给自动阈值选择模块,将异常检测模型发送给在线检测模块;
第五步:自动阈值选择模块根据Score计算阈值,方法是:
5.1自动阈值选择模块从离线训练模块接收Score;
5.2自动阈值选择模块采用EVT方法分析Score分布,得到阈值Threshold;
5.3自动阈值选择模块将阈值Threshold发送给在线检测模块;
第六步:有效检测窗口设置模块接收运维人员设置的模块检测有效窗口值w,w为正整数且1≤w≤10,将w发送给在线检测模块;
第七步:输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合,对在线KPI序列进行检测:
7.1输入模块读取在线KPI序列数据库,提取在线KPI值向量Vonline,用A表示Vonline长度,将Vonline发送到数据预处理模块;
7.2数据预处理模块采用第三步所述的缺失点线性插值填充和标准化处理方法对Vonline进行预处理,得到标准化后的在线KPI值向量Vonline_norm,记
Figure FDA0003091875280000041
7.3在线检测模块利用异常检测模型,利用第五步得到的阈值Threshold、第六步设置的有效窗口值w,对Vonline_norm进行检测,方法如下:
7.3.1在线检测模块将Vonline_norm输入至异常检测模型,得到N个重构的KPI值向量,第x个重构KPI值向量记为
Figure FDA0003091875280000042
Figure FDA0003091875280000043
Figure FDA0003091875280000044
Figure FDA0003091875280000045
Figure FDA0003091875280000046
中第a个值;
7.3.2在线检查模块分别计算N个序列化自编码器的重构误差,方法是:
7.3.2.1令x=1;
7.3.2.2计算并保存第x个自编码器的KPI值向量的重构误差向量
Figure FDA0003091875280000047
方法是:
Figure FDA0003091875280000048
7.3.2.3令x=x+1,如果x≤N,转7.3.1.2,否则计算结束,输出N个自编码器的重构误差向量Errorrestore
Figure FDA0003091875280000051
7.3.3根据Errorrestore计算异常检测模型的异常分值,方法是:
7.3.3.1令a=1;
7.3.3.2读取并保存N个重构误差,方法是:
7.3.3.2.1令u=1;
7.3.3.2.2从Errorrestore读取
Figure FDA0003091875280000052
并保存;
7.3.3.2.3令u=u+1,如果u≤N,转7.3.3.2.2,否则输出
Figure FDA0003091875280000053
Figure FDA0003091875280000054
转7.3.3.2.4;
7.3.3.2.4取
Figure FDA0003091875280000055
的中位数作为第a个KPI值的异常分值,并保存,方法是:
Figure FDA0003091875280000056
median()为numpy的中位数计算函数;
7.3.3.3令a=a+1,如果a≤A,转7.3.2.2;否则输出异常检测模型的异常分值Scoreonline
Figure FDA0003091875280000057
转7.3.4;
7.3.4将阈值Threshold与Scoreonline进行比较,方法是:
7.3.4.1令变量a=1;
7.3.4.2判断第a个KPI值是否异常,方法是:
如果
Figure FDA0003091875280000058
令检测结果ya=0,表示正常,否则令ya=1,表示异常;保存ya,转7.3.4.3;
7.3.4.3令a=a+1,如果a≤A,转7.3.3.2;否则比较完毕,输出检测结果向量Y,Y=(y1,…,ya,…,yA);
7.3.5根据窗口值w,向在线检测模块输入检测结果向量Y,在线检测模块计算窗口内的异常值向量
Figure FDA0003091875280000061
其中
Figure FDA00030918752800000610
方法为:
7.3.5.1令d=1;
7.3.5.2计算
Figure FDA0003091875280000062
表示在窗口范围内对向量值yd、yd+1、...、yd +w-1进行“或”计算,如果
Figure FDA0003091875280000063
表示异常窗口,如果
Figure FDA0003091875280000064
表示正常窗口;
7.3.5.3若d≤m,令d=d+1,转7.3.5.2;若d>m,说明计算完毕,得到最终的检测结果Yw
Figure FDA0003091875280000065
转7.3.6;
7.3.6将Yw发送给输出模块,转第八步;
第八步:输出模块从在线检测模块接收检测结果Yw,将检测结果发送到显示模块;
第九步:显示模块显示检测结果Yw,若Yw中有“异常”结果,即有
Figure FDA0003091875280000066
则显示告警信息,提醒运维人员处理。
2.如权利要求1所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于3.1步所述缺失点线性插值填充模块采用线性插值方法对V中的缺失点进行填充的方法是按公式一进行填充,得到填充后的KPI值向量V′:
V′=V.interpolate(method=′linear′) 公式一
interpolate()函数为pandas库提供的插值函数,参数method=′linear′表示使用线性方法进行插值计算;V′=(v′1,...,v′i,...,v′T)。
3.如权利要求1所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于3.2步所述KPI值向量标准化模块对V′进行标准化操作的方法是采用公式二进行标准化,得到标准化后的KPI值向量Vnorm
Figure FDA0003091875280000067
Figure FDA0003091875280000068
Figure FDA0003091875280000069
其中:μ代表V′的均值,σ代表V′的方差。
4.如权利要求1所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于4.2步所述离线训练模块对Vnorm进行切分的方法是:利用numpy库的array_split()函数对Vnorm进行不均等划分,得到切分后的KPI值向量Vpart
Figure FDA0003091875280000071
array_split()函数的切分规则是:对于长度为T的Vnorm,前T%P个组的大小是
Figure FDA0003091875280000072
剩下组的大小是
Figure FDA0003091875280000073
其中%是取模操作,
Figure FDA0003091875280000074
表示对T/P下取整。
5.如权利要求1所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于4.2步所述切分数P=10;4.3步所述N为20;第六步所述w取值1、5或10。
6.如权利要求1所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于4.3.1步所述离线训练模块构建基于序列化自编码器的无监督KPI异常检测模型的方法是:
4.3.1.1.2如果j=0,构建第一个编码器并得到第一个编码器的输出第一元组,方法是:利用tf.nn.dynamic_rnn函数构造一个隐藏层节点个数为h的LSTM,h=16,得到第一个编码器;第一个编码器以
Figure FDA0003091875280000075
作为输入,输出第一元组(E1 p,Z1 p),并保存,其中
Figure FDA0003091875280000076
表示第一神经元输出状态向量,
Figure FDA0003091875280000077
为E1 p中第r个值,
Figure FDA0003091875280000078
代表第一隐藏层状态,
Figure FDA0003091875280000079
为Z1 p中第r个值;转4.3.1.1.6,如果j≠0,转4.3.1.1.3;
4.3.1.1.3如果j=1,构建第二个编码器并得到第二个编码器的输出第二元组,方法是利用tf.nn.dynamic_rnn函数构造一个隐藏节点个数为h个的Basic LSTM,h=16,得到第二个编码器;第二个编码器以
Figure FDA00030918752800000710
作为输入:输出第二元组(E2 p,Z2 p),并保存,其中
Figure FDA00030918752800000711
表示第二神经元输出状态向量,
Figure FDA00030918752800000712
为E2 p中第r个值,
Figure FDA00030918752800000713
代表第二隐藏层状态,
Figure FDA00030918752800000714
为Z2 p中第r个值,转4.3.1.1.6;如果j≠1且j≠0转4.3.1.1.4;
4.3.1.1.4如果1<j<N,转4.3.1.1.5;如果j≥N,转4.3.1.1.7;
4.3.1.1.5,构建第3到第N个编码器并得到第3到第N个编码器的输出,方法是:
4.3.1.1.5.1令变量q=3;
4.3.1.1.5.2如果q≤N,转4.3.1.1.5.3;否则转4.3.1.1.6;
4.3.1.1.5.3构建第q个编码器并以
Figure FDA0003091875280000082
作为输入:利用tf.nn.dynamic_mn函数构造一个基于RSCR的LSTM,隐藏节点个数h=16,得到第q个编码器;第q个编码器以
Figure FDA0003091875280000081
作为输入:输出第q元组(Eq p,Zq p),并保存,其中
Figure FDA0003091875280000083
Figure FDA0003091875280000084
表示第q神经元输出状态向量,
Figure FDA0003091875280000085
为Eq p中第r个值,
Figure FDA0003091875280000086
代表第q隐藏层状态,
Figure FDA0003091875280000087
为Zq p中第r个值;
4.3.1.1.5.4令q=q+1,转4.3.1.1.5.2;
4.3.1.1.6令变量j=j+1,转4.3.1.1.2;
4.3.1.1.7输出N个元组{(E1 p,Z1 p),(E2 p,Z2 p),…,(Eq p,Zq p),…,(EN p,ZN p)}给共享层,(E1 p,Z1 p)为第一元组,其中
Figure FDA0003091875280000088
表示第一神经元输出状态向量,
Figure FDA0003091875280000089
为E1 p中第r个值,
Figure FDA00030918752800000810
代表第一隐藏层状态,
Figure FDA00030918752800000811
为Z1 p中第r个值;(E2 p,Z2 p)为第二元组,其中
Figure FDA00030918752800000812
Figure FDA00030918752800000813
表示第二神经元输出状态向量,
Figure FDA00030918752800000814
为E2 p中第r个值,
Figure FDA00030918752800000815
代表第二隐藏层状态,
Figure FDA00030918752800000816
为Z2 p中第r个值;(Eq p,Zq p)为第q元组,
Figure FDA00030918752800000817
表示第q神经元输出状态向量,
Figure FDA00030918752800000818
为Eq p中第r个值,
Figure FDA00030918752800000819
Figure FDA00030918752800000820
代表第q隐藏层状态,
Figure FDA00030918752800000821
为Zq p中第r个值;(EN p,ZN p)为第N元组,
Figure FDA00030918752800000822
表示第N神经元输出状态向量,
Figure FDA00030918752800000823
为EN p中第r个值,
Figure FDA00030918752800000824
代表第N隐藏层状态,
Figure FDA00030918752800000825
为ZN p中第r个值;
转4.3.1.2;
4.3.1.2构建共享层,方法是:
4.3.1.2.1共享层从N个编码器接收N个元组,即{(E1 p,Z1 p),(E2 p,Z2 p),…,(Eq p,Zq p),…,(EN p,ZN p)};
4.3.1.2.2将权重矩阵W赋初值为0,矩阵大小为16×16;
4.3.1.2.3将N个编码器最后一个隐藏节点的状态形成向量
Figure FDA00030918752800000912
Figure FDA00030918752800000913
将Zlast及最后一个节点隐藏层对应的权重
Figure FDA0003091875280000091
Figure FDA0003091875280000092
串联得到共享层
Figure FDA0003091875280000093
Figure FDA0003091875280000094
其中concatenate(Zlast·Wlast)为numpy库的串联函数,
Figure FDA0003091875280000095
表示将
Figure FDA00030918752800000914
Figure FDA0003091875280000096
相乘;
4.3.1.3构建N个解码器,将
Figure FDA0003091875280000097
作为N个解码器的输入,方法是:
4.3.1.3.1令变量k=0;
4.3.1.3.2如果k=0,构造第一个解码器:利用tf.contrib.seq2seq.BasicDecoder函数构造一个隐藏节点个数为h′个的LSTM,h′=h×N,输出重构向量
Figure FDA0003091875280000098
Figure FDA0003091875280000099
转4.3.1.3.6,如果k≠0,转4.3.1.3.3;
4.3.1.3.3如果k=1,构建第二个解码器,利用tf.contrib.seq2seq.BasicDecoder函数构建一个隐藏节点个数为h′的LSTM,h′=h×N,输出重构向量
Figure FDA00030918752800000910
Figure FDA00030918752800000911
转4.3.1.3.6,如果k≠0且k≠1,转4.3.1.3.4;
4.3.1.3.4如果1<k<N,转4.3.1.3.5;如果若k≥N,转4.3.1.3.7;
4.3.1.3.5构造第3到第N个解码器,方法是:
4.3.1.3.5.1令变量g=3;
4.3.1.3.5.2如果g≤N,转4.3.1.3.5.3;否则转4.3.1.3.6;
4.3.1.3.5.3构建第g个解码器:利用tf.contrib.seq2seq.BasicDecoder函数构建隐藏节点个数为h′的RSCR-RNN,h′=h×N,输出重构向量
Figure FDA0003091875280000101
Figure FDA0003091875280000102
4.3.1.3.5.4令g=g+1,转4.3.1.3.5.2;
4.3.1.3.6令变量k=k+1,转4.3.1.3.2;
4.3.1.3.7输出N个重构向量
Figure FDA0003091875280000103
转4.3.1.3.8;
4.3.1.3.8定义损失函数和优化函数,方法为:
4.3.1.3.8.1定义损失函数loss:
Figure FDA0003091875280000104
其中:inputr表示输入向量的第r个值;outputr表示输出向量的第r个值;l1_regularizer(Zshare)表示对Zshare进行L1正则化的函数;
4.3.1.3.8.2采用Adam作为模型训练的优化函数,基于序列化自编码器的KPI异常检测模型构建完毕。
7.如权利要求6所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于4.3.1.1.5.3步所述构建第q个编码器时基于OED方法,但隐藏层状态计算方法与OED方法不同:
Figure FDA0003091875280000107
由三个元素决定:当前时刻输入Vpr,直接前序节点隐藏状态值
Figure FDA0003091875280000108
L步前的节点隐藏状态值
Figure FDA0003091875280000109
L表示跨步步长,取1到N之间的随机值,得到
Figure FDA00030918752800001010
为:
Figure FDA0003091875280000105
其中M为随机数,M∈{0,1},0表示无连接,1表示有连接,tanh(·)为一种神经网络激活函数,sigmoid(·)为另一种神经网络激活函数。
8.如权利要求l所述的一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于4.3.2步所述对基于序列化自编码器的KPI异常检测模型进行离线训练的方法是:
4.3.2.1令变量p=1;
4.3.2.2将
Figure FDA0003091875280000106
输入至基于序列化自编码器的KPI异常检测模型;
4.3.2.3创建tensorflow的会话sess;
4.3.2.2.1令变量iter=0,令迭代次数ITER=50;
4.3.2.2.2利用sess.run()方法采用输入数据
Figure FDA0003091875280000111
进行训练;
4.3.2.2.3如果iter<ITER,令iter=iter+1,转4.3.2.2.2,否则训练完成,得到模型对
Figure FDA0003091875280000112
的重构向量
Figure FDA0003091875280000113
记为
Figure FDA0003091875280000114
转4.3.2.3;
4.3.2.3计算异常分值,方法是:
4.3.2.3.1令变量b=0;
4.3.2.3.2根据
Figure FDA0003091875280000115
Figure FDA0003091875280000116
计算N个序列化自编码器中第b个自编码器对第p个切分向量的重构误差
Figure FDA0003091875280000117
Figure FDA0003091875280000118
4.3.2.3.3如果b<N,令b=b+1,转4.3.2.3.2;否则输出第p个切分向量的N个重构误差:
Figure FDA0003091875280000119
转4.3.2.3.4;
4.3.2.3.4取Errorp的中位数作为最终异常分值
Figure FDA00030918752800001110
Figure FDA00030918752800001111
Figure FDA00030918752800001112
表示取
Figure FDA00030918752800001113
中的中位数;
4.3.2.3.5如果p≤P,令变量p=p+1,转4.3.2.2;否则得到最终异常分值向量Score,
Figure FDA00030918752800001114
模型训练结束,得到训练后的基于序列化自编码器的无监督KPI异常检测模型。
CN202110597955.XA 2021-05-31 2021-05-31 基于序列化自编码器的无监督kpi异常检测方法 Active CN113204590B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110597955.XA CN113204590B (zh) 2021-05-31 2021-05-31 基于序列化自编码器的无监督kpi异常检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110597955.XA CN113204590B (zh) 2021-05-31 2021-05-31 基于序列化自编码器的无监督kpi异常检测方法

Publications (2)

Publication Number Publication Date
CN113204590A CN113204590A (zh) 2021-08-03
CN113204590B true CN113204590B (zh) 2021-11-23

Family

ID=77023592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110597955.XA Active CN113204590B (zh) 2021-05-31 2021-05-31 基于序列化自编码器的无监督kpi异常检测方法

Country Status (1)

Country Link
CN (1) CN113204590B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4293457A1 (de) * 2022-06-15 2023-12-20 Siemens Aktiengesellschaft Überwachungsverfahren, computerprogrammprodukt, überwachungsseinheit, gasanalysevorrichtung und verwendung einer künstlichen intelligenz

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197011A (zh) * 2018-01-29 2018-06-22 上海洞识信息科技有限公司 一种基于人工智能大数据平台的单指标预测和预警方法
CN109615019A (zh) * 2018-12-25 2019-04-12 吉林大学 基于时空自动编码器的异常行为检测方法
US10505825B1 (en) * 2014-10-09 2019-12-10 Splunk Inc. Automatic creation of related event groups for IT service monitoring
CN111506637A (zh) * 2020-06-17 2020-08-07 北京必示科技有限公司 一种基于kpi指标的多维异常检测方法、装置及存储介质
CN111858231A (zh) * 2020-05-11 2020-10-30 北京必示科技有限公司 一种基于运维监控的单指标异常检测方法
CN112163624A (zh) * 2020-09-30 2021-01-01 上海交通大学 基于深度学习和极值理论的数据异常判断方法及系统
US10887191B2 (en) * 2014-10-09 2021-01-05 Splunk Inc. Service monitoring interface with aspect and summary components
CN112686330A (zh) * 2021-01-07 2021-04-20 中国农业银行股份有限公司 Kpi异常数据检测方法及装置、存储介质及电子设备
CN112819386A (zh) * 2021-03-05 2021-05-18 中国人民解放军国防科技大学 带有异常的时间序列数据生成方法、系统及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10531251B2 (en) * 2012-10-22 2020-01-07 United States Cellular Corporation Detecting and processing anomalous parameter data points by a mobile wireless data network forecasting system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10505825B1 (en) * 2014-10-09 2019-12-10 Splunk Inc. Automatic creation of related event groups for IT service monitoring
US10887191B2 (en) * 2014-10-09 2021-01-05 Splunk Inc. Service monitoring interface with aspect and summary components
CN108197011A (zh) * 2018-01-29 2018-06-22 上海洞识信息科技有限公司 一种基于人工智能大数据平台的单指标预测和预警方法
CN109615019A (zh) * 2018-12-25 2019-04-12 吉林大学 基于时空自动编码器的异常行为检测方法
CN111858231A (zh) * 2020-05-11 2020-10-30 北京必示科技有限公司 一种基于运维监控的单指标异常检测方法
CN111506637A (zh) * 2020-06-17 2020-08-07 北京必示科技有限公司 一种基于kpi指标的多维异常检测方法、装置及存储介质
CN112163624A (zh) * 2020-09-30 2021-01-01 上海交通大学 基于深度学习和极值理论的数据异常判断方法及系统
CN112686330A (zh) * 2021-01-07 2021-04-20 中国农业银行股份有限公司 Kpi异常数据检测方法及装置、存储介质及电子设备
CN112819386A (zh) * 2021-03-05 2021-05-18 中国人民解放军国防科技大学 带有异常的时间序列数据生成方法、系统及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Label-Less: A Semi-Automatic Labelling Tool for KPI Anomalies;Nengwen Zhao 等;《 IEEE INFOCOM 2019 - IEEE Conference on Computer Communications》;20190502;1882-1890 *
一种基于DBN-LR集成学习的异常检测模型;连超 等;《小型微型计算机系统》;20191215;第40卷(第12期);2637-2643 *
智能运维中KPI异常检测的研究进展;王速 等;《电信科学》;20210520;第37卷(第5期);42-51 *

Also Published As

Publication number Publication date
CN113204590A (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
CN111178456B (zh) 异常指标检测方法、装置、计算机设备和存储介质
Liu et al. Communication-efficient federated learning for anomaly detection in industrial internet of things
WO2020077682A1 (zh) 一种服务质量评估模型的训练方法及装置
WO2020077672A1 (zh) 一种服务质量评估模型的训练方法及装置
Caceres et al. A probabilistic Bayesian recurrent neural network for remaining useful life prognostics considering epistemic and aleatory uncertainties
CN111368888A (zh) 基于深度动态贝叶斯网络的服务功能链故障诊断方法
CN107133632A (zh) 一种风电设备故障诊断方法及系统
Li et al. Federated anomaly detection on system logs for the internet of things: A customizable and communication-efficient approach
CN111431819A (zh) 一种基于序列化的协议流特征的网络流量分类方法和装置
CN114785666A (zh) 一种网络故障排查方法与系统
US20230133541A1 (en) Alert correlating using sequence model with topology reinforcement systems and methods
Zhang et al. Cause-aware failure detection using an interpretable XGBoost for optical networks
CN113204590B (zh) 基于序列化自编码器的无监督kpi异常检测方法
Chen et al. Industrial edge intelligence: Federated-meta learning framework for few-shot fault diagnosis
Shi et al. Graph embedding deep broad learning system for data imbalance fault diagnosis of rotating machinery
CN114416423A (zh) 一种基于机器学习的根因定位方法和系统
Wu et al. Real-time monitoring and diagnosis scheme for IoT-enabled devices using multivariate SPC techniques
Hu et al. Spatiotemporal generative adversarial imputation networks: An approach to address missing data for wind turbines
Su et al. KPI anomaly detection method for Data Center AIOps based on GRU-GAN
Njoya et al. Data prediction based encoder-decoder learning in wireless sensor networks
Valli et al. A Study on Deep Learning Frameworks to Understand the Real Time Fault Detection and Diagnosis in IT Operations with AIOPs
CN113572639B (zh) 一种载波网络故障的诊断方法、系统、设备和介质
Lin et al. Data-driven situation awareness of electricity-gas integrated energy system considering time series features
CN115658546A (zh) 一种基于异质信息网络的软件故障预测方法及系统
CN116955059A (zh) 根因定位方法、装置、计算设备及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant