一种基于Transformer的云数据库异常检测方法与系统

文档序号:35576992发布日期:2023-09-24 19:09阅读:25来源:国知局
一种基于Transformer的云数据库异常检测方法与系统

本发明属于云数据库智能运维中的异常检测,更具体地,涉及一种基于transformer的云数据库异常检测方法与系统。


背景技术:

1、随着互联网技术的快速发展,海量数据的产生使数据存储和管理面临更大的挑战。数据库技术是解决海量数据存储的有效方案,并受到越来越多的关注和支持。随着云数据库在企业中的应用越来越广泛,其稳定性备受关注,异常检测通过持续监控云数据库系统的关键性能指标(key performance indicator,简称kpi)并及时对异常情况发出警报以保障云数据库系统的稳定性。

2、鉴于云数据库kpi数据是时间序列数据,主流方法是将云数据库异常检测视为时间序列异常检测问题,并采用时间序列异常检测技术来检测云数据库kpi时间序列数据中的异常。在云数据库集群中,云数据库kpi之间存在两个维度的相关性。第一个维度为同一云数据库不同kpi之间的内在联系,即云数据库内的相关性。第二个维度为不同云数据库的部分相同kpi具有相似的变化趋势,即云数据库间的相关性。由于传统的基于机器学习的时间序列异常检测方法提取的特征过浅,目前主流的时间序列异常检测方法主要倾向于深度学习方法。基于深度学习的时间序列异常检测方法可以分为两类方法,第一类方法仅关注云数据自身状态,考虑同一云数据库不同kpi之间的相关性;第二类方法关注于集群中不同云数据库相同kpi的变化趋势相似性,通过检测云数据库间变化趋势的偏离检测异常云数据库。

3、然而,上述云数据库异常检测方法存在一些不可忽略的缺陷:第一,第一类方法忽视了云数据库集群的特点(集群中的多个云数据库协同工作且负载相对均衡),仅考虑了数据库自身不同kpi之间的相关性,而没有考虑数据库之间的相关性,因此无法从集群整体层面来度量数据库的异常状态,因此会导致检测精确率低;第二,第二类方法发现集群中不同云数据库的某些相同kpi之间具有相似的变化趋势,并通过检测云数据库间kpi变化趋势的偏离发现异常,提升了云数据库异常检测性能,但工作负载变化等非异常因素会引起数据库负载发生偏斜与抖动,进而也会导致不同云数据库相同kpi的变化趋势发生偏离并引起误报,因此仍然存在精确率低的问题。


技术实现思路

1、针对现有技术的以上缺陷或改进需求,本发明提供了一种基于transformer的云数据库异常检测方法和系统,其目的在于,解决现有云数据库异常检测方法忽视由于了云数据库集群的特点,仅考虑了数据库自身不同kpi之间的相关性,而没有考虑数据库之间的相关性,因此无法从集群整体层面来度量数据库的异常状态,因此会导致检测精确率低的技术问题,以及工作负载变化等非异常因素会引起数据库负载发生偏斜与抖动,进而也会导致不同云数据库相同kpi的变化趋势发生偏离并引起误报,因此会导致检测精确率低的技术问题。。

2、为实现上述目的,按照本发明的一个方面,提供了一种基于transformer的云数据库异常检测方法,包括以下步骤:

3、a、获取云数据库的关键性能指标kpi数据,对采集的云数据库的kpi数据进行降维处理,以获取降维处理后的云数据库的kpi数据。

4、b、对步骤a降维处理后的云数据库的kpi数据进行预处理,以获取云数据库kpi样本数据。

5、c、将步骤b获取的云数据库的kpi数据输入预先训练好的云数据库异常检测模型transad中,以获取异常检测结果。

6、优选地,步骤a具体为,首先通过云数据库提供的编程接口以固定的时间间隔采集云数据库的kpi数据,然后基于专家经验从采集的云数据库的kpi数据中选取与云数据库异常最相关的云数据库的kpi数据作为降维处理后的云数据库的kpi数据,降维处理后的云数据库的kpi数据是具有时间维度和指标维度的二维数据,其包含n个kpi向量,其中n的取值范围是10到80;

