《Deep One-Class Classification》在异常检测的一种检测计算工具

《Deep One-Class Classification》

发表的刊物:ICML 2018

论文地址链接:http://proceedings.mlr.press/v80/ruff18a/ruff18a.pdf

想重点提一下这一篇文章的原因是: 最近看的好几篇异常检测的文章都用到了One-Class Classification,自己不是理解的很透彻,就想借以做个专栏一次性将相关概念都以自己的知识掌握程度去理解一下,并尝试自己给讲解出来。

有关概念:SVM(支持向量机)、one class SVM:简称 OCSVM(一类支持向量机)、Support Vector Domain Description:简称SVDD(支持向量数据域描述)、Deep One-Class Classification。

一,传统经典的异常检测基础

SVM: 支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。

举个例子,二分类就是比如说现在有猫狗比例均衡的一个图像数据集,我们通过训练就是让SVM能够很好的识别出猫狗,这种特定环境下的特定二分类任务。

在线性 SVM 中转化为最优化问题时求解的公式计算都是以内积(dot product)形式出现的,其中 ϕ ( X ) 是把训练集中的向量点转化到高维的非线性映射函数,

因为内积的算法复杂度非常大,所以我们利用核函数来取代计算非线性映射函数的内积。
《Deep One-Class Classification》在异常检测的一种检测计算工具_第1张图片
《Deep One-Class Classification》在异常检测的一种检测计算工具_第2张图片

在核函数的数据处理基础之上,我们就可以对数据进行进一步的划分分类了。
《Deep One-Class Classification》在异常检测的一种检测计算工具_第3张图片
SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。

超平面的意思:样本的特征很可能是高维的,此时样本空间的划分就不是一条线了。

更详细的介绍请参考:svm详细介绍以及应用

二,那现在我们在SVM的基础之上来引入one-class-classification svm.

OCSVM(one class support vector machine)即单类支持向量机 , 该模型将数据样本通过核函数映射到高维特征空间,使其具有更良好的聚集性,在特征空间中求解一个最优超平面实现目标数据与坐标原点的最大分离。
《Deep One-Class Classification》在异常检测的一种检测计算工具_第4张图片
在简单介绍完SVM之后我们看一下,我们重点看一下什么叫一类分类器
还是用刚才的猫狗例子,单分类的意思,我现在训练机器只学习狗的特征,让算法只会识别狗这一类,那么当把猫,兔等其他相对于狗来说是异类的图像放进去的时候,对于只认识狗这一正常类别的网络结构,其他的就不能识别为狗,这一类,至于他到底是什么,不管不知道,统统识别为非狗类,即为异常。

坐标原点被假设为唯一的一个异常样本,最优超平面与坐标原点最大距离为上图的虚线距离, 并允许少部分样本在坐标原点与分界面之间,与分类超平面的距离为 ζ∣ω∣

one class classification这如何实现呢? 多类classification我们都很熟悉了,方法也很多,比如像SVM去寻找一个最优超平面把正负样本分开,总之都涉及到不止一个类的样本,相当于告诉算法这种东西长什么样(这里的长什么样指的是特征提取方法所提取到的提取),那种东西长什么样,于是训练出一个模型能够区分这些东西。问题是在one class classification只有一个类,这该怎么办呢?给大家介绍一个方法:SVDD(support vector domain description)

三,OCSVM的实现方法SVDD

《Deep One-Class Classification》在异常检测的一种检测计算工具_第5张图片
后来研究人员提出了一种想法,说在给定的数据集上,画一个圆(超球体),使得这个圆尽可能小,但是又尽可能囊括多的数据点。 这就是典型的矛盾目标优化问题。因为圆尽可能小,就包的数据点就有可能会减少。同样想要包更多的点就需要一个更大的圆。
那么针对这种问题,我们一般给出自己衡量目标的指标,然后写个目标函数优化就好了,所以,最后的工作重心就是怎样设计一个目标函数可以实现上述的要求。

关于如何设计函数以及实现的步骤方面,我在这里就不展开了,可以具体参考:SVDD的实现

《Deep One-Class Classification》在异常检测的一种检测计算工具_第6张图片

四,在简单的介绍完SVM、OCSVM、SVDD之后,就可以引入我们今天的主角

背景:上述传统工作还存在着如下缺点:
1,浅层特征工程。由于糟糕的计算可扩展性和维度限制,导致在高维数据场景中经常失败。为了有效,这种浅层方法通常需要大量的特征工程。
2,由于和矩阵的构造和操作导致a poor computational scaling,除非使用近似技术,否则规模至少为样本数的平方。
3,现在的一些方法结果不错,但是他们都没有通过优化基于异常检测目标函数的优化来进行训练,并且大多是有依赖于基于重建误差的启发式算法。

结合以上的不足及传统方法的特点,《Deep One-Class Classification》提出了一种新的深度异常检测的方法,灵感来源于基于核的单分类问题(OCSVM)以及最小体积估计(SVDD)。

主要论文思路框架: 训练一个神经网络,同时最小化包含数据网络表示的超球面的体积,提取数据分布变化的共同因素;神经网络转换尝试将大部分数据网络表示映射到以中心c和半径R为最小体积的超球中(在后面的数学推导中,我们的目的就是求c和R);正常例子的映射在超球面内,而异常的映射在超球面外。这样就能起到异常检测的效果。

网络结构如下:
《Deep One-Class Classification》在异常检测的一种检测计算工具_第7张图片
具体实现: 第一种,With Deep SVDD, we build on the kernel-based SVDD and minimum volume estimation by finding a data-enclosing hypersphere of smallest size.
Soft-bound Deep SVDD——联合学习参数W和最小化在输出空间包含数据的超球的体积
《Deep One-Class Classification》在异常检测的一种检测计算工具_第8张图片
这个函数的目的是最小化超球体积以及参数w的值。

第二种: One-Class Deep SVDD:For the case where we assume most of the training data is normal, which is often the case in one-class classification tasks, we propose an additional simplified objective.
《Deep One-Class Classification》在异常检测的一种检测计算工具_第9张图片
这个函数的目的是为了最小化参数W,形成一个最化的球体。

异常分数的计算:测试点到超球中心点c的距离。
《Deep One-Class Classification》在异常检测的一种检测计算工具_第10张图片
用上式来计算异常分数,异常样本结果为正,正常样本结果为负。

最后实验阶段,作者在mnist以及cifar-10上进行验证,结果如下。
《Deep One-Class Classification》在异常检测的一种检测计算工具_第11张图片

你可能感兴趣的:(异常检测(Anomaly,Detection),机器学习)