前言
一、引言
二、异常检测:问题的复杂性和挑战
1.主要问题复杂性
2.深度异常检测所面临的主要挑战
三、用深度异常检测应对挑战
1.预备工作
2.深度异常检测方法的分类
四. 深度学习的特征提取
1.预训练模型
2.特定的特征提取模型
五.学习常态的特征表征(特征提取器即分类器,即时连接同步训练的特征提取器和分类器)
1.通用规范特征学习
1.1 自动编码器。(特征提取器即分类器)
1.2 生成对抗网络。(AnoGAN,f-Ano-GAN,GANomaly)
1.3 预测性建模。(包预测)
1.4 自我监督的分类。
2 依赖于异常测量的特征学习
2.1 基于距离的测量。
2.2 基于单类分类的测量。
2.3 基于聚类的措施。
6 端到端异常评分学习
1 排名模型
2 先验驱动模型
3 Softmax可能性模型
4 端到端单类分类
异常检测,又称离群点检测或新颖性检测,几十年来一直是各个研究界持久而活跃的研究领域。几十年来,在各个研究领域都是一个持久而活跃的研究领域。仍然有一些独特的问题的复杂性和挑战需要先进的方法。
近年来,深度学习实现了异常检测。即深度异常检测,已经成为一个重要的方向。本文对深度异常检测的研究进行了全面的分类,涵盖了方法的三个高层次类别和11个细粒度类别的进展。我们回顾了它们的关键直觉、目标函数、基本假设、优势和劣势,并讨论了它们如何应对上述挑战。我们进一步讨论了一系列未来可能的机会和应对挑战的新视角。
异常检测,又称离群点检测或新颖性检测,是指检测那些明显偏离大多数数据实例的数据实例的过程。几十年来,异常检测一直是一个活跃的研究领域,早期的探索可以追溯到1960年代[52]。由于风险管理、合规、安全、金融监控、健康和医疗风险以及人工智能安全等广泛领域的需求和应用不断增加,异常检测发挥着越来越重要的作用,在数据挖掘、机器学习、计算机视觉和统计学等各个领域都有突出表现。
近年来,深度学习在学习复杂数据(如高维数据、时间数据、空间数据和图数据)的表达式方面显示出巨大的能力,推动了不同学习任务的边界。异常检测的深度学习,简称深度异常检测,旨在通过神经网络学习特征表征或异常得分,以达到异常检测的目的。大量的深度异常检测方法已经被引入,在解决各种实际应用中具有挑战性的检测问题时,显示出明显优于传统异常检测的性能。
这项工作的目的是对这一领域进行全面回顾。我们首先讨论了异常检测的问题性质和主要的未解决的挑战,然后系统地回顾了当前的深度方法及其解决这些挑战的能力,最后提出了一些未来的机会。作为一个热门领域,许多研究[2, 4, 16, 28, 53, 62, 178]都致力于对异常检测技术进行分类和回顾。然而,他们都只专注于传统的异常检测方法。与我们密切相关的一项工作是[26]。它对深度异常检测的一些实际应用进行了很好的总结,但只提供了一些非常高层次的技术分类概要,从中很难,甚至不可能获得对当前方法所采取的方法及其基本直觉的认识。
相比之下,本综述描述了当前深度检测方法的表述,以获得关于其直觉、内在能力和解决异常检测中一些基本未解决的挑战的弱点的关键洞察力。这形成了对问题性质和最先进技术的深刻理解,并带来了真正的开放机会。它也有助于解释为什么我们需要深度异常检测。总而言之,这项工作有以下五个主要贡献。
由于其独特的性质,异常检测呈现出与大多数分析和学习问题和任务不同的问题复杂性。本节总结了复杂异常数据中这种内在的复杂性和未解决的检测挑战。
与那些关于多数人的、有规律的或明显的模式的问题和任务不同,异常检测解决的是少数人的、不可预测的/不确定的和罕见的事件,这导致了所有(包括深层和浅层)检测方法的一些独特的问题复杂性。(总结为数量少、类型多,无规律,不可知)
上述复杂的问题性质导致了一些检测方面的挑战。一些挑战,如数据规模的可扩展性,近年来已经得到很好的解决,而以下问题基本上没有得到解决,深度异常检测在这方面可以发挥一些重要作用。
总结就是:缺少高性能、有效降维、少标签、抗噪声、复杂场景、可解释的异常检测方法。
相对来说,深度方法:
表1中列出了这一讨论的摘要。
深度神经网络利用线性/非线性函数的复杂组合,可以用计算图表示,以学习表达性的表征[49]。深度学习的两个基本构件是激活函数和层。
给定一个数据集X = {x1, x2, - - , x },其中x∈R,让Z∈R( ≪)是一个表示空间,那么深度异常检测的目的是学习一个特征表示映射函数(-) 。X ↦→Z或异常得分学习函数(-)。X ↦→R的方式,在或函数产生的空间中,异常情况可以很容易地从正常数据实例中区分出来,其中和都是一个神经网络启用的映射函数,具有∈N个隐藏层,其权重矩阵Θ={M1,M2,--,M}。在学习特征映射(-)的情况下,需要额外的步骤来计算每个数据实例在新的表示空间中的异常得分,而(-)可以用原始数据输入直接推断异常得分。较大的输出表明异常程度较大。
为了对该领域有一个全面的了解,我们引入了一个分层分类法,从建模的角度将深度异常检测方法分为三大类和11个细化的类别。图1显示了方法分类学的概况。具体来说,深度异常检测包括三个概念范式--特征提取的深度学习、规范性的特征表示学习和端到端的异常得分学习这三个范式的程序见图2。
在接下来的三节中,我们将详细回顾这三种范式。
这类方法旨在利用深度学习从高维和/或非线性可分离的数据中提取低维特征表示,用于下游的异常检测。特征提取和异常评分是完全不相干的,相互独立。因此,深度学习组件仅作为降维工作。形式上,该方法可以表示为z = (x;Θ), (1) 其中 : X ↦→Z是一个基于深度神经网络的特征映射函数,X∈R,Z∈R,通常 ≫。然后将与特征映射无关的异常评分方法应用于新空间,计算异常评分。与异常检测中流行的降维方法相比,如主成分分析(PCA)[21, 140, 180]和随机投影[80, 112, 123],深度学习技术在提取富含语义的特征和非线性特征关系方面已经表现出相当好的能力[14, 49]。假设。深度学习模型提取的特征表征保留了有助于将异常情况与正常实例区分开来的鉴别性信息。
一种研究思路是直接使用流行的预训练的深度学习模型,如AlexNet[75]、VGG[143]和ResNet[58],来提取低维特征。这条路线在复杂的高维数据(如图像数据和视频数据)的异常检测中得到了探索。
这一类的另一条研究路线是明确地训练一个深度特征提取模型,而不是为下游的异常评分训练一个预训练模型[44, 65, 163, 168]。
优点。这种方法的优点如下。
(i) 大量的最先进的(预训练的)深度模型和现成的异常检测器是现成的。
(ii) 深度特征提取提供了比流行的线性方法更强大的降维功能。
(iii) 鉴于深度模型和检测方法的公开性,它很容易实现。
缺点。其缺点如下。
(i) 完全脱节的特征提取和异常评分往往导致次优的异常评分。(两个路线都有的缺点)
(ii) 预先训练的深度模型通常仅限于特定类型的数据。(预训练模型的缺点)
针对的挑战。这类方法将高维/非独立数据投射到大幅低维空间,使现有的异常检测方法能够在更简单的数据空间中工作。低维空间通常有助于揭示隐藏的异常现象,并减少假阳性(CH2)。然而,应该注意的是,这些方法可能不会为异常检测保留足够的信息,因为数据投影与异常检测是完全脱钩的。此外,这种方法允许我们利用多种类型的特征,学习语义丰富的检测模型(例如,[65, 66, 163]中各种预定义的图像/视频特征),这也有助于减少误报(CH1)。
这一类的方法以某种方式将特征学习与异常评分结合起来,而不是像上一节那样将这两个模块完全解耦。这些方法一般分为两类:通用特征学习和依赖异常测量的特征学习。
这类方法通过优化通用特征学习目标函数来学习数据实例的表征,该目标函数主要不是为异常检测而设计的,但是学到的表征仍然可以增强异常检测的能力,因为它们被迫捕捉一些关键的基本数据规律。形式上,这个框架可以表示为{Θ∗,W∗}= arg min Θ, W Σ︁ x∈X ℓ (x;Θ)。 W , (2) x = (x, Θ∗ ,W∗ ), (3) 其中将原始数据映射到表示空间Z,的参数为W是一个替代学习任务,在Z空间操作,专门用于强制学习基础数据规则性。ℓ是相对于基础建模方法的损失函数,而是一个评分函数,利用和来计算异常得分。这种方法包括由几个角度驱动的方法,包括数据重建、生成模型、可预测性模型和自监督分类。可预测性建模和自监督分类都是建立在自监督学习方法的基础上,但它们有不同的假设、优势和缺陷,因此要分别进行审查。
这类方法旨在学习一些低维的特征表示空间,在这些空间上,给定的数据实例可以被很好地重建。这是一种广泛使用的数据压缩或降维技术[61, 69, 150]。在异常检测中使用这种技术的启发式方法是,学习的特征表征要强制学习数据的重要规律性,以最小化重建误差;异常现象很难从产生的表征中重建,因此有很大的重建误差。
假设。与异常情况相比,正常实例可以更好地从压缩的空间中进行重组。自动编码器(AE)网络是这个类别中常用的技术。一个AE由一个编码网络和一个解码网络组成。编码器将原始数据映射到低维特征空间,而解码器则试图从投影的低维空间恢复数据。这两个网络的参数是用一个重建损失函数来学习的。一个瓶颈网络架构通常被用来获得比原始数据更低的维度表示,这迫使模型保留在重建数据实例中的重要信息。为了使整体重建误差最小化,要求保留的信息尽可能与主导实例相关,如正常实例。因此,偏离大多数数据的异常现象等数据实例的重建效果很差。因此,数据重建误差可以直接作为异常得分。这种方法的基本表述如下。 z = (x;Θ ), ˆx = (z;Θ ), (4) {Θ∗ , Θ∗ } = arg min Θ ,Θ Σ︁ x∈X x - (x;Θ ); Θ 2 , (5) x = x - (x; Θ∗ ) 。 Θ∗ 2 , (6) 其中是具有参数Θ的编码网络,而是具有参数Θ的解码网络。编码器和解码器可以共享相同的权重参数,以减少参数并使学习正规化。x是x的基于重构误差的异常得分。
几种类型的正则化自动编码器已被引入,以学习更丰富和更有表现力的特征表示[38, 95, 128, 153]。
AE也被广泛用于检测除表格数据以外的其他数据的异常情况,如序列数据[91]、图形数据[37]和图像/视频数据[163]。一般来说,AEs有两种适应那些复杂数据的方式。
优点。基于数据重建的方法的优点如下。
(i) AE的想法是直接的,而且对不同类型的数据是通用的。
(ii) 可以利用不同类型的强大AE变体来进行异常检测。
缺点。它们的缺点如下。
(i) 学习到的特征表征可能会因为训练数据中不常见的规律性和异常值的存在而产生偏差。
(ii) 数据重建的目标函数被设计为降维或数据压缩,而不是异常检测。因此,产生的表征是对基本规律性的通用总结,没有为检测异常情况进行优化。
针对的挑战。不同类型的神经网络层和架构可以在AE框架下使用,使我们能够检测高维数据的异常,以及非独立数据,如归属图数据[37]和多变量序列数据[91, 97](CH2)。如果学习到的表征更具表现力,这些方法可能会比建立在手工制作的特征上的传统方法减少误报(CH1)。AE通常容易受到训练数据中出现的数据噪声的影响,因为它们可以被训练成记住这些噪声,从而导致严重的过拟合和异常现象的小的重建错误。RPCA的思想可以被用于AE中,以训练更稳健的检测模型[175](CH4)。
基于GAN的异常检测在[138]中早期使用后,迅速成为一种流行的深度异常检测方法。这种方法通常旨在学习生成网络的潜伏特征空间,从而使潜伏空间很好地捕捉到给定数据背后的规范性。然后,真实实例和生成实例之间的某种形式的残差被定义为异常得分。假设。在GANs中,正常的数据实例可以比从生成网络的潜在特征空间中生成的异常数据更好。
多年来,还有一些其他的GAN被引入,如Wasserstein GAN[10]和Cycle GAN[177]。它们可用于进一步提高上述方法的异常检测性能,如用Wasserstein GAN[137]代替标准GAN。
另一条相关的研究路线是对抗性地学习端到端单类分类模型,这被归入端到端异常得分学习框架,并在第6.4节讨论。
优点。这些方法的优势如下。
(i) GANs在生成现实实例方面表现出卓越的能力,特别是在图像数据上,使人们能够检测到从潜在空间中重构出来的异常实例。
(ii) 大量现有的基于GAN的模型和理论[32]可被用于异常检测。劣势。
它们的缺点如下。
(i) GANs的训练可能存在多种问题,如无法收敛和模式崩溃[99],这导致基于GANs的异常检测模型的训练存在较大困难。
(ii) 生成器网络可能会被误导,产生正常实例流形以外的数据实例,特别是当给定数据集的真实分布很复杂或训练数据包含意外的异常值时.
(iii) 基于GANs的异常得分可能是次优的,因为它们是建立在生成器网络的基础上,目标是数据合成而不是异常检测。(个人认为这个应该是最优的,因为异常检测本来就是无监督的,并不存在一个最优,异常检测就是检测不在正常分布里的样本,因此只要能够捕获正常分布,应当认为是最优的)
针对的挑战。与AE类似,基于GAN的异常检测能够通过检查从学到的低维潜伏空间(CH2)的重建来检测高维的异常。当潜空间保留了重要的异常识别信息时,它有助于提高检测精度,超过原始数据空间(CH1)。
基于可预测性建模的方法通过预测当前的数据实例来学习特征表示,使用时间窗口内以前的实例的表示作为背景。在本节中,数据实例被称为序列中的单个元素,例如,视频序列中的视频帧。这种技术被广泛用于序列表示学习和预测[63, 82, 98, 146]。为了实现准确的预测,表征被强制要求在给定的序列长度内捕捉时间/序列和复发性依赖。正常的实例通常很好地遵守这种依赖关系,可以很好地预测,而异常的实例往往违反这些依赖关系,是不可预测的。因此,预测误差可以用来定义异常点的分数。假设。正常实例在时间上比异常实例更可预测。
这个方向的另一条研究路线是基于自回归模型[50],该模型假设序列中的每个元素都线性地依赖于之前的元素。
优点。这类方法的优点如下。
(i) 一些序列学习技术可以适应并纳入这种方法中。
(ii) 这种方法能够学习不同类型的时间和空间依赖性。
缺点。其缺点如下。
(i) 这种方法只限于序列数据的异常检测。
(ii) 顺序预测在计算上很昂贵。
(iii) 由于其基本目标是顺序预测而不是异常检测,因此学到的表征对于异常检测可能是次优的。
针对的挑战。该方法特别设计用于学习具有表现力的与时间相关的低维表征,这有助于解决高维和/或时间数据集中异常检测的假阳性问题(CH1和CH2)。这里的预测是以一些经过的时间实例为条件的,所以这类方法能够检测出。
这种方法通过建立自我监督的分类模型来学习正常性的表征,并将与分类模型不一致的实例识别为异常。这种方法根植于基于交叉特征分析或特征模型的传统方法[64, 105, 149]。这些浅显的方法通过它们与一组预测模型的一致性来评估数据实例的规范性,每个模型都会根据其他特征的其余部分来学习预测一个特征。
测试实例的一致性可以通过平均预测结果[64]、基于对数损失的惊奇[105]、或给定所有特征的分类/回归模型的二元决定的多数投票[149]来衡量。与这些专注于表格数据并使用原始数据建立特征模型的研究不同,基于深度一致性的异常检测专注于图像数据并通过使用基于特征转换的增强数据建立预测模型。为了有效地辨别转换后的实例,分类模型被强制要求学习对描述训练数据中呈现的实例的基本模式非常重要的特征。因此,正常实例通常与分类模型有更强的一致性。假设。正常实例比异常实例对自监督分类器更一致。
他们的结果表明,基于负熵的异常得分一般比其他两种策略表现得更好。
优点。基于深度一致性的方法的优点如下。
(i) 它们在无监督和半监督的情况下都能很好地工作。异常评分是以梯度大小及其更新的一些内在属性为基础的。
缺点。它们的缺点如下。
(i) 特征转换操作通常依赖于数据。上述转换操作只适用于图像数据。
(ii) 虽然分类模型是以端到端方式训练的,但基于一致性的异常分数是在分类分数的基础上得出的,而不是优化中的一个综合模块,因此它们可能是次优的。针对的挑战。这种方法学到的常态性的表达式低维表征有助于比原始的高维空间(CH1和CH2)更好地检测异常情况。由于自监督分类器中呈现的异常和正常实例之间的一些内在差异,这种方法也能够在无监督的环境下工作[157],对训练数据中的异常污染表现出良好的稳健性(CH4)。
依赖于异常测量的特征学习旨在学习专门针对某一特定的现有异常测量而优化的特征表示。从形式上看,这组方法的框架可以表示为{Θ∗,W∗}= arg min Θ, W Σ︁ x∈X ℓ (x;Θ)。 W , (22) x = (x;Θ∗);W∗ , (23) 其中是一个在表示空间上操作的现有异常评分措施。请注意,是否可能涉及可训练的参数W,取决于所使用的异常度量。与公式(2-3)中的通用特征学习方法不同,该方法在获得学习到的表征后根据一些启发式方法计算异常得分,该研究思路将现有的异常度量纳入特征学习的目标函数中,专门针对优化特征表征。下面我们回顾一下专门为三种流行的异常度量设计的表征学习,包括基于距离的度量、单类分类度量和基于聚类的度量。
深度基于距离的异常检测旨在学习专门为特定类型的基于距离的异常测量而优化的特征表示。基于距离的方法简单明了,易于实施。已经有许多有效的基于距离的异常措施被引入,例如,DB异常值[72, 73],-近邻距离[125, 126],平均-近邻距离[9],相对距离[173],以及随机近邻距离[116, 144]。这些传统的基于距离的异常措施的一个主要限制是,由于维度的诅咒,它们不能在高维数据中有效地工作。由于基于深度距离的异常检测技术在应用距离度量之前将数据投射到低维空间,它可以很好地克服这一限制。
假设。异常现象分布在离其最近的邻居很远的地方,而正常实例位于密集的邻域。这种方法首先在[112]中进行了探索,其中基于随机邻居距离的异常测量[116, 144]被用来推动从超高维数据中学习低维表示。其关键思想是,对表征进行优化,使随机子样本中的伪标签异常现象的近邻距离大大大于伪标签正常实例的近邻距离。伪标签是由一些现成的异常检测器生成的。设S∈X为从数据集X中随机抽取的数据实例子集,A和N分别为伪标签的异常实例集和正常实例集,X=A∪N,∅=A∩N,其损失函数建立在铰链损失函数上[130] 。query = 1 |X| Σ︁ x∈A,x′∈N max 0, + (x′, S;Θ) - (x, S;Θ) , (24) 其中 是一个预定义的常数,用于由(x,S。 Θ),它是一个在表示空间中操作的随机近邻距离函数。 (x, S;Θ) = min x′∈S (x;Θ), (x′;Θ) 2. (25) 使公式(24)中的损失最小化,保证了在投影的表示空间中,异常现象的随机近邻距离至少要比正常实例的近邻距离大。在评估阶段,公式(25)中的随机距离被直接用来获得每个测试实例的异常得分。
按照这种方法,我们也可以通过用其他措施,如近邻距离[126]或平均近邻距离[9]来代替公式(25),为其他基于距离的措施得出类似的表在评估阶段,((x;Θ∗),′(x))被用来计算异常得分。
优点。这类方法的优点如下。
(i) 基于距离的异常是直截了当的,并且在文献中有着丰富的理论支持。因此,由于在以前的相关工作中建立了坚实的基础,基于距离的深度异常检测方法可以有很好的基础。
(ii) 它们在低维表示空间中工作,可以有效地处理传统的基于距离的异常措施所不能解决的高维数据。
(iii) 它们能够学习专门为自己定制的表征。
缺点。它们的缺点如下。
(i) 大多数基于距离的异常测量所涉及的大量计算可能是将基于距离的异常测量纳入表征学习过程的一个障碍。
(ii) 它们的能力可能被基于距离的异常测量的固有弱点所限制。
针对的挑战。这种方法能够学习为现有的基于距离的异常措施量身定做的低维表示,解决了基于距离的检测中臭名昭著的维度诅咒[178](CH1和CH2)。如[112]所示,可以设计一个适应性的三重损失,以利用少数标记的异常例子来学习更有效的常态表示(CH3)。受益于伪异常标记,方法[112, 155]对以下情况也很稳健。
这类方法旨在学习为后续基于单类分类的异常检测定制的特征表示。一类分类被称为学习一组数据实例的描述以检测新实例是否符合训练数据的问题。它是异常检测中最流行的方法之一[101, 131, 139, 148]。大多数单类分类模型受到支持向量机(SVM)[31]的启发,如两个广泛使用的单类模型:单类SVM(或-SVC)[139]和支持向量数据描述(SVDD)[148]。这里的一个主要研究方向是学习专门为这些传统的单类分类模型优化的表征。这是本节的重点。另一条路线是学习一个端到端的对抗性单类分类模型,这将在第6.4节中讨论。假设。所有的正常实例都来自于一个(抽象的)类,并且可以用一个紧凑的模型来概括,而异常情况并不符合这个模型。
有许多研究致力于将单类SVM与神经网络相结合[27, 104, 161]。传统的单类SVM是学习一个超平面,使训练数据实例和原点之间的余量最大化。深度单类SVM的关键思想是,从神经网络支持的低维表示空间而不是原始输入空间中学习单类超平面。让z = (x。 Θ),那么[27, 104, 161]中关键思想的通用表述可以表示为min ,Θ,w 12 | |Θ| |2 + 1 Σ︁ =1 max 0。 - w⊺z - , (27) 其中是边际参数,Θ是表示网络的参数,而w⊺z(即。 e., w⊺(x;Θ))取代原来的点积w,Φ(x)满足(x , x ) = Φ(x ), Φ(x )。这里Φ是一个RKHS(Reproducing Kernel Hilbert Space)相关的映射,(-, -)是一个核函数;是一个超参数,可以看做是训练数据中异常点的分数的上限。任何具有 - w⊺z > 0的实例都可以被报告为异常点。
这种提法带来两个主要好处。
(i)它可以利用(预训练的)深度网络来学习更具表现力的特征,用于下游的异常检测;
(iii)它还有助于消除核函数中计算昂贵的配对距离计算。如[104, 161]所示,AE中的重建损失可以被添加到公式(27)中,以增强表征z的表达能力。如[124]所示,许多核函数可以用随机傅里叶特征进行近似。因此,在w⊺z之前,可以将某种形式的随机映射ℎ应用于z以产生傅里叶特征,从而得到w⊺ℎ(z),这可能会进一步改善单类SVM模型。
另一条研究路线是研究SVDD的深度模型[132, 133]。SVDD的目的是学习一个最小的超平面,其特征是中心c和半径,使球体包含所有训练数据实例,即。min ,c, 2 + 1 Σ︁ =1 (28) s.t. |Φ(x ) - c| |2 ≤ 2 + , ≥ 0, ∀. (29)与深度单类SVM类似,深度SVDD[132]也旨在利用神经网络将数据实例映射到最小体积的球体中,然后采用铰链损失函数来保证球体中心和投影实例之间的余量。特征学习和SVDD目标可以通过最小化以下损失来共同训练:min ,Θ 2 + 1 Σ︁ =1 max{0, | | (x ;Θ) - c| |2 - 2 } + 2 | |Θ| |2。(30) 在无监督的情况下,假设训练数据包含一小部分的异常污染。在半监督环境下,损失函数可以简化为min Θ 1 | (x ;Θ) - c| |2 + 2 | Θ| |2, (31)这直接使训练数据实例的表示与中心c之间的平均距离最小。
优点。这类方法的优点如下。
(i) 基于一类分类的异常现象在文献中得到很好的研究,为基于一类分类的深度方法提供了坚实的基础。
(ii) 表征学习和单类分类模型可以统一起来,以学习量身定做的、更优化的表征。
(iii) 它们使用户免于在传统的单类模型中手动选择合适的核函数。
缺点。它们的缺点如下。
(i) 单类模型在正常类中具有复杂分布的数据集中可能不起作用。
(ii) 检测性能取决于基于单类分类的异常措施。
针对的挑战。这类方法通过学习为单类分类模型优化的低维表示空间来提高检测精度(CH1和CH2)。这些方法可以利用少量标记的正常和异常数据[133]来学习更有效的一类描述模型,它不仅可以检测已知的异常,还可以检测新的异常类别(CH3)。
基于聚类的深度异常检测旨在学习表征,使异常现象明显偏离新学习的表征空间中的聚类。聚类和异常检测的任务自然是相互联系的,所以已经有大量的研究致力于使用聚类结果来定义异常,例如,聚类大小[67],与聚类中心的距离[59],聚类中心之间的距离[68],以及聚类成员[141]。基于高斯混合模型的异常检测[43, 94]也被纳入这一类别,因为它与聚类有一些内在的关系,例如,高斯混合模型(GMM)中的似然拟合对应于数据实例与高斯聚类/组件中心的距离的聚合[2]。
假设。正常实例比异常实例对聚类有更强的依附性。深度聚类,旨在学习为特定聚类算法量身定做的特征表示,是这种异常检测方法最关键的组成部分。近年来,许多研究都探讨了这个问题[25, 36, 47, 151, 162, 165, 166]。主要的动机是由于聚类方法的性能高度依赖于输入数据的事实。学习专门为聚类算法定制的特征表示可以很好地保证其在不同数据集上的性能[5]。
一般来说,这里有两个关键的直觉。
(i)好的表征可以实现更好的聚类,好的聚类结果可以为表征学习提供有效的监督信号;(
ii)由于聚类算法的基础假设不同,为一种聚类算法优化的表征不一定对其他聚类算法有用。
深度聚类方法通常包括两个模块:在前向过程中进行聚类,在后向过程中使用聚类分配作为伪类标签学习表征。
其损失函数往往是最关键的部分,一般可以表述为ℓclu (x;Θ)。 W , + ℓaux (X), (32) 其中ℓclu是聚类损失函数,其中是以Θ为参数的特征学习者,是以W为参数的聚类分配函数,代表由聚类产生的伪类标签。ℓaux是一个非聚类损失函数,用于对学习到的表征施加额外的约束;和是两个超参数,用于控制这两个损失的重要性。
ℓclu可以用均值损失[25, 162]、光谱聚类损失[151, 166]、聚集聚类损失[165]或GMM损失[36]进行实例化,使目标聚类算法的表征学习得以实现。ℓaux通常与基于自动编码器的重建损失[47, 166]进行实例化,以学习稳健的和/或局部结构保留的表征。在深度聚类之后,所产生的函数中的聚类分配可以被用来计算基于[59, 67, 68, 141]的异常分数。然而,需要注意的是,如果训练数据被异常污染,深度聚类可能会被异常现象所偏离。因此,上述方法可以应用于训练数据仅由正常实例组成的半监督环境中。在无监督环境下,需要在ℓclu和/或ℓaux中加入一些额外的约束条件,以消除潜在的异常现象的影响。前面提到的深度聚类方法主要是学习最优的聚类结果。尽管他们的聚类结果适用于异常检测,但学习到的表征可能不能很好地捕捉到异常现象的异常性。重要的是利用聚类技术来学习表征,使异常现象对聚类的依附性明显弱于正常实例。
这种类型的方法的一些有希望的结果显示在[83,179]中,他们的目标是为基于GMM的模型学习表征,并对表征进行优化以突出异常情况。这两个研究的一般形成与公式(32)相似,ℓclu和ℓaux分别被指定为GMM损失和基于自动编码器的重建损失,但为了学习异常的偏离表征,他们将一些基于重建误差的手工制作的特征与自动编码器的学习特征连接起来,共同优化组合特征。由于基于重建误差的手工制作的特征捕捉到了数据的规范性,所产生的表征比其他深度聚类方法所产生的表征更适合于异常检测。
优点。基于深度聚类的方法的优势如下。
(i) 可以利用一些深度聚类方法和理论来支持异常检测的有效性和理论基础。与传统的基于聚类的方法相比,基于深度聚类的方法学习了专门优化的表征,有助于比在原始数据上更容易发现异常,特别是在处理复杂的数据集时。
劣势。它们的缺点如下。
(i) 异常检测的性能在很大程度上取决于聚类的结果。
(ii) 聚类过程可能被训练数据中被污染的异常现象所偏离,这反过来又导致了不太有效的表示。
针对的挑战。基于聚类的异常测量方法适用于新学习的数据输入的低维表征;当新的表征空间保留了足够的识别信息时,深度方法可以达到比原始数据空间更好的检测精度(CH1和CH2)。一些聚类算法对异常值很敏感,所以当给定的数据被异常值污染时,深度聚类和随后的异常检测在很大程度上会被误导。使用来自自动编码器重建错误的手工特征的深度聚类[179]可能有助于学习更多关于污染的稳健模型(CH4)。
这一研究方向旨在以端到端方式学习标量异常评分。与依赖异常度量的特征学习相比,这类方法中的异常评分不依赖于现有的异常度量;它有一个直接学习异常评分的神经网络。通常需要新的损失函数来驱动异常评分网络。从形式上看,这种方法旨在学习一个端到端的异常得分学习网络:(-;Θ):X ↦→R。底层框架可以表示为 Θ∗ = arg min Θ Σ︁ x∈X ℓ (x;Θ) , (33) x = (x; Θ∗)。(34) 与第5.1节中那些使用某种启发式方法在获得所学表征后计算异常分数的方法不同,这一类的方法同时学习特征表征和异常分数。这大大优化了异常得分和/或异常排名。
从这个角度来看,它们与第5.2节中的方法有一些相似之处。然而,依赖异常度量的特征学习方法往往受限于所纳入的异常度量的固有缺点,而这里的方法没有这样的缺点;它们也代表了设计模型的两个完全不同的方向:一个侧重于如何综合现有的异常度量和神经网络模型,而另一个侧重于设计新的损失函数来直接学习异常分数。下面我们回顾一下这一类的四个主要方法:排序模型、先验驱动模型、softmax似然模型和端到端单类分类模型。这个框架的关键是将顺序或判别信息纳入异常评分网络。
这组方法旨在直接学习一个排名模型,这样就可以根据与异常的绝对/相对排序关系相关的可观察的序数变量对数据实例进行排序。异常评分神经网络是由可观察的序数变量驱动的。
假设。存在一个可观察的序数变量来捕捉某些数据的异常性。这种方法的一个研究思路是设计基于序数回归的损失函数来驱动异常评分神经网络[114, 117]。
优点。基于模型的深度排名方法的优点如下。
(i) 异常得分可以直接用合适的损失函数进行优化。
(ii) 它们通常通过对异常和正常实例之间的顺序强加一个弱的假设来摆脱对异常的定义。
(iii) 这种方法可以建立在成熟的排名技术和理论上,如学习排名[85, 87, 158]。
劣势。其缺点如下。
(i) 在这些方法中至少需要某种形式的标记的异常情况,这可能不适用于没有这种标记的异常情况的应用。[117]中的方法是完全无监督的,并获得了一些有希望的性能,但与半监督方法相比仍有很大差距。
(ii) 由于这些模型是专门用来检测少数已标记的异常情况的,它们可能无法推广到未见过的异常情况,这些异常情况表现出与已标记的异常情况不同的异常特征。
针对的挑战。使用伪标签或噪声类标签等弱监督,可以提供一些可疑异常的重要知识,使学习更具表现力的低维表示空间和更好的检测精度(CH1,CH2)。MIL方案[145]和成对关系预测[114]提供了一种简单的方法,将粗粒度/有限的异常标签纳入检测模型学习中(CH3)。更重要的是,端到端异常得分学习通过反向传播激活权重或异常得分的梯度来定位造成大的异常得分的特征,提供了直接的异常解释[117](CH6)。此外,[114, 117]中的方法在有异常污染或噪声标签的数据中也能很好地工作(CH4)。
这种方法使用先验分布来编码和驱动异常分数的学习。由于异常分数是以端到端的方式学习的,所以先验可以施加在内部模块或分数学习函数的学习输出(即异常分数)上。假设。强加的先验捕捉了数据集的基本(非)正态性。
优点。先验驱动的模型的优点如下。(i) 异常得分可以在给定的先验中直接优化。(ii) 它提供了一个灵活的框架,可以将不同的先验分布纳入到异常得分学习中。不同的贝叶斯深度学习技术[156]可以适用于异常检测。(iii) 与其他方法相比,先验也可以产生更多可解释的异常分数。缺点。它们的缺点如下。(i) 要为不同的异常检测应用场景设计一个普遍有效的先验,即使不是不可能,也是很困难的。(ii) 如果先验不能很好地拟合基础分布,模型的工作效果可能会降低。针对的挑战。先验赋予模型学习不同复杂数据的知情低维表示的能力,如高维数据和连续数据(CH1和CH2)。通过对异常得分施加先验,偏差网络方法[115]在利用有限的标记异常数据来增强正常性和异常性的表示方面显示出良好的性能,大大提升了检测召回率(CH1 & CH3)。这里的检测模型是由异常评分函数的先验分布驱动的,在训练数据中存在异常污染的数据中工作良好(CH4)。
这种方法旨在通过最大化训练数据中事件的可能性来学习异常得分。由于异常实例和正常实例分别对应于罕见和频繁的模式,从概率的角度来看,正常实例被认为是高概率事件,而异常事件则容易成为低概率事件。因此,事件可能性的负值可以被自然地定义为异常得分。
优点。基于softmax模型的方法的优点如下。(i) 不同类型的交互作用可以被纳入到异常得分的学习过程中。(ii) 异常得分是忠实于我们要捕捉的特定异常交互的优化。缺点。其缺点如下。(i) 当每个数据实例中的特征/元素数量较多时,交互作用的计算可能非常昂贵,即对于三阶的特征/元素的交互作用,我们在每个实例中有()的时间复杂性。(ii) 异常得分的学习在很大程度上依赖于负样本的生成质量。针对的挑战。这类方法的表述为学习具有异质数据源的数据集的低维表征提供了一个很好的方法(CH2和CH5)。学习到的表征通常能从不同的数据源中捕捉到更多的正态性/非正态性信息,因此能比传统方法更好地检测(CH1)。
这类方法旨在训练一个单类分类器,该分类器能够以端到端方式学习辨别给定实例是否正常。与第5.2.2节中的方法不同,这种方法不依赖于任何现有的单类分类措施,如单类SVM或SVDD。
这种方法的出现主要是由于GANs和单类分类概念的结合,即对抗性学习单类分类。其关键思想是学习一个正常实例的单类判别器,使其能够很好地将这些实例与对抗性生成的伪异常现象区分开来。这种方法也与第5.1.2节中的基于GAN的方法有很大不同,因为有两个关键的区别。
首先,基于GAN的方法旨在学习一个生成分布,以最大限度地接近真实的数据分布,实现一个生成模型,很好地捕捉训练中正常实例的规范性;而本节的方法旨在优化一个判别模型,将正常实例与对抗性生成的边缘实例分开。
其次,基于GAN的方法根据真实实例和相应的生成实例之间的残差来定义异常得分,而这里的方法直接使用判别器来对异常进行分类,即判别器作为公式(33)中的。
本节与第5.1.2节和第5.2.2节分开,以强调上述差异。
假设。(i) 近似于异常的数据实例可以被有效地合成。(ii) 所有的正常实例都可以由一个判别性的单类模型来总结。对抗性学习单类(ALOCC)分类的想法首次在[135]中研究。其关键思想是训练两个深度网络,其中一个网络被训练为单类模型,将正常实例与异常实例分开,而另一个网络被训练为增强正常实例并产生扭曲的异常值。这两个网络通过GANs方法进行实例化和优化。一类模型建立在判别器网络的基础上,生成器网络则是基于去噪AE[153]。AE-empower GAN的目标定义为min AE max (,) = Ex∼X log(x) + Eˆx∼ ˆX log 1 - AE(ˆx) 。(45) 其中 ˆX表示被高斯噪声破坏的X的数据分布,即。 e., ˆx = x + n,n ∼ N(0, 2I)。这个目标与AE中的以下数据构造误差共同优化。ℓae = ∥x - AE(ˆx) ∥2。(46) 公式(45)中的直觉是,AE可以很好地重建(甚至增强)正常实例,但它会被输入的异常值所迷惑,从而产生扭曲的异常值。通过最小优化,判别器学会了比使用原始数据实例更好地从异常值中判别正常实例。因此,AE(ˆx)可以直接用于检测异常值。在[135]中,异常值是从正常实例所来自的类别之外的一些类别中随机抽取的。
然而,像[135]中那样在给定的训练数据之外获得参考离群值,在许多领域可能是不可用的。我们可以根据给定的训练数据生成边缘数据实例,并将其作为负面的参考实例,以实现单类判别器的训练,而不是从其他数据集中随机抽取异常值。
这个想法在[103,174]中得到了探讨。一类对抗网络(OCAN)在[174]中被引入,以利用坏GAN[33]的想法,根据正常训练数据的分布生成边缘实例。与GANs中的传统生成器不同,坏GANs中的生成器网络被训练成生成与训练数据互补而非匹配的数据实例。补充生成器的目标如下 min -H(Z) + Eˆz∼Z log X(ˆz)I[X(ˆz) > ] + ∥Eˆz∼Zℎ(ˆz) - Ez∼Xℎ(z) ∥2, (47) 其中H(-)是熵,I[-]是指标函数,是阈值超参数,ℎ是来自判别器的中间层的特征映射。前两个条款的设计是为了在原始特征空间中产生低密度的实例。然而,要获得训练数据的概率分布在计算上是不可行的。相反,密度估计X(ˆz)是由普通GAN的判别器近似的。最后一项是广泛使用的特征匹配损失,有助于在原始数据空间内更好地生成数据实例。OCAN中判别器的目标通过一个额外的条件熵项得到加强,以实现高置信度的检测。max Ex∼X log(z) + Eˆz∼Z log 1 - (ˆz) + Ex∼X (x) log(x) , (48) 在 [103], 引入了围栏式GAN,其目的是生成紧靠训练数据分布边界的数据实例。这是通过在生成器中引入两个损失函数来实现的,该函数强制要求生成的实例沿着训练数据的球形边界均匀分布。形式上,生成器的目标定义为min Ez∼Z h log - (z) i + 1 Ez∼Z ∥(z) - ∥2 , (49) 其中 ∈ (0。1)是一个超参数,用作生成器生成边界实例的判别参考分数,是生成数据实例的中心。第一个项被称为包围损失,强制要求生成的实例具有相同的判别分数,理想情况下会产生紧密包围训练数据的实例。第二项被称为分散损失,强制要求生成的实例均匀地覆盖整个边界,还有一些其他方法被引入以有效地生成参考实例。例如,可以生成均匀分布的实例来强制要求正常实例均匀地分布在潜伏空间中[120];在[89]中使用了一个生成器集合,每个生成器为一个特定的正常实例集群合成边界实例。
优点。这类方法的优点如下。(i) 它的异常分类模型是以端到端方式进行对抗性优化的。(ii) 它可以由对抗性学习和单类分类的富裕技术和理论来开发和支持。劣势。其缺点如下。(i) 很难保证生成的参考实例与未知的异常情况非常相似。(ii) GANs的不稳定性可能导致生成的实例具有不同的质量,从而导致异常分类性能不稳定。最近[169]研究了这个问题,表明这种类型的异常检测器的性能在不同的训练步骤中会出现剧烈的波动。(iii) 其应用仅限于半监督的异常检测场景。针对的挑战。先进的单类分类器学习生成现实的边缘/边界实例,使学习富有表现力的低维规范性表征(CH1和CH2)成为可能。
为了更深入地了解这一领域的方法,我们在表2中总结了每一类方法中代表性算法的一些关键特征。由于这些方法是在不同的数据集上评估的,因此很难对其经验性能进行普遍的元分析。相反,关于模型设计的一些主要观察结果被总结如下。
(i) 大多数方法在无监督或半监督的模式下运行;
(ii) 像数据增强、辍学和预训练这样的深度学习技巧没有得到充分的探索;
(iii) 使用的网络架构并不深,大多数方法的网络层数不超过5层;
(iv) (泄漏的)ReLU是最流行的激活函数;
(v) 可以使用不同的骨干网络来处理不同类型的输入数据。
大多数这些算法的源代码都是可以公开获取的。我们在附录A的表A1中总结了这些源代码,以方便查阅。