7、优选地,步骤b具体为,首先针对云数据库的kpi数据中因网络抖动等原因导致的缺失值,使用线性插值法进行填充,以得到填充后的多维云数据库的kpi数据;然后使用大小为k的滑动窗口将填充后的多维云数据库的kpi数据划分为具有固定时间跨度大小、且不重叠的多维kpi子序列样本,每个多维kpi子序列样本是具有时间维度和指标维度的二维数据,时间维度的大小为k,指标维度大小为降维处理后的云数据库的kpi数据中的kpi个数n。

8、优选地,云数据库异常检测模型包括依次连接的transformer编码器、云数据库嵌入层和异常决策层三个部分;

9、第一层是transformer编码器,transformer编码器具有多个编码块,每个编码块包含多头自注意力子层和前馈神经网络子层,具体结构为:

10、多头自注意力子层,对输入的同一集群下多个云数据库的kpi数据中的kpi向量进行编码,以获得kpi编码向量,其中云数据库的kpi样本数据个数为m,每个云数据库kpi样本数据包含n个kpi向量,每个kpi向量包含k个数据点,kpi向量个数为m*n。

11、前馈神经网络子层,其输入为多头自注意力子层输出的kpi编码向量,对该kpi编码向量进行线性变换,以获取线性变换后的kpi编码向量。

12、第二层为云数据库嵌入层,其为具有1024个神经元的全连接神经网络,其输入为第一层输出的kpi编码向量,将属于同一数据库的n个kpi编码向量进行特征融合处理,以输出可表示云数据库运行状态的云数据库嵌入向量。

13、第三层为异常决策层,其为具有1024个神经元的全连接神经网络,其输入为第二层输出的云数据库嵌入向量,同时对集群中多个云数据库的嵌入向量进行特征融合处理,以输出m+1维的异常概率向量。

14、优选地,云数据库异常检测模型通过以下步骤训练获取的:

15、(1)获取云数据库kpi数据,对采集的云数据库的kpi数据进行降维处理,以获取降维处理后的云数据库的kpi数据。

16、(2)对步骤(1)降维处理后的云数据库的kpi数据进行预处理,以获取云数据库kpi样本数据。

17、(3)对步骤(2)获取的云数据库kpi样本数据进行异常kpi值注入,以获取有标签的云数据库kpi样本数据。

18、(4)将步骤(3)获取的有标签的云数据库kpi样本数据按照7:3的比例划分为训练集和测试集。

19、(5)针对步骤(4)获取的训练集中的云数据库kpi样本数据而言,将集群内多个云数据库在同一时间窗口下的kpi样本输入transformer编码器中,以得到融合云数据库内和云数据库间相关性特征的kpi编码向量。

20、(6)将步骤(5)获取的kpi编码向量输入云数据库嵌入层,云数据库嵌入层将属于同一云数据库的n个kpi编码向量进行特征融合后,以获取能够表示云数据库运行状态的云数据库嵌入向量。

21、(7)将步骤(6)获取的云数据库嵌入向量输入到异常决策层,异常决策层将集群中m个云数据库的嵌入向量(由同一时间窗口内属于同一集群的多个云数据库kpi样本数据经过处理得到)进行特征融合,以获取具有m+1个元素的异常概率向量。

22、(8)使用softmax和argmax函数对步骤(7)获取的异常概率向量进行进一步处理,以获得异常云数据库编号,即异常检测结果。

23、具体而言,异常云数据库编号为0表示没有异常,其它编号表示相应编号的数据库异常。

24、(9)基于步骤(7)获取的异常概率向量和云数据库kpi样本数据的真实标签计算总损失函数,并利用反向传播方法对transad模型进行迭代训练,直到该transad模型收敛为止,从而获取初步训练好的transad模型。

25、(10)使用步骤(4)获取的测试集对步骤(9)初步训练好的transad模型进行验证,直到获取的检测精度达到最优为止,从而获取训练好的transad模型。

26、优选地,步骤(5)包括以下子步骤:

