一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法【掌桥专利】

您所在的位置:网站首页 如何对缺失值进行插补 一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法【掌桥专利】

一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法【掌桥专利】

2023-03-26 03:10| 来源: 网络整理| 查看: 265

技术领域

本发明涉及数据处理技术领域,具体而言,尤其涉及一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法。

背景技术

在企业应用系统中,通常采用KPIs(Key Performance Indicators,关键性能指标)对系统进行监测,以便及时检测并解决系统的行为异常。由于各种原因,包括服务器故障、通信错误和意外故障等,导致现实环境中的KPIs时间序列经常出现缺失值。对于KPIs异常检测任务来说,KPIs缺失值的存在不但会削弱检测结果的可解释性而且会影响检测结果的准确性。因此,为了保证KPIs时间序列异常检测的准确性,需要对KPIs时间序列的缺失值进行提前处理。

目前,对KPIs时间序列缺失值的处理大多仍采用传统的时间序列缺失值处理方法。传统的时间序列缺失值处理方法分为两种。一种是删除,即删除存在缺失数据的样本或特征,从而得到一个完备的数据集。然而,删除会使数据不完整,并可能使参数估计产生偏差。另一种是缺失值插补,根据观察值插补缺失数据,得到完整的时间序列。为了解决缺失值插补问题,研究人员采用统计学和机器学习方法,例如线性回归、平均值、中值以及KNN算法等进行缺失值插补。但是其中大多数方法都需要对缺失数据进行各种假设,这些假设可能会引入较大的偏差,从而影响数据分析的结果。最近,许多文献利用深度学习来解决缺失值插补问题,并取得了较好的插补效果。

基于深度学习的时间序列缺失值插补方法主要包括三类,即基于RNN(RecurrentNeural Network,循环神经网络)、基于GAN(Generative Adversarial Network,生成对抗网络)以及基于自注意力(Self-Attention)的方法。

(1)基于RNN的时间序列缺失值插补方法。在基于RNN的时间序列缺失值插补方法中,最近比较流行的是使用M-RNN和BRITS插补模型,它们根据双向RNN的隐藏状态插补缺失值。M-RNN将缺失值视为常量,而BRITS将缺失值视为RNN图的变量。此外,BRITS考虑了特征之间的相关性,而M-RNN则没有。但是,基于RNN的插补模型容易受到递归网络结构的影响,尤其是当数据样本中的时间步数很大时,它们耗时且内存有限,这使得它们很难处理时间序列中的长期依赖关系。

(2)基于GAN的时间序列缺失值插补方法。在基于GAN(Generative adversarialnetwork)的时间序列缺失值插补方法中,其生成器和判别器也是基于RNN的。但是,由于它们采用了GAN结构,因此被单独列为基于GAN的模型。例如E

(3)基于自注意力的时间序列缺失值插补方法。相比以上两种基于深度学习的缺失值插补方法,基于自注意力的缺失值插补方法插补速度较快、容易训练。但目前基于自注意力的时间序列插补模型的相关研究大多是专门用于特定数据集,不能直接用于KPIs时间序列缺失值插补。例如CDSA模型从三个维度(时间、位置和测量)来插补时空数据集中的缺失值;DeepMVI模型通过一个具有卷积窗口特征的转换器和一个核回归的Transformer对时间序列缺失值进行插补。然而,CDSA是专门为时空数据而不是一般时间序列设计的,并且CDSA和DeepMVI都不是开源的,这使得其他研究人员很难复制它们的方法和结果。

尽管研究人员已经在时间序列数据插补相关研究上做了很多努力,但迄今为止提出的大多数深度学习方法都没有关注KPIs时间序列数据。由于KPIs的时间步较长且时间序列之间的相关性随时间变化大,难以对缺失值进行有效填充。

Transformer是一个基于自注意力机制的深度神经网络,是一种非自回归模型,可以克服模型训练速度慢和记忆受限的缺点,有助于实现更好的插补质量,并且能够提高KPIs时间序列插补速度。但是,直接使用Transformer模型对KPIs时间序列的缺失值进行插补仍然存在以下问题:

(1)模型训练速度慢。先前基于Transformer的模型需要通过多次注意力操作才能捕获KPIs时间序列中时间步长之间的时间依赖性和特征相关性,导致模型训练速度慢。

