欢迎访问个人网络日志🌹🌹知行空间🌹🌹
Deep-One-Class-Classification论文解读及代码分析
背景
神经网络在多类别数据上取得了不错的成果,如图像分类,目标检测,图像分割中,但面对实际中的应用,往往面对训练数据少,缺少某个类别数据的挑战。考虑如医学图像的辅助诊断,有可能只能提供健康类别的图像,但要算法识别出异常的图像,这时应用神经网络做分类,面对单个类别该如何训练呢?实际生活中存在大量的此种应用场景,如异常检测,网络入侵检测,欺诈检测等。
1.简介
这篇论文是德国柏林洪堡大学的Lukas Ruff发表在ICML2018上的工作。柏林洪堡大学已诞生57位诺贝尔奖获得者,实力惊人。这篇论文主要的工作是提出了Deep Support Vector Data Description(Deep SVDD),该方法可以直接基于异常目标函数对单类别数据进行训练,区别于以往的先在大规模数据集训练再在单类别数据集上微调的做法。
如异常检测,正常的数据服从高斯分布,异常的数据不服从高斯分布,模型训练的目标就是准确表征“正常”,与模型偏差较大的即异常点。只有正常类别的数据做训练,因此也可以看做单分类问题One-Class Classification。
对于图像数据,其维度通常较大,传统的单分类方法如One-Class SVM和Kernel Density Estimation很难取得理想的效果,且还需要先对数据做大量的特征工程的工作。
Deep SVDD通过寻找一个最小球面,使该最小封闭球面包围数据的网络表征, 来训练一个神经网络模型。最小化训练数据表征的封闭球面可以使网络提取出变化数据中的共同特征。

2.相关工作
2.1基于核的单分类方法
训练数据 χ \chi χ所属的空间表示为: χ ⊆ R d \chi \subseteq \mathbb{R}^d χ⊆Rd, k k k表示正定核(PSD kernel), k : χ × χ → [ 0 , + ∞ ) k:\chi\times \chi \rightarrow[0,+\infty) k:χ×χ→[0,+∞),数据的联合再生希尔伯特空间(Reproducing kernel Hilbert space)RKHS为 F k \mathcal{F_k} Fk。 ϕ k : χ → F k \phi_k:\chi\rightarrow\mathcal{F_k} ϕk:χ→Fk表示为数据特征的映射。因此 k ( x , x ~ ) = < ϕ k ( x ) , ϕ k ( x ~ ) > F k k(x, \tilde{x})=<\phi_k(x),\phi_k(\tilde{x})>_{\mathcal{F}_k} k(x,x~)=<ϕk(x),ϕk(x~)>Fk,上式中 < ⋅ , ⋅ > F k <\cdot, \cdot>_{\mathcal{F}_k} <⋅,⋅>Fk表示再生希尔伯特空间上的点积。
最常用的单分类方法可能是One-Class SVM,其在数据的特征空间中寻找最大间距超平面。
SVDD(Support Vector Data Description)与OC-SVM类似,但SVDD是通过学习一个超球面而非像SVM那样学习一个超平面。SVDD的目标是寻找一个中心为 c c c, c ∈ F k c\in\mathcal{F}_k c∈Fk半径为 R R R, R > 0 R\gt0 R>0的最小超球面,使其在特征空间 F k \mathcal{F}_k Fk中包围大部分数据。在超球面之外的数据就是异常数据。
常规的SVDD和OC-SVM需要对数据先进行特征工程处理,且基于核的方法计算扩展性差。
2.2深度学习方法在异常检测中的应用
深度学习在异常检测Anomaly Detection DeepAD上的应用方式可以分成两种,一种是混合式的,数据的特征表征先单独学习,然后再使用提取的特征在OC-SVM等浅层的方法上实现分类。另外一种是全深度学习的方法,直接基于异常检测的目标函数进行表征学习。Deep SVDD提出了一种全深度学习的方法用于无监督异常检测。Deep SVDD通过最小化网络输出的超球面体积来训练神经网络以提取数据分布中的公共特征。
深度自编码是基于深度学习异常检测的主流方法。基于深度自编码的方法通常通过最小化重建误差来训练 ∣ ∣ x − x ^ ∣ ∣ 2 ||x-\hat{x}||^2 ∣∣x−x^∣∣2。自编码器通过重建数据来学习正常数据间的共同特征,异常数据不包含这些特征而导致重建误差较大,由此识别出异常数据。
异常检测常用的编码器有去噪自编码器,稀疏自编码器,变分自编码器,深度卷积自编码器等。自编码器的目标是数据降维,不能直接应用在AD上,要选择自编码器合适的数据压缩度。可以使自编码器的输入输出具有相同的尺寸,也可以将输入压缩成一个常数,选择合适的压缩比比较困难。
除了自编码器,生成对抗网络GAN也有在AD上的应用。
3.Deep SVDD
3.1目标函数
与单分类目标一起同时学习数据的表征,使用两个神经网络的联合训练以把数据映射到最小包围超球面上。
输入空间: χ ⊆ R d \chi \subseteq \mathbb{R}^d χ⊆Rd
输出空间: F ⊆ R p \mathcal{F} \subseteq \mathbb{R}^p F⊆Rp
从 X \mathcal{X} X到 F \mathcal{F} F的映射神经网络: ϕ ( ⋅ ; W ) : X → F \phi(\cdot;\mathcal{W}):\mathcal{X}\rightarrow\mathcal{F} ϕ(⋅;W):X→F,有 L ∈ N L\in\mathbb{N} L∈N个隐含层,权重分别为 W = { W 1 , . . . , W L } \mathcal{W}=\{W^1,...,W^L\} W={
W1,...,WL}, W l W^{\mathcal{l}} Wl表示 l ∈ [ 1 , . . . , L ] \mathcal{l}\in [1,...,L] l∈[1,...,L]层的权重。Deep SVDD的目标是同时学习网络参数以求得输出空间 F \mathcal{F} F中半径为 R R R中心为 c c c的最小体积包围圆。
有 X \mathcal{X} X上的训练数据 D n = { x 1 , . . . , x n } \mathcal{D}_n=\{x_1,...,x_n\} D

本文解析了Deep SVDD在异常检测中的创新方法,介绍了其目标函数、神经网络结构和关键命题,并展示了基于LeNet的MNIST和CIFAR10数据集的代码实例。核心内容包括零值权重解、无偏置项和激活函数的选择,以及预训练和超球面初始化策略。
最低0.47元/天 解锁文章
4363

被折叠的 条评论
为什么被折叠?



