当前位置: 首页 > news >正文

One-Class Classification: A Survey

I. INTRODUCTION

1.定义

OCC 是一种特殊的多类分类,训练数据仅来自单个正类。目标是学习表示和/或分类器,以便在推理过程中识别正类查询。

2.应用

异常图像检测、异常事件检测、生物识别(活体检测、反诈骗)

3.与其他领域的比较

One-class novelty detection单类新颖性检测: 目标相似,但 OCC 是监督学习,而新颖性检测是无监督学习。 Outlier detection (unsupervised anomaly detection)离群点检测(无监督异常检测): OCC 是监督学习,而异常检测是无监督学习。 Open-set recognition 开放集识别:开放集识别是一种多类分类的扩展方法。具体来说,在给定一个查询图像时,开放集识别考虑了这个图像可能不属于训练过程中观察到的任何类别的可能性。 OCC 是开放集识别的极端情况,即正类只有一个。

II. OCC 方法分类

1.数据类型:

仅正类数据 正类和未标记数据 正类和标记 OOD 数据

2.特征类型:

手工特征 (PCA、核 PCA) 统计数据驱动特征 (稀疏编码) 深度学习特征 (自编码器、几何变换自监督、OOD 数据度量学习、特征学习与 OOD 数据)

3.分类算法:

基于表示的方法 (KNFST) 统计方法 (OCSVM、SVDD、OCMPM、DS-OCMPM、GODS) 深度学习方法 (判别性方法、生成模型、知识蒸馏)

III.OCC的特征

在多类分类中,学习有助于分类的特征是一个重要研究课题。OCC 也受益于能够将正类数据与其他数据分开的特征,但在 OCC 中,由于训练时没有负类数据,选择合适的特征更加困难。

期望的特征属性

  • 紧凑性(Compactness):理想的特征应能对同一类别的不同图像提供相似的表示,因而这些特征在特征空间中应该紧密聚集。

  • 描述性(Descriptiveness):特征应能为不同类别的图像生成明显不同的表示,即每个类别应该有独特的特征表示。

A.Statistical Features

1.Sparse Coding(稀疏编码)

稀疏表示的基本概念:给定一个查询图像,稀疏表示方法通过一个字典来提取特征。字典可以通过将训练数据的列堆叠在数据矩阵中构建。(使用字典将图像表示为稀疏向量。)

字典的构建:数据矩阵 X 包含 N 个训练图像的列,每个图像被向量化为一个列向量。字典的每一列被称为原子(atom)。

稀疏优化问题:对于一个向量化的测试图像 xtest,需要解决一个稀疏性促进的优化问题,以找到一个稀疏编码 v^test,作为特征用于 OCC。

直接学习字典:除了使用预先确定的字典外,还可以直接从数据中学习字典,以获得更紧凑的表示,从而提高分类效果。提到的一些算法包括最优方向法(MOD)、K-SVD 和卷积稀疏编码(CSC),这些方法可以用于从训练数据中学习字典。

2.PCA and Kernel PCA

PCA 的基本原理:PCA 寻找一个低维子空间,以最佳地描述图像在图像空间中的分布。通过计算数据集的协方差矩阵 C,并找到其特征向量,PCA 能够将图像向量化并投影到特征空间,从而生成特征表示。

特征的计算:对给定的向量化图像 xtest,可以通过计算其在特征向量上的投影来定义特征。这些投影的大小构成一个特征向量。

核 PCA 的扩展:核 PCA 扩展了传统 PCA 的概念,以处理数据的非线性特性。它假设存在一个映射函数 Φ,将数据映射到特征空间中。在特征空间中,计算协方差矩阵后,可以找到特征向量和特征值。

求解特征向量:通过将特征向量表示为映射后数据的线性组合,可以简化特征向量和特征值的求解过程。为此,构建了一个矩阵 K,其每个元素是映射后数据的内积,最终形成一个特征向量求解的方程。

核函数的使用:在计算中,不需要显式地定义映射函数 Φ,而只需要在内积的形式下使用它,这就引入了核函数(如 RBF 核)。核函数允许我们在不直接映射数据的情况下进行计算。

特征表示:通过核 PCA 得到的投影值可以作为测试数据的特征表示。尽管 PCA 和核 PCA 生成的特征能够有效地表示训练数据的图像空间,但所学的嵌入不一定是紧凑的。

B. Deep learning-based Features

1.Deep Auto-encoders(深度自动编码器)

自编码器的结构:自编码器是由编码器(En)和解码器(De)组成的神经网络。编码器通常包含一系列卷积层和激活函数,而解码器则由转置卷积层构成,结构上与编码器相反。

训练目标:自编码器的训练目标是最小化输入与输出之间的距离,可以使用不同的距离度量(例如均方误差 Lmse)。具体而言,输入图像 x经过编码器和解码器后,输出 De(En(x))应尽量接近原始输入。

瓶颈特征空间:自编码器中通常会有一个瓶颈层,维度小于输入层。这个瓶颈使得自编码器仅保留重建所需的基本信息,从而在潜在空间中学习到有意义的特征。

特征的描述性:编码器提取的特征是信息丰富的,预计能展示出较好的描述性。

去噪自编码器:在训练自编码器时,向输入中添加噪声可以提高学习到的表示质量,减少过拟合,使模型更具泛化能力。当输入图像为带噪声的版本时,网络的目标是重建出干净的图像,这就是去噪自编码器。

2.Geometric Transformation based Self-supervision(基于几何变换的自监督)

自监督学习的概念:自监督学习是一种从未标记数据中学习信息性表示的机器学习技术。Golan 等人展示了自监督学习能够有效为单类分类任务提供有利的表示。