(2)缺失值插补准确率低。与其他插补模型不同,Transformer模型并行且全局地处理所有输入数据,可以区分特征向量中缺失的部分和观察到的部分,因此如果它只关注最小化观察值的重构误差,而忽略缺失的部分,那么插补缺失值时则会产生较大的偏差。

发明内容

根据上述提出的针对当前的KPIs缺失值插补方法存在模型训练速度慢、插补准确率低的技术问题,本发明提供一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法。本发明在Transformer的自注意力机制内部应用了对角线掩码,使自注意力机制只需要一次注意力操作就能捕获高维空间中时间步长之间的时间依赖性和特征相关性,从而提高了模型训练速度。

本发明采用的技术手段如下:

一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法,包括以下步骤:

S1、获取待处理KPIs数据集,构建KPIs时间序列;

S2、通过Positional Encoding对所述KPIs时间序列进行位置编码;

S3、将KPIs时间序列与位置编码后的数据集进行对位相加;

S4、将对位相加得到的序列输入基于改进的Transformer的插补模型,所述改进的Transformer的插补模型包括N个堆叠层,任意所述堆叠层包括多头注意力网络和前馈网络,所述多头注意力网络内部应用对角线掩码,使模型能够通过一次注意力操作捕获高维空间中时间步长之间的时间依赖性和特征相关性;

S5、获取基于改进的Transformer的插补模型的输出序列,并通过Linear线性变换将所述输出序列的维度减少到与所述KPIs时间序列维数相同,得到降维后序列,将KPIs时间序列的缺失值替换为降维后序列中的对应值,得到完整的插补后的KPIs时间序列。

进一步地,基于改进的Transformer的插补模型的训练步骤,包括:

S401、获取训练用KPIs数据集,构建KPIs时间序列,对所述KPIs时间序列按比例进行随机掩蔽,生成训练用KPIs时间序列;

S402、通过Positional Encoding对所述训练用KPIs时间序列进行位置编码;

S403、将训练用KPIs时间序列与位置编码后的数据集进行对位相加;

S404、在Transformer的自注意力机制内部应用对角线掩码,包括获取对位相加得到的序列b映射为d

对Q和K之间的点积缩放得到的矩阵

S405、使用前馈网络对加入了对角线掩码的多头注意力处理后的b进行两次线性变换;

S406、将b通过N个堆叠层的多头注意力和前馈网络转化为z;

S407、将z从d

S408、将训练用KPIs时间序列的缺失值替换为L中的对应值,得到完整的插补后的训练KPIs序列。

进一步地,使用前馈网络对加入了对角线掩码的多头注意力处理后的b进行两次线性变换,包括根据以下公式计算:

