💻
QMMMS的笔记
博客
  • QMMMS的笔记
  • agent
    • MCP的背景、原理和开发
    • Agent 历史与背景
    • Agentic Workflows
    • 环境检查与基础工具
    • Tool Call
    • 工具与运行时的值
    • temp
    • 处理 Tool Call error
    • trick
  • algorithm
    • 线性结构
    • 二叉树
    • 图
    • 查找
    • 排序
    • 动态规划
    • 优化方法
    • 数学
    • 迁移至Java
  • computer_composition
    • 系统总线
    • 存储器
    • 输入输出系统
    • 计算机的运算方法
    • 指令系统
    • 补充
  • computer_network
    • 引入
    • 应用层
    • 传输层
    • 网络层(数据平面)
    • 网络层(控制平面)
    • 链路层
    • 常见问答
    • 实验
  • database
    • SQL实战
    • 关系代数
    • 数据库设计
    • 规范化
    • 数据库基本概念
    • 查询原理
    • 数据库恢复技术
    • 并发控制
  • dev_tools
    • Git
    • Nginx
    • Spring
    • LangChain
    • PyTorch Cheat Sheet
    • MyBatis
    • MySQL Cheat Sheet
    • MySQL 补充
    • Redis
    • Docker
    • RocketMQ
    • Chrome
  • linux
    • Linux基础命令与使用
    • 文件与权限
    • 文件与目录操作
    • 权限属性高级
    • 命令与文件的查找
    • 文件压缩和打包
    • vim编辑器
    • shell变量
    • 命令补充
    • 数据流重定向
    • 管道命令
    • shell脚本
    • 用户管理
    • 用户间交流
    • 计划任务
    • 进程管理
    • 软件管理
    • 认识系统服务
    • 运维常用命令
    • 常用命令
  • llm
    • 大规模语言模型概述
    • 分布式训练概述
    • 有监督微调概述
    • 强化学习与LLM
    • LLM评估概述
    • 大模型应用
    • 理解大模型
    • 量化
    • 预训练
    • 上下文学习
  • machine_learning
    • 引入
    • 大致正确学习
    • 一致收敛
    • 偏差还是过拟合?
    • 可学习的充要条件
    • 非均匀可学习性
    • 计算复杂性
  • mathematics
    • 概率与统计基础
    • 线性代数基础
  • operating_system
    • 操作系统基本概念
    • 进程和线程
    • 同步,互斥与死锁
    • 内存管理
    • 文件系统
    • I/O系统
    • 保护与安全
    • 《现代操作系统》
  • statistical_learning
    • 统计学习引入
    • 线性回归
    • 分类
    • 重抽样方法
    • 线性模型选择与正则化
    • 非线性模型
    • 基于树的方法
    • 支持向量机
    • 无指导学习
    • 马尔科夫链和蒙托卡罗方法简明理解
    • R语言速查
  • deep_learning
    • basic_concepts
      • 逻辑回归与损失函数
      • 神经网络
      • 正则化、预处理、权重初始化
      • 优化算法
      • 机器学习策略
      • 复习:从计算机视觉的角度
      • 卷积神经网络
      • 深度卷积网络示例
      • 计算机视觉任务
      • 循环神经网络
      • 自然语言处理任务
      • 注意力
      • Transformers 家族
      • 显卡扫盲
      • 强化学习概述
    • semi-supervise
      • 半监督学习简介
      • Consistency Regularization
      • Proxy-label Methods
      • Holistic Methods
      • Generative Models
      • Graph-Based SSL
      • Self-Supervision for SSL
      • Other SSL methods
  • programming
    • cpp
      • STL
      • C++基础
      • 内存管理
      • 面向对象
    • java
      • 环境和介绍
      • 注释
      • String
      • 面向对象思想
      • Object
      • 包
      • 访问权限修饰符
      • 初始化块
      • 接口
      • 内部类
      • 注解
      • 枚举
      • 集合框架
      • List
      • Map
      • 泛型
      • 迭代
      • IO与流
      • 序列化
      • 异常
      • Lambda
      • Stream流
      • Socket
      • 缓冲
      • 命名规范
      • 拆箱装箱
      • 值传递
      • 深拷贝
      • 反射
      • JVM
      • 并发编程基础
    • python
      • 并发编程
      • 环境管理
  • software_engineering
    • basic_concepts
      • 系统分析与设计概述
      • 规划
      • 需求分析与原型设计
      • 项目管理
      • 建模
      • 数据库设计
      • 架构
      • 配置管理
      • 测试管理
      • 安全
      • 编码原则
      • 微服务
      • 补充内容
    • software_testing
      • CMMI基础
      • PPQA与SQA
      • 软件测试基础
      • 黑盒测试
      • 白盒测试
      • 集成测试
      • 系统测试
      • 测开面试补充
