【半监督论文综述】A survey on semi-supervised learning

article/2025/8/19 18:11:34

下载

半监督学习

  • 1. 半监督学习
    • 1.1 三个假设
      • 1.1.1 平滑假设
      • 1.1.2 低密度假设
      • 1.1.3 流形假设
      • 1.1.4 聚类假设
    • 1.2. 评估半监督学习算法
  • 2. 半监督学习算法分类
    • 2.1 Inductive methods
      • 2.1.1. Wrapper methods
        • 2.1.1.1 Self-training
        • 2.1.1.2 Co-Training
          • 2.1.1.2.1 Multi-view co-training
          • 2.1.1.2.2 Single-view co-training
          • 2.1.1.2.3 Co-regularization
        • 2.1.1.2 Boosting
      • 2.1.2 Unsupervised preprocessing
        • 2.1.2.1 Feature extraction
        • 2.1.2.2 Cluster-then-label
        • 2.1.2.3 Pre-training
      • 2.1.3 Intrinsically semi-supervised methods
    • 2.2 transductive methods

1. 半监督学习

D L = ( ( x i , y i ) ) i = 1 l , x i ∈ X D_{L}=\left(\left(x_{i}, y_{i}\right)\right)_{i=1}^{l}, x_i \in \mathcal{X} DL=((xi,yi))i=1lxiX 表示带标签的数据, 其中 x i x_i xi来自输入空间 X \mathcal{X} X
D U = ( x i ) i = l + 1 l + u D_{U}=\left(x_{i}\right)_{i=l+1}^{l+u} DU=(xi)i=l+1l+u 表示无标签的数据。
半监督区别于有监督的学习,是除了会使用到带标签的数据训练之外,还会额外的将不带标签的测试集的数据放到模型中去训练(这里不一定是测试集数据,可能是无标签的训练集数据)。

1.1 三个假设

Figure 1

1.1.1 平滑假设

在空间中相邻的两个点标签应该是相同的。这个假设在有监督学习中也存在,但是在半监督学习中得到了拓展,对于无标签的点也适用。举个例子,空间中有三个点 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3, 其中 x 1 x_1 x1有标签,其余的两个点没有标签。 x 2 x_2 x2 x 1 x_1 x1相邻, x 3 x_3 x3 x 2 x_2 x2相邻,且 x 3 x_3 x3 x 1 x_1 x1不相邻,那么从假设中我们可以推出 x 3 x_3 x3应该与 x 1 x_1 x1的标签一致。也就是说标签通过 x 2 x_2 x2,传递到了 x 3 x_3 x3

1.1.2 低密度假设

低密度假设意味着分类器的决策边界应该优选地通过输入空间中的低密度区域。换句话说,决策 边界不应通过高密度区域。

1.1.3 流形假设

在数据可以在欧几里得空间中表示的机器学习问题中,在高维输入空间 R d \mathbb{R}^d Rd 中观察到的数据点通常集中在低维子结构中。这些子结构被称为流形:局部欧几里得的拓扑空间。
半监督学习中的流形假设指出:

  1. 输入空间由多个低维流形组成,所有数据点都位于这些流形上。
  2. 位于同一流形上的数据点具有相同的标签。

1.1.4 聚类假设

在半监督学习研究中,通常包含一个额外的假设是集群假设,它指出属于同一集群的数据点属于同一类。然而,我们认为,前面提到的假设和集群假设并不是相互独立的,而是集群假设是其他假设的概括。

换句话说:如果数据点(未标记和已标记)无法进行有意义的聚类,则半监督学习方法不可能改进监督学习方法。

1.2. 评估半监督学习算法

在监督学习中,这些包括数据集的选择,将这些数据集划分为训练集、验证集和测试集,以及调整超参数的程度。在半监督学习中,其他因素会发挥作用。首先,在许多基准测试场景中,必须决定哪些数据点应该被标记,哪些应该保持未标记。其次,可以选择在用于训练的未标记数据(根据定义,在直推学习中就是这种情况)或完全不相交的测试集上评估学习器的性能(归纳学习)。此外,重要的是建立高质量的监督基线,以便正确评估未标记数据的附加值。在实践中,过度限制评估范围可能会导致对学习算法性能的不切实际的看法。

