参考 Memory-augmented Deep Autoencoder for Unsupervised Anomaly D - 云+社区 - 腾讯云
深度自编码在异常检测中得到了广泛的应用。通过对正常数据的训练,期望自编码器对异常输入产生比正常输入更高的重构误差,以此作为识别异常的判据。然而,这一假设在实践中并不总是成立。有人观察到,有时自动编码器“概括”得很好,也能很好地重建异常,导致异常的漏检。为了减轻基于自编码器的异常检测的这个缺点,我们建议使用内存模块来增加自编码器,并开发一种改进的自编码器,称为内存增强自编码器,即MemAE。对于给定的输入,MemAE首先从编码器获取编码,然后将其作为查询来检索与重构最相关的内存项。在训练阶段,内存内容被更新,并被鼓励表示正常数据的原型元素。在测试阶段,学习记忆是固定的,从正常数据中选取少量记忆记录进行重构。因此,重建将趋向于接近一个正常的样本。从而增强异常的重构误差,用于异常检测。MemAE没有对数据类型的假设,因此适用于不同的任务。在各种数据集上的实验证明了该MemAE
具有良好的泛化性和较高的有效性。
异常检测是一项重要的任务,在许多领域都有重要的应用,如视频监控。无监督异常检测,在只给出正常数据样本的情况下,学习一个正常的剖面,然后将不符合正常剖面的样本识别为异常,由于缺乏人为的监督,这是一个挑战。值得注意的是,当数据点位于高维空间(即视频)中时,问题变得更加困难,因为对高维数据建模是出了名的具有挑战性的。
深度自编码器(Deep autoencoder, AE)是一种强大的工具,可以对无监督设置下的高维数据进行建模。它由编码器和解码器组成,前者用于从输入中获取压缩编码,后者用于从编码中重构数据。编码实质上是迫使网络提取高维数据典型模式的信息瓶颈。在异常检测的背景下,AE通常通过对正常数据进行重构误差最小化训练,然后将重构误差作为异常指标。正常输入的重构误差较小,因为与训练数据比较接近,而异常输入的重构误差较大。
然而,这一假设并不总是成立,有时AE可以很好地“概括”,它也可以很好地重建不正常的输入。假设异常带来更高的重建误差可能会以某种方式有问题因为没有训练样本异常和重建行为异常的输入应该是不可预测的。如果某些异常与正常的训练数据具有共同的组成模式(如图像的局部边缘),或者解码器对某些异常编码的解码能力“太强”,AE很有可能很好地重建异常。
为了减轻AEs的缺点,我们提出了用内存模块来增加深度自编码器,并引入了一种新的模型内存增强自编码器,即MemAE。对于给定的输入,MemAE并不直接将其编码输入解码器,而是将其作为查询来检索内存中最相关的项。然后将这些项聚合并传递到解码器。具体来说,上述过程是通过使用基于注意的内存寻址实现的。我们进一步建议使用一个可微的硬收缩操作符来诱导内存寻址权的稀疏性,这隐含地鼓励了内存项在特征空间中接近查询。
在MemAE的训练阶段,我们与编码器和解码器一起更新内存内容。由于稀疏的解决策略,鼓励MemAE模型优化和有效的使用有限数量的内存插槽,使内存记录典型的正常模式在正常训练数据来获得较低的平均重建错误(参见图3)。在测试阶段,学习记忆的内容是固定的,和重建将获得通过使用少量的正常记忆项目,作为输入编码的邻域。由于重构是在内存中获得正常的模式,所以它更接近于正常的数据。因此,如果输入的数据与正常数据不相似,重构误差往往会被突出显示,这就是一种异常。示意图如图1所示。所提出的MemAE不需要对数据类型进行假设,因此通常可以用于解决不同的任务。我们将提出的备忘录应用于不同应用的各种公共异常检测数据集。大量的实验证明模因具有良好的泛化性和较高的有效性。
在无监督异常检测中,只有正常样本作为训练数据。因此,处理该问题的自然选择是一类分类方法,如一类支持向量机和深层一类网络,它们试图学习正常样本周围的判别超平面。非监督聚类方法,如k-means方法和高斯混合模型(GMM),也被用来建立正常数据的详细剖面来识别异常。这些方法在处理高维数据时通常会遇到性能不佳的问题。
基于重构的方法假设仅在正常数据上学习的模型不能准确地表示和重构异常。不同的技术,如PCA方法和稀疏表示,被用来学习正常模式的表示。具体来说,稀疏表示方法联合学习字典和正常数据的稀疏表示来检测异常。受限特征表示限制了性能。最近的一些工作训练了用于异常检测的深度自动编码器。例如,使用基于结构能量的深度神经网络对训练样本进行建模。Zong等人提出将深度自编码器的编码特征和重构误差联合建模。虽然基于重构的方法取得了良好的效果,但由于潜在空间的表示方式设计不合理,使其性能受到限制。
针对关键应用场景,专门设计了一系列视频异常检测方法。Kim和Grauman使用混合的概率PCA (MPPCA)来模拟光流特征。Mahadevan等人通过混合动态纹理(MDT)对视频进行建模。Lu等人提出了一种基于多字典的高效稀疏编码方法。Zhao等人以在线方式更新字典。提出了基于深度学习的方法,利用空间和时间域的信息。Hasan等人利用卷积AE的重构误差来检测异常。Zhao等人提出了基于三维卷积的重建预测方法。Luo等人通过一个堆叠的RNN迭代更新稀疏系数来检测视频中的异常。Liu等人通过融合梯度损失、光流和对抗性训练等不同技术来训练帧预测网络。然而,这些方法缺乏一个可靠的机制来鼓励模型对异常产生较大的重建误差。
内存网络:
记忆增强网络因解决不同的问题而引起越来越多的兴趣。Graves等人使用外部记忆扩展神经网络的能力,其中基于内容的注意力被用于寻址记忆。考虑到记忆可以稳定地记录信息,Santoro等人使用记忆网络来处理一次性学习问题。外部存储器也被用于多模态数据的生成,以绕过模态崩溃问题并保留详细的数据结构。
提出的MemAE模型由三个主要组件组成:编码器(用于编码输入和生成查询)、解码器(用于重构)和内存模块(带有内存和相关的内存寻址操作符)。如图2所示,给定一个输入,编码器首先获得输入的编码。通过使用编码表示作为查询,内存模块通过基于注意的寻址操作符检索内存中最相关的项,然后将这些项交付给解码器进行重构。在训练过程中,对编码器和解码器进行了优化,使重构误差最小化。同时对存储器内容进行更新,以记录所编码的正常数据的原型元素。给定一个测试样本,该模型仅使用在内存中记录的有限数量的正常模式进行重构。因此,重构往往接近于正态样本,正态样本的重构误差较小,异常的重构误差较大,将作为异常检测的判据。
编码器用于表示信息潜在域中的输入。编码的表示形式作为查询执行,以检索内存中的相关项。在我们的模型中,编码器可以被视为查询生成器。对译码器进行训练,将检索到的记忆作为输入,对样本进行重构。
我们首先定义代表数据采样域,代表编码域。令代表编码器,代表解码器。给定一个样本,编码器将其转换成一个编码的表示;解码器训练成一个潜在表示的反向映射到域为:
和分别表示的参数编码器和解码器的参数。在提出的MemAE中,使用来检索相关的内存项;是使用检索到的项获得的。对于标准的AE模型,有,我们的方法是不可知的编码器和解码器的结构,可以专门为不同的应用选择。
在测试中,给定样本,我们使用‘2-范数的均方误差(MSE),即,来测量重建质量,作为异常检测的标准。
所述存储器模块包括用于记录所述原型编码模式的存储器和用于访问所述存储器的基于注意的寻址操作符。
内存设计成一个矩阵包含固定维度上个实值向量。对于变量,我们假定和具有相同的维度,并且使。使行向量代表M的第i行,,其中[N]代表从1到N的整数集。每个代表一个内存项。给定一个查询(例如,编码),记忆网络得到,依赖一个软寻址向量,如下
其中为行向量,其非负项之和为1,表示的第i项,权向量根据计算,如式(3)所示,访问内存需要寻址权。超参数定义了内存的最大容量。虽然为不同的数据集找到最优的不是件容易的事,但MemAE对的设置不敏感,这是幸运的(参见4.2节)。足够大的N可以很好地用于每个数据集。
在MemAE中,记忆被设计成显式地记录训练过程中的原型正常模式。我们将内存定义为内容可寻址内存,采用寻址方案,根据内存项和查询的相似性计算注意权值。如图1所示,我们通过softmax操作计算每个权值:
表示相似性度量。类似于[32],我们定义了作为余弦相似度:
如式(3)、(4)、(5)所示,内存模块检索与最相似的内存项,得到表示。由于内存大小的限制和稀疏寻址技术(在3.3.3节中介绍),每次只能寻址少量的内存项。因此,内存模块的有益行为可以解释如下。
在训练阶段,MemAE中的解码器被限制为仅使用很少数量的寻址内存项来进行重构,从而对内存项的有效利用提出了要求。因此,重构监督迫使记忆记录最具代表性的原型模式在输入正常模式。在图3中,我们可视化了经过训练的单个内存插槽,这表明每个单个内存插槽记录了训练数据中的原型正常模式。
在测试阶段,给定训练后的记忆,只能提取记忆中的正常模式进行重构。因此,正常样品可以很好地重建。相反,异常输入的编码将被检索到的正常模式所替代,从而导致异常的显著重构错误(参见图4中的可视化示例)。
如上所述,在内存中执行有限数量的正常模式重建有助于在异常情况下产生较大的重建误差。基于注意力的寻址往往接近这个自然的。然而,一些异常可能仍然有机会通过一个包含许多小元素的密集w的内存项的复杂组合来很好地重建。为了缓解这一问题,我们采用了硬收缩操作来促进的稀疏性:
表示第个条目的内存寻址权向量世行后收缩和收缩阈值表示。在式(6)中直接实现不连续函数的倒向并不容易。为了简单起见,考虑到w中的所有项都是非负的,我们使用连续ReLU激活函数将硬收缩操作重写为:
其中也被称为ReLU激活,是一个非常小的正标量。在实践中,设置阈值的值的区间可以渲染的结果。收缩后,我们通过让恢复正常。通过将得到潜在的表示法。
稀疏寻址鼓励模型使用更少但更相关的内存项来表示示例,从而在内存中学习更多信息表示。此外,类似于[43]的稀疏表示方法,鼓励稀疏的解决权重是有益的在测试中由于内存是训练适应稀疏w。鼓励稀疏还将缓解这一问题,异常样本可能相当重建与密集处理权重。与稀疏表示方法[43,24]相比,该方法通过一次有效的前向操作获得所需的稀疏,而不是迭代更新。
给定一个包含样本的数据集,让表示重构样本对应于每个训练样本。我们首先对每个样本进行重构误差最小化:
其中-范数用于测量重建误差。设为每个样本的内存寻址权值。为了进一步提高的稀疏性,除了Eq.(7)中的收缩操作外,我们还在训练中最小化上的稀疏调节器。考虑到的所有项都是非负的,且,我们最小化的熵:
式(7)中的硬收缩操作和熵损失式(9)共同促进了生成的寻址权的稀疏性。更详细的消融研究和讨论见4.4节。
结合式(8)和式(9)中的loss函数,我们将MemAE的训练目标构建为:
是一个hyper-parameter在训练。在实践中,导致理想在我们所有的实验结果。在训练过程中,通过反向传播和梯度下降优化更新内存M。在向后传递中,只有具有非零寻址权值的内存项的梯度可以非零。
在本节中,我们将验证提出的异常检测MemAE。为了证明该模型的通用性和适用性,我们对三个不同任务的五个数据集进行了实验。结果与不同的baseline模型和最先进的技术进行了比较。在前面的部分中,建议的MemAE应用于所有数据集。MemAE及其变体使用PyTorch[28]实现,并使用优化器Adam[15]进行训练,学习率为0.0001。我们使它们与VAE等其它编解码器模型具有相似的模型容量。
我们首先进行了检测离群值图像[31]的实验,并对两个图像数据集MNIST和CIFAR-10的性能进行了评估,这两个数据集都包含了属于10类的图像。对于每个数据集,我们通过从每个类中抽取图像作为正常样本,从其余类中抽取异常样本,构建10个异常检测(即一类分类)数据集。正常的数据被分割成训练和测试集,比例为2:1。按照[42,47]的设置,训练集只包含正常样本,与测试集没有重叠,异常命题控制在30%左右。原始训练数据的10%留作验证。
在本实验中,我们重点验证所提出的记忆模组,并将编码器与解码器做为纯卷积神经网路来执行。我们首先定义了Conv2(,,)表示一个二维卷积层,其中、、分别为kernel size、stride size和kernel数量。对于MNIST,我们使用三个卷积层来实现编码器:Conv2(1,2,16)-Conv2(3,2,32)-Conv2(3,2,64)。解码器实现为Dconv2(3,2,64)-Dconv2(3,2,32)-Dconv2(3,2,1),其中Dconv2为二维反褶积层。除了最后一个Dconv2外,每一层后面都有一个批量标准化(BN)[11]和ReLU激活[26]。这种设计适用于以下所有数据集。考虑CIFAR-10更高的数据的复杂性,我们使用的编码器和译码器大能力:Conv2 (3 2 64) -Conv2 (3 2 128) -Conv2 (3 2 128) -Conv2(3 2, 256)和Dconv2 (3 2 256) -Dconv2 (3 2 128) -Dconv2 (3 2 128) -Dconv2(3 2 3)。我们处理MNIST CIFAR-10灰色图像和RGB图像数据集,分别。MNIST和CIFAR-10的内存大小N分别设置为100和500。
我们比较该模型与几个传统和基于深度学习的一般异常检测方法作为基线,包括看到下面成了SVM (OCSVM),核密度估计(KDE),深变分autoencoder (VAE),深自回归模型生成PixCNN和深层结构能源模型(DSEBM)。具体来说,对于密度估计方法(如KDE和PixCNN)和基于重构的方法(如VAE和DSEBM),分别使用log-likelihood和重构误差来计算正则性评分。注意,为了与其他方法进行公平的比较,我们仅基于重建误差计算VAE的正则性评分。我们还与一些MemAE的基线变量进行了比较,以显示主要组件的重要性,包括antueocoder无记忆模块(AE)和MemAE的变体无稀疏收缩和熵损失(MemAE- nonspar)。在所有的实验中,AE、MemAE- nonspar和VAE使用相同的编码器和解码器,与完整的MemAE模型具有相似的能力。在测试中,我们将重构误差扩展到[0;作为识别异常的准则。在[25,24,1]之后,我们使用AUC (Area Under Curve)作为性能评估的度量,AUC是通过计算具有变化阈值的接收机工作特性(Receiver Operation Characteristic, ROC)下的面积得到的。表1显示了10个采样数据集的平均AUC值。
如表1所示,所提出的MemAE通常优于比较的方法。记忆增强模型明显优于无记忆的AE模型。采用稀疏寻址的MemAE模型得到了较好的结果。MNIST中的图像只包含简单的模式,即数字,易于建模。VAE利用简单的高斯分布对潜在空间进行建模,可以得到令人满意的结果。所有方法在MNIST上的性能都优于CIFAR-10,因为CIFAR-10中的图像具有更复杂的内容,并且在多个类上显示更大的类内方差,这导致了ACU的不平均。但是在相似容量的比较模型中,MemAE的性能优于竞争对手,证明了所提出的内存模块的有效性。
考虑到MNIST中的图像包含易于识别的模式,我们使用它来展示所提出的内存模块如何用于异常检测。
记忆学到了什么:
我们首先通过对单个内存插槽进行随机采样并对其进行解码,从而将内存从MNIST中学到的东西可视化。图3将学习到的MNIST数字“9”作为正常样本进行可视化处理。由于MemAE通常通过几个寻址项的组合来进行重构,因此解码后的单插槽会显得模糊和有噪声。然而,如图3(b)所示,记忆槽记录了正常训练样本的不同原型模式(即数字“9”)。
记忆如何增强重建
在图4中,我们可视化了在记忆增强下的图像重建过程。由于训练后的记忆只记录正常的原型模式,当输入异常为“9”时,训练后的MemAE将“5”重构为“5”,导致异常输入的重构误差显著。注意,MemAE重构的“5”与输入的“9”形状相似,因为内存模块检索最相似的正常模式。无记忆的声发射模型倾向于局部学习一些表征。因此,异常样本也可以很好地重建。
视频异常检测的目的是识别视频中的异常内容和移动模式,是视频监控中必不可少的一项工作。我们分别在UCSD-Ped2、CUHK Avenue和ShanghaiTech三个真实的视频异常检测数据集上进行了实验。具体来说,最新的基准数据集ShanghaiTech包含超过270,000个训练帧和超过42,000个测试帧(其中约17,000个异常帧),覆盖了13个不同的场景。在数据集中,除行人(如车辆)和剧烈运动(如打斗和追逐)外的物体被视为异常。
为了保持视频的时间信息,我们使用三维卷积实现了编码器和解码器来提取视频中的时空特征。因此,网络的输入是一个由16个相邻帧灰度叠加而成的长方体。编码器和解码器的结构设计为:Conv3(3,2,96)-Conv3(3,2,128)-Conv3(3,2,256)-Conv3(3,2,256)-Dconv3(3,2,256)-Dconv3(3,2,128)-Dconv3(3,2,1),其中Conv3和Dconv3分别表示三维卷积和反卷积。BN和ReLU的激活紧随每一层(最后一层除外)。设N = 2000。考虑到视频数据的复杂性,我们让每个记忆槽记录一个像素的特征,对应于视频片段的一个子区域。因此,内存是一个2000×256的矩阵。在测试中,每一帧的正态性是通过以其为中心的长方体的重构误差来评估的。在[9,24]之后,通过将误差归一化到[0,1]来得到第帧的异常分数:
式中,表示视频片段第帧的重构误差。值越接近0,说明该帧越有可能是异常帧。从图5可以看出,当视频帧中出现异常时,MemAE得到的正态性评分会立即下降。
由于视频数据的复杂性,许多没有特定设计的通用异常检测方法无法很好地应用于视频。显示该存储器模块的有效性,我们比较建议MemAE很多精心设计的基于重建的最先进的方法包括AE与2D和3D卷积(AE-Conv2D和AE-Conv3D),temporally-coherent稀疏编码方法(TST),一堆递归神经网络(StackRNN),许多视频异常检测基线。MemAE的变体也作为baseline进行比较。
表2显示了视频数据集上的AUC值。MemAE的结果比TSC和StackRNN要好得多,这两种方法也采用了稀疏正则化。与AE和MemAE-nonSpar的比较表明,采用稀疏寻址的内存模块是有好处的。图6显示了UCSD-Ped2中一个异常帧的重建误差。MemAE的错误地图明显突出了异常事件(车辆和自行车在人行道上移动),导致正常性得分较低。但AE能较好地重建异常,并产生一些随机误差。
与其他方法相比,本文提出的MemAE具有更好的或可比较的性能,而我们的模型解决了更一般的问题,可以灵活地应用于不同类型的数据。该方法仅利用重构误差,在对具体应用知识最少的情况下,就能获得较好的结果。即使与针对视频数据使用许多非重构技术的方法[22](即表2中的frame - pred)相比,如光流、帧预测、对抗性损耗等,所提出的MemAE的性能仍然具有可比性。请注意,我们的实验目的并不是在某些应用程序上追求最高的精度,而是为了演示AE(即MemAE)改进方案在一般异常检测问题上的优点。我们的研究与[22]是正交的,可以很容易地纳入他们的系统,以进一步提高性能。另一方面,[22]中的技术也可以用于所提议的MemAE。
Memory尺寸的鲁棒性:
我们使用UCSD-Ped2研究提出的MemAE对内存大小n的鲁棒性。我们使用不同的内存大小设置进行实验,并在图7中显示AUC值。给定一个足够大的内存大小,MemAE可以稳健地产生貌似合理的结果。
运行时间:
我们使用NVIDIA GeForce 1080 Ti图形卡对UCSDPed2视频数据集上的计算复杂度进行了实证研究。本文提出的MemAE平均每帧(即38帧)的视频异常检测时间为0.0262秒,与之前的先进的基于深度学习的方法(如使用0.04s的、使用0.02s的[24]和使用0.05s1的[36])相比,达到了标准或更快的速度。此外,与每帧0.0266s的基线AE模型相比,我们的内存模块(在MemAE中)几乎没有额外的计算时间(即每帧4×10−4秒)。
为了进一步验证该方法的通用性,我们在计算机视觉应用之外的一个广泛使用的网络安全数据集上进行了实验,即来自UCI知识库的KDDCUP99 10%数据集。按照[47]中的设置,原始数据集中标记为“攻击”的样本中80%被视为正常样本。每个样本都可以组织成一个具有120维[47]的向量。我们使用全层(FC)指出实现编码器和解码器FC(120年60)FC (60, 30)、FC (30、10)、FC(10, 3)和FC (3, 10)、FC (10、30)、FC (30、60)、FC(120),在FC (, )表示FC图层输入和输出大小和。预计最后一个,每个FC层是紧随其后的是一个双曲正切激活。该结构与[47]中的模型具有类似的容量。设,内存大小为50×3。
正如[42,47]所建议的,我们随机抽取50%的数据用于训练,其余的用于测试。只使用正常班的数据样本进行训练。在KDDCUP数据集上,我们将所提出的方法与之前最先进的方法进行了比较,包括OC-SVM、深度聚类网络(DCN)、DSEBM、DAGMM和MemAE的baseline变量。按照标准的[47]协议,使用20次运行后的平均精度、召回率和F1分数来评估这些方法。由于数据建模更加有效,DAGMM和所提出的模型具有良好的性能。该方法能显式记忆“攻击”样本的行为模式,具有较好的性能。
在前面的章节中,对MemAE及其变体,即AE和MemAE- nonspar的广泛比较已经证明了所提出方法的主要组成部分的重要性。在本节中,我们将进行进一步的消融研究,以详细研究其他不同的成分。
如前所述,我们使用两个分量来诱导内存寻址权的稀疏性,即在式(6)中定义的硬阈值收缩和在式(10)中定义的熵损失。我们做了实验,通过移除另一个组件来研究每个组件的重要性。表4记录了数据集UCSD-Ped2上的AUC。如表4所示,去掉收缩算子或熵损失都会使性能下降。没有硬收缩,模型不能直接鼓励测试中的稀疏性,这可能导致非稀疏内存寻址权值有太多的噪声。当训练不足的模型在训练初期产生未经优化的寻址权值时,熵损失起着至关重要的作用。
MemAE中的稀疏内存寻址派生出一种自动编码器的风格,从而导致编码器输出的稀疏性(激活)。我们因此进行一个简单的实验来比较和稀疏正则化的autoencoder MemAE编码的特性,这是直接通过最小化实现“-norm潜伏的压缩特性,即、训练期间,称为AE - ,这与MemAE共享相同的编码器和译码器。如表4所示,AE-的性能接近于MemAE-nonSpar,由于其稀疏性诱导正则化,其性能优于AE。然而,AE-仍然缺乏一个清晰的机制来鼓励对异常进行较大的重构误差,或者缺乏一个强大的模块来对正常样本的原型模式进行建模,导致其性能比MemAE和其他MemAE变体差。
为了提高基于非监督异常检测的自编码器的性能,提出了一种记忆增强自编码器。对于给定的输入,建议的MemAE首先使用编码器获取编码后的表示,然后使用编码作为查询来检索内存中最相关的模式进行重构。由于记忆训练用来记录典型的正态模式,所提出的MemAE可以很好地重构正态样本,并放大异常的重构误差,这使得重构误差成为异常检测的准则。通过对不同应用数据集的实验,验证了该方法的通用性和有效性。在未来,我们将研究如何使用寻址权进行异常检测。考虑到所提出的内存模块是通用的,并且不知道编码器和解码器的结构,我们将把它集成到更复杂的基本模型中,并将其应用到更有挑战性的应用中。