FFN(DiagMaskMHA(b))=ReLU(DiagMaskMHA(b)W

其中,

进一步地,

其中,操作{}

进一步地,基于改进的Transformer的插补模型的训练步骤,还包括:

S409、在模型插补所有缺失值后,计算掩蔽的值和各自的插补值之间的平均绝对误差作为插补损失训练模型。

进一步地,通过Positional Encoding对所述训练用KPIs时间序列进行位置编码,包括根据以下公式计算位置编码:

其中,pos是KPIs时间步的位置,D是KPIs时间序列的维度,d

进一步地,将KPIs时间序列与位置编码后的数据集进行对位相加,包括根据以下公式计算:

其中,b为对位相加得到的序列,W

进一步地,将KPIs时间序列的缺失值替换为降维后序列中的对应值,包括根据以下公式计算:

其中,

较现有技术相比,本发明具有以下优点:

本发明针对当前的KPIs(Key Performance Indicators)缺失值插补方法存在模型训练速度慢和插补准确率低的问题,提出了一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法。首先,对Transformer进行了改进,即在Transformer的自注意力机制内部应用了对角线掩码,使得一个时间步的计算只取决于其他时间步的输入值,进而通过一次注意力操作即能捕获高维空间中时间步长之间的时间依赖性和特征相关性,提高了模型训练速度。然后,设计了一种基于掩蔽训练的插补损失计算方法,该方法随机掩蔽部分观察值并将其作为缺失值进行插补计算,然后计算掩蔽的观察值和其插补值之间的插补损失,通过最小化插补损失使模型获得更好的性能,同时使模型更准确地预测缺失值。最后,采用改进后的Transformer和基于掩蔽训练的插补损失计算方法对KPIs缺失值进行预测,使用预测值对KPIs缺失值进行插补,得到完整的KPIs时间序列。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法流程图。

图2为本发明改进的Transformer的插补模型的训练流程图。

图3为本发明在自注意力机制内部应用对角线掩码示意图。

图4为实施例中各深度学习模型中每个epoch的训练时间对比图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

如图1所示,本发明提供了一种基于改进Transformer和掩蔽训练的KPIs缺失值插补方法,包括以下步骤:

S1、获取待处理KPIs数据集,构建KPIs时间序列。

将具有T个时间步长和D个维度的KPIs时间序列表示为X={x

为了表示X中的缺失值,训练过程中引入了掩蔽序列M={m

为了在上述定义的KPIs时间序列数据上训练基于Transformer的插补模型,设计了一种掩蔽插补损失训练方法。具体描述如下:对于模型中的每一批输入,某个百分比(比如我们工作中的5%)的观察值会被人为随机屏蔽作为人工缺失值。这些人工缺失值对模型不可见,在模型插补所有缺失值后,计算这些人工掩蔽的值和各自的插补值之间的平均绝对误差(MAE)作为插补损失。人为随机掩蔽后的KPIs时间序列表示为

S2、通过Positional Encoding对所述KPIs时间序列进行位置编码。

这里以训练过程中对对人为随机掩蔽后的KPIs时间序列

因为原始Transformer架构中没有序列顺序的概念,所以通过应用位置编码来表示序列顺序。位置编码由正弦和余弦函数组成,如公式(3)所示。为了简洁起见,在后面的公式中,p用于表示位置编码。

其中,pos是KPIs时间步的位置,D是KPIs时间序列的维度,d

S3、将KPIs时间序列与位置编码后的数据集进行对位相加。

首先,将人为随机掩蔽后的KPIs时间序列

其中,W

S4、将对位相加得到的序列输入基于改进的Transformer的插补模型,所述改进的Transformer的插补模型包括N个堆叠层,任意所述堆叠层包括多头注意力网络和前馈网络,所述多头注意力网络内部应用对角线掩码,使模型能够通过一次注意力操作捕获高维空间中时间步长之间的时间依赖性和特征相关性。

基于改进的Transformer的插补模型的训练过程如图2所示,主要包括以下步骤:

S401、获取训练用KPIs数据集,构建KPIs时间序列,对所述KPIs时间序列按比例进行随机掩蔽,生成训练用KPIs时间序列。具体过程与S1阐述的过程一直,在此不再重复。

S402、通过Positional Encoding对所述训练用KPIs时间序列进行位置编码。具体过程与S2阐述的过程一直,在此不再重复。

S403、将训练用KPIs时间序列与位置编码后的数据集进行对位相加。具体过程与S2阐述的过程一致,在此不再重复。

S404、在Transformer的自注意力机制内部应用对角线掩码,包括获取对位相加得到的序列b映射为d

对Q和K之间的点积缩放得到的矩阵

本发明对Transformer的编码器进行两方面改进。一方面,为了增强Transformer模型的插补能力,在Transformer的自注意力机制内部应用了对角线掩码。在使用对角线掩码后,第t步的输入值无法看到自己,并且无法对自己的计算做出贡献,它们的计算仅取决于来自其他(T-1)个时间步的输入值。因此可以使自注意力机制能够只需要一次注意力操作就能捕获高维空间中时间步长之间的时间依赖性和特征相关性。另一方面,如果它只关注最小化观察值的重构误差,而忽略缺失的部分,那么插补缺失值时则会产生较大的偏差,所以类似于预训练BERT的掩蔽语言建模(MLM)的思想,本方法在训练损失的过程中,对于模型中的每一批输入,某个百分比(本实施例中为5%)的观察值会被人为随机掩蔽。这些人工掩蔽的值对模型不可见,在模型插补所有缺失值后,计算这些值和各自的插补值之间的掩蔽插补损失,可以使模型尽可能准确地预测缺失值。

具体来说,本步骤为了增强插补能力,在Transformer的自注意力机制内部应用对角线掩码,使模型能够只需要一次注意力操作就能捕获高维空间中时间步长之间的时间依赖性和特征相关性。

Transformer采用多头注意力机制来进行计算,对每个注意力头来说:

首先,将对位相加得到的b序列映射为d

其中,W指的是注意力权重。

在使用这些对角线掩码后,第t步的输入值无法看到自己,并且无法对自己的计算做出贡献。因此,它们的计算仅取决于来自其他(T-1)个时间步的输入值。这种机制使得DMSelfAttention能够只需要一次注意力操作就能捕获高维空间中时间步长之间的时间依赖性和特征相关性。

经过加入了对角线掩码的多头注意力(DiagMaskMHA)处理后的b序列如公式(7)所示。

DiagMaskMHA(b)=Concat(head

其中head

S405、使用前馈网络对加入了对角线掩码的多头注意力处理后的b进行两次线性变换;

使用前馈网络对DiagMaskMHA(b)进行两次线性变换,如公式(8)所示。

FFN(DiagMaskMHA(b))=ReLU(DiagMaskMHA(b)W

其中

S406、将b通过N个堆叠层的多头注意力和前馈网络转化为z。

将b通过N个堆叠层的多头注意力和前馈网络转化为z。为了防止过拟合,使用N个注意力层并行地运行,进行N个独立的DiagMaskMHA计算,如公式(9)所示。

z={FFN(DiagMaskMHA(b))}

其中操作{}

S407、将z从d

将z从d

L=ZW

其中W

S408、将训练用KPIs时间序列的缺失值替换为L中的对应值,得到完整的插补后的训练KPIs序列。将

进一步地,基于改进的Transformer的插补模型的训练步骤,还包括:

S409、在模型插补所有缺失值后,计算掩蔽的值和各自的插补值之间的平均绝对误差作为插补损失训练模型。

S5、获取基于改进的Transformer的插补模型的输出序列,并通过Linear线性变换将所述输出序列的维度减少到与所述KPIs时间序列维数相同,得到降维后序列,将KPIs时间序列的缺失值替换为降维后序列中的对应值,得到完整的插补后的KPIs时间序列。

通常采用多个时间序列指标对服务器进行监控,以便及时检测并解决每个设备的行为异常。所以出于多种原因,最好直接使用多元时间序列在实体层面检测异常,而不是使用单变量时间序列在指标层面检测异常,因此本方法专注于研究多元时间序列的缺失值插补。本方法在SMD(Server Machine Dataset)数据集上进行实验,这是清华NetMan实验室从一家大型互联网公司收集的一个为期5周的KPIs时间序列数据集,并在Github上公开发布。该KPIs时间序列数据集具有28477个时间步,共有CPU负载、网络使用情况、内存使用情况等38个维度。

从以下两个方面来验证本发明的有效性:(1)对本发明方法进行消融实验对比。(2)从统计学、机器学习和深度学习方法中选择五种常用的插补方法与本发明方法进行对比。选择的五种方法如下:

1)Last:在每个样本中,缺失值由给定特征的上一次观察值填充,如果没有上一次观察值,则填充0;

2)KNN:最近邻算法,使用多行都具有观测数据的特征的均方差来对样本进行加权,然后用加权的结果进行缺失值填充;

3)IterativeSVD:通过迭代低秩SVD分解矩阵来填充;

4)M-RNN;

5)BRITS。

