[论文阅读] 异常检测综述 Deep Learning for Anomaly Detection: A Review(一)

[论文阅读] 异常检测综述 Deep Learning for Anomaly Detection: A Review(一)

深度学习在异常检测中的应用:综述

摘要

异常检测,又称离群点检测或新奇性检测,在各个研究领域中数十年来一直是一个持续且活跃的研究领域。仍然存在一些独特的问题复杂性和挑战,需要先进的方法来解决。近年来,基于深度学习的异常检测,即深度异常检测,已成为一个关键方向。本文通过全面的分类法对深度异常检测的研究进行了综述,涵盖了三类高层次类别和 11 个细粒度类别方法的进展。我们回顾了它们的关键直觉key intuitions、目标函数objective functions、潜在假设underlying assumptions、优点和缺点,并讨论了它们如何应对上述挑战。我们进一步讨论了一系列可能的未来机会和应对挑战的新视角。

引言

【概念】异常检测,又称离群点检测或新奇性检测,是指检测与大多数数据实例显著偏离的数据实例的过程。异常检测是一个活跃的研究领域已有数十年之久,早期探索可追溯到 20 世纪 60 年代 [52]。

【应用or必要性】由于在广泛领域如风险管理、合规性、安全性、金融监控、健康和医疗风险以及人工智能安全等方面的需求和应用不断增加,异常检测发挥着越来越重要的作用,在数据挖掘、机器学习、计算机视觉和统计学等多个领域中都备受关注。

【引入深度学习】近年来,深度学习在学习复杂数据(如高维数据、时间序列数据、空间数据和图数据)的表达性表示方面展现出巨大能力,推动了不同学习任务的边界。

【结合】深度学习用于异常检测,简称深度异常检测,旨在通过神经网络学习特征表示或异常分数以进行异常检测。大量深度异常检测方法被引入,在解决各种实际应用中的挑战性检测问题方面表现出显著优于传统异常检测方法的性能。

这项工作旨在对该领域进行全面综述。我们首先讨论异常检测的问题本质以及主要尚未解决的挑战,然后系统地回顾当前的深度方法及其应对这些挑战的能力,最后提出一些未来的机会。

作为一个热门领域,许多研究 [2, 4, 16, 28, 53, 62, 178] 致力于异常检测技术的分类和综述。然而,它们都仅关注传统异常检测方法。与我们的工作密切相关的一项研究是 [26]。它对深度异常检测的一些实际应用进行了很好的总结,但仅提供了一些选择性类别技术的非常高层次的概述,从中很难(如果不是不可能的话)了解当前方法所采用的方法及其潜在直觉。相比之下,**本综述阐述了当前深度检测方法的公式,以深入了解其直觉、内在能力以及在解决异常检测中一些尚未解决的挑战方面的弱点。**这有助于深入理解问题本质和当前的研究现状,并带来真正的开放机会。它还有助于解释为什么我们需要深度异常检测。

总之,这项工作做出了以下五个主要贡献:

问题本质和挑战。我们讨论了异常检测背后的一些独特问题复杂性以及由此产生的主要尚未解决的挑战。

**分类和公式化。**我们将当前的深度异常检测方法归纳为三个原则性框架:用于通用特征提取的深度学习、学习正常性的表示以及端到端异常分数学习。提出了一种层次分类法,根据 11 个不同的建模视角对方法进行分类。

**全面的文献综述。**我们回顾了多个相关领域的领先会议和期刊中的大量相关研究,包括机器学习、数据挖掘、计算机视觉和人工智能,以呈现研究进展的全面文献综述。为了提供深入的介绍,我们阐述了所有类别方法的基本假设、目标函数、关键直觉及其应对上述一些挑战的能力。

未来机会。我们进一步讨论了一系列可能的未来机会及其对应对相关挑战的影响。

源代码和数据集。我们收集了几乎所有类别方法的公开可用源代码以及大量带有真实异常的实际数据集,以提供一些实证比较基准。

2. 异常检测:问题复杂性和挑战

由于其独特性质,异常检测呈现出与大多数分析和学习问题及任务不同的问题复杂性。本节总结了复杂异常数据中的这种内在复杂性和未解决的检测挑战。

2.1 主要问题复杂性

与那些关于多数、常规或明显模式的问题和任务不同,异常检测处理少数、不可预测 / 不确定和罕见事件,这给所有(包括深度和浅层)检测方法带来了一些独特的问题复杂性:

未知性。异常与许多未知因素相关联,例如具有未知突变行为、数据结构和分布的实例。它们在实际发生之前一直是未知的,例如新型恐怖袭击、欺诈和网络入侵。

**异构异常类。**异常是不规则的,因此一类异常可能与另一类异常表现出完全不同的异常特征。例如,在视频监控中,抢劫、交通事故和入室盗窃等异常事件在视觉上有很大差异。

稀有性和类别不平衡。异常通常是罕见的数据实例,与通常占数据绝大多数比例的正常实例形成对比。因此,很难(如果不是不可能的话)收集大量标记的异常实例。这导致在大多数应用中无法获得大规模标记数据。类别不平衡也是由于异常的错误分类通常比正常实例的错误分类代价高得多。

不同类型的异常。已经探索了三种完全不同类型的异常 [28]。点异常是相对于大多数其他单个实例而言异常的单个实例,例如患者的异常健康指标。

条件异常,也称为上下文异常,也指单个异常实例,*但在特定上下文中,即在特定上下文中数据实例是异常的,否则是正常的。*在实际应用中,上下文可能有很大差异,例如在特定时间上下文中突然的温度下降 / 上升,或在不寻常空间上下文中的快速信用卡交易。

组异常,也称为集体异常,是相对于其他数据实例整体异常的一个数据实例子集;集体异常中的单个成员可能不是异常,例如社交网络中由虚假账户形成的异常密集子图作为一个集合是异常的,但这些子图中的单个节点可能与真实账户一样正常。

2.2 深度异常检测解决的主要挑战

上述复杂的问题性质导致了一些检测挑战。一些挑战,如数据规模的可扩展性,近年来已得到很好的解决,而以下挑战在很大程度上仍未解决,深度异常检测可以在其中发挥重要作用。

CH1:低异常检测召回率。由于异常非常罕见且异构,很难识别出所有异常。许多正常实例被错误地报告为异常,而真正复杂的异常却被遗漏。尽管多年来引入了大量异常检测方法,但当前最先进的方法,特别是无监督方法(例如 [17, 84]),在实际数据集上仍然经常产生高误报率 [20, 115]。如何减少误报并提高检测召回率是最重要且最困难的挑战之一,特别是对于未能发现异常的重大代价而言。

CH2:高维数据和 / 或非独立数据中的异常检测。异常在低维空间中通常表现出明显的异常特征,但在高维空间中变得隐藏且不明显。高维异常检测一直是一个长期存在的问题 [178]。在由原始特征的一个小子集或新构建的特征所跨越的降低的低维空间中执行异常检测是一种直接的解决方案,例如在基于子空间 [70, 77, 84, 123] 和基于特征选择的方法 [12, 109, 111] 中。然而,识别复杂(例如高阶、非线性和异构)的特征交互和耦合 [22] 在高维数据中可能是至关重要的,但对于异常检测来说仍然是一个主要挑战。此外,如何确保新的特征空间为特定检测方法保留适当的信息对于下游准确的异常检测至关重要,但由于上述异常的未知性和异构性,这具有挑战性。另外,从可能相互依赖(例如通过时间、空间、基于图和其他相互依赖关系)的实例中检测异常也是具有挑战性的 [2, 4, 22, 53]。

CH3:数据高效的正常 / 异常学习。由于收集大规模标记异常数据的难度和成本,完全监督的异常检测通常不切实际,因为它假设同时具有正常和异常类别的标记训练数据可用。在过去十年中,主要的研究努力集中在不需要任何标记训练数据的无监督异常检测上。**然而,无监督方法没有关于真实异常的任何先验知识。它们严重依赖于对异常分布的假设。**另一方面,收集标记的正常数据和一些标记的异常数据通常并不困难。在实践中,通常建议尽可能利用这些容易获得的标记数据 [2]。因此,**利用这些标记数据学习正常 / 异常的表达性表示对于准确的异常检测至关重要。**半监督异常检测,假设一组标记的正常训练数据,是致力于解决此问题的一个研究方向。另一个研究方向是弱监督异常检测,假设我们有一些异常类别的标签,但类别标签是部分 / 不完整的(即它们不涵盖整个异常类集)、不精确的(即粗粒度标签)或不准确的(即一些给定的标签可能是不正确的)。两个主要挑战是如何用少量标记的异常数据学习表达性的正常 / 异常表示,以及如何学习能够推广到给定标记异常数据未涵盖的新异常的检测模型。

