技术领域
本发明涉及计算机技术领域,尤其涉及一种基于变分自编码器算法的图像异常检测方法。
背景技术
异常检测使用重构误差作为异常分值。第一步是使用降维方法如自动编码器重建数据。使用k个最重要的主成分重构输入并测量其原始数据点和重构之间的差异会导致重构误差,该误差可用作异常分数。重构误差高的数据点被定义为异常。
对于大部分应用而言,其过程中会产生一些数据。当应用过程出现异常状况时,对应到数据上,离群值也会随之产生。因此,离群值往往包含着系统和对象发生异常时的特征。识别出这些特征可以为应用带来不少好处。在所有这些应用中,数据都有一个“正常”的模型,当数据偏离这个在正常模型时,我们则认为它是异常。
所有的异常诊断模型都是创建一个数据的正常模式,然后计算给定的数据点针对这个模式的偏离程度。例如,生成模型中高斯混合模型、基于回归的模型以及基于空间临近程度的模型都对数据的正常行为作出假设,然后通过评估数据点和模型的接近程度计算数据点的异常得分。很多数据模型是由算法确定,例如,基于最近邻的异常诊断算法根据k-近邻距离的分布来建立数据点异常趋势的模型。因此,模型假设是异常点位于距离大部分数据较远的位置。
变分自编码器是一种基于变分推断的有向概率图模型,通过将深度学习与概率统计相结合,能够学习到数据特征分布,是深度学习领域的一种重要模型。随着当今科技的快速发展,人们在日常生活中会产生大量的数据,这些数据中可能会产生一些与主体数据存在较大不同的异常数据,这些数据对于人们来说是不利的,甚至会产生较大伤害,要解决这类问题,我们依旧面临着巨大挑战。
异常或异常值是指与其他数据显著不同的数据点,这种数据远远偏离了正常值,异常检测的目的是要检测出与主体数据存在显著差异的异常数据。此外,异常检测技术还广泛应用于很多领域如,医疗卫生、交通运输、文本检测、安全防控等,为各种领域的正常运转提供重要技术支撑。对于此类关键任务的应用程序,必须有效和及时地检测异常(异常值)。即使是短时间的延误也可能导致巨额资金、投资机会的损失,甚至人命的损失。
对于大部分应用而言,其过程中会产生一些数据。当应用过程出现异常状况时,对应到数据上,离群值也会随之产生。因此,离群值往往包含着系统和对象发生异常时的特征。识别出这些特征可以为应用带来不少好处。在所有这些应用中,数据都有一个“正常”的模型,当数据偏离这个在正常模型时,我们则认为它是异常。
随着深度学习的出现,自动编码器也被用来通过堆叠层来进行降维,形成深度自动编码器。通过减少隐藏层的单元数量,我们希望隐藏单元能够提取出能很好地代表数据的特征。此外,通过堆叠自动编码器,我们可以以一种分层的方式进行降维,在更高的隐藏层中获得更多的抽象特征,从而更好地重构数据。
发明内容
为解决上述技术问题,本发明提出一种基于变分自编码器算法的图像异常检测方法,利用重构的特点,进行异常检测。
一种基于变分自编码器算法的图像的异常检测方法,包括以下步骤:
步骤1:对于给定图,对图像进行异常检测时,使用重建误差作为异常分数,设置重构度阈值,将大于阈值的数据点判断为异常的数据点被认为是异常,选择阈值内的正常数据点;
步骤2:使用变分自编码器对正常数据点进行训练,训练之后,变分自编码器对正常数据点进行重建;
步骤3:计算重建后图像数据的均值和方差参数,使用均值和方差进行计算高于均值阈值的异常分数,称为重建概率;
所述均值为
其中n为图像数据的个数,X
步骤4:对图像中的数据重构概率导出原始输入变量分布的参数;
步骤5:图像重构后的图像的输入变量的参数是从近似后验分布中提取的给定潜在变量生成图像数据的概率;
步骤6:对于二进制数据,使用伯努利分布对输入的图像进行改进;在潜在变量空间分布的情况下,优选连续分布,通过光谱异常检测对图像进行异常检测,得出相应的样本,即图像重构结果;
步骤7:最后将图像重构的结果和原图像做对比,观察异常检测的结果及其偏离原结果的范围,完成对图像的异常检测。
本发明所产生的有益效果在于:
本技术方案提供了一种基于变分自编码器算法的图像的异常检测方法,本发明的优点进步是可以更好的进行异常检测,当今科技的快速发展,人们在日常生活中会产生大量的图片数据,这些图片数据中可能会产生一些与主体数据存在较大不同的异常图片数据,这些数据对于人们来说是十分不方便的,要解决这类问题,本技术方案可以检测到图像中的异常。
附图说明
图1为本发明方法流程图;
图2为本发明实施例中输入图像;
图3为本发明实施例中重构后的图像;
图4为本发明实施例中重构差分的图像及重构误差;
图5为本发明实施例中损失函数图像。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
一种基于变分自编码器算法的图像的异常检测方法,如图1所示,包括以下步骤:
步骤1:对于给定图,对图像进行异常检测时,使用重建误差作为异常分数,设置重构度阈值,将大于阈值的数据点判断为异常的数据点被认为是异常,选择阈值内的正常数据点;
步骤2:使用变分自编码器对正常数据点进行训练,训练之后,变分自编码器对正常数据点进行重建;
步骤3:计算重建后图像数据的均值和方差参数,使用均值和方差进行计算高于均值阈值的异常分数,称为重建概率;
所述均值为
其中n为图像数据的个数,X
步骤4:对图像中的数据重构概率导出原始输入变量分布的参数;图像被重构的是输入变量分布的参数,而不是输入图像变量本身。
步骤5:图像重构后的图像的输入变量的参数是从近似后验分布中提取的给定潜在变量生成图像数据的概率;因为许多样本是从潜在变量分布中提取的,这允许对图像重构概率考虑潜在变量空间的可变性,这是所提出的方法和基于自动编码器的异常检测之间的主要区别之一。
步骤6:对于二进制数据,使用伯努利分布对输入的图像进行改进;在潜在变量空间分布的情况下,优选连续分布,例如各向同性正态分布。这可以通过光谱异常检测对图像进行异常检测,得出相应的样本,即图像重构结果;潜在变量空间比输入变量空间简单得多。
步骤7:最后将图像重构的结果和原图像做对比,观察异常检测的结果及其偏离原结果的范围,完成对图像的异常检测。
本实施例中对于编码器和解码器都是一个256维的隐藏层。潜在维度是64维。对于自动编码器,我们使用了两个隐藏层去噪自动编码器,第一个和第二个隐藏层分别为256,64维。用第二层通过堆叠前一层输出来训练图像。对于主成分分析,我们使用了线性主成分分析和高斯核的核主成分分析。高斯核的参数使用交叉验证来估计。VAE使用重构概率作为异常得分,而其他模型使用重构误差作为异常得分,使用MNIST数据集进行操作。在MNIST数据集中,进行训练和测试样本,数据集根据类别标签分为正常数据和异常数据。为了应用半监督学习,训练数据由80%的正常数据图像组成,测试数据图像由剩余的20%的正常数据图像和所有的异常数据图像组成。因此,模型仅使用正常数据图像进行训练,并使用正常和异常数据进行测试。对于MNIST数据集,使用标记为异常的每个数字类别和标记为正常的其他数字来训练模型。
由此得出导致数据集有10个不同的异常。我们将标记为异常的数字称为异常数字。数据总数为60000,每个数字的实例数相同。只有最小最大缩放作为预处理。
对于给定MNIST数据集,本文将所有MNIST数据集给定图像像素值缩放到[0,1]区间,学习率为0.0003。
将给定的输入图像,图像是1-9之间的手写数字,如图2所示。
将上一步的图像进行重构图像,如图3所示。再计算重构差分,将计算重构差分相加得到重构误差,如图4所示。
再对这些图像得出这个过程的损失函数。损失函数图像如图5所示。
由此可以推出,因为1这个图像是单个垂直笔画的结构是非常简单,所以VAE从数据的其他部分学习了该结构。例如,如果以没有太多弯曲的刚性方式书写,垂直笔画几乎包含在任何数字中,在图2几个的数字9。这可能已经为虚拟进化者学习结构的组成部分提供了数据。尽管这个实验中使用的虚拟环境是一个相当浅的具有三个隐藏层的虚拟环境,但它似乎仍然是一个层次模型,捕捉构成数据结构的特征。当观察图3中异常数字1的样本时,这是显而易见的,其中当1不存在时,9似乎具有高重构概率。异常数字9的低性能可以从类似的意义上理解。如图3所示,由于与其他数字相比,垂直笔画从垂直笔画中突出的部分较少,所以垂直笔画占9的很大一部分。此外,对于9,似乎一种特定的书写方式9(在数字9的中间有第二个水平笔画)似乎被检测为异常。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
机译: 通过基于前馈神经网络的变分自编码器生成综合布局模式
机译: 基于图形算法和存储装置的节点异常检测方法及装置
机译: 基于k近邻算法的系统异常检测方法