其中,M-RNN和BRITS已在上文中做了介绍。

本实验采用以下三个指标来评估各方法的插补性能:MAE(平均绝对误差)、RMSE(均方根误差)和MRE(平均相对误差)。公式(12)、(13)和(14)分别给出了三个评估指标的数学定义。请注意,误差仅根据方程式输入中掩码指示的值计算。

在模型训练时,将batch size固定为128,采用提前停止策略,如果MAE没有任何下降,则在30个epochs后停止训练,将dropout固定为0.1。为了在模型之间进行公平比较,对数据集上的每个模型都执行超参数搜索。使用的Transformer仅包括编码器(Encoder)部分,因为插补问题没有被视为生成任务,因此不需要解码器部分。模型参数分别为d

(1)消融实验

Transformer是非常有潜力的模型,可以并行训练,速度快,能够很好地解决长距离依赖的问题。Transformer模型目前已被广泛应用于各个领域,但其在时间序列插补中的应用仍然很少,并且在处理许多实际问题时,Transformer依旧还存在着许多可以优化的地方。为了使其能够出色完成KPIs时间序列数据的缺失值插补工作,本发明针对KPIs缺失值插补对Transformer的自注意力机制进行改进,并设计了一种基于掩蔽训练的插补损失计算方法。

为了证明本发明模型具有更好的插补性能,通过消融实验对改进前后的插补性能进行对比,如表1所示。其中,Transformer-MD为本发明模型,即同时使用了掩蔽训练和对角线掩码的Transformer模型;Transformer-M为只使用了掩蔽训练的Transformer模型;Transformer-D为加入了对角线掩码的Transformer模型;Transformer为原始模型。指标越低越好,加粗值表示最佳性能。