正如在实践中所观察到的,数据集的选择及其划分会对不同半监督学习算法的相对性能产生重大影响。为了对半监督学习算法进行真实的评估,研究人员因此应该在具有不同数量的标记和未标记数据的不同数据集上评估他们的算法。

他们报告了大多数算法的显着性能改进,并观察到错误率通常会随着添加更多未标记数据点而下降(不删除任何标记数据点)。仅当标记数据中存在的类别与未标记数据中存在的类别不匹配时,才会观察到性能下降。这些结果确实很有希望:它们表明,在图像分类任务中,神经网络可以使用未标记的数据来持续提高性能。对于未来的研究来说,调查其他类型的数据是否也可以获得这些一致的性能改进是一个有趣的途径。

2. 半监督学习算法分类

在这里插入图片描述

其中归纳方法(Inductive)是以预测样本空间所有看不到的点为目标,而直推学习(transdective)是以预测测试集中无标签数据为目标。

2.1 Inductive methods

2.1.1. Wrapper methods

综述中,表述为包装方法,其实是说这一类方法是通过一组有监督的分类器通过有标签数据训练,然后预测无标签数据,最后将最自信的样本打上伪标签,并加入到分类器训练中。

2.1.1.1 Self-training

选用一个有监督的模型,在开始的时候只用存在的有标签数据进行训练。训练好之后,在每次迭代过程中加入最自信的样本打上伪标签,此时的训练数据包含原始的有标签数据以及有标签数据,直到所有无标记数据都打上伪标签。

缺点:从这里可以知道,自训练的缺点,就是正向反馈,随着伪标签数据的加入,错误可能越滚越大。

Self-training methods (sometimes also called “self-learning” methods) are the most basic
of pseudo-labelling approaches (Triguero et al. 2015).

Notice: 注意这里,自训练只是伪标签技术的一种。其中,自训练是每次加入伪标签重新训练,而伪标签技术是在已有模型上加入伪标签进行微调,这一点原文中描述偏离了包装方法的范式(有监督模型区分了伪标签和已有标签)。

2.1.1.2 Co-Training

协同训练是自我训练对多个监督分类器的扩展。在协同训练中,两个或多个监督分类器在标记数据上进行迭代训练,在每次迭代中将它们最可靠的预测添加到其他监督分类器的标记数据集中。要使协同训练成功,重要的是基础学习器在其预测中的相关性不要太强。如果是这样,那么它们相互提供有用信息的潜力就会受到限制。在文献中,这种情况通常被称为多样性标准。

Zhou and Li (2010) provided a survey of semi-supervised learning methods relying on multiple base learners.(分歧)

2.1.1.2.1 Multi-view co-training

Blum 和 Mitchell (1998) 提出了协同训练的基本形式。在他们的开创性论文中,他们提议构建两个分类器,这些分类器在给定数据的两个不同视图(即特征子集)上进行训练。(Notice:这个应该算是协同训练的开山之作。)

2.1.1.2.2 Single-view co-training

实际上,平时我们接触到的数据集都是单视图下的数据,如下,也有研究将单视图数据转化为多视图的方法。Du (2011) 研究了实证方法,以确定充分性和独立性假设在多大程度上成立。他们提出了几种将特征集自动拆分为两个视图的方法,并表明由此产生的经验独立性和充分性与协同训练算法的性能正相关,表明优化充分性和独立性的特征分割会导致良好的分类器。

Zhou and Li (2005b)提出了tri-training,其中三个分类器交替训练。
Li and Zhou 2007拓展超过三个模型来做协同训练,该模型被称为co-forest。感觉上这里已经不好下手了,甚至对于伪标签都提出了再过滤的方法。

2.1.1.2.3 Co-regularization

Co-training methods reduce disagreement between classifiers by passing information between them, in the form of pseudo-labelled data.

2.1.1.2 Boosting

这个分类是说将监督学习中的集成学习用在半监督学习中。其中,有两类:

  1. bagging: 对于每个基学习器选用原数据中的一部分(随机采样)来训练,基学习器之间是独立的。这个满足了协同训练的基础,原文中没在赘述。
  2. boosting: 每个基学习器都用完整的数据集训练,最终结果通过基学习器的加权和来算。
    F T − 1 ( x ) = ∑ t = 1 T − 1 α t ⋅ h t ( x ) F_{T-1}(\mathbf{x})=\sum_{t=1}^{T-1} \alpha_{t} \cdot h_{t}(\mathbf{x}) FT1(x)=t=1T1αtht(x)