**CH4:抗噪声异常检测。**许多弱 / 半监督异常检测方法假设标记的训练数据是干净的,这可能容易受到被错误标记为相反类别标签的噪声实例的影响。在这种情况下,我们可以使用无监督方法,但这无法利用真正的标记数据。此外,**通常存在大规模被异常污染的未标记数据。**抗噪声模型可以利用这些未标记数据进行更准确的检测。因此,这里的噪声可以是错误标记的数据或未标记的异常。主要挑战是噪声的数量在不同数据集之间可能有很大差异,并且噪声实例可能在数据空间中不规则分布。

**CH5:复杂异常的检测。大多数现有方法是针对点异常的,由于它们与点异常表现出完全不同的行为,因此不能用于条件异常和组异常。这里的一个主要挑战是将条件 / 组异常的概念纳入异常度量 / 模型中。此外,当前方法主要侧重于从单个数据源检测异常,而许多应用需要检测来自多个异构数据源(例如多维数据、图、图像、文本和音频数据)的异常。一个主要挑战是只有在考虑两个或更多数据源时才能检测到一些异常。

CH6:异常解释:在许多安全关键领域,如果异常检测模型直接用作黑盒模型,可能会存在一些主要风险。例如,被报告为异常的罕见数据实例可能导致对数据中少数群体的可能算法偏见,例如在欺诈检测和犯罪检测系统中代表性不足的群体。减轻这种风险的一种有效方法是拥有异常解释算法,该算法提供关于为什么特定数据实例被识别为异常的直接线索。**然后人类专家可以查看并纠正偏差。在某些应用中,提供这样的解释可能与检测准确性同样重要。然而,大多数异常检测研究仅关注检测准确性,忽略了对所识别异常提供解释的能力。从特定检测方法中得出异常解释仍然是一个很大程度上未解决的问题,特别是对于复杂模型。开发本质上可解释的异常检测模型也至关重要,但在模型的可解释性和有效性之间取得良好平衡仍然是一个主要挑战。

深度方法能够对整个异常检测管道进行端到端优化,并且它们还能够学习专门为异常检测定制的表示。这两种能力对于应对上述六个挑战至关重要,但传统方法没有。**特别是它们在很大程度上有助于提高对标记正常数据或一些标记异常数据的利用,而无论数据类型如何,减少了完全监督设置中对大规模标记数据的需求(CH2、CH3、CH4、CH5)。**这随后导致更明智的模型,从而提高召回率(CH1)。对于异常解释挑战,尽管深度方法通常是黑盒模型,但它们提供了将异常检测和解释统一到单个框架中的选项,从而对特定模型检测到的异常提供更真实的解释(见第 8.5 节)。深度方法还擅长从各种类型的数据(如高维数据、图像数据、视频数据、图数据等)中学习复杂结构和关系。这种能力对于应对各种挑战(如 CH1、CH2、CH3 和 CH5)很重要。此外,它们提供了许多有效且易于使用的网络架构和原则性框架,以无缝学习异构数据源的统一表示。这使深度模型能够应对一些关键挑战,如 CH3 和 CH5。尽管有用于处理这些复杂数据的浅层方法,但它们通常比深度方法弱得多且适应性较差。此讨论的总结见表 1。

3. 用深度异常检测应对挑战

3.1预备知识

深度神经网络利用可以由计算图表示的线性/非线性函数的复杂组合来学习表达性表示[49]。深度学习的两个基本构建块是激活函数和层。激活函数根据给定输入确定计算图节点(即神经网络中的神经元)的输出。它们可以是线性或非线性函数。一些流行的激活函数包括线性、sigmoid、tanh、ReLU(修正线性单元)及其变体。神经网络中的层是指以某种形式堆叠的一组神经元。常用的层包括全连接层、卷积&池化层和循环层。这些层可以用于构建不同的流行神经网络。例如,多层感知机(MLP)网络由全连接层组成,卷积神经网络(CNN)以不同组的卷积&池化层为特征,而循环神经网络(RNN),如普通RNN、门控循环单元(GRU)和长短期记忆(LSTM),是基于循环层构建的。有关这些神经网络的详细介绍,请参阅[49]。

给定一个数据集X={x1,x2,⋯ ,xN}X = \{x_{1}, x_{2}, \cdots, x_{N}\}X={x1​,x2​,⋯,xN​},其中xi∈RDx_{i} \in \mathbb{R}^{D}xi​∈RD,设Z∈RK(K≪N)Z \in \mathbb{R}^{K}(K \ll N)Z∈RK(K≪N)为一个表示空间,则深度异常检测旨在学习一个特征表示映射函数ϕ(⋅):X↦Z\phi(\cdot): X \mapsto Zϕ(⋅):X↦Z或一个异常分数学习函数τ(⋅):X↦R\tau(\cdot): X \mapsto \mathbb{R}τ(⋅):X↦R,使得在由ϕ\phiϕ或τ\tauτ函数产生的空间中,异常能够容易地与正常数据实例区分开来,其中ϕ\phiϕ和τ\tauτ都是具有H∈NH \in \mathbb{N}H∈N个隐藏层的神经网络启用的映射函数及其权重矩阵Θ={M1,M2,⋯ ,MH}\Theta = \{M^{1}, M^{2}, \cdots, M^{H}\}Θ={M1,M2,⋯,MH}。在学习特征映射ϕ(⋅)\phi(\cdot)ϕ(⋅)的情况下,需要一个额外的步骤来计算新表示空间中每个数据实例的异常分数,而τ(⋅)\tau(\cdot)τ(⋅)直接使用原始数据输入推断异常分数。τ\tauτ的较大输出表示异常程度越高。

3.2深度异常检测的分类

为了全面理解该领域,我们引入一个层次分类法,从建模角度将深度异常检测方法分为三个主要类别和11个细粒度类别。这些方法的分类法概述如图1所示。具体来说,深度异常检测由三个概念范式组成 - 用于特征提取的深度学习、学习正常性的特征表示以及端到端异常分数学习。

深度学习用于特征提取

自动编码器生成对抗网络

挑战1、2 挑战1、2、4、5

学习正常性的特征表示

通用正常性特征学习

预测性建模自监督分类

依赖异常度量的特征学习

基于距离的度量单类分类度量基于聚类的度量

端到端异常分数学习

排序模型先验驱动模型Softmax似然模型端到端单类分类

挑战1、2、3、4、6 挑战1、2、4 挑战1、2、5 挑战1、2

这三个范式的过程如图2所示。如图2(a)所示,在第一主要类别(第4节)中,深度学习和异常检测是完全分离的,因此深度学习技术仅用作一些独立的特征提取器。在图2(b)所示的第二主要类别(第5节)中,这两个模块以某种形式相互依赖,目的是学习正常性的表达性表示。这个类别中的方法可以根据表示的学习方式进一步分为两个子类别,即是否使用现有的浅层异常度量(如基于距离和聚类的度量)来指导学习。这两个子类别包含七个细粒度类别的方法,每个类别采用不同的方法来制定其目标函数。在图2(c)所示的第三主要类别(第6节)中,这两个模块完全统一,其中方法致力于通过神经网络以端到端的方式学习异常分数。这个类别根据异常评分学习的制定进一步细分为四个子类别。在接下来的三节中,我们将详细回顾这三个范式。

4. 用于特征提取的深度学习