几何变换:在训练过程中,首先从预定义的变换集合中随机选择一种几何变换并应用于每个输入图像。这些变换可以包括多种形式,例如旋转、平移等。通过这种方式,网络学习如何预测应用了哪种变换。

训练过程:对于给定的输入图像 x,随机选择一个变换 Tr(x),然后将其输入到卷积神经网络中。网络的参数通过交叉熵损失进行优化,其中选择的变换 r 被视为真实标签。经过这种训练,网络生成适合单类分类的特征。

正常性评分的计算:Golan 等人提出了一种通过对所有 k 种变换的对数似然概率进行求和来评估测试图像的正常性评分 Stest(Xtest)。这个评分基于网络的 softmax 输出。

Dirichlet 分布的评分:此外,研究者还提出了一种基于 Dirichlet 分布的评分方法,这种方法在单类分类中表现更有效。该方法假设每个条件分布符合 Dirichlet 分布,经过最大似然估计后,最终的正常性评分 Utest 可以通过一个公式表示。

3.Deep Metric Learning with OOD Data(利用 OOD 数据进行深度度量学习)

介绍了一种基于对比损失(Contrastive Loss)的度量学习方法,用于单类分类(OCC)特征的学习。

  1. 度量学习方法:该方法采用对比损失来学习特征,使用来自异类分布(OOD,Out-of-Distribution)数据集的数据进行训练。如果没有可用的 OOD 数据集,可以通过向图像添加随机高斯噪声来人工生成。

  2. 网络功能和距离度量:设 F 为深度卷积网络的函数,对于输入图像对 x1 和 x2,在特征空间中的距离定义为

  3. 标签的定义

    • 标签 γ 表示两个输入是否属于同一类(γ=0 表示同类,γ=1表示不同类)。

    • 标签 ζ 表示两个图像是否均来自 OOD 数据集(ζ=0 表示来自 OOD,ζ=1 表示不是)。

  4. 对比损失的定义:对比损失 L被定义为:

    其中 m 表示最小边距。

  5. 损失的含义

    • 对于同类数据(γ=0,ζ=1),损失为

      ,这促使网络学习为正类数据生成相似的嵌入,满足紧凑性特征。

    • 对于不同类数据,嵌入被鼓励在特征空间中至少保持 m的距离。

    • 如果两个图像均来自 OOD(γ=0,ζ=0),损失为零,因此所学特征嵌入能够有效区分正类和给定类别之外的数据。

4.Feature Learning With OOD Data (DOC)(特征学习与 OOD 数据)

在单类分类(OCC)任务中,如何利用带标签的异类分布(OOD)数据来增强特征学习。

  1. OOD 数据的角色:在训练过程中,使用来自非重叠问题域的带标签 OOD 数据与正类数据一起进行训练。例如,在人脸识别的单类分类任务中,带注释的对象数据集可以作为 OOD 数据。

  2. 网络结构:考虑一个深度网络,包括特征提取子网络 F 和分类子网络 G。首先,网络 G∘F利用 OOD 数据进行训练,使用交叉熵损失。

  3. 数据集定义:正类数据集用

    表示,OOD 数据集用 表示,其中,yri 是图像 xri 的目标标签。

  4. 特征提取:从正类图像 xti 提取的特征表示为

    image-20240924190909027

    ,d 是特征空间的维度。

  5. 紧凑性损失:定义了一个紧凑性损失 Lc,用于测量正类数据学习到的特征的紧凑性。该损失通过特征空间中的类内距离进行评估:

    其中 μti 是其他正类特征的均值。

  6. 描述性损失:还定义了一个描述性损失 Ld,用于测量学习到特征的描述性,使用 OOD 数据的网络输出计算交叉熵损失。

  7. 联合优化:通过同时优化紧凑性和描述性损失来微调网络,损失函数为:

    其中 λ 是超参数。

IV.OCC 算法

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 猫头虎分享:Python库 Falcon 的简介、安装、用法详解入门教程
  • 网络通信——OSI七层模型和TCP/IP模型
  • 黑马智数Day5
  • contenteditable=“true“可编辑div字数限制
  • JVM —— 类加载器的分类,双亲委派机制
  • Ubuntu中交叉编译armdillo库
  • PostgreSQL主备环境配置
  • SpringBoot 整合 Easy_Trans 实现翻译的具体介绍
  • 人工智能有助于解决 IT/OT 集成安全挑战
  • 《动手学深度学习》笔记1.9——丢弃法 (一种正则化方法)
  • JVM基本组成
  • 【AI算法岗面试八股面经【超全整理】——深度学习】
  • PLC Twincat3 对传感器数据滑动平均滤波
  • HTML与JavaScript结合实现简易计算器
  • hadoop大数据平台操作笔记(上)
  • [Vue CLI 3] 配置解析之 css.extract
  • Akka系列(七):Actor持久化之Akka persistence
  • Asm.js的简单介绍
  • css布局,左右固定中间自适应实现
  • Docker 笔记(2):Dockerfile
  • Git 使用集
  • golang 发送GET和POST示例
  • Java|序列化异常StreamCorruptedException的解决方法
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信支付JSAPI,实测!终极方案
  • MPAndroidChart 教程:Y轴 YAxis
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​linux启动进程的方式
  • ​补​充​经​纬​恒​润​一​面​
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT(智能家居界面-界面切换)
  • $nextTick的使用场景介绍
  • (1)Hilt的基本概念和使用
  • (Git) gitignore基础使用
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (四)鸿鹄云架构一服务注册中心
  • (一)Linux+Windows下安装ffmpeg
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)iOS字体
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)树状数组
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net 反编译_.net反编译的相关问题
  • .net 设置默认首页
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • @NestedConfigurationProperty 注解用法
  • []error LNK2001: unresolved external symbol _m
  • [android] 切换界面的通用处理
  • [BSGS算法]纯水斐波那契数列