新奇检测综述
2021-03-09雷恒林古兰拜尔吐尔洪买日旦吾守尔张东梅
雷恒林,古兰拜尔·吐尔洪,买日旦·吾守尔,张东梅
新疆大学 信息科学与工程学院,乌鲁木齐830046
异常检测是数据分析中的一个领域,它被具体分为离群检测(正常点和异常点都在训练的数据中)和新奇检测(在构建训练模型时仅使用正常点,再用训练好的模型对新到来的数据点进行分类)。
新奇检测在数据智能方面具有重要的作用。21世纪,数据正在成为一项重要的资产,通过对数据进行分析和建模,从中提取有用信息,并以此为基础来构建智能化系统,使社会运作更有效率。随着智能化的推进,正在赋予机器更多的权力,客机的自动驾驶系统已应用多年,而近年无人汽车驾驶技术也在蓬勃发展。这些自动系统是否异常,对于智能机器做出正确的判断有重要的作用。新奇检测是一类重要的异常检测方法,其在实际生活中具有广泛的应用,比如自动识别桥梁涡激共振信号[1]以及汽车自动驾驶时进行目标检测[2]。
新奇检测极大地弥补了离群检测在面对新类型异常点时存在的不足:机器在遇到一个前所未有的异常数据时,离群点检测会将它归类到和它最相似的已知类中,这样通常会得到错误的结果,因为实际上它并不属于该类。希望模型能将未见过的异常归为新的异常类,这正是新奇检测的特点所在。
新奇检测更加适合当下大多数智能系统所面临的一个常态:处于正常状态的时间要比处于异常状态的时间多,甚至核电站之类的系统,可能几十年才会遇到一次严重的异常状态,这就导致在实际情况中,系统得到的正常数据远多于异常数据。当面对的是这样一种不平衡数据时,如果想要把这些正常数据充分利用起来,新奇检测就具有优势。
新奇检测以其良好的异常归类能力和在不平衡数据集上的良好表现,在实际生活中具有较高的应用价值,目前国外已有学者从不同的角度,对新奇检测进行了综述。Markou等人[3-4]分别从统计和神经网络两大方面对新奇检测进行了具体阐述。Kerr等人总结了新奇检测在累积学习机器人任务中的应用情况[5]。Miljković从聚簇类、最近邻、统计和分类四个方面描述新奇检测的应用[6]。Pimentel等人在文献[7]中详细论述了新奇检测领域的各种算法和原理。Domingues等人[8]对离散数据类型中的新奇检测方法进行了对比实验,来寻找最有效方法。但这些论文有的年代较为久远,有的讨论的检测方法和领域较为局限,同时最近几年新奇检测又产生了新的理论和新的应用。于是紧跟技术的发展,对新奇检测算法和其应用进行了扩展总结。
本文的组织如下:首先介绍了各种常用新奇检测方法的基本原理和具体应用,然后介绍了新奇检测实验的基本步骤、常用评估标准以及在经典数据集上的效果,最后对经典新奇检测方法的优缺点和应用进行总结分析并对新奇检测的未来研究趋势进行展望。
1 新奇检测方法
1.1 基于距离的新奇检测方法
基于距离的新奇检测方法主要包括K最近邻(KNearest Neighbor,KNN)算法和聚簇类算法(比如Kmeans算法)。该类方法通过计算点与点之间的距离来估计样本点的聚集程度并设定阈值,其中聚集程度高于阈值的点,被视为正常点,反之则为异常点。
KNN算法:KNN属于监督学习方法。在一般情况下使用KNN来检测异常类时,首先计算各个点和它K个近邻之间距离的平均值,其中距离较大的点是异常点。如图1所示,当Neighbor设置为3时,异常点A1到相邻点的距离之和的平均值要大于正常点N1。如果要把KNN算法应用到新奇检测中需要进行一些改变。比如,可以通过设置新到来的点到与它相邻点的距离极值来进行新奇检测,若超过极值则被划分为新奇点。常用的距离评判标准有欧式距离、曼哈顿距离、夹角余弦等。这类算法通常不太擅长处理高维数据,计算开销较大,因而不适合在大规模数据和实时应用中使用。
图1 KNN算法示意图
K均值(K-means)算法:该算法根据点与点之间的距离,将距离集中的点定为一个簇。算法第一步在数据集中随机产生聚簇中心,第二步将点划分到和它距离最近的聚簇中心,同时更新聚簇中心的位置(因为有新的点加入簇,簇的中心改变),重复第二步,直到所有点都被归类到簇中,具体过程如图2所示。同为聚簇类算法的还有使用马哈诺比斯距离的Gustafson-Kessel模糊聚类算法(fuzzy Gustafson-Kessel clustering,GK),在该算法中,每个数据点同时属于所有聚类簇,但是每个簇对它们的吸引力不同,点最终被归属到对它吸引力最强的簇中。Viegas等人[9]利用GK算法首先对一组合法消费者的电力使用数据进行聚类,以构建合法用电行为的原型。然后,将原型应用于基于距离的新颖性检测中。和原型相比差异较大的情形,则可能是用户在偷电,或是出故障的设备正在维修。实验证明,该方法优于目前在电力反盗窃研究中表现最优的算法(基于SVM),成功地挽回了电力传输过程中的非技术性损失。
图2 K-means聚簇过程示意图
1.2 基于概率的方法
这类新奇检测方法的数学基础是概率,通过在已知观察序列上建模,推测序列背后的状态。该类方法主要包括基于高斯分布假设的高斯模型和隐马尔可夫模型。
高斯混合模型(Gaussian Mixture Model,GMM):假设输入的数据符合高斯分布(根据定理,任何曲线都可由几个正态分布线性表示,如图3所示,y4可由y1、y2、y3表示),在给定的数据集上,计算每个特征的u和σ2。这时如果出现一个新的数据点,计算出其在各个特征下的偏差之和p(x),假设异常的阈值为ε,如果p(x)<ε,则判定点为异常,反之为正常。
图3 曲线由正态分布表示示例
一类支持向量机是在医疗领域使用较多的新奇检测方法,但是其在分类过程中只构建了全局的概率边界,这不太适合多类分类问题。为了解决这个问题,Yang等人[10]提出了半监督变分的高斯混合模型(Semi-supervised Variational Gaussian Mixture Model,SsVGMM)。该模型使用高斯混合分布,同时对预定义的类和未定义的类进行建模。从每一个类的概率密度出发,利用二维合成数据生成概率边界。SsVGMM已被用于甲状腺疾病数据的分类,其还可以被用于其他医疗数据的多类分类新奇检测。
隐马尔可夫模型(Hidden Markov Model,HMM):该模型包含观察序列和隐含序列,观察序列用于推测隐含序列的状态。先对正常数据进行模型训练,求得HMM模型的参数估计,然后在已训练好的模型上运行测试数据,看结果是否超出阈值。Fagiani等人[11]将HMM应用到智能水网和天然气网的泄漏检测中,通过和GMM模型对比,发现HMM模型有更好的效果。Schmidt等人[12]用HMM模型在波动工况下对齿轮箱进行新奇检测。该方法能够在只有单个传感器振动数据的情况下检测和定位齿轮故障。该团队认为在旋转机器诊断探测领域,HMM比高斯混合模型和高斯分布具有更好的区分能力。
1.3 基于域的检测方法
该方法先确定一个边界或域,然后使用边界分离正常类和异常类。其主要包括支持向量机、一类支持向量机和支持向量数据描述。
支持向量机(Support Vector Machine,SVM):通过选择最优的一个超平面来对数据进行划分,划分的原则是使各类与超平面之间的间隔最大化,最终转化为一个凸二次规划问题来求解。关于SVM在新奇检测中的应用原理在文献[13]中有具体描述。Chen等人[14]提出了两种新的SVM改进算法,称为带有负例样本的SVDD(SVDD with negative examples,R-SVDD)和在负例样本使用ε不灵敏损失函数的SVDD(SVDD using the ε-insensitive loss function in negative samples,εNRSVDD)。这两种算法用正例构建模型,提高模型对噪声、异常数据的鲁棒性。宋玉丹等人[15]面对大部分数据正常样本较多,异常样本较少,且大部分异常分类算法只考虑了正常样本,忽略了异常样本的实际情况,提出了基于少量异常数据的最大间隔支持向量机算法。在使用正常样本构建SVM模型的同时,也加入了异常样本,以此使构建的超平面更加贴合正常样本的边界,达到更好的判断效果。
一类支持向量机(One Class SVM,OCSVM):当训练集中只有一类数据,测试集中却包含第二类数据时,使用一类支持向量机对测试集进行分类较为合适。此外,定义边界域的形状取决于所选的内核,其原理是在训练时构建一个超平面,把所有的训练样本包含进去。在进行测试时,如果样本落在球体外面,则判定该样本为第二类数据。在图4中显示了OCSVM在确定边界后对数据的分类效果。有关OCSVM用于新奇检测的详细信息在文献[16]中有具体介绍。Burnaev等人[17]通过在训练阶段添加恶意软件的特权信息,将松弛变量重新建模,再结合传统的OCSVM,提高了对恶意软件的检测能力。Delgado-Prieto等人[18]提出先对机电系统数据进行收集,再用主成分分析(Principal Component Analysis,PCA)降维,最后用正常数据对OCSVM建模,使检测精度有了显著提升。Delgado-Prieto等人认为该方法能用于其他工业机器的故障检测。周叶[19]选择健康状态的水电机组进行建模,对水电机组的常态数据进行特征提取,最后利用OCSVM实现对水电机组故障的诊断。
图4 一类支持向量机
支持向量数据描述(Support Vector Data Description,SVDD)通过把原始的数据映射到高维空间,然后在高维空间中找一个超球体,该球体尽可能小,但是又要尽量包含更多的点。这时把超球体逆映射到原始的数据空间,就可以得到一个更加准确的正常数据范围。如果新来的点落在范围之外,则为异常点,关于SVDD的深入学习可以参考文献[20]。传统SVDD的决策函数用内核扩展表示,导致运算速度与支持向量的数量呈线性关系,为了满足快速响应程序的需要,研究者提出了快速SVDD(Fast-SVDD,F-SVDD)算法,将决策函数的时间复杂度控制在常数级,并已在液晶显示器微缺陷检查中得到应用[21]。针对原始SVDD运行速度慢的问题,孙文柱等人[22]提出了改进型的SVDD(Improved Support Vector Data Description,I-SVDD),通过缩小SVDD核矩阵的尺寸,提高了运行速度,且保证了精度,并成功应用在了飞行器飞行参数的异常检测。曲建岭等人[23]提出一种启发式约减支持向量数据描述(Heuristic Reduction Support Vector Data Description,HR-SVDD),用启发式的方法从原数据集中挑选出部分数据集,再在部分数据集上进行运算,在基本保持运算精度的情况下,加快了运行速度。实验结果表明,对于大样本数据,HR-SVDD有较好的分类效果。
1.4 基于重构的方法
1.4.1 神经网络
神经网络是当下机器学习领域非常热门的一种方法,其是对人类大脑神经元处理信息过程的一种模仿,通过训练框架,让网络不断自主学习来修改神经元之间连接的权重,直到达到最佳的训练效果。研究者们很早便开始使用神经网络来进行新奇点检测。神经网络可以被用于时间序列数据类型的异常识别,常用的有长短时记忆网络(Long Short Term Memory Network,LSTM)[24]、递归神经网络(Recursive Neural Network,RNN)等。
LSTM模型解决了RNN无法记住较久远信息的弊端,通过一种特殊设计的“门”结构(包括遗忘门、输入门、输出门),实现节点对数据的选择性保留。Nguyen等人[25]构建了带有随机层的RNN作为时间序列建模的框架,在声音异常检测方面达到了目前最优的效果。LSTM和自动编码器的搭配还被用于检测预防未知的核电站安全事故[26]。
利用生成对抗网络(Generative Adversarial Network,GAN)进行新奇检测,其在图形领域的运用流程如图5所示。GAN属于深度学习,其包含一个生成器和一个辨别器,可以利用辨别器对新奇点进行鉴别,再利用生成器生成新奇点,克服了新奇点数量少的缺点。关于GAN的详细内容可以参考文献[27]。研究者已经尝试在分类的同时进行异常检测,辨别器中新出现的类被认为是异常类[28]。Simão等人[29]利用GAN新生成的数据在线扩充数据集,同时使用随机目标向量来提高新奇检测精度,GAN存在的一个问题最优参数不好调控以及在不同数据集上的验证还不太充分。
图5 生成对抗网络示意图
自编码器(Auto Encoder)使用神经网络来对输入数据进行高效表示,可用于降维或者生成与训练数据相似的数据,其重构过程如图6所示。从其结构可知,在面对低维度的数据时其表现不是很好[30]。在文献[31]中,作者改进自编码器后得到代表性特征自编码器(Representative Feature Auto-Encoder,RFAE),利用自编码器先得到相位相同样本的代表性特征,再对代表性特征进行扩展得到重构样本。根据重构误差来判断样本是否异常。
图6 自编码器重构过程图
1.4.2 基于子空间的方法
子空间是原来向量空间的一部分,其维度小于等于原空间。通过一定的方法在尽量保留信息的情况下缩小原空间的范围,可以加快运行速度。这类方法主要包括主成分分析和零空间(Null Space)。
主成分分析(Principal Component Analysis,PCA)的基本思想是通过将高维数据在尽量保留数据特征的基础上映射到低维数据空间上,借此加快程序运行速度,如图7所示将3维空间降到2维空间。Feng等人[32]通过对复式压缩机的指示图进行离散2D变换来提取特征,再用PCA进行降维,最后对降维特征数据进行新奇检测,取得了比用小波变换更好的效果。Valiente-González等人[33]提出了一种新的图像类型新奇检测方案。该团队为了从玉米粒中挑选出有问题的玉米粒,先使用智能相机对通过通道的玉米粒进行拍照,再对玉米图像的颜色空间用PCA降维并建立特征空间,在训练集中以PCA降维获得的相关信息来设定阈值,进一步判断测试值是否异常,最后获得了92%的准确率。
图7 PCA将三维聚簇数据降到二维
Bodesheim等人[34]利用零Foley-Sammon变换(Null Foley-Sammon Transform,NFST)来进行新奇检测,并提出了零空间的概念。零空间是所有训练样本的一个联合子空间,每个已知类由一个点表示。与核主成分分析等其他子空间方法相比,该方法可以避免在获得的子空间内进行额外的密度估计或聚类,并且可以使用简单的距离度量来获得新颖性得分,适合处理增量识别任务。后来该方法还被应用于多类识别中的新奇检测,并在未知人脸识别和未知鸟类识别上得到了具体应用[35]。
线性判别分析(Linear Discriminant Analysis,LDA)同样属于降维方法。和PCA不同的是,它的目标是寻求投影后类内方差最小、类间方差最大。Yu等人[36]和Huang等人[37]对LDA进行改进,克服了类内散布矩阵必须是非奇异性矩阵的缺点,提出了基于辨别分析的核零空间方法(Kernel Null Space Method based Discriminant Analysis,KNDA)。Liu等人[38]对KNDA进行改进,得到了基于辨别分析的增量核零空间(Incremental Kernel Null Space based Discriminant Analysis,IKNDA)算法。该方法克服了KNDA特征分解带来的时间开销变大和无法计算连续数据的问题。通过在数据集Founder-Type-200和Caltech-256测试后,证明了相比KNDA、SVM和DNN,该算法降低了时间复杂度和空间复杂度,同时保持了良好的可伸缩性,适合处理大规模数据。
近年来,基于神经网络的新奇检测方法得到了较多的应用,这得益于其在大规模数据上的良好表现和高性能处理器性能的提升。但是神经网络的求解过程对研究人员来说是一个“黑盒子”,而有的应用场景需要对过程有较好的解释性,比如在银行领域,对用户的决策过程应该透明,这时其他具有较强解释性的机器学习方法会更加适合。而基于子空间的方法通过投影映射等步骤构建一个较小的空间,缩小问题的范围的同时降低复杂度,来达到新奇检测的目的。
2 新奇检测实验
2.1 新奇检测过程
在实际的新奇检测工作流程中,首先需要明确正常值的标准,收集系统在正常状态产生的数据。
然后需要进行数据的预处理工作。数据预处理工作在整个新奇检测过程中具有重要作用,主要包括对异常值、缺失值的处理,以及数据类型的转换。
对于训练集中异常值的处理是直接删除,因为它会对模型训练效果造成干扰。而对于缺失值的处理,如果缺失数据的数量相对整个数据集来说很小,重要性很低,可以试着直接删除。如果缺失数据较为重要,则可以采取办法进行填充。最简单的方法是使用中值、中位数和众数去填充缺失值。填补缺失值的方法还有插值法和最近邻法。插值法通过插值函数f(x)来对已知点进行拟合,用变量在该函数对应的值来填补缺失值。常用的插值方法有拉格朗日法、牛顿插值法和样条插值法;最近邻法使用KNN算法计算距离该点最近的K个点的均值来代替缺失值。
数据的转换。系统产生的数据类型多种多样,比如有字符型、数值型和日期型等。通常需要将非数值型数据转换为数值型数据,便于新奇检测方法使用。另外特征之间由于量纲不同,值的范围也许会相差很大,这时需要使用归一化处理,消除量纲带来的影响。
经过以上预处理之后,在模型中训练这些正常数据,会得到正常数据所在的一个边界。然后需要对模型进行测试来评价其性能。新奇检测的具体过程如图8所示。在对模型进行测试时,通过比较测试集中数据和边界的位置关系判断其异常与否。最后再通过正确率、F1-score、AUC等评估方法进行模型的评估。
图8 新奇检测过程
2.2 新奇检测评估指标
很多新奇检测的评估指标都来源于混淆矩阵(confusion-matrix),混淆矩阵如表1所示。混淆矩阵分为TP、FN、FP、TN四个方面,具体含义如下:真阳性(True Positive,TP):真实值为0,预测值也为0。假阴性(False Negative,FN):真实值为0,预测值为1。假阳性(False Positive,FP):真实值为1,预测值为0。真阴性(True Negative,TN):真实值为0,预测值也为0。
表1 混淆矩阵
由混淆矩阵可以引申出正确率(Accuracy)、假正率(False Positive Rate,FPR)、真正率(True Positive Rate,TPR)的计算公式:FPR表示当前被错误分到正样本类别中真实的负样本所占所有负样本总数的比例,TPR表示当前分到正样本中真实的正样本所占所有正样本的比例,在一般的情况下,FPR越低越好,TPR越高越好。而ROC曲线下方面积(Area Under the Curve of ROC,AUC)则与ROC曲线有较多联系。接收者操作特征曲线(Receiver Operating Characteristic curve,ROC)也是一个用于效果评估的指标,其横纵坐标分别代表FPR和TPR。ROC曲线存在的一个问题是不太好进行量化比较,所以用ROC曲线下方和坐标轴之间的面积(AUC值)来进行评估结果之间的量化比较,AUC值越大的模型,其效果越好。
2.3 算法具体性能表现
这里主要是部分新奇检测方法在经典图像数据上的表现,使用的评价指标有Accuracy和AUC。新奇检测图像领域使用的经典数据集有MNIST、Caltech-256、CIFAR-10、Coil-100等,下面是它们的简要介绍:
MNIST数据集是图像分类中最常用的数据集,其中所有图像的大小都是28×28。数据库包含了60 000张的训练图像和10 000张的测试图像,每张图像内容为手写的0~9中的一个数字。
Caltech-256数据集是一个图像物体识别数据集,一共包含30 608张图像,里面有256个物体类别,每类图像最少有80张,最多不超过827张。
CIFAR-10数据集由60 000个32×32彩色图像组成。其包含10个类,每个类有6 000个图像。其中训练集中有50 000个图像,测试集中有10 000个图像。
Coil-100数据集是由不同物体在360°旋转中每隔5°成像一次组成的数据集,其含有100个物体,每个具有72个不同的姿势,图像大小为128×128。
在表2中展示了各文献中的经典方法目前在MNIST、Caltech-256等数据集上的实验结果,从同一方法在不同数据集上的表现来看,数据集的大小、图像的复杂程度等因素都会对实际效果产生影响。
MNIST数据集是非常经典的数据集,该数据集数量较大,且图像较小。在MNIST数据集下,使用GAN的一类新奇检测(One Class novelty detection using GANs,OCGAN)能够达到最佳的效果。该方法对传统的GAN进行了改进,在输入时只输入正常点,在测试时,异常点经过重构后会变得像正常点,但是该结果和真正正常点重构后的结果相比差异还是比较大,通过这种差异来发现异常点。对于有着多达286个类别的Caltech-256数据集,使用混合技术(Mix-up technique)的方法通过在特征空间中使用插值来训练模型,更好地对数据进行了分离。其与基础的SVM和KNDA相比,有着较高的精度提升,获得了较好的效果。在CIFAR10数据集下,OCmst的效果大幅领先于其他算法,该模型使用卷积神经网络来进行深度特征提取和基于图的生成树来解决新奇检测问题。而VAE和OCSVM的效果较差。原因是OCSVM本身不太适合处理大规模数据集,而VAE在对CIFAR10数据集中异常数据的重构上,效果并不是很好,这似乎与该数据集本身难以重建有关,该数据集中的图像为彩色图像,而非MNIST数据集中的灰度图像。
总的来看,目前单一的传统机器学习新奇检测方法,比如OCSVM、SVDD等在精确度上已逐渐被神经网络等新式方法超越。神经网络类方法得到了越来越多的应用,尤其在新奇检测图像领域,研究重心向着深度学习、自动编码器等倾斜的趋势更加明显。
3 总结和展望
各类新奇检测方法都有各自的特点:基于距离的方法通过假设距离较近的点大多属于同一个类别来进行新奇检测,具有易于理解、实现简单的优点;基于概率的方法是根据不同的类对应的不同概率分布来进行划分的;基于域的方法通过设立一个正常类的边界来找出新奇类;基于神经网络类的方法具有适合大规模数据处理的优势;基于子空间的方法通过对有效信息的保留,具有运算速度较快的优点。
表2 不同新奇检测方法在经典数据集上的表现
表3 新奇检测方法的优缺点比较以及得到应用领域
在表3中对文中提到的主要新奇检测方法的优缺点和已得到应用的领域进行了总结。从表中可以看出,新奇检测方法种类较多,在工业制造、网络安全、医疗、能源传输等领域都得到了应用。表中绝大多数方法都可以处理图像数据,在万物智能互联的时代,图像在计算机处理的数据类型中占的比例越来越大,比如在近年兴起的自动驾驶领域和安防领域中,图像都是最重要的信息载体。
从表3中可以看出,OCSVM和Auto-encoder在应用广度上较为突出,在多个领域得到了应用。而LSTM和Auto-encoder则能处理较多的数据类型,对数据的适应性较好。在大规模数据处理方面,NFST、KNFST都具有一定优势,而PCA也可以在降低数据维度后和其他方法结合,最终提高运行速度。对于时间序列类型的任务,LSTM会具有优势,可以对过去有效的信息进行保留。对于新奇数据较少的情况,可利用GAN生成相似的数据,扩充数据集。而K-means、SVDD、KNN都是较为传统的方法,结构简单,便于理解,这其中KNN算法的实际使用率非常低,这与它不适合大规模数据,以及包容性差有关系,SVDD类的方法使用次数相对更多,它的复杂性较低,训练速度也更快。
每种方法都有自己的优缺点,在进行新奇检测方法选择时,要充分考虑所处理数据的数据类型、数据维度、数据量大小等内容,选择合适的方法进行应用。
新奇检测在大规模数据流、在线检测、小样本数据集等方面仍旧面临着挑战。研究人员在努力赋予新奇检测更加强大的能力。其中包括:
(1)多类分类新奇检测。随着技术的发展,目前需要分类的类别逐渐增多,这使多类分类得到了发展。比如有时需要模型在识别出异常类的同时还能够对正常类进行分类;有时还需要判断新到来的点是否是训练类中的一种。这两种情况都是对单一二元分类的扩展。
(2)在大数据和云计算技术的推动下,目前互联网上的数据量越来越大。数据规模越大意味着更多的训练数据,对部分异常检测算法来说会有正确率上的提升。但是另一方面当面对大规模数据时,很多常规的新奇检测算法在时间开销上会变得很大,这就需要新的方法,其对数据规模有较好的鲁棒性,甚至是专为大数据设计的新奇检测算法。
(3)用于训练的模型输入数据需确保是正常数据。这是新奇检测法的一个前提,如果数据有标签,能很好地进行正负类区分,如果数据没有标签,则要先确定正负类的标准。训练用的正类样本集的质量非常重要,直接影响到异常检测的结果。
(4)扩充训练和测试用的数据集。有时面对的数据是小样本数据,训练样本比较少会降低模型的有效性,这时可以考虑对样本进行扩充。常用的扩充方法是GAN,利用该模型生成相似的数据集。