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

论文阅读 2025-8-26 一些半监督学习的工作

今天突发奇想,看一下cvpr2025的半监督学习的医学图片分割的相关工作。

半监督学习有两个比较经典的方法:

1.一致性正则化/学习 (Consistency Regularization)

核心思想: 对于一个输入数据,即使经过一些轻微的扰动(例如噪声、缩放、旋转等数据增强),模型给出的预测也应该保持一致(即输出分布应该相似)。

如何工作:

  • 对同一个未标记样本 x 进行两次不同的增强或扰动,得到 x’ 和 x’'。
  • 将这两个变体分别输入模型,得到两个预测分布 P(y|x’) 和 P(y|x’')。
  • 计算这两个分布之间的差异(通常使用KL散度、均方误差等作为损失函数),并最小化这个差异。这个损失项会作为正则项,与有监督的损失项一起指导模型训练。

哲学: “一个样本,无论你如何观察它,它都应该属于同一个类别。” 这鼓励模型学习到对扰动不敏感的、更鲁棒的特征表示。

经典代表模型:

  • Π-Model、Temporal Ensembling:早期开创性工作。
  • Mean Teacher:使用一个教师模型(权重的移动平均)来为学生模型生成更稳定的目标。
  • FixMatch、UDA:将一致性学习与伪标签(见下文)巧妙结合,取得了极佳的效果。
2. 伪标签学习 (Pseudo-Labeling)

核心思想: 利用模型本身在未标记数据上 confident(高置信度)的预测,作为“伪标签”(Pseudo-Labels),然后将这些数据当作有标签数据来使用,扩充训练集。

如何工作:

  • 使用当前模型对未标记数据 x 进行预测。
  • 筛选出那些模型预测置信度高于某个阈值 τ 的样本。
  • 将这些高置信度的预测(例如 argmax(P(y|x)))当作该样本的“真实”标签 ŷ。
  • 将这些 (x, ŷ) 对加入到训练集中,与原有的有标签数据一起训练模型。

哲学: “自信的预测很可能是对的,那就把它当成对的来用。” 这是一种自训练(Self-training)的现代形式。

经典代表模型:

  • Self-Training:最原始的形式。
  • Pseudo-Label:由Dong-Hyun Lee提出,明确给出了“伪标签”这一术语。
  • FixMatch:同样结合了该方法,对弱增强数据生成伪标签,并用强增强数据的一致性来训练。

重要补充:现代方法通常是混合体

需要强调的是,当今最先进的半监督学习方法通常不是单纯使用某一种,而是将两者甚至更多思想融合在一起。最著名的例子就是 FixMatch:

  • 伪标签阶段:对一张未标记图片进行弱增强(如随机水平翻转),让模型预测并生成伪标签。
  • 一致性学习阶段:对同一张图片进行强增强(如Cutout、色彩抖动),让模型预测,并要求这个预测与第一步生成的伪标签保持一致。

1. β-FFT: Nonlinear Interpolation and Differentiated Training Strategies for Semi-Supervised Medical Image Segmentation

提出了一个新的半监督训练的范式,以及一个新的图片增强的方法(不在space domain上增强,而是在频谱domain上整合两个图片),感觉不错。

2. Enhancing SAM with Efficient Prompting and Preference Optimization for Semi-supervised Medical Image Segmentation

这篇论文的模型在多个数据集上进行了半监督训练,不是一个统一的模型,因此我感觉也是一般般吧,泛化可能还是会不太好。

3. STiL: Semi-supervised Tabular-Image Learning for Comprehensive Task-Relevant Information Exploration in Multimodal Classification

多模态半监督学习。

创新点大致如下:

  1. 新的模型架构,允许模型学习modality-shared和modal-specific的特征,而不是单一特征
  2. 新的伪标签选择策略
  3. 通过类别原型进行对比学习来拉开类别差异
http://www.xdnf.cn/news/18816.html

相关文章:

  • 04. 鸿蒙_获取app缓存大小和清除缓存
  • iOS 开发中的 UIStackView 使用详解
  • 飞算JavaAI:Java开发新时代的破晓之光
  • 【软考论文】论面向对象建模方法(动态、静态)
  • Go函数详解:从基础到高阶应用
  • 数据结构:单向链表的逆置;双向循环链表;栈,输出栈,销毁栈;顺序表和链表的区别和优缺点;0825
  • Java的四种优化资源密集型任务的策略
  • 每日一题——力扣498 对角线遍历
  • CentOS 部署 Prometheus 并用 systemd 管理
  • Mistral AI音频大模型Voxtral解读
  • 初识神经网络——《深度学习入门:基于Python的理论与实现》
  • QT(1)
  • 【STM32】CubeMX(十二):FreeRTOS消息队列
  • THM Rabbit Hole
  • COREDUMP
  • Life:Internship in OnSea Day 64
  • java基础(十五)计算机网络
  • 利用matlab实现CST超表面阵列的自动建模
  • TCP和UDP的使用场景
  • onnx入门教程(四)——ONNX 模型的修改与调试
  • 借Copilot之力,实现办公效率的跃升
  • Flink 滑动窗口实战:从 KeyedProcessFunction 到 AggregateFunction WindowFunction 的完整旅程
  • 交换机是如何同时完成帧统计与 BER/FEC 分析的
  • leetcode LCR 012.寻找数组的中心下标
  • 59 C++ 现代C++编程艺术8-智能指针
  • IO多路转接(select方案)
  • 测试用例如何评审?
  • `mysql_query()` 数据库查询函数
  • 如何监控ElasticSearch的集群状态?
  • THM trypwnme2