技术领域
[0001] 本
发明涉及服务器异常检测技术领域,更具体的说是涉及一种基于自编码器的服务器内存异常检测方法、系统及设备。
背景技术
[0002] 服务器的可靠性是衡量服务器性能的重要指标。可靠性取决于很多方面,例如供电、
主板、内存、
软件系统等方面。从另一方面,异常检测是一个具有十分广阔应用前景的研究方向,在很多工程领域都可以用得到异常检测。异常检测是检测不符合期望的数据、行为。对异常的可靠判断需要定量的分析,往往通过统计学或者数学进行定量的分析。随着近些年
深度学习的出现,基于深度学习方面的异常检测被逐渐推广使用。深度学习可以更好地利用海量数据,可以起到更好的建模效果。
[0003] 自编码器(autoencoder)是一种无监督的深度学习
算法。在大部分自编码器的场合,压缩和解压缩的函数是通过神经网络实现的,如图1所示,左侧input为输入数据,中间的hidden layer为压缩(编码)后的特征数据。右侧output为重建后的数据。自编码器是一种非线性压缩方法,可以提取数据中的非线性信息,区别于经典的线性的PCA(列主元)分析。在大部分自编码器的场合,压缩和解压缩的函数是通过神经网络实现的。我们可以利用自编码器,将数据进行编码再解码,将得到的结果与原数据进行比较,当误差达到
阈值之后,说明该数据跟构成自编码器的绝大部分数据差别较大,可以判断为异常数据。这项技术的特点是不需要被标记过的数据,即不需要被告知数据中是否存在异常数据(或者正负样本)。
[0004] 因此,如果利用自动编码器这种无监督深度学习方法来进行服务器内存的异常检测,能够及时发现内存的损坏和故障,大大提高服务器内存的异常检测的准确性和效率。
发明内容
[0005] 针对以上问题,本发明的目的在于提供一种基于自编码器的服务器内存异常检测方法、系统及设备,能够快速、准确的分析内存相关的数据的异常,提高了检测效率。
[0006] 本发明为实现上述目的,通过以下技术方案实现:一种基于自编码器的服务器内存异常检测方法,包括:
[0007] 提取内存检测的历史正常数据作为训练样本训练自编码器模型;
[0008] 自编码器模型训练完成后,为训练样本的每一条数据编码,并计算得到平均编码数据;
[0009] 利用每一条训练样本数据和平均编码数据计算得出用于判定异常数据的阈值;
[0010] 读取新的内存检测数据,利用所述阈值判断新的内存检测数据是否异常,并输出结果。
[0011] 进一步,所述作为训练样本的内存检测历史正常数据未进行标记。
[0012] 进一步,所述为训练样本的每一条数据编码,并计算得到平均编码数据包括:
[0013] 对用于训练样本的每一条数据执行编码得到
隐藏层的特征,并提取出训练样本没一条数据的编码数据;
[0014] 计算得到训练样本的平均编码数据。
[0015] 进一步,所述利用每一条训练样本数据和平均编码数据计算得出用于判定异常数据的阈值包括:
[0016] 计算每一条训练样本数据和平均编码数据的融合距离,即得到一组距离数值;
[0017] 计算出距离数值的平均值和标准差;
[0018] 将所述平均值加3倍或6倍的标准差作为用来判断将来的数据是否为异常数据的阈值。
[0019] 进一步,所述融合距离具体为:
[0020] KL距离和欧式距离的平均值。
[0021] 进一步,所述读取新的内存检测数据,并利用所述阈值判断新的内存检测数据是否异常包括:
[0022] 读取新的内存检测数据,并将其作为新样本;
[0023] 利用自编码器模型对新样本执行编码操作,得出新编码数据;
[0024] 计算新编码数据和平均编码数据的融合距离,得出新融合距离;
[0025] 将新融合距离与阈值进行比较,若大于,新的内存检测数据为异常数据。
[0026] 相应的,本发明还公开了一种基于自编码器的服务器内存异常检测系统,包括:
[0027] 训练单元,用于提取内存检测的历史正常数据作为训练样本训练自编码器模型;
[0028] 编码单元,用于自编码器模型训练完成后,为训练样本的每一条数据编码,并计算得到平均编码数据;
[0029] 计算判定单元,用于利用每一条训练样本数据和平均编码数据计算得出用于判定异常数据的阈值;
[0030] 测试单元,用于读取新的内存检测数据,利用所述阈值判断新的内存检测数据是否异常,并输出结果。
[0031] 相应的,本发明还公开了一种基于自编码器的服务器内存异常检测设备,包括:
[0033] 处理器,用于执行所述计算机程序时实现如上文任一项所述基于自编码器的服务器内存异常检测方法步骤。
[0034] 对比
现有技术,本发明有益效果在于:本发明提供了一种基于自编码器的服务器内存异常检测方法、系统及设备,先取一部分历史正常数据训练自编码器模型。然后,使用训练好的模型利用通过预设算法打出的阈值判断新的内存检测数据是否异常,并输出结果。本发明用于服务器中的内存异常检测,可以通过数据分析的方式及时发现内存运行的状态异常。如果连续出现异常,或许意味着内存的损坏或者其他故障,为及时排查避免隐患或者宕机提供了可靠的数据手段。
[0035] 由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
[0036] 为了更清楚地说明本发明
实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037] 附图1是本发明的自编码器的网络结构图。
[0039] 附图3是本发明的系统结构图。
具体实施方式
[0040] 下面结合附图对本发明的具体实施方式做出说明。
[0041] 如图2所示的一种基于自编码器的服务器内存异常检测方法,包括如下步骤:
[0042] S1:提取内存检测的历史正常数据作为训练样本训练自编码器模型。其中,作为训练样本的内存检测历史正常数据不需要进行标记。
[0043] S2:自编码器模型训练完成后,为训练样本的每一条数据编码,并计算得到平均编码数据。
[0044] 首先,对用于训练样本的每一条数据执行编码得到隐藏层的特征,并提取出训练样本没一条数据的编码数据;然后,计算得到训练样本的平均编码数据。
[0045] S3:利用每一条训练样本数据和平均编码数据计算得出用于判定异常数据的阈值。本步骤具体为:先计算每一条训练样本数据和平均编码数据的融合距离,即得到一组距离数值;然后计算出距离数值的平均值和标准差;将所述平均值加3倍或6倍的标准差作为用来判断将来的数据是否为异常数据的阈值。
[0046] S4:读取新的内存检测数据,利用所述阈值判断新的内存检测数据是否异常,并输出结果。本步骤具体为:
[0047] 读取新的内存检测数据,并将其作为新样本;
[0048] 利用自编码器模型对新样本执行编码操作,得出新编码数据;
[0049] 计算新编码数据和平均编码数据的融合距离,得出新融合距离;
[0050] 将新融合距离与阈值进行比较,若大于,新的内存检测数据为异常数据。
[0051] 另外,步骤S3中所述的融合距离KL距离和欧式距离的平均值。
[0052] KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy)。它衡量的是相同事件空间里的两个概率分布的差异情况。其物理意义是:在相同事件空间里,概率分布P(x)的事件空间,若用概率分布Q(x)编码时,平均每个基本事件(符号)编码长度增加了多少比特。我们用D(P||Q)表示KL距离,计算公式如下:
[0053]
[0054] 当两个概率分布完全相同时,即P(x)=Q(X),其相对熵为0。我们知道,概率分布P(X)的信息熵为:
[0055]
[0056] 其表示,概率分布P(x)编码时,平均每个基本事件(符号)至少需要多少比特编码。通过信息熵的学习,我们知道不存在其他比按照本身概率分布更好的编码方式了,所以D(P||Q)始终大于等于0的。虽然KL被称为距离,但是其不满足距离定义的三个条件:1)非负性;
2)对称性(不满足);3)三
角不等式(不满足)。
[0057] 我们得到两个向量后,从任何一个向量中都可以得到一个概率分布,从而很容易的计算出KL距离
[0058] 欧式距离,源自N维欧氏空间中两点x1,x2
[0059]
[0060] 我们推荐使用KL距离和欧式距离结合的方法进行最终异常的判断,即最终的距离是KL距离和欧式距离的平局值。阈值的设定可以根据经验,也可以使用一部分
训练数据得到一个计算出的阈值。
[0061] 相应的,如图3所示,本发明还公开了一种基于自编码器的服务器内存异常检测系统,包括:
[0062] 训练单元,用于提取内存检测的历史正常数据作为训练样本训练自编码器模型;
[0063] 编码单元,用于自编码器模型训练完成后,为训练样本的每一条数据编码,并计算得到平均编码数据;
[0064] 计算判定单元,用于利用每一条训练样本数据和平均编码数据计算得出用于判定异常数据的阈值;
[0065] 测试单元,用于读取新的内存检测数据,利用所述阈值判断新的内存检测数据是否异常,并输出结果。
[0066] 相应的,本发明还公开了一种基于自编码器的服务器内存异常检测设备,包括:
[0067] 存储器,用于存储计算机程序;
[0068] 处理器,用于执行所述计算机程序时实现如上文任一项所述基于自编码器的服务器内存异常检测方法步骤。
[0069] 本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用
硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动
硬盘、
只读存储器(ROM,Read-Only Memory)、
随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。本
说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
[0070] 在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些
接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0071] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0072] 另外,在本发明各个实施例中的各功能模
块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
[0073] 同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
[0074] 结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或
修改,这些等价形式同样落于本
申请所限定的范围。