表1消融实验结果

由表1可知,直接使用传统Transformer中的多头自注意力机制对KPIs时间序列进行插补时的插补质量较差,在训练损失的过程中加入类似于预训练BERT的掩蔽语言建模(MLM)的思想,通过使用掩蔽插补损失进行训练使插补质量得到了有效提高。传统的Transformer中的多头自注意力机制不能够通过一次注意力操作来捕获KPIs时间序列中时间步长之间的时间依赖性和特征相关性,为了增强插补能力,在自注意力机制内部应用了对角线掩码,使插补性能得到了进一步的优化。因此,使用掩蔽插补损失和对角线掩码对模型进行改进,确实提高了Transformer模型的插补能力。

(2)本发明方法与其他常用的插补方法对比

1)插补性能对比

将本发明方法与其他五种常用的插补方法进行了比较,如表2所示。评估指标越低越好,加粗值表示最佳性能。

表2模型插补性能对比

从表2中可以得出,由于Last直接将给定特征的上一次观察值对缺失值进行填充,IterativeSVD通过迭代低秩SVD分解来填充矩阵,二者仅通过对小部分观察值的计算进行缺失值插补,因此会产生较大的偏差。在所有常用的统计学和机器学习插补方法中,由于使用多行观测数据的特征的均方差来对样本进行加权并用加权的结果进行缺失值填充,KNN算法取得了最好的插补效果。深度学习的插补模型大多是专门用于特定数据集,由于KPIs的时间步较长且时间序列之间的相关性随时间变化大,M-RNN将缺失值视为常量,因此其插补性能还不如一些简单的插补方法。在除了本发明方法以外的所有方法中,BRITS实现了最佳插补性能,对KPIs时间序列进行缺失值插补时,各个评估指标仅次于本发明方法的插补模型。

2)训练时间对比

基于RNN的插补模型容易受到递归网络结构的影响,尤其是KPIs时间序列的时间步较长且时间序列的特征相关性随时间变化大,这使得其不仅耗时,且很难处理KPIs时间序列中的长期依赖关系。本发明方法通过对Transformer的编码器进行改进,使时间序列的插补方法克服了RNN的这些缺点,并且能够明确地捕获时间步长之间的时间依赖性和特征相关性。本实验中各深度学习模型在KPIs时间序列数据集上每个epoch的训练时间(秒)对比,如图4所示。

由图4可知,常用的深度学习模型在KPIs时间序列数据集上每个epoch的训练时间较长,其中M-RNN模型将缺失值视为常量,训练时间较BRITS模型相比得以减少,常用方法中产生最佳插补效果的BRITS模型速度最慢。与BRITS模型相比,本发明模型在每个阶段的训练时间都是BRITS的1/3甚至更少。

从以上对比实验中可以看出,本发明不仅能够使KPIs时间序列的缺失值得到有效填充,并且克服了RNN模型速度慢和记忆受限的缺点。

(3)结论

在现实环境中的KPIs时间序列经常会出现缺失值,对异常检测任务构成挑战。为了保证KPIs时间序列异常检测的可解释性和准确性,提前思考如何处理数据缺失值是不可避免的一步。Transformer是一个基于自注意力机制的深度神经网络,可以克服非自回归模型记忆受限的缺点,有助于实现更好的插补质量。但是,直接使用Transformer模型对KPIs时间序列的缺失值进行插补仍然存在模型训练速度较慢和插补准确率低的问题。

本发明针对KPIs时间序列数据时间步较长且时间序列之间的相关性随时间变化大的特点,对Transformer进行了改进,即在Transformer的多头自注意力机制中加入对角线掩码,并设计了一种基于掩蔽训练的插补损失计算方法,使KPIs时间序列的模型训练速度和插补准确率都得到了优化。通过实验证明了本发明改进的Transformer插补模型不仅优于传统Transformer模型,而且与其他一些常用的时间序列插补模型相比也具有明显优势。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3