[论文阅读] 异常检测 Deep Learning for Anomaly Detection: A Review(三)总结梳理-疑点记录
《深度异常检测综述》总结梳理
目录
- 一、研究背景与挑战
- 二、深度异常检测方法分类
- 三、实验评估
- 四、结论
- 在这篇文章中,**异常检测的异构性**主要从以下几个方面来理解:
- 如何理解多源数据融合的困难
- “学习正常性的特征表示”与“用于特征提取的深度学习”在以下几个方面存在区别:
- 在深度异常检测的背景下,“学习正常性的特征表示”是一种用于检测异常的策略,具体含义如下:
一、研究背景与挑战
- 异常检测的重要性及复杂性:异常检测在诸多领域至关重要,但由于异常的罕见性、异构性、数据的高维性、标记数据获取困难等因素,使得传统方法面临诸多挑战,如低检测召回率、高维数据中异常难察觉、数据高效学习困难、抗噪声能力弱、复杂异常检测难以及缺乏异常解释等(CH1 - CH6)。
- 深度异常检测的优势:深度方法能够进行端到端优化、学习定制表示、处理复杂关系和异构数据,有助于应对上述挑战,在提高召回率、利用标记数据、提供异常解释等方面有重要作用。
二、深度异常检测方法分类
- 用于特征提取的深度学习:利用深度学习从高维和/或非线性可分数据中提取低维特征表示用于下游异常检测,特征提取与异常评分完全脱节。如直接使用预训练模型或明确训练深度特征提取模型,其优点是有现成模型可用、降维能力强且易实现,但存在特征提取与评分脱节导致次优分数及预训练模型受限等缺点。
- 学习正常性的特征表示:
- 通用正常性特征学习:
- 自动编码器:通过学习数据重建来获取低维特征表示,以重建误差作为异常分数。有多种正则化自动编码器变体,广泛应用于不同类型数据检测异常,但学习的特征可能受训练数据影响,且目标函数并非专为异常检测设计。
- 生成对抗网络:学习生成网络的潜在特征空间,以真实与生成实例间残差定义异常分数。如AnoGAN及其改进方法,虽能有效检测异常,但存在计算效率低等问题,后续改进方法通过添加网络等方式解决。
- 预测性建模:利用先前实例表示预测当前数据实例,以预测误差定义异常分数,适用于序列数据异常检测,能学习时间依赖关系,但仅限于序列数据且计算可能昂贵、表示未必最优。
- 自监督分类:构建自监督分类模型学习正常性表示,将与分类模型不一致的实例识别为异常,在无监督和半监督设置下工作,基于梯度等属性评分,但特征变换依赖数据且分数推导可能非最优。
- 依赖异常度量的特征学习:针对特定现有异常度量优化特征表示,包括基于距离、单类分类、基于聚类的度量等。
- 基于距离的度量:克服传统基于距离的异常度量在高维数据中的局限,通过将数据投影到低维空间并以距离相关函数定义损失函数来学习特征表示,但计算成本可能高且受距离度量固有弱点限制。
- 基于单类分类的度量:学习针对单类分类的异常检测定制的特征表示,如结合一类SVM与神经网络或研究SVDD的深度模型,有良好理论基础,但在复杂分布数据集上效果可能不佳且依赖于异常度量。
- 基于聚类的度量:先将数据映射到低维空间再进行聚类操作并据此定义损失函数优化特征表示,基于聚类思想有清晰理论基础和应用场景,但聚类算法性能及参数选择会影响检测效果。
- 通用正常性特征学习:
- 端到端异常分数学习:以端到端方式学习标量异常分数,不依赖现有异常度量,通过新的损失函数驱动神经网络学习。包括排序模型、先验驱动模型、softmax似然模型、端到端单类分类模型等。
- 排序模型:学习排序模型根据可观察序变量对数据实例排序,可基于序数回归设计损失函数。有监督设置下能利用标记异常学习优化分数,无监督设置下也能通过自训练等方式工作,但至少需某种形式标记异常且可能无法推广到未知异常。
- 先验驱动模型:利用先验分布编码和驱动异常分数学习,可施加于分数学习函数内部模块或输出。如基于贝叶斯逆强化学习的方法及对异常分数施加先验的其他方法,能利用先验信息引导学习,但先验设定需了解数据且方法相对复杂。
- softmax似然模型:基于softmax函数构建学习框架,通过最大化似然函数优化异常分数学习,能基于数据分布规律学习,但需合理划分类别且计算成本可能高。
- 端到端单类分类模型:学习区分正常和异常类的分类器并直接输出异常分数,基于铰链损失等训练,流程简化且易实现,但在数据分布复杂或存在多种异常类型时可能表现不佳。
三、实验评估
- 数据集:选择合适数据集如MNIST、CIFAR - 10、KDD Cup 99、UCI机器学习库中的数据集等,根据研究目的和方法特点确定,不同数据集有不同特征用于不同场景的实验。
- 评估指标:常用召回率、精度、F1分数、平均绝对误差等指标衡量异常检测方法性能,各指标有不同侧重点,需综合考虑。
- 实验设置:确定训练集、验证集、测试集划分,模型架构和参数,学习率、迭代次数等训练参数,以保证实验结果可靠及模型性能最佳。
- 实验结果:关注不同方法在不同数据集上各评估指标表现、对不同类型异常的检测能力以及在不同训练参数下的性能变化,以了解方法优缺点及参数影响。
四、结论
- 深度异常检测的成效:深度异常检测在提高检测准确性、处理高维数据、应对复杂异常等方面有良好效果,通过系统分类和综述介绍了多种具体方法及其特点。
- 现存问题与未来方向:仍存在提高检测准确性、处理复杂数据异常、提供有效异常解释等未解决问题,未来可探索新方法、加强异常解释研究、更好利用标记数据和未标记数据等方向进一步发展该领域。
在这篇文章中,异常检测的异构性主要从以下几个方面来理解:
一、数据类型层面的异构性
- 不同数据模态
- 异常检测可能涉及多种数据类型,如表格数据(像UCI机器学习库中的Iris数据集、Wine数据集等)、图像数据(如MNIST数据集、CIFAR - 10数据集)、网络连接记录数据(如KDD Cup 99数据集)等。这些不同的数据模态具有完全不同的结构和特征表示方式。例如,表格数据通常是由行和列组成的结构化数据,其中每一列代表一个特征,而行代表一个数据实例;而图像数据是由像素点组成的二维或三维结构,其特征表示需要考虑像素之间的空间关系和颜色信息等。
- 数据特征的多样性
- 即使在同一类型的数据中,特征也可能存在异构性。以图像数据为例,可能包括外观特征(如物体的形状、颜色)、纹理特征、空间关系特征等。对于复杂的高维数据,特征之间的相互作用和耦合方式也各不相同,有些特征可能是线性相关的,而有些可能是高阶、非线性的关系。例如,在检测视频数据中的异常时,不仅要考虑每一帧图像的特征,还要考虑帧与帧之间的时间序列特征,如物体的运动轨迹、速度变化等,这些不同类型的特征组合构成了数据特征的异构性。
二、异常行为层面的异构性
- 异常类型的不同
- 异常可以分为点异常、条件异常和组异常等多种类型。点异常是指单个数据实例相对于其他数据表现出异常;条件异常是在特定条件下才表现出的异常,例如在某个时间区间或者满足某种外部条件时的数据异常;组异常是一组数据实例整体呈现异常行为。这些不同类型的异常在行为表现上差异很大,需要不同的检测策略来识别。例如,在网络流量异常检测中,点异常可能是单个异常的网络连接请求,条件异常可能是在特定服务器负载情况下出现的异常流量模式,组异常可能是一批协同的恶意网络攻击行为。
- 异常模式的多样性
- 即使是同一种类型的异常,其具体的模式也可能不同。例如,在图像数据中,异常可能是由于物体的形状扭曲、颜色异常、物体在场景中的不合理位置等多种原因造成的。这些不同的异常模式在数据空间中的分布和表现形式各异,增加了异常检测的难度。
三、模型应对层面的异构性挑战
- 通用模型的局限性
- 由于数据和异常行为的异构性,很难设计一种通用的异常检测模型能够适用于所有类型的数据和异常情况。传统的异常检测方法往往在处理特定类型的数据或异常时效果较好,但在面对异构数据和复杂异常时表现不佳。例如,一些基于距离的异常检测方法在处理低维、独立同分布的数据时可能有效,但在高维、非独立的数据以及复杂的图像或视频数据中就难以发挥作用。
- 多源数据融合的困难
- 在许多应用中,需要检测来自多个异构数据源的异常,例如同时考虑图像和文本描述来判断一个事件是否异常。将这些不同来源的数据进行融合并有效检测异常是一个具有挑战性的问题。不同数据源的数据可能具有不同的尺度、特征表示和语义信息,如何将它们整合到一个统一的异常检测框架中是应对异构性的重要方面。深度异常检测方法虽然在一定程度上能够学习异构数据的统一表示,但仍然面临如何更好地融合多源异构数据以提高异常检测准确性的挑战。
如何理解多源数据融合的困难
- 数据尺度差异
- == 不同数据源==的数据在数值范围和单位等方面可能存在很大差异。例如,在一个包含传感器数据和文本数据的多源数据场景中,传感器数据可能是连续的数值,如温度传感器记录的温度值范围可能在 - 20℃到50℃之间,其精度可能到小数点后一位;而文本数据通常是由单词或字符组成的离散数据,没有这样的数值范围概念。将这样尺度不同的数据进行融合时,很难直接确定一个统一的标准来衡量它们对异常的贡献程度。如果简单地将它们组合在一起,数值较大的传感器数据可能会掩盖文本数据中的重要信息,导致在异常检测过程中无法有效利用文本数据中的特征。
- 特征表示差异
- 不同数据源的数据具有不同的特征表示方式。以图像数据和音频数据为例,图像数据的特征通常基于像素的颜色、位置和纹理等信息来提取,可能会使用卷积神经网络来获取层次化的特征表示,如边缘特征、物体形状特征等;而音频数据的特征则侧重于声音的频率、振幅、音色等,一般通过傅里叶变换等方法来提取特征。这些不同的特征表示方式使得在融合时很难找到一个合适的空间来整合它们。即使将它们都转换为向量形式,由于其特征的本质含义不同,如何在这个统一的向量空间中确定它们的相互关系和权重,以准确地检测异常是一个难题。
- 语义信息差异
- 不同数据源的数据蕴含着不同的语义信息。例如,在一个结合医疗影像数据和病历文本数据的医疗异常检测场景中,医疗影像数据中的语义信息主要是关于人体器官的形态、结构和病变情况等直观信息;而病历文本数据则包含患者的症状描述、病史、治疗过程等更抽象的语义信息。在融合这两种数据时,需要理解它们之间的语义关联,例如影像中的某个病变特征与病历中记录的症状之间的联系。但由于语义的复杂性和模糊性,很难建立一个有效的模型来准确地捕捉和利用这些语义信息进行异常检测。
- 数据同步和对齐问题
- 当涉及多个数据源时,数据的采集时间、频率和顺序等可能不同。例如,在一个智能交通系统中,车辆的位置信息可能每秒更新一次,而交通摄像头拍摄的图像可能每5秒获取一张。在融合这些数据进行异常检测时,需要将它们在时间轴上进行同步和对齐。如果不能正确地处理数据的同步问题,可能会导致错误地关联数据,从而影响异常检测的准确性。比如,将错误时间点的车辆位置信息和交通图像进行融合,可能会将正常的交通状况误判为异常。
- 模型融合的复杂性
- 针对不同数据源的数据,可能已经有了一些专门设计的异常检测模型,这些模型具有不同的架构和参数。例如,对于网络流量数据可能使用基于深度学习的时间序列分析模型,对于网络安全日志数据可能使用基于文本分类的模型。将这些不同的模型进行融合来构建一个统一的多源数据异常检测模型是非常复杂的。需要考虑如何整合不同模型的输出,是采用简单的加权求和还是更复杂的融合策略,以及如何调整各个模型的参数以适应多源数据融合的需求等问题。
分类方法中:前两种分类方式的区别是什么?
“学习正常性的特征表示”与“用于特征提取的深度学习”在以下几个方面存在区别:
一、目标导向
- 用于特征提取的深度学习
- 主要目标是利用深度学习技术从高维和/或非线性可分数据中提取低维特征表示,以用于下游的异常检测。这里的重点是降维,使得数据在新的低维空间中更易于处理,特征提取和异常评分是完全脱节且相互独立的过程。例如,直接使用预训练的深度模型(如AlexNet、VGG和ResNet)提取低维特征,或者明确训练一个深度特征提取模型(如自动编码器网络)来获取低维表示,之后再将一个与特征提取过程没有连接的异常评分方法应用于新空间以计算异常分数。
- 学习正常性的特征表示
- 目标是学习能够体现数据正常状态的特征表示,并且将这种表示与异常检测紧密耦合。不是简单地提取特征后再单独进行异常评分,而是在学习特征的过程中就考虑如何利用这些特征来区分正常和异常数据。例如,通过自动编码器学习数据重建,使得正常数据能够被很好地重建,而异常数据重建误差较大,从而根据重建误差来判断异常;或者通过生成对抗网络学习生成网络的潜在特征空间,让正常数据能更好地被生成,通过真实与生成实例的差异来检测异常,特征学习和异常检测是相互关联的过程。
二、特征与异常检测的关联性
- 用于特征提取的深度学习
- 深度学习在这里仅仅充当特征提取器的角色,提取的特征并不一定针对异常检测进行优化。提取的特征可能只是数据的一种通用表示,后续的异常检测方法可能是基于传统的、与特征提取过程没有内在联系的方式。例如,用主成分分析(PCA)或随机投影等传统降维方法与用深度学习进行特征提取后的异常检测过程,在与特征的关联紧密程度上没有本质区别,== 深度学习提取的特征没有被强制要求去捕捉数据中的正常 - 异常差异==。
- 学习正常性的特征表示
- 特征学习过程是围绕异常检测展开的,所学习到的特征具有明确的用于区分正常和异常的目的。
- 例如,在基于距离的度量的特征学习中,会优化特征表示,使得在表示空间中异常与其最近邻的距离较远,正常实例位于密集邻域中,这种特征表示是直接为了更好地进行基于距离的异常检测而学习的。
三、模型结构和训练方式
- 用于特征提取的深度学习
- 模型结构相对简单,主要是利用已有的深度学习架构(如多层感知机、卷积神经网络等)进行特征提取。训练方式通常是无监督的预训练(如果使用预训练模型)或者以最小化重建误差等方式进行监督训练(如果是专门训练的特征提取模型),训练目标主要是学习到数据的有效低维表示,与异常检测的目标函数没有直接关联。
- 学习正常性的特征表示
- 模型结构可能更复杂,因为它需要将特征学习和异常检测的目标融合在一起。例如,在生成对抗网络用于学习正常性特征表示时,需要同时训练生成器、判别器,并且根据生成实例和真实实例的差异来定义异常分数,训练过程涉及到生成对抗的博弈过程以及与异常检测相关的损失函数优化。在自监督分类方法中,**需要构建自监督任务来学习正常性表示,训练过程也与异常检测的目标紧密结合,**如通过最小化分类不一致性来学习特征。
在深度异常检测的背景下,“学习正常性的特征表示”是一种用于检测异常的策略,具体含义如下:
一、总体概念
这种方法的核心是学习能够代表数据正常状态的特征表示。其目的是通过对正常数据的学习,构建一个模型,使得正常数据在这个模型所定义的特征空间中有特定的表示模式。当新的数据实例进入这个模型时,如果其特征表示与正常数据的特征表示模式有较大差异,就会被判定为异常。
二、具体方式
- 通用正常性特征学习
- 自动编码器(AE):
- 这是一种常见的学习正常性特征表示的方法。AE由一个编码网络和一个解码网络组成。编码网络将原始数据映射到低维特征空间,而解码网络试图从投影的低维空间中恢复数据。正常实例可以从压缩空间中比异常更好地重建,因为在训练过程中,AE通过最小化重建误差来学习特征表示。异常很难从得到的表示中重建,所以具有较大的重建误差,这个重建误差就可以直接用作异常分数。例如,在处理图像数据时,正常的图像经过编码 - 解码过程后能够较好地还原,而含有异常物体(如添加了不属于正常场景的物体)的图像重建误差会比较大。
- 生成对抗网络(GAN):
- 学习生成网络的潜在特征空间来捕获给定数据背后的正常性。在GAN中,正常数据实例可以从生成网络的潜在特征空间中比异常更好地生成。例如,在训练好的GAN中,对于正常数据,生成器能够生成与之相似的实例;而对于异常数据,很难找到潜在空间中的对应生成实例,使得真实实例和生成实例之间的某种残差可以定义为异常分数。
- 预测性建模:
- 通过使用时间窗口内先前实例的表示作为上下文来预测当前数据实例,从而学习特征表示。正常实例通常很好地遵循时间/顺序和循环依赖关系并且可以被很好地预测,而异常往往违反这些依赖关系并且是不可预测的。例如,在视频序列异常检测中,正常的视频帧可以根据之前的帧很好地预测出来,而包含异常事件(如突然闯入的物体)的视频帧则很难预测,预测误差就用于定义异常分数。
- 自监督分类:
- 通过构建自监督分类模型来学习正常性的表示,并将与分类模型不一致的实例识别为异常。正常实例比异常更符合自监督分类器。例如,对于图像数据,通过对正常训练图像应用不同组合的几何变换操作构建预测模型,在增强数据上训练深度多类分类模型。正常实例在推理时与分类模型有更强的一致性,而异常实例则与之不一致,通过这种不一致性来检测异常。
- 自动编码器(AE):
- 依赖异常度量的特征学习
- 基于距离的度量:
- 旨在学习针对特定类型基于距离的异常度量进行优化的特征表示。假设异常与其最近邻的距离较远,而正常实例位于密集邻域中。例如,通过将数据投影到低维空间,利用基于随机邻居距离的异常度量来驱动从超高维数据中学习低维表示,使得在表示空间中异常的随机最近邻距离大于正常实例的最近邻距离,这个距离就可以作为异常分数。
- 基于单类分类的度量:
- 学习针对后续基于单类分类的异常检测定制的特征表示。假设所有正常实例来自单个(抽象)类,可以由一个紧凑模型概括,异常不符合该模型。例如,将一类SVM与神经网络相结合,从神经网络启用的低维表示空间学习一类超平面,使得正常实例位于超平面一侧,异常实例位于另一侧,从而实现异常检测。
- 基于聚类的度量:
- 学习针对基于聚类的异常检测进行优化的特征表示。正常数据点倾向于聚集在紧密的聚类中,而异常点则要么远离任何聚类中心,要么处于规模较小的聚类中。例如,先将数据通过神经网络映射到低维表示空间,然后在这个空间中进行聚类操作,根据数据点到聚类中心的距离、聚类规模等因素定义损失函数来优化特征表示,进而根据这些因素计算异常分数。
- 基于距离的度量: