原文地址
http://data.bit.uni-bonn.de/publications/ICML2018.pdf
论文阅读方法
初识
本文主要提出一种全新的异常检测方法:Deep SVDD(Deep Support Vector Data Description)用于图像级别的异常检测。采用神经网络提取图像特征,构造单分类目标函数。
相知
2. Related Work
① 介绍了基于核函数的单分类模型:OC-SVM以及SVDD。其中OC-SVM构造单分类超平面,SVDD构造超球面。
计算可扩展性差,难以用于高维数据集。
② 基于深度学习的异常检测模型:AE与GAN(自编码器与生成对抗网络)
不是针对异常检测设计的范式,并且主要基于重构误差判断是否异常。
3. Deep SVDD

如上图所示。Deep SVDD的核心思想就是:利用神经网络提取数据特征,并且将正常的样本收缩在超球面(中心为C,半径为R,中心c需要提前确定)内,异常的样本远离超球面,落于球外。主要存在有两种形式:
① soft-boundary Deep SVDD
在这种范式下,训练数据即存在正样本也存在负样本,目标函数如下所示:

目标函数的第一项表示需要最小化超球的半径R,第二项为落在超球面外的样本的损失项,其中v∈(0,1]用于权衡超球面的体积与边界损失(即,允许部分样本点落于球外),最后一项为L2正则化。
通过优化上述的目标函数让所有数据点离球心越近,为了网络学到训练数据中的共有特征,所有正常样本会距离中球心尽可能近,而异常样本会距离球心尽可能远甚至落于球外。
② One-Class Deep SVDD
当训练样本大多数都为正常样本(单分类)时,可以利用该范式,目标函数如下:

目标函数第一项要求所有样本提取到的特征都要离中心尽可能近,第二项为L2正则化。
通过优化上述目标函数让所有样本的平均距离都距离中心越近,在此过程中网络也会学到共有特征。
测试
①②两种方法在进行测试时都很简单,利用测试样本距离中心的欧式距离来决定异常分数:

也可以利用超平面的R来决定,落在球外为异常。
训练
One-Class Deep SVDD直接利用SGD进行优化,而soft-boundary范式在进行优化时需要借用minimization/block coordinate descent
的方法:固定R,网络训练k轮优化参数W;每经过k轮,利用最新更新的W来优化参数R,R可以通过line search
进行搜索。
特性
作者紧接着介绍了该方法的四大特性,前三个介绍了导致“超球面崩塌”的情况,后
① W0参数为0的网络,由于该网络参数均为0,那么输入任何样本都能得到同样的结果,表示为C0。那么球心C不能为C0
这是很容易理解的,因为如果为C0网络可能会直接将参数优化为0,那么每个数据点都离中心很近。因此,作者使用初始化后的网络,对所有样本求得特征后取平均作为球心。
② 神经网络中不能存在偏置项b

如果存在偏置项b,当某一层参数W为0时,那么所有x的输出均为一个与b相关的常数(假设为B)。那么后续的层所接受到的特征均为常数,那么网络后续的层的更新策略只需要将B映射到C(球心)即可。
③ 网络激活函数不能选用边界激活函数(饱和函数),因此首选ReLU作为激活函数
假设网络存在一个上节为B的饱和激活函数,如果某个特征k对于所有输入样本都为正数,那么网络可能只保留该特征,并且增大wk,使其输出B。这样就和上述②中提到的情况一致了,后续层只需要将B映射到C即可。
④ v-property
在soft-boundary Deep SVDD中,v∈(0,1],其是离群点的上界
和留在超球面边界上/球外的样本点的下界
。

证明没太看懂,反正意思是v参数能够控制
允许多少样本点留在超球面外
,可以训练模型时融入先验知识“训练数据中异常样本的占比”。
4. Experiments
略
回顾
《Deep one-class classification》发表于ICML2018,并且后续有很多基于它进行改进的工作。
整篇文章的思想不是很难,相当于将SVDD的核函数提取特征改为利用神经网络来提取特征。对于异常检测的话,One-Class Deep SVDD
更加符合任务要求,因为在现实生产环境中难以收集异常样本,并且无法预知异常样本的种类以及出现方式,只利用正常样本来构建模型或许更符合现实需求。
代码
官方代码(基于Pytorch):https://github.com/lukasruff/Deep-SVDD-PyTorch