这类方法旨在利用深度学习从高维和/或非线性可分数据中提取低维特征表示,用于下游异常检测。特征提取和异常评分是完全脱节且相互独立的。因此,深度学习组件纯粹仅作为降维使用。(

为什么需要低维特征表示:

减少计算复杂度:使用低维特征表示可以减少模型的计算负担,因为处理的数据量更少。

提高泛化能力:低维特征表示往往能够更好地泛化到新的、未见过的数据上,因为它们捕捉的是数据的本质特征,而不是一些偶然的噪声。

便于可视化和解释:低维特征表示更容易可视化和解释,因为它们通常对应于数据中更抽象的概念。

形式上,该方法可以表示为z=ϕ(x;Θ)z = \phi(x ; \Theta)z=ϕ(x;Θ),其中ϕ:X↦Z\phi: X \mapsto Zϕ:X↦Z是一个基于深度神经网络的特征映射函数,X∈RDX \in \mathbb{R}^{D}X∈RD,Z∈RKZ \in \mathbb{R}^{K}Z∈RK,通常D≫KD \gg KD≫K。然后将一个与特征映射ϕ\phiϕ没有连接的异常评分方法应用于新空间以计算异常分数。

与在异常检测中流行的降维方法(如主成分分析(PCA)[21, 140, 180]和随机投影[80, 112, 123])相比,深度学习技术在提取语义丰富的特征和非线性特征关系方面表现出了显著更强的能力[14, 49]。

假设:深度学习模型提取的特征表示保留了有助于区分异常和正常实例的判别信息。

一个研究方向是直接使用流行的预训练深度学习模型,如AlexNet [75]、VGG [143]和ResNet [58],来提取低维特征。这个方向在复杂高维数据(如图像数据和视频数据)的异常检测中得到了探索。这个方向的一个有趣工作是用于在线异常检测的解蔽框架[66]。其关键思想是迭代训练一个二元分类器,以在滑动窗口中将一组视频帧与其后续视频帧分开,在每次迭代步骤中去除最具判别力的特征。这类似于一个解蔽过程。该框架假设第一组视频帧为正常,并评估其与后续视频帧的可分离性。因此,如果后续视频帧是异常的,则训练分类准确率预计会很高,否则会很低。显然,解蔽框架的能力在很大程度上依赖于特征的质量,因此拥有高质量的特征来表示视频帧至关重要。在ILSVRC基准[134]上预训练的VGG模型被证明可有效地为此目的提取表达性外观特征[66]。在[88]中,将解蔽框架表述为一个两样本测试任务,以理解其理论基础。他们还表明,使用从动态更新的视频帧采样池中提取的特征可以提高框架的性能。此外,与许多其他任务类似,从源数据集上预训练的深度模型中提取的特征表示可以转移到目标数据集上微调异常检测器。如[6]所示,一类支持向量机(SVM)可以首先使用在ILSVRC上预训练的VGG模型进行初始化,然后进行微调,以提高在MNIST数据[78]上的异常分类性能。类似地,在MNIST上预训练的ResNet模型可以增强在各种视频监控数据集中的异常事件检测能力[117, 176]。

这个类别中的另一个研究方向是明确训练一个深度特征提取模型,而不是使用预训练模型进行下游异常评分[44, 65, 163, 168]。特别是在[163]中,训练了三个独立的自动编码器网络,以学习用于视频异常检测的外观、运动和外观 - 运动联合表示的低维特征。在每个学习到的特征表示上独立训练一个一类SVM的集成,以执行异常评分。与[163]类似,在[44]中使用线性一类SVM在由深度信念网络(DBN)产生的高维表格数据的低维表示上进行异常检测。在[65]中,使用无监督分类方法而不是一类SVM在投影空间中进行异常评分。具体来说,他们首先对卷积自动编码器产生的视频帧的低维特征进行聚类,然后将聚类标签视为伪类别标签,以执行一对其余分类。分类概率用于定义帧级异常分数。在图异常检测[168]中也可以找到类似的方法,其中在潜在表示空间中使用基于无监督聚类的异常度量来计算图顶点或边的异常性。为了学习图顶点的表达性表示,通过最小化基于自动编码器的重建损失和相邻图顶点的成对距离,以图顶点的独热编码作为输入,来优化顶点表示。

优点:这种方法的优点如下。(i)大量最先进的(预训练)深度模型和现成的异常检测器随时可用。(ii)深度特征提取提供了比流行的线性方法更强大的降维能力。(iii)鉴于深度模型和检测方法的公开可用性,它易于实现。

缺点:它们的缺点如下。(i)完全脱节的特征提取和异常评分通常会导致次优的异常分数。(ii)预训练深度模型通常限于特定类型的数据。

挑战目标:这类方法将高维/非独立数据投影到低得多的维空间,使现有的异常检测方法能够在更简单的数据空间上工作。低维空间通常有助于揭示隐藏的异常并减少误报(CH2)。然而,应该注意的是,由于数据投影与异常检测完全解耦,这些方法可能无法为异常检测保留足够的信息。此外,这种方法允许我们利用多种类型的特征并学习语义丰富的检测模型(例如,[65, 66, 163]中的各种预定义图像/视频特征),这也有助于减少误报(CH1)。

5. 学习正常性的特征表示

该类别中的方法以某种方式将特征学习与异常评分耦合,而不是像上一节那样将这两个模块完全解耦。这些方法通常分为两组:通用特征学习和依赖异常度量的特征学习。

5.1通用正常性特征学习

该类别中的方法通过优化一个通用的特征学习目标函数来学习数据实例的表示,该目标函数并非主要为异常检测而设计,但学习到的表示仍然可以支持异常检测,因为它们被迫捕获一些关键的潜在数据规律。形式上,该框架可以表示为{Θ∗,W∗}=argminΘ,W∑x∈Xℓ(ψ(ϕ(x;Θ);W))\left\{\Theta^{*}, W^{*}\right\}=\underset{\Theta, W}{arg min } \sum_{x \in \mathcal{X}} \ell(\psi(\phi(x ; \Theta) ; W)){Θ∗,W∗}=Θ,Wargmin​∑x∈X​ℓ(ψ(ϕ(x;Θ);W)),sx=f(x,ϕΘ∗,ψW∗)s_{x}=f\left(x, \phi_{\Theta^{*}}, \psi_{W^{*}}\right)sx​=f(x,ϕΘ∗​,ψW∗​),其中ϕ\phiϕ将原始数据映射到表示空间zzz,ψ\psiψ由WWW参数化,是在zzz空间上操作的代理学习任务,致力于强制学习潜在数据规律,ℓ\ellℓ是与基础建模方法相关的损失函数,fff是利用ϕ\phiϕ和ψ\psiψ计算异常分数的评分函数。

这种方法包括从多个角度驱动的方法,包括数据重建、生成建模、预测性建模和自监督分类。预测性建模和自监督分类都基于自监督学习方法,但它们具有不同的假设、优点和缺陷,因此分别进行综述。

5.1.1自动编码器

这种方法旨在学习一个低维特征表示空间,在该空间上给定的数据实例可以被很好地重建。这是一种广泛用于数据压缩或降维的技术[61, 69, 150]。在异常检测中使用这种技术的启发式方法是,学习到的特征表示被迫学习数据的重要规律以最小化重建误差;异常很难从得到的表示中重建,因此具有较大的重建误差。

假设:正常实例可以从压缩空间中比异常更好地重建。自动编码器(AE)网络是该类别中常用的技术。AE由一个编码网络和一个解码网络组成。编码器将原始数据映射到低维特征空间,而解码器试图从投影的低维空间中恢复数据。这两个网络的参数通过重建损失函数学习。通常使用瓶颈网络架构来获得比原始数据更低维的表示,这迫使模型保留在重建数据实例中重要的信息。为了最小化整体重建误差,保留的信息需要与主要实例(例如正常实例)尽可能相关。因此,偏离大多数数据的实例(如异常)重建效果较差。数据重建误差因此可以直接用作异常分数。这种方法的基本公式如下:z=ϕe(x;Θe)z=\phi_{e}\left(x ; \Theta_{e}\right)z=ϕe​(x;Θe​),x^=ϕd(z;Θd)\hat{x}=\phi_{d}\left(z ; \Theta_{d}\right)x^=ϕd​(z;Θd​),{Θe∗,Θd∗}=argminΘe,Θd∑x∈X∥x−ϕd(ϕe(x;Θe);Θd)∥2\left\{\Theta_{e}^{*}, \Theta_{d}^{*}\right\}=\underset{\Theta_{e}, \Theta_{d}}{arg min } \sum_{x \in \mathcal{X}}\left\|x-\phi_{d}\left(\phi_{e}\left(x ; \Theta_{e}\right) ; \Theta_{d}\right)\right\|^{2}{Θe∗​,Θd∗​}=Θe​,Θd​argmin​∑x∈X​∥x−ϕd​(ϕe​(x;Θe​);Θd​)∥2,sx=∥x−ϕd(ϕe(x;Θe∗);Θd∗)∥2s_{x}=\left\|x-\phi_{d}\left(\phi_{e}\left(x ; \Theta_{e}^{*}\right) ; \Theta_{d}^{*}\right)\right\|^{2}sx​=∥x−ϕd​(ϕe​(x;Θe∗​);Θd∗​)∥2,其中ϕe\phi_{e}ϕe​是具有参数Θe\Theta_{e}Θe​的编码网络,ϕd\phi_{d}ϕd​是具有参数Θd\Theta_{d}Θd​的解码网络。编码器和解码器可以共享相同的权重参数以减少参数并规范学习。sxs_{x}sx​是xxx的基于重建误差的异常分数。

已经引入了几种类型的正则化自动编码器来学习更丰富和更具表达力的特征表示[38, 95, 128, 153]。特别是,稀疏AE通过例如保持前KKK个最活跃单元来鼓励隐藏层中的稀疏性进行训练[95]。去噪AE[153]旨在通过从一些预定义的损坏数据实例而不是原始数据中学习重建来学习对小变化具有鲁棒性的表示。收缩AE[128]更进一步,通过添加基于编码器激活的雅可比矩阵的Frobenius范数的惩罚项来学习对实例与其邻居的小变化具有鲁棒性的特征表示。变分AE[38]通过使用潜在空间上的先验分布对数据实例进行编码,将正则化引入表示空间,防止过拟合并确保学习到的空间具有一些良好的性质,以便能够生成有意义的数据实例。

AE易于实现,并且在检测异常方面具有直观的思路。因此,它们在文献中得到了广泛的探索。复制神经网络[57]是探索使用数据重建来检测异常的第一个工作,其实验侧重于静态多维/表格数据。复制网络基于具有三个隐藏层的前馈多层感知机构建。它使用参数化的双曲正切激活函数来为不同的输入值获得不同的激活水平,这有助于将中间表示离散化为一些预定义的箱。结果,隐藏层自然地将数据实例聚类为多个组,从而能够检测聚类异常。在此工作之后,有许多研究致力于进一步提高这种方法的性能。例如,RandNet[29]通过学习自动编码器的集成进一步增强了基本的AE。在RandNet中,训练了一组独立的AE,每个AE具有一些随机选择的恒定丢弃连接。使用自适应采样策略通过指数增加小批量的样本大小。RandNet侧重于表格数据。自动编码器集成的思想在[71]中扩展到了时间序列数据。受鲁棒主成分分析(RPCA)的启发,RDA[175]试图通过迭代地将原始数据分解为两个子集(正常实例集和异常集)来提高AE的鲁棒性。这是通过在其类似RPCA的目标函数中添加ℓ1\ell_{1}ℓ1​稀疏惩罚或ℓ2,1\ell_{2,1}ℓ2,1​分组惩罚来规范异常集的系数来实现的。

AE也广泛用于检测表格数据以外的数据中的异常,如序列数据[91]、图数据[37]和图像/视频数据[163]。一般来说,AE对这些复杂数据有两种类型的适应方法。最直接的方法是遵循与传统AE使用相同的过程,通过将网络架构适应于输入数据的类型,如CNN - AE[56, 172]、LSTM - AE[96]、Conv - LSTM - AE[92]和GCN(图卷积网络)- AE[37]。这种类型的AE将编码器 - 解码器方案嵌入到这些方法的整个过程中。另一种基于AE的方法是首先使用AE学习复杂数据的低维表示,然后学习预测这些学习到的表示。AE的学习和表示预测通常是两个独立的步骤。这些方法与第一种类型的方法的不同之处在于,表示的预测围绕由AE产生的低维表示进行。例如,在[91]中,去噪AE与RNN相结合来学习多变量序列数据的正常模式,其中首先使用具有两个隐藏层的去噪AE在每个时间步学习多维数据输入的表示,然后训练具有单个隐藏层的RNN来预测去噪AE产生的表示。在[97]中也使用了类似的方法来检测声学异常,其中使用了更复杂的RNN,双向LSTM。

优点:基于数据重建的方法的优点如下。(i)AE的思想对于不同类型的数据是直接和通用的。(ii)可以利用不同类型的强大AE变体来执行异常检测。

缺点:它们的缺点如下。(i)学习到的特征表示可能会受到训练数据中不频繁的规律以及异常值或异常的存在的影响。(ii)数据重建的目标函数是为降维或数据压缩而设计的,而不是为异常检测而设计的。因此,得到的表示是对潜在规律的通用总结,并非针对检测不规则性进行优化。

挑战目标:在AE框架下可以使用不同类型的神经网络层和架构,使我们能够检测高维数据以及非独立数据(如属性图数据[37]和多变量序列数据[91, 97])中的异常(CH2)。如果学习到的表示更具表达力,这些方法可能比基于手工特征的传统方法减少误报(CH1)。AE通常容易受到训练数据中存在的数据噪声的影响,因为它们可以被训练来记住这些噪声,导致严重的过拟合和异常的小重建误差。RPCA的思想可以用于训练更鲁棒的AE检测模型[175](CH4)。

5.1.2生成对抗网络

基于GAN的异常检测在早期[138]使用后迅速成为一种流行的深度异常检测方法。这种方法通常旨在学习生成网络GGG的潜在特征空间,以便该潜在空间很好地捕获给定数据背后的正常性。然后将真实实例和生成实例之间的某种残差定义为异常分数。

假设:在GAN中,正常数据实例可以从生成网络的潜在特征空间中比异常更好地生成。

早期的方法之一是AnoGAN[138]。其关键直觉是,对于任何数据实例xxx,它旨在在学习到的生成网络GGG的潜在特征空间中搜索一个实例zzz,使得相应的生成实例G(z)G(z)G(z)和xxx尽可能相似。由于潜在空间被强制捕获训练数据的潜在分布,异常预计比正常实例更不可能有高度相似的生成对应物。具体来说,首先使用以下常规目标训练一个GAN:minGmaxDV(D,G)=Ex∼pX[logD(x)]+Ez∼pz[log(1−D(G(z)))]min _{G} max _{D} V(D, G)=\mathbb{E}_{x \sim p X}[log D(x)]+\mathbb{E}_{z \sim p_{z}}[log (1-D(G(z)))]minG​maxD​V(D,G)=Ex∼pX​[logD(x)]+Ez∼pz​​[log(1−D(G(z)))],其中GGG和DDD分别是由ΘG\Theta_{G}ΘG​和ΘD\Theta_{D}ΘD​参数化的生成器和判别器网络(为了简洁省略了参数),VVV是两个玩家极小极大游戏的值函数。之后,对于每个xxx,使用两个损失函数 - 残差损失和判别损失 - 来指导搜索。残差损失定义为ℓR(x,zγ)=∥x−G(zγ)∥1\ell_{R}\left(x, z_{\gamma}\right)=\left\|x-G\left(z_{\gamma}\right)\right\|_{1}ℓR​(x,zγ​)=∥x−G(zγ​)∥1​,而判别损失基于特征匹配技术[136]定义为ℓfm(x,zγ)=∥h(x)−h(G(zγ))∥1\ell_{f m}\left(x, z_{\gamma}\right)=\left\|h(x)-h\left(G\left(z_{\gamma}\right)\right)\right\|_{1}ℓfm​(x,zγ​)=∥h(x)−h(G(zγ​))∥1​,其中γ\gammaγ是搜索迭代步骤的索引,hhh是从判别器的中间层的特征映射。搜索从随机采样的zzz开始,然后根据从总损失(1−α)ℓR(x,zγ)+αℓfm(x,zγ)(1-\alpha) \ell_{R}(x, z_{\gamma})+\alpha \ell_{f m}(x, z_{\gamma})(1−α)ℓR​(x,zγ​)+αℓfm​(x,zγ​)导出的梯度更新zzz,其中α\alphaα是一个超参数。在整个搜索过程中,训练好的GAN的参数是固定的;损失仅用于更新下一次迭代的zzz的系数。异常分数相应地根据在最后一步γ∗\gamma^{*}γ∗获得的xxx和zzz之间的相似性定义为sx=(1−α)ℓR(x,zγ∗)+αℓfm(x,zγ∗)s_{x}=(1-\alpha) \ell_{R}\left(x, z_{\gamma^{*}}\right)+\alpha \ell_{f m}\left(x, z_{\gamma^{*}}\right)sx​=(1−α)ℓR​(x,zγ∗​)+αℓfm​(x,zγ∗​)。

AnoGAN的一个主要问题是在迭代搜索zzz时的计算效率低下。解决这个问题的一种方法是添加一个额外的网络,该网络学习从数据实例到潜在空间的映射,即生成器的逆,从而产生像EBGAN[170]和快速AnoGAN[137]这样的方法。这两种方法具有相同的精神。这里我们重点关注基于双向GAN(BiGAN)[39]构建的EBGAN。具体来说,BiGAN有一个编码器EEE将xxx映射到潜在空间中的zzz,并同时学习GGG、DDD和EEE的参数。BiGAN的目的不是区分xxx和G(z)G(z)G(z),而是区分对(x,E(x))(x, E(x))(x,E(x))和对(G(z),z)(G(z), z)(G(z),z),其目标为minG,EmaxDEx∼pX[Ez∼pE(⋅∣x)log[D(x,z)]]+Ez∼pZ[Ex∼pG(⋅∣z)[log(1−D(x,z))]]min _{G, E} max _{D} \mathbb{E}_{x \sim p_{X}}\left[\mathbb{E}_{z \sim p_{E}(\cdot | x)} log [D(x, z)]\right]+\mathbb{E}_{z \sim p_{Z}}\left[\mathbb{E}_{x \sim p_{G}(\cdot | z)}[log (1-D(x, z))]\right]minG,E​maxD​Ex∼pX​​[Ez∼pE​(⋅∣x)​log[D(x,z)]]+Ez∼pZ​​[Ex∼pG​(⋅∣z)​[log(1−D(x,z))]]。训练后,受AnoGAN中公式(10)的启发,EBGAN将异常分数定义为sx=(1−α)ℓG(x)+αℓD(x)s_{x}=(1-\alpha) \ell_{G}(x)+\alpha \ell_{D}(x)sx​=(1−α)ℓG​(x)+αℓD​(x),其中ℓG(x)=∥x−G(E(x))∥1\ell_{G}(x)=\|x-G(E(x))\|_{1}ℓG​(x)=∥x−G(E(x))∥1​,ℓD(x)=∥h(x,E(x))−h(G(E(x)),E(x))∥1\ell_{D}(x)=\|h(x, E(x))-h(G(E(x)), E(x))\|_{1}ℓD​(x)=∥h(x,E(x))−h(G(E(x)),E(x))∥1​。这消除了在AnoGAN中迭代搜索zzz的需要。EBGAN通过添加两个更多的判别器扩展为一种称为ALAD[171]的方法,其中一个判别器试图区分对(x,x)(x, x)(x,x)和(x,G(E(x)))(x, G(E(x)))(x,G(E(x))),另一个试图区分对(z,z)(z, z)(z,z)和(z,E(G(z)))(z, E(G(z)))(z,E(G(z)))。

GANomaly[3]通过将生成器网络更改为编码器 - 解码器 - 编码器网络并添加两个额外的损失函数进一步改进了生成器。生成器可以概念性地表示为x→GEz→GDx^→Ez^x \stackrel{G_{E}}{\to } z \stackrel{G_{D}}{\to } \hat{x} \stackrel{E}{\to } \hat{z}x→GE​z→GD​x^→Ez^,其中$

5.1.3预测性建模

基于预测性建模的方法通过使用时间窗口内先前实例的表示作为上下文来预测当前数据实例,从而学习特征表示。在本节中,数据实例是指序列中的单个元素,例如视频序列中的视频帧。这种技术广泛用于序列表示学习和预测[63, 82, 98, 146]。为了实现准确的预测,这些表示被强制捕获给定序列长度内的时间/顺序和循环依赖关系。正常实例通常很好地遵循这些依赖关系并且可以被很好地预测,而异常往往违反这些依赖关系并且是不可预测的。因此,预测误差可以用于定义异常分数。

假设:正常实例在时间上比异常更可预测。

这个研究方向在视频异常检测中很流行[1, 86, 167]。视频序列涉及复杂的高维时空特征。在预测目标函数中需要对外观和运动特征施加不同的约束,以确保对视频帧进行准确的预测。这种深度异常检测方法最初在[86]中进行了探索。形式上,给定一个具有连续ttt帧x1,x2,⋯ ,xtx_{1}, x_{2}, \cdots, x_{t}x1​,x2​,⋯,xt​的视频序列,学习任务是使用所有这些帧生成一个未来帧x^t+1\hat{x}_{t + 1}x^t+1​,使得x^t+1\hat{x}_{t + 1}x^t+1​尽可能接近真实的xt+1x_{t + 1}xt+1​。其一般目标函数可以表述为αℓpred(x^t+1,xt+1)+βℓadv(x^t+1)\alpha \ell_{pred}\left(\hat{x}_{t + 1}, x_{t + 1}\right)+\beta \ell_{adv}\left(\hat{x}_{t + 1}\right)αℓpred​(x^t+1​,xt+1​)+βℓadv​(x^t+1​),其中x^t+1=ψ(ϕ(x1,x2,⋯ ,xt;Θ);W)\hat{x}_{t + 1}=\psi(\phi(x_{1}, x_{2}, \cdots, x_{t} ; \Theta) ; W)x^t+1​=ψ(ϕ(x1​,x2​,⋯,xt​;Θ);W),ℓpred\ell_{pred}ℓpred​是通过均方误差测量的帧预测损失,ℓadv\ell_{adv}ℓadv​是对抗损失。名为U - Net[129]的流行网络架构用于实例化ψ\psiψ函数以进行帧生成。ℓpred\ell_{pred}ℓpred​由一组三个单独的损失组成,分别强制x^t+1\hat{x}_{t + 1}x^t+1​和xt+1x_{t + 1}xt+1​在三个关键图像特征描述符(强度、梯度和光流)中的接近度。ℓadv\ell_{adv}ℓadv​是由于使用对抗训练来增强图像生成。训练后,对于给定的视频帧xxx,基于预测差异∥xi−x^i∥2\left\|x_{i}-\hat{x}_{i}\right\|_{2}∥xi​−x^i​∥2​的归一化峰值信噪比用于定义异常分数。在同一框架下,[167]中添加了一个额外的基于自动编码器的重建网络,以进一步细化预测帧的质量,这有助于扩大正常帧和异常帧之间的异常分数差异。

这个方向的另一个研究路线基于自回归模型[50],该模型假设序列中的每个元素线性依赖于先前的元素。自回归模型在[1]中用于估计训练样本在潜在空间中的密度,这有助于避免假设特定的分布族。具体来说,给定xxx及其潜在空间表示z=ϕ(x;Θ)z = \phi(x ; \Theta)z=ϕ(x;Θ),自回归模型将p(z)p(z)p(z)分解为p(z)=∏j=1Kp(zj∣z1:j−1)p(z)=\prod_{j = 1}^{K} p\left(z_{j} | z_{1:j - 1}\right)p(z)=∏j=1K​p(zj​∣z1:j−1​),其中z1:j−1={z1,z2,⋯ ,zj−1}z_{1:j - 1}=\{z_{1}, z_{2}, \cdots, z_{j - 1}\}z1:j−1​={z1​,z2​,⋯,zj−1​},p(zj∣z1:j−1)p\left(z_{j} | z_{1:j - 1}\right)p(zj​∣z1:j−1​)表示zjz_{j}zj​在所有先前实例z1:j−1z_{1:j - 1}z1:j−1​条件下的概率质量函数,KKK是潜在空间的维度大小。[1]中的目标是联合学习一个自动编码器和一个配备自回归网络层的密度估计网络ψ(z;W)\psi(z ; W)ψ(z;W)。总体损失可以表示为L=Ex[∥x−ϕd(ϕe(x;Θe);Θd)∥2−λlog(ψ(z;W))]L=\mathbb{E}_{x}\left[\left\|x-\phi_{d}\left(\phi_{e}\left(x ; \Theta_{e}\right) ; \Theta_{d}\right)\right\|_{2}-\lambda log (\psi(z ; W))\right]L=Ex​[∥x−ϕd​(ϕe​(x;Θe​);Θd​)∥2​−λlog(ψ(z;W))],其中第一项是通过均方误差测量的重建误差,第二项是在估计的条件概率密度先验下通过表示的对数似然测量的自回归损失。最小化这个损失使能学习到常见且容易预测的特征。在评估阶段,将重建误差和对数似然相结合来定义异常分数。

优点:这类方法的优点如下。(i)许多序列学习技术可以被改编并纳入这种方法。(ii)这种方法能够学习不同类型的时间和空间依赖关系。

缺点:它们的缺点如下。(i)这种方法仅限于序列数据中的异常检测。(ii)顺序预测可能在计算上昂贵。(iii)学习到的表示可能对于异常检测不是最优的,因为其潜在目标是顺序预测而不是异常检测。

挑战目标:这种方法特别设计用于学习表达性的时间依赖低维表示,这有助于解决高维和/或时间数据集中异常检测的误报问题(CH1和CH2)。这里的预测基于一些过去的时间实例,因此这类方法能够检测基于时间上下文的条件异常(CH5)。

5.1.4自监督分类

这种方法通过构建自监督分类模型来学习正常性的表示,并将与分类模型不一致的实例识别为异常。这种方法源于基于交叉特征分析或特征模型的传统方法[64, 105, 149]。这些浅层方法通过数据实例与一组预测模型的一致性来评估其正常性,每个模型学习根据其他特征预测一个特征。测试实例的一致性可以通过给定所有特征的分类/回归模型的平均预测结果[64]、基于对数损失的惊奇度[105]或二进制决策的多数投票[149]来测量。与这些专注于表格数据并使用原始数据构建特征模型的研究不同,基于深度一致性的异常检测专注于图像数据,并通过使用基于特征变换的增强数据构建预测模型。为了有效地区分变换后的实例,分类模型被强制学习对于描述训练数据中实例的潜在模式非常重要的特征。因此,正常实例通常与分类模型有更强的一致性。

假设:正常实例比异常更符合自监督分类器。这种方法最初在[48]中进行了探索。为了构建预测模型,首先将不同组合的几何变换操作(包括水平翻转、平移和旋转)应用于正常训练图像。在增强数据上训练一个深度多类分类模型,将具有特定变换操作的数据实例视为来自同一类,即合成类。在推理时,测试实例用每个变换组合进行增强,并且它们的正常性分数由对增强测试实例的所有softmax分类分数的聚合来定义。其损失函数定义为Lcons=CE(ψ(zTj;W),yTj)L_{cons}=CE(\psi(z_{T_{j}} ; W), y_{T_{j}})Lcons​=CE(ψ(zTj​​;W),yTj​​),其中zTj=ϕ(Tj(x);Θ)z_{T_{j}}=\phi(T_{j}(x) ; \Theta)zTj​​=ϕ(Tj​(x);Θ)是通过变换操作类型TjT_{j}Tj​增强的实例xxx的低维特征表示,ψ\psiψ是由WWW参数化的多类分类器,yTjy_{T_{j}}yTj​​是使用变换操作TjT_{j}Tj​增强的实例的合成类的独热编码,CECECE是标准交叉熵损失函数。

通过最小化公式(21),我们获得了针对分类器ψ\psiψ优化的表示。然后,我们可以应用特征学习器ϕ(⋅,Θ∗)\phi(\cdot, \Theta^{*})ϕ(⋅,Θ∗)和分类器ψ(⋅,W∗)\psi(\cdot, W^{*})ψ(⋅,W∗)来获得每个用变换操作TjT_{j}Tj​增强的测试实例的分类分数。每个测试实例相对于不同TjT_{j}Tj​的分类分数然后被聚合以计算异常分数。为了实现这一点,在[48]中假设基于每个TjT_{j}Tj​条件的分类分数遵循狄利克雷分布,以估计测试实例与分类模型ψ\psiψ的一致性;与不同TjT_{j}Tj​相关联的分类分数的简单平均也能很好地工作。

在[48]中假设了一个半监督设置,即训练数据仅包含正常实例。在[157]中探索了类似的想法在无监督设置下,其中变换集包含四个变换操作,即旋转、翻转、平移和路径重新排列。[157]中揭示的两个关键见解是:(i)在训练这种自监督多类分类模型期间,正常实例诱导的梯度幅度通常比异常值大得多;(ii)网络更新方向也偏向于正常实例。由于这两个属性,正常实例通常与分类模型比异常有更强的一致性。评估了三种使用分类分数定义异常分数的策略,包括平均预测概率、最大预测概率和所有预测概率的负熵[157]。他们的结果表明,基于负熵的异常分数通常比其他两种策略表现更好。

优点:基于深度一致性的方法的优点如下。(i)它们在无监督和半监督设置中都能很好地工作。(ii)异常评分基于梯度幅度及其更新的一些内在属性。

缺点:它们的缺点如下。(i)特征变换操作通常依赖于数据。上述变换操作仅适用于图像数据。(ii)尽管分类模型以端到端的方式进行训练,但基于一致性的异常分数是基于分类分数推导出来的,而不是在优化中的一个集成模块,因此它们可能不是最优的。

挑战目标:这种方法学习到的正常性的表达性低维表示有助于比在原始高维空间中更好地检测异常(CH1和CH2)。由于在自监督分类器中异常和正常实例之间存在一些内在差异,这种方法也能够在无监督设置下工作[157],展示了对训练数据中异常污染的良好鲁棒性(CH4)。

5.2依赖异常度量的特征学习

依赖异常度量的特征学习旨在学习专门针对一种特定现有异常度量进行优化的特征表示。形式上,这组方法的框架可以表示为{Θ∗,W∗}=argminΘ,W∑x∈Xℓ(f(ϕ(x;Θ);W))\left\{\Theta^{*}, W^{*}\right\}=\underset{\Theta, W}{arg min } \sum_{x \in \mathcal{X}} \ell(f(\phi(x ; \Theta) ; W)){Θ∗,W∗}=Θ,Wargmin​∑x∈X​ℓ(f(ϕ(x;Θ);W)),ωx=f(ϕ(x;Θ∗);W∗)\omega_{x}=f\left(\phi\left(x ; \Theta^{*}\right) ; W^{*}\right)ωx​=f(ϕ(x;Θ∗);W∗),其中fff是在表示空间上操作的现有异常评分度量。请注意,fff是否涉及可训练参数WWW取决于所使用的异常度量。与通用特征学习方法(如公式(2 - 3)中那样,在获得学习到的表示后基于一些启发式方法计算异常分数)不同,这个研究方向将现有异常度量fff纳入特征学习目标函数,以专门针对fff优化特征表示。下面我们回顾针对三种流行异常度量类型的表示学习,包括基于距离的度量、单类分类度量和基于聚类的度量。

5.2.1基于距离的度量

深度基于距离的异常检测旨在学习针对特定类型基于距离的异常度量进行优化的特征表示。基于距离的方法直接且易于实现。已经引入了许多有效的基于距离的异常度量,例如DB离群值[72, 73]、kkk - 最近邻距离[125, 126]、平均kkk - 最近邻距离[9]、相对距离[173]和随机最近邻距离[116, 144]。这些传统基于距离的异常度量的一个主要限制是,由于维度诅咒,它们在高维数据中无法有效工作。由于深度基于距离的异常检测技术在应用距离度量之前将数据投影到低维空间,因此可以很好地克服这个限制。

假设:异常与其最近邻的距离较远,而正常实例位于密集邻域中。

这种方法首先在[112]中进行了探索,其中利用基于随机邻居距离的异常度量[116, 144]来驱动从超高维数据中学习低维表示。关键思想是优化表示,使得在随机子样本中伪标记异常的最近邻距离远大于伪标记正常实例的最近邻距离。伪标签由一些现成的异常检测器生成。设S∈XS \in XS∈X是从数据集XXX中随机采样的数据实例子集,AAA和NNN分别是伪标记异常和正常实例集,且X=A∪NX = A \cup NX=A∪N且∅=A∩N\varnothing = A \cap N∅=A∩N,其损失函数基于铰链损失函数[130]构建:Lquery=1∣X∣∑x∈A,x′∈Nmax{0,m+f(x′,S;Θ)−f(x,S;Θ)}L_{query}=\frac{1}{|\mathcal{X}|} \sum_{x \in \mathcal{A}, x' \in \mathcal{N}} max \left\{0, m + f\left(x', \mathcal{S} ; \Theta\right)-f(x, \mathcal{S} ; \Theta)\right\}Lquery​=∣X∣1​∑x∈A,x′∈N​max{0,m+f(x′,S;Θ)−f(x,S;Θ)},其中mmm是为f(x,S;Θ)f(x, S ; \Theta)f(x,S;Θ)产生的两个距离之间的边际预定义常数,f(x,S;Θ)f(x, S ; \Theta)f(x,S;Θ)是在表示空间中操作的随机最近邻距离函数:f(x,S;Θ)=minx′∈S∥ϕ(x;Θ),ϕ(x′;Θ)∥2f(x, \mathcal{S} ; \Theta)=min _{x' \in \mathcal{S}}\left\|\phi(x ; \Theta), \phi\left(x' ; \Theta\right)\right\|_{2}f(x,S;Θ)=minx′∈S​∥ϕ(x;Θ),ϕ(x′;Θ)∥2​。