27、(5-1)将kpi样本中的kpi向量kpii,j(其中i表示集群中的第i个云数据库编号,j表示云数据库样本数据中的第j个kpi向量,且有i∈[1,m],j∈[1,n])输入transformer编码器的q网络,以获取查询向量。

28、(5-2)将属于同一云数据库的不同kpi向量(kpi1,1,kpii,2,kpii,j-1,kpii,j+1,…,kpii,n)以及不同云数据库的相同kpi向量(kpi2,j,kpi3,j,…,kpii-1,j,kpii+1,j…kpim,j)输入transformer编码器的k网络,以获取键向量。

29、(5-3)根据步骤(1)计算得到的查询向量和步骤(2)得到的键向量,并通过点积的方式计算得到注意力权重向量。注意力权重向量中的每个权重代表kpii,j向量对该权重对应的kpi向量的关注程度。

30、(5-4)根据步骤(5-3)计算得到的注意力权重向量,对需要关注的kpi向量(即同一云数据库的kpi样本数据中的不同kpi向量,以及不同云数据库的kpi样本数据中的相同kpi向量)进行加权融合,以获取融合相关性特征的kpi编码向量。

31、优选地,总损失函数包括l2正则化损失函数、基于交叉熵损失函数计算的异常分类损失函数、以及对比损失函数:

32、

33、其中公式的第一项为l2正则化损失,第二项为基于交叉熵损失函数计算的异常分类损失,第三项为对比损失。其中,第一项中的λ是l2正则化项的系数,ω是transad网络权重向量;第二项中的β是基于交叉熵损失函数计算的异常分类损失的系数,lce表示交叉熵损失函数,yi和yi’分别表示第i个云数据库的kpi样本的真实标签向量和预测概率向量;第三项中的m表示集群中云数据库的个数,ld为计算样本对距离损失的距离损失函数,ii’和ij’分别表示第i个云数据库kpi样本数据和第j个云数据库kpi样本数据经过transformer编码器和云数据库嵌入层处理之后的云数据库嵌入向量,yi,j表示第i个云数据库和第j个云数据库是否相似(同为异常或同为正常为相似,值为1;否则值为0。

34、优选地,对比损失函数计算过程为:

35、(9-1)获取集群中m个云数据库的嵌入向量,计算两两之间的距离,从而得到每对云数据库嵌入向量的余弦距离。

36、(9-2)基于步骤(9-1)计算得到的云数据库样本对的余弦距离进行进一步计算处理,以获取云数据库kpi样本数据对之间的余弦损失;

37、(9-3)将步骤(9-2)计算得到的每个云数据库样本对之间的余弦损失进行累加,以获取所有云数据库样本对的距离损失。

38、按照本发明的另一方面,提供了一种基于transformer的云数据库异常检测系统,包括:

39、第一模块,用于获取云数据库的关键性能指标kpi数据,对采集的云数据库的kpi数据进行降维处理,以获取降维处理后的云数据库的kpi数据。

40、第二模块,用于对第一模块降维处理后的云数据库的kpi数据进行预处理,以获取云数据库kpi样本数据。

41、第三模块,用于将第二模块获取的云数据库的kpi数据输入预先训练好的云数据库异常检测模型transad中,以获取异常检测结果。

42、总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

43、(1)本发明由于采用了步骤(3),其通过transformer编码器同时提取云数据库kpi在云数据库内和云数据库间的相关性特征,并利用这两个维度的相关性特征检测云数据库异常,从而在保持较高召回率的同时,有效提高了精确率,提高了云数据库异常检测的整体性能;

44、(2)本发明由于采用了步骤(3),其通过掩码矩阵可实现让transformer编码器只提取云数据库在云数据库内的相关性或云数据库间的相关性特征,因此能够确定云数据库kpi在云数据库内和云数据库间两个维度的相关性特征对云数据库异常检测效果的影响;

45、(3)由于本发明在transad模型中引入了对比损失函数,让模型能够学习云数据库之间的相似性(距离),这种相似性具有通用性,能够适应不同的云数据库kpi数据集,因此模型对混合云数据库kpi数据集(具有多个集群的云数据库kpi数据的数据集)具有较好的适应性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1