半监督 + 多分类
半监督 + 多标签

2.1.2 Unsupervised preprocessing

2.1.2.1 Feature extraction

最近的半监督特征提取方法主要集中在使用深度神经网络寻找输入数据的潜在表示。最突出的例子是自动编码器(autoencoder):具有一个或多个隐藏层的神经网络,其目标是重建其输入。

2.1.2.2 Cluster-then-label

聚类和分类传统上被认为是相对不相交的研究领域。然而,许多半监督学习算法使用聚类原理来指导分类过程。聚类然后标记方法形成一组明确加入聚类和分类过程的方法:它们首先将无监督或半监督聚类算法应用于所有可用数据,并使用生成的聚类来指导分类过程。

2.1.2.3 Pre-training

在预训练方法中,未标记的数据用于在应用监督训练之前将决策边界引导到可能感兴趣的区域。

这种方法自然适用于深度学习方法,其中分层模型的每一层都可以被认为是输入数据的潜在表示。与这种范式相对应的最常见的算法是深度信念网络(deep belief networks )和堆叠自动编码器(stacked autoencoders)。这两种方法都基于人工神经网络,旨在使用未标记数据将网络的参数(权重)引导到模型空间中的感兴趣区域,然后使用标记数据对参数进行微调。

2.1.3 Intrinsically semi-supervised methods

传送门

2.2 transductive methods


http://chatgpt.dhexx.cn/article/P5G5Ma93.shtml

相关文章

综述类论文怎么写?

综述类论文的关键点在于必须要有一个明确有效的叙述结构。严格来说,这类文章并没有固定的结构安排要求,但一个科学有效的叙述结构不仅会让作者的表达逻辑更为清晰和条理,还能帮助读者减少阅读困难,提高阅读效率,对论述…

视频理解论文综述

A Comprehensive Study of Deep Video Action Recognition TSN网络是一个很经典的网络,如果不知道的自己查... 基于TSN的改进论文分了三大类: 其他资料: Temporal Segment Network TSN提出的背景是当时业界做动作识别都是用 Two-stream …

毕业论文第一步--如何快速写出让人眼前一亮的文献综述论文(citspace)

一、文献综述是什么? 文献综述简称综述,是对某一领域,某一专业或某一方面的课题、问题或研究专题搜集大量相关资料,然后通过阅读、分析、提炼、整理当前课题、问题或研究专题的最新进展、学术见解或建议,对其做出综合性…

论文综述是写什么?

各位客官,走过路过不要错过,现在的你可能是一名刚步入大学的论文新手,也可能是一名刚上大四的学生,正准备开始写毕业论文。那么这篇文章我来给大家讲讲论文的综述是究竟是要写什么,为什么说文献综述奠定了一篇论文的优…

Matlab初始化太慢及相应的设置方法