最小化公式(24)中的损失保证了在ϕ\phiϕ投影的表示空间中,异常的随机最近邻距离至少比正常实例的大mmm。在评估阶段,公式(25)中的随机距离直接用于获得每个测试实例的异常分数。遵循这种方法,我们也可以通过将公式(25)替换为其他度量(例如kkk - 最近邻距离[126]或平均kkk - 最近邻距离[9])来推导针对其他基于距离的度量的类似表示学习。然而,这些度量的计算成本比公式(25)高得多。因此,这种适应的一个主要挑战将是过高的计算成本。

与[112]中需要在随机数据子集中查询最近邻距离不同,受[19]的启发,[155]中探索了一个更简单的想法,即使用同一实例的优化表示和随机投影表示之间的距离来指导表示学习。该方法的目标如下:Θ∗=argminΘ∑x∈Xf(ϕ(x;Θ),ϕ′(x))\Theta^{*}=\underset{\Theta}{arg min } \sum_{x \in X} f\left(\phi(x ; \Theta), \phi'(x)\right)Θ∗=Θargmin​∑x∈X​f(ϕ(x;Θ),ϕ′(x)),其中ϕ′\phi'ϕ′是一个随机映射函数,由ϕ\phiϕ中使用的具有固定随机权重的神经网络实例化,fff是同一数据实例的两个表示之间的距离度量。如[19]中所讨论的,求解公式(26)等同于从随机神经网络进行知识蒸馏,并有助于学习数据中不同潜在模式的频率。然而,公式(26)忽略了数据实例之间的相对接近度,并且对数据中存在的异常敏感。如[155]中所示,这种接近度信息可以通过一个前置任务来学习,在该任务中我们旨在预测随机实例对之间的距离。也可以使用提升过程来迭代过滤潜在异常并构建鲁棒检测模型。在评估阶段,f(ϕ(x;Θ∗),ϕ′(x))f(\phi(x ; \Theta^{*}), \phi'(x))f(ϕ(x;Θ∗),ϕ′(x))用于计算异常分数。

优点:这类方法的优点如下。(i)基于距离的异常定义明确,在文献中有丰富的理论支持。因此,深度基于距离的异常检测方法可以基于先前相关工作建立的坚实基础。(ii)它们在低维表示空间中工作,能够有效处理传统基于距离的异常度量无法处理的高维数据。(iii)它们能够学习专门为自身定制的表示。

缺点:它们的缺点如下。(i)大多数基于距离的异常度量所涉及的大量计算可能是将基于距离的异常度量纳入表示学习过程的障碍。(ii)它们的能力可能受到基于距离的异常度量的固有弱点的限制。

挑战目标:这种方法能够学习针对现有基于距离的异常度量定制的低维表示,解决基于距离检测中的维度诅咒问题[178](CH1和CH2)。如[112]中所示,可以设计一个适应的三元组损失来利用少量标记异常示例学习更有效的正常性表示(CH3)。受益于伪异常标记,方法[112, 155]对潜在异常污染具有鲁棒性,并且在完全无监督设置中有效工作(CH4)。

5.2.2基于单类分类的度量

这类方法旨在学习针对后续基于单类分类的异常检测定制的特征表示。单类分类是指学习一组数据实例的描述以检测新实例是否符合训练数据的问题。它是异常检测中最流行的方法之一[101, 131, 139, 148]。大多数单类分类模型受支持向量机(SVM)[31]的启发,例如两种广泛使用的单类模型:一类SVM(或vvv - SVC)[139]和支持向量数据描述(SVDD)[148]。这里的一个主要研究方向是学习针对这些传统单类分类模型进行优化的表示。这是本节的重点。另一个方向是学习端到端对抗性单类分类模型,将在第6.4节中讨论。

假设:所有正常实例来自单个(抽象)类,可以由一个紧凑模型概括,异常不符合该模型。

有许多研究致力于将一类SVM与神经网络相结合[27, 104, 161]。传统的一类SVM是学习一个超平面,该超平面最大化训练数据实例与原点之间的边际。深度一类SVM的关键思想是从神经网络启用的低维表示空间而不是原始输入空间学习一类超平面。设z=ϕ(x;Θ)z = \phi(x ; \Theta)z=ϕ(x;Θ),则[27, 104, 161]中的关键思想的一般公式可以表示为minr,Θ,w12∥Θ∥2+1vN∑i=1Nmax{0,r−w⊤zi}−rmin _{r, \Theta, w} \frac{1}{2}\|\Theta\|^{2}+\frac{1}{v N} \sum_{i = 1}^{N} max \left\{0, r - w^{\top} z_{i}\right\}-rminr,Θ,w​21​∥Θ∥2+vN1​∑i=1N​max{0,r−w⊤zi​}−r,其中rrr是边际参数,Θ\ThetaΘ是表示网络的参数,w⊤zw^{\top} zw⊤z(即w⊤ϕ(x;Θ)w^{\top} \phi(x ; \Theta)w⊤ϕ(x;Θ))替换原始点积,满足k(xi,xj)=<Φ(xi),Φ(xj)>k(x_{i}, x_{j}) = <\Phi(x_{i}), \Phi(x_{j})>k(xi​,xj​)=<Φ(xi​),Φ(xj​)>。这里Φ\PhiΦ是与再生核希尔伯特空间(RKHS)相关联的映射,k(⋅,⋅)k(\cdot, \cdot)k(⋅,⋅)是核函数;vvv是一个超参数,可以看作是训练数据中异常比例的上限。任何具有r−w⊤zi>0r - w^{\top} z_{i}>0r−w⊤zi​>0的实例都可以被报告为异常。

这个公式带来了两个主要好处:(i)它可以利用(预训练)深度网络学习更具表达力的特征用于下游异常检测,(ii)它还有助于消除核函数中计算昂贵的成对距离计算。如[104, 161]中所示,可以将AE中的重建损失添加到公式(27)中,以增强表示zzz的表达能力。如[124]中所示,许多核函数可以用随机傅里叶特征近似。因此,在w⊤zw^{\top} zw⊤z之前,可以对zzz应用某种形式的随机映射hhh以生成傅里叶特征,得到w⊤h(z)w^{\top} h(z)w⊤h(z),这可能进一步改进一类SVM模型。另一个研究方向研究SVDD的深度模型[132, 133]。SVDD旨在学习一个由中心ccc和半径rrr表征的最小超平面,使得球体包含所有训练数据实例,即minr,c,ξr2+1vN∑i=1Nξimin _{r, c, \xi} r^{2}+\frac{1}{v N} \sum_{i = 1}^{N} \xi_{i}minr,c,ξ​r2+vN1​∑i=1N​ξi​,s.t.∥Φ(xi)−c∥2≤r2+ξi,ξi≥0,∀is.t. \left\|\Phi\left(x_{i}\right)-c\right\|^{2} \leq r^{2}+\xi_{i}, \xi_{i} \geq 0, \forall is.t.∥Φ(xi​)−c∥2≤r2+ξi​,ξi​≥0,∀i。

与深度一类SVM类似,深度SVDD[132]也旨在利用神经网络将数据实例映射到最小体积的球体中,然后使用铰链损失函数保证球体中心与投影实例之间的边际。特征学习和SVDD目标可以通过最小化以下损失联合训练:minr,Θr2+1vN∑i=1Nmax{0,∥ϕ(xi;Θ)−c∥2−r2}+λ2∥Θ∥2min _{r, \Theta} r^{2}+\frac{1}{v N} \sum_{i = 1}^{N} max \left\{0,\left\|\phi\left(x_{i} ; \Theta\right)-c\right\|^{2}-r^{2}\right\}+\frac{\lambda}{2}\|\Theta\|^{2}minr,Θ​r2+vN1​∑i=1N​max{0,∥ϕ(xi​;Θ)−c∥2−r2}+2λ​∥Θ∥2。这假设在无监督设置下训练数据包含少量异常污染。在半监督设置下,损失函数可以简化为minΘ1N∥ϕ(xi;Θ)−c∥2+λ2∥Θ∥2min _{\Theta} \frac{1}{N}\left\|\phi\left(x_{i} ; \Theta\right)-c\right\|^{2}+\frac{\lambda}{2}\|\Theta\|^{2}minΘ​N1​∥ϕ(xi​;Θ)−c∥2+2λ​∥Θ∥2,它直接最小化训练数据实例的表示与中心ccc之间的平均距离。请注意,将ccc作为公式(31)中的可训练参数可能导致平凡解。在[132]中表明,ccc可以固定为通过执行单个初始前向传递获得的特征表示的均值。深度SVDD还可以进一步扩展以解决另一个半监督设置,其中有少量标记的正常实例和异常都可用[133]。关键思想是最小化标记正常实例到中心的距离,同时最大化已知异常到中心的距离。这可以通过将∑j=1M(∥ϕ(xj′;Θ)−c∥2)yj\sum_{j = 1}^{M}(\left\|\phi(x_{j}' ; \Theta)-c\right\|^{2})^{y_{j}}∑j=1M​(​ϕ(xj′​;Θ)−c​2)yj​添加到公式(31)中来实现,其中xj′x_{j}'xj′​是标记实例,yj=+1y_{j}= + 1yj​=+1当它是正常实例,否则yj=−1y_{j}= - 1yj​=−1。

优点:这类方法的优点如下。(i)基于单类分类的异常在文献中得到了很好的研究,为深度基于单类分类的方法提供了坚实的基础。(ii)表示学习和单类分类模型可以统一,以学习定制和更优的表示。(iii)它们使用户无需手动选择传统单类模型中的合适核函数。

缺点:它们的缺点如下。(i)单类模型在正常类内具有复杂分布的数据集上可能效果不佳。(ii)检测性能依赖于基于单类分类的异常度量。

挑战目标:这类方法通过学习针对单类分类模型优化的低维表示空间来提高检测准确性(CH1和CH2)。这些方法可以利用少量标记的正常和异常数据[133]来学习更有效的单类描述模型,不仅可以检测已知异常,还可以检测新类别的异常(CH3)。

5.2.3基于聚类的度量

这类方法旨在学习针对基于聚类的异常检测进行优化的特征表示。基于聚类的方法是一种常见的异常检测手段,其基本思想是将数据聚类成不同的组,然后根据数据点与所属聚类的关系来判断其是否为异常。例如,若一个数据点距离其所属聚类的中心较远,或者它所在的聚类规模很小,就可能被判定为异常。

假设:正常数据点倾向于聚集在紧密的聚类中,而异常点则要么远离任何聚类中心,要么处于规模较小的聚类中。

在深度异常检测的情境下,有多种方式利用基于聚类的度量来驱动特征学习。一种常见的做法是,先将数据通过神经网络映射到一个低维表示空间,然后在这个空间中进行聚类操作,并根据聚类结果来定义损失函数以优化特征表示。

例如,在[164]中,提出了一种基于深度自编码器和聚类分析的方法来进行异常检测。首先,使用深度自编码器将原始数据 xxx 映射到低维表示空间 z=ϕ(x;Θ)z = \phi(x ; \Theta)z=ϕ(x;Θ)。然后,在这个低维空间中,采用 kkk-means聚类算法对数据进行聚类,得到不同的聚类集合 C1,C2,⋯ ,CkC_1, C_2, \cdots, C_kC1​,C2​,⋯,Ck​。接下来,定义了一个基于聚类的损失函数来优化自编码器的参数 Θ\ThetaΘ。这个损失函数主要考虑了数据点到其所属聚类中心的距离以及聚类的规模等因素。具体来说,对于每个数据点 xxx,其损失函数的一部分是它到所属聚类中心的距离的某种度量(比如欧几里得距离),记为 d(x,c)d(x, c)d(x,c),其中 ccc 是 xxx 所属聚类的中心。另一部分则与聚类的规模有关,比如可以定义为 −log⁡∣Ci∣-\log |C_i|−log∣Ci​∣,其中 ∣Ci∣|C_i|∣Ci​∣ 是聚类 CiC_iCi​ 的规模,目的是鼓励形成规模较大的聚类,因为正常数据点通常会聚集在规模较大的聚类中。综合起来,总的损失函数可以表示为:

[Lcluster=∑x∈X(d(x,c)+λ(−log⁡∣Ci∣))[L_{cluster}=\sum_{x \in X} \left(d(x, c) + \lambda (-\log |C_i|)\right)[Lcluster​=∑x∈X​(d(x,c)+λ(−log∣Ci​∣))]

其中,λ\lambdaλ 是一个调节参数,用于平衡距离度量和聚类规模因素在损失函数中的重要性。通过最小化这个损失函数,自编码器学习到的特征表示会使得数据在低维空间中更好地按照正常和异常的特性进行聚类,从而便于后续的异常检测。在评估阶段,根据数据点与聚类中心的距离、聚类规模等因素来计算每个测试实例的异常分数。

另一种基于聚类的方法是在[122]中提出的,它采用了一种基于密度的聚类算法(如DBSCAN)来进行异常检测。首先同样是将数据通过神经网络映射到低维表示空间,然后在这个空间中运用密度聚类算法进行聚类。与前面方法不同的是,这里不是单纯根据距离和聚类规模来定义损失函数,而是根据数据点在聚类中的密度以及与其他聚类的关系来构建损失函数。例如,对于一个数据点 xxx,如果它所在的聚类密度较低,或者它与其他聚类的距离较近(意味着它可能处于聚类的边缘或者是孤立点),那么它就更有可能被判定为异常。基于这种思路,定义相应的损失函数来优化特征表示,使得在低维空间中数据的聚类特性更符合正常和异常的判断标准。

优点:

这类方法基于聚类的基本思想,而聚类是一种直观且广泛应用的异常检测策略,所以有比较清晰的理论基础和应用场景。能够学习到针对基于聚类的异常检测进行优化的特定特征表示,使得在低维空间中可以更准确地根据聚类特性来判断异常。

缺点:

聚类算法本身的性能和局限性会影响到基于聚类的异常检测方法的效果。例如,不同的聚类算法对于数据分布的适应性不同,可能导致在某些数据集中无法准确地将数据聚类成符合正常和异常判断标准的组。确定合适的聚类参数(如 kkk-means中的 kkk 值,DBSCAN中的邻域半径和最小点数等)往往需要一定的经验和试验,否则可能得到不理想的聚类结果,进而影响异常检测的准确性。

挑战目标:

通过将数据映射到低维表示空间并基于聚类的度量来优化特征表示,可以解决高维数据中异常检测的难题(CH1和CH2)。因为在低维空间中,数据的聚类特性可能更容易被观察和利用,从而减少误报率。可以利用聚类的特性来处理不同类型的数据(如序列数据、图像数据等),只要能将其映射到合适的低维表示空间并进行有效的聚类操作,就有助于提高异常检测的准确性(CH1和CH2)。这类方法对于处理存在噪声的数据也有一定的优势。因为聚类算法在一定程度上可以对噪声数据进行过滤或者将其划分到合适的聚类中,使得异常检测模型对噪声具有一定的鲁棒性(CH4)。

相关探索