由 GitBook 提供支持
在本页
  • 常见方法
  • 半监督学习的假设
  • 相关研究方向
  • 主动学习
  • 迁移学习和域适应
  • 弱监督学习
  • 从噪声标签中学习
  • 评估
在GitHub上编辑
  1. deep_learning
  2. semi-supervise

半监督学习简介

《An Overview of Deep Semi-Supervised Learning》

在传统的监督学习中,每一个training data都是由data和label构成的,但是一般情况下,只能获取大量的数据,标注需要大量成本。

半监督学习(Semi-supervised learning,SSL)的定义为:有标注的数据占比非常的小(只有1-10%)。半监督学习的目标是利用未标记的数据得到更好表现的模型。未标记的数据集可以为我们提供关于数据真实分布的一些额外信息

常见方法

一致性回归Consistency Regularization (a.k.a Consistency Training)基于假设:假设一个很小的现实扰动被加入这个没有被标记的数据中,这个数据的分类不会改变。可以训练模型对给定的未标记示例及其扰动版本进行一致的预测

代理标签方法Proxy-label Methods:用已经标记的训练集,基于一些启发式的方法来标注未标记的训练集,然后来生成一些额外的训练用例

一致性训练也可以被视为一种代理标签方法,有一个细微的差别,

  • 代理标签方法将伪标签视为真实标签并计算交叉熵损失 Loss=CrossEntropy(pred-label,proxy-label)\text{Loss}=\text{CrossEntropy}(\text{pred-label}, \text{proxy-label})Loss=CrossEntropy(pred-label,proxy-label)

  • 一致性训练不直接使用伪标签,而是强制两个预测一致,即最小化它们的差异Loss=MSE(p(x),p(x′))\text{Loss}=\text{MSE}(p(x), p(x'))Loss=MSE(p(x),p(x′))

生成模型Generative Models:类似于监督设置,其中一个任务上的学习特征可以转移到其他下游任务。

例如,图像生成模型(如变分自编码器 VAE 或生成对抗网络 GAN)可以从大量的猫和狗的图像数据(包括有标签和无标签数据)中学习数据的分布特征。它能捕捉到图像中关于猫和狗的通用特征,如形状、颜色、纹理等信息。

通过学习这些特征,生成模型可以将其迁移到监督学习任务中。例如,生成模型学习到猫的耳朵形状、眼睛特征等关键特征,监督学习模型在对新图像分类时,就可以借助这些特征更准确地判断图像中的动物是猫还是狗。

基于图的方法Graph-Based Methods:已标记和未标记的数据点可以被视为图的节点,目标是通过利用两个节点和的相似性,将标签从已标记节点传播到未标记节点,这种相似性体现在两个节点之间的边的强度上

除了这些主要类别之外,在熵最小化方面也有一些自监督学习的工作。在熵最小化中,我们通过最小化预测的熵来迫使模型做出自信的预测。

半监督学习的假设

平滑性假设The Smoothness Assumption:如果两个点在高密度区域中(数据分布的概率密度比较大),且这两个点距离很近,那么他们的输出(标签)也会十分的接近。

聚类假设The Cluster Assumption:如果两个点在相同的聚类中,那么他们趋向于被分成同一类。

聚类假设也可以被视为低密度分离假设low-density separation assumption:决策边界应该位于低密度区域

流形假定The Manifold Assumption:高维的数据一般都会处于一个低维的流形中,可以尝试使用未标记数据找到一个低维表示,然后使用标记数据来解决简化后的任务

流形可以理解为高维空间中的低维分布,例如三维空间中的数据点,其实分布在一个二维曲面上

相关研究方向

主动学习

主动学习 Active Learning 中,学习算法被提供一个大型的未标记数据点池,并且能够以交互方式请求对未标记集合中的任何给定示例进行标记。在被动学习中,要标记的示例是从未标记池中随机选择的,主动学习旨在仔细选择要标记的示例,以在尽可能少的请求下实现更高的准确性,从而最小化获取标记数据的成本。这在数据可能丰富但标签稀缺或获取成本高昂的问题中特别受关注。

普遍的主动学习策略比较难构建,但存在许多启发式方法,两种广泛使用的选择标准是信息性和代表性

  • 信息性衡量一个未标记的实例在多大程度上有助于减少统计模型的不确定性

  • 代表性衡量一个实例在多大程度上有助于表示输入模式的结构

主动学习和半监督学习自然是相关的,因为两者都旨在使用有限数量的数据来改进学习者。有几项工作考虑在不同任务中结合半监督学习和主动学习

迁移学习和域适应

迁移学习 Transfer Learning 用于通过转移从相关领域(称为源领域)学到的知识来改进一个在某个领域(称为目标领域)上的学习者。用于训练模型的源领域与用于测试模型的目标领域相关但不同。应用迁移学习以在目标数据上获得更高的准确性

域适应 Domain Adaptation 中目标任务与源任务相同,但域不同。域适应的目标是训练一个能够在不同分布的不同域中进行泛化的学习器,其中源域有已标记的数据。目标域可以全部标注、部分标注或者不标注

迁移学习好比源任务是识别卡通动物图片中的动物类别。目标任务是识别真实图片中的车辆类别(如汽车、卡车)。源任务(动物分类)和目标任务(车辆分类)不同,但模型的特征提取能力(如边缘、形状识别)可以迁移。

域适应源任务 & 目标任务都为识别动物类别(任务相同)。 数据存在差异:源领域是卡通动物图片,目标领域是真实动物图片(分布不同)。型需要消除领域差异(卡通 vs 真实)

弱监督学习

为了克服对大量人工标注且昂贵的训练集的需求,大多数大规模深度学习系统使用某种形式的弱监督:通过使用廉价标注员等策略构建的质量较低但规模较大的训练集。

在弱监督学习Weakly-Supervised Learning中,目标与监督学习相同,但训练集不提供真实的高质量标注的,而是弱标注,这些示例可能来自众包工作者、启发式规则的输出、远程监督的结果或其他分类器的输出。

例如,在弱监督语义分割中,难以获取且成本较高的像素级标签被不精确的标注所替代,例如图像标签、点 、涂鸦 和边界框。在这种情况下,如果有有限数量的强标注示例可用,同时仍然利用弱标注示例,自监督学习方法可以进一步提高性能。

从噪声标签中学习

如果噪声很大,标签噪声会对深度学习方法的性能产生负面影响。为了克服这一问题,大多数用于使用有噪声标签训练深度神经网络的现有方法都试图纠正损失函数:

  • 使用代理标签方法重新标记有噪声的示例

  • 对训练示例进行重新加权,以区分干净样本和有噪声样本

半监督学习在从有噪声的标签中学习方面很有用,丢弃有噪声的标签,将有噪声的样本视为未标记数据,并使用半监督学习方法对训练进行正则化。

评估

评估 SSL 方法一般选择一个通常用于监督学习的数据集(例如 CIFAR-10、SVHN、ImageNet等),然后忽略大部分标签,从而得到一个小的有标签集合和一个更大的无标签集合。使用给定的半监督学习方法训练深度学习模型,并在原始测试集上针对不同的、标准化的有标签样本部分报告结果。为了使该程序适用于实际场景,一些改进建议如下:

  • 为了对不同的自监督学习方法进行实际比较,它们必须共享相同的基础架构和其他实现细节(例如,超参数、参数初始化、数据增强、正则化等)

  • SSL 主要目标是获得比有监督方式更好的性能。因此提供一个强大的基线至关重要,该基线包括以有监督的方式在标记数据集 上训练相同的模型,并调整超参数以报告完全有监督模型的最佳性能情况。

  • 另一个基线,可以通过在大型有标签数据集上训练模型,然后在小型有标签数据集上进行微调来获得。即迁移的方法

  • 考虑类别分布不匹配。在进行评估时,可以忽略有标签示例和无标签示例之间可能存在的分布不匹配,因为这两组数据都来自同一个数据集。然而,这种不匹配在实际应用中很普遍,在实际应用中需要解决这种差异的影响。

  • 半监督学习中的一种常见做法是改变标记示例的数量,但以系统的方式改变未标记数据的大小以模拟现实场景,例如在相对较小的未标记数据集上进行训练,可以为半监督学习方法的有效性提供更多见解。

  • 如果使用完全标注的数据集进行评估,验证集会比用于训练的标注集大得多。在这种情况下,广泛的超参数调整可能会导致对验证集的过拟合。相比之下,小的验证集限制了选择模型的能力,从而对半监督学习方法的性能进行更现实的评估

上一页semi-supervise下一页Consistency Regularization

最后更新于3个月前