前几天装的MATLAB2017,但是初始化太慢的问题一直没解决,如下: 等4-5分钟才就绪,真的很浪费时间,然后百度别人的解决方案,看到网上很多是文字描述,实践的截图都没几个(本人喜欢图文解…

matlab四维插值程序,matlab练习程序(向量插值)

有两个向量,我们想从起始向量平滑的过度到终止向量,那么中间的向量就可以通过插值的方式得到。 这在图形学中图形旋转或者机器人中物体姿态旋转都可以用到。 有三种方法:Lerp,NLerp和SLerp。 Lerp为线性插值,公式如下: NLerp为线性插值后归一化,公式如下: SLerp为球面插…

MATLAB程序设计

文章目录 1 程序基础2 数据类型和运算2.1 常量和变量2.2 数值数据2.3 字符数据2.4 逻辑数据类型2.5 日期和时间2.6 单元数组和结构体 3 数组与矩阵3.1创建数组3.2 数组运算3.3 数组处理函数3.3.1 zero/ones函数3.3.2 size/length函数3.3.3 max/min函数3.3.4 isempty函数3.3.5 u…

matlab-m脚本调用simulink无法运行的原因(本身设置了初始化函数

matlab-m脚本调用simulink无法运行的原因(本身设置了初始化函数) 最近从MATLAB中调用simulink模块老是不成功一直提示如下错误: 该错误的意思是,在运行PosControl这个模块之前,它本身还会运行自己设置的初始化函数In…

Isight与MATLAB联合仿真时出现:无法定位或初始化类(unsupported major minor version 52.0)

文章目录 一、报错页面二、解决方法三、仿真示例四、运行注意事项 一、报错页面 Isight 调用MATLAB的时候,MATLAB页面报错,出现如下页面: 二、解决方法 解决方法如下: 双击malab组件 1.选择options 2.Drive Matlab with Jav…

VS2019调用Matlab2019b生成的dll时初始化异常

VS2019调用matlab动态链接库遇到的问题 在Visual Studio中使用C调用Matlab程序VS与MATLAB版本选择VS与MATLAB混编的环境配置初始化异常的解决0xc0000005处理Debug错误:xsd_binder::MalformedDocumentError 在Visual Studio中使用C调用Matlab程序 我目前在写一个用V…

MATLAB一直显示“正忙”或“初始化”

解决方案 1 MATLAB 在启动时,一直停留在“正在初始化”的状态,有可能是因为 MATLAB 一直在找着本机的许可证。 有可能是设置了 LM_LICENSE_FILE 的环境变量。这个变量告诉 MATLAB 或者其他应用程序去哪里查找许可证文件。如果您有一个网络许可证&#xf…

C++和MATLAB混合编程——初始化mwArray失败解决方法!

首先,按这样设置, [填坑]VS2017与MATLAB2016b混合编程(生成dll方式)_清凉简装的博客-CSDN博客_matlab生成dllMATLAB 生成 dll 前的工作1、配置MATLAB环境控制面板->所有控制面板项->系统->高级系统设置->高级->环…

MATLAB打开后一直在初始化,或者初始化很慢问题

问题描述:遇到MATLAB启动较慢,进入主界面后,一直停留在“正在初始化”的状态。浪费很多时间。这种问题大多是因为MATLAB软件在启动时寻找本机的许可证或者是设置了 LM_LICENSE_FILE 的环境变量。这个变量告诉 MATLAB 或者其他应用程序去哪里查…

解决MATLAB一直初始化,加速MATLAB

之前,在做课设时,遇到MATLAB启动较慢,进入主界面后,一直停留在“正在初始化”的状态。浪费很多时间。逛了逛MATLAB中文社区,发现这种问题大多是因为MATLAB软件在启动时寻找本机的许可证或者是设置了 LM_LICENSE_FILE 的…

QT和matlab混合编程以及maltab程序化初始化失败

一. 内容简介 需要用QT调用matlab代码完成计算,并获取计算结果。 二. 软件环境 2.1QT 5.14.1 新版QT6.4,,6.5在线安装经常失败,而5.9版本又无法编译64位程序,所以就采用5.14.1这个用的比较多也比较稳定的一个版本。 QT编译器…

Matlab R2018a初始化问题

前几天装的MATLAB2018(我装在C盘,用的是在线安装,自己下的License破解了),但是初始化问题一直没解决,下面显示我遇到的问题: 等4-5分钟才就绪,真的很浪费时间,然后百度别…

Matlab一直初始化进不去程序之一种解决办法

很多解决办法不行的时候你可以试试在设置里把区域改成中国 究其原因可能是因为破解版的是中国的,然后在联网使用matlab时IP认证不通过

matlab初始化界面卡住,Matlab初始化initializing极慢解决方法

Matlab初始化initializing极慢解决方法 Matlab升级以后,功能的确丰富了好多,有些函数也更加人性话了,好多bug也没有了。但是可恼的是,这个该死的家伙却一天比一天肥,MATLAB7.6a居然达到了3.76G,启动和打开…

12306购票辅助工具

前段时间在GitHub上看到一段刷票的脚步代码,下下来稍稍改了下加了个简陋的UI界面,另外把车站列表等信息弄成了csv文件,方便不改源码的情况下添加车站。 先上核心内容: try:if hasattr(print_func, __call__):print_func(开始刷票…

全网首发:12306抢票算法大曝光?(十张图搞定)

前言 相信大家都有过抢票、刷票的经验,每年年底,这都是一场盛宴。 然而,你有没有想过12306的抢票算法是怎么实现的呢? 没有吧,想过,还是没有头绪? 今天,我们就来曝光让人又爱又恨…