一文看遍半监督学习模型(Semi-Supervised Learning)

news2024/11/15 15:59:10

一、半监督学习的总体框架

请添加图片描述

二、一致性正则化模型

该算法旨在:一个模型对于同一个未标记图像,在图像添加额外噪声前后的预测值应该保持一致。

添加噪声的方法,如图像增强(空间维度增强、像素维度增强)。

同样,Dropout可在模型结构中引入噪声。

在这里插入图片描述

1、Π模型

论文链接:TEMPORAL ENSEMBLING FOR SEMI-SUPERVISED LEARNING

  1. 将一幅图像进行两种不同尺度的数据增强变换(主要是增加噪声信息)。
  2. 将不同噪声增强后的两幅图像先后次序输入到同一个带有Dropout模型中(进行了两次前向运算)。
  3. 判断两幅噪声增强图像的特征提取结果分布的一致性差异(如使用KL散度等方法),如果原始图像存在label数据,则还判断与真实label的交叉熵信息损失。
  4. 将分布一致性差异损失和交叉熵信息损失进行加权求和,得到最终的loss,然后进行梯度反传。

在这里插入图片描述

模型缺点:每个输入需要进行两次前向传播来计算一致性损失,效率可能比较低。

2、Temporal ensembling模型

论文链接:TEMPORAL ENSEMBLING FOR SEMI-SUPERVISED LEARNING
该算法在训练中产生一个用于比较的标准值 ,每次的模型的输出都和该标准值进行分布一致性差异比较。

  1. 将一张图像进行加噪增强。
  2. 将加噪后的图像输入到模型中(仅进行一次前向运算)。
  3. 将模型的提取结果同生成的标准值进行分布一致性比较,如果原图像存在label,则还计算与label的交叉熵信息差异。
  4. 将分布一致性差异损失和交叉熵信息损失进行加权求和,得到最终的loss,然后进行梯度反传。

注:其中标准值每次前向传播中不是固定的,而是通过指数移动平均法(EMA)算法计算求得(利用之前epoch的结果计算求所得),关于EMA算法,公式如下。

在这里插入图片描述

在这里插入图片描述

模型缺点:

  • 由于每个目标在每个epoch中只更新一次,因此学习到的信息以较慢的速度被纳入训练过程。
  • 数据集越大,更新的时间跨度就越长,在在线学习的情况下,尚不清楚如何使用时态模型。

3、Mean teacher模型

论文链接:Mean teachers are better role models:Weight-averaged consistency targets improve semi-supervised deep learning results
该算法中教师模型不同学生模型一样,并不是每个step都进行权重更新,而是将学生模型连续训练若干step后产生的权重平均值作为更新权重。教师模型使用学生模型的EMA权重,而不是与学生模型共享权重。论文中表示平均模型权重往往会产生一个比直接使用最终权重更精确的模型。它可以在每一个step完成后即刻聚合之前学习到的所有信息,而不仅仅在每一个epoch。此外,由于EMA提高了所有层的输出质量,而不仅仅是最后一层的输出,因此模型能够更好地表征中层乃至高层语义信息。这些方面早就了该模型相对于Temporal ensemble的两个优势。首先,更准确的标签使学生和教师模型之间发生更快的反馈循环,从而产生更好的精度。其次,这种方法适用于大型数据集和在线学习。

  1. 对数据进行两种不同的加噪。
  2. 将不同噪声增强后的两幅图像分别输入到学生模型的和教师模型。
  3. 对输出使用softmax激活,计算学生模型输出与教师模型输出的一致性损失函数, 人如果原图像存在label,则还与label计算交叉熵信息损失。
  4. 用梯度下降法更新学生模型的权重,教师模型的权重用学生权重的指数移动平均法(EMA)更新(一部分权重来自历史的教师模型权重,另一部分来自于当前步学生模型的权重):
    在这里插入图片描述

在这里插入图片描述

模型缺点

  • 教师模型的选择对模型性能至关重要。选择一个不合适的教师模型可能会导致性能下降。因此,需要进行一些实验来确定最佳的教师模型。
  • Mean Teacher 模型仍然需要一些有标签的数据来进行监督训练,尤其是在初期阶段。这意味着它不适用于完全无监督的情况。
  • Mean Teacher 假设有标签和无标签的数据是从相同的数据分布中生成的。如果这个假设不成立,模型性能可能会受到影响。
  • Mean Teacher 模型对数据中的噪声和异常值比较敏感。这可能导致模型在存在异常数据的情况下性能下降。

4、UDA模型

论文链接:Unsupervised Data Augmentation for Consistency Training
UDA(Unsupervised Data Augmentation 无监督数据增强)是Google在2019年提出的半监督学习算法。该算法一改前几种算法的数据增强方式,对于有label数据不进行数据增强,对于无label数据进行增强,并且针对不同不同类型的数据采用不同的增强方法,如图像分类任务使用随机自动增强,文本分类任务使用back translation(将文本翻译成其他语言,再翻译回英文)、TF-IDF(单词替换)。

  1. 将有label的图像输入到模型中得到预测结果,与label比较计算获得交叉熵信息损失。
  2. 将无标签图像进行两种不同增强,先后输入模型种,比较两结果的KL散度损失。
  3. 将KL散度损失和交叉熵信息损失进行加权相加,然后进行后向传播。

在这里插入图片描述

模型缺点

  • UDA通常需要大量的无标签数据,以便进行数据增强和自监督学习训练。如果没有足够的无标签数据,模型可能无法充分受益于UDA,这限制了其适用性。
  • UDA的性能高度依赖于自监督学习任务的设计。选择不合适的自监督任务可能会导致性能下降。因此,需要仔细选择自监督任务和相应的数据增强策略。
  • UDA的性能可能在不同的领域和任务之间差异很大。一个在一个领域表现良好的UDA模型可能不适用于另一个领域。这意味着UDA可能需要在不同任务和领域上进行调整和重新训练。
  • UDA侧重于提高无标签数据的性能,但在实际应用中,有时标签数据的质量和数量仍然是关键因素。如果标签数据不足或不准确,UDA可能无法充分弥补这些问题。

三、伪标签模型

该算法旨在:先使用有标签的数据来训练模型,然后利用该模型去预测无标签数据,将置信度高的预测结果作为伪标签,参与模型训练调整。模型同时在真实标签和伪标签数据上进行训练。

在这里插入图片描述

1、self-training

论文链接:Effective Self-Training for Parsing

self-training主要思想是利用已有label数据训练一个模型,然后利用其预测无label数据,将置信度高的预测结果作为训练集,加入训练。

  1. 使用有label数据训练一个任务模型。
  2. 使用该模型对无label数据进行预测。
  3. 选取置信度高于某个阈值的预测结果作为对应无label数据的伪label。
  4. 将伪样本对加入到原始训练集中,并在无label数据集中删除,直到没有了更多可选的伪样本为止(就是直到不再有高于阈值的预测结果,数据集不再变动)。
  5. 重复以上步骤。

在这里插入图片描述

2、co-training

论文链接:Combining labeled and unlabeled data with co-training

co-training训练是一种多视图的半监督算法,主要思想是利用两个模型相互为对方打标签,将对方预测结果中置信度高而自己置信度低的结果作为自己的伪样本。

  1. 将有label数据分为两个部分,并分别训练两个模型。
  2. 使用两个模型对同一无label数据进行预测。
  3. 如果模型1的预测结果高于设定的置信度阈值,而模型2低于阈值,则利用模型1 的预测结果作为模型的伪样本,加入到模型2的训练集中,并在无label数据集中删除对应数据。反之亦然。直到数据集不再变动,任一模型预测结果都不再高于阈值。
  4. 重复以上步骤。

在这里插入图片描述

3、Tri-Training

论文链接:Tri-training: exploiting unlabeled data using three classifiers

Tri-traing 是对 co-training的进一步调整,它也是一种基于分歧的多视图方法。

  1. 利用bootstrap方法(有放回的随机采样)从有label数据集里选取三个子数据集。利用三个子数据集分别训练三个不同的基模型1,2,3。
  2. 对于模型1,使用模型2和3来预测所有无label数据集,假设模型2和3的预测结果一致,则将该预测结果作为模型1 的伪label,加入到模型1对应的数据集中,并在无label数据集中删除对应数据。直到模型2和3的所有余下无label数据的预测结果都不一致,数据集不再变动为止。
  3. 为三个模型分别执行步骤2,并利用三个扩增后的数据集重新训练模型。
  4. 重复执行2,3,直到模型收敛。

注:在为无label数据贴上伪标签时,可能贴错标签,即在数据集中增加噪声的。但当新增加的数据足够多时,噪声带来的影响是可以被抵消的。

在这里插入图片描述

4、Curriculum Labeling

论文链接:Curriculum Labeling: Revisiting Pseudo-Labeling for Semi-Supervised Learning

Curriculum Labeling的主要思想是模型先从容易的样本开始学习,并逐渐进阶到复杂的样本和知识。

假设模型预测的伪标签的置信度遵循帕累托分布。相比于固定置信度阈值,该算法在每个迭代轮次将全部标签按置信度排列后,按Percentile进行选取,Percentile随着轮次迭代而逐渐增大,从20%–>100%,到全部伪标签投入训练后即停止训练。
相比于每个训练迭代轮次微调模型,该算法直接在每轮迭代轮次中初始化参数(re-start),这样也有助于避免早期训练的过程中,错误标签累计误导训练,导致概念偏移(concept drift)。

在这里插入图片描述

四、整体模型(Holistic Model)

一致性正则化模型 和 伪标签模型 的整合。

1、FixMatch

论文链接:FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence

FixMatch 是 Google Brain 提出的一种Holistic的半监督学习方法。

  1. 首先使用有label数据训练一个模型,将预测结果与真实label计算损失,得到监督loss。
  2. 对于label数据,分别使用弱增强(平移、翻转等)和强增强(cutout、像素失真等)两种方式进行加噪,将两者分别送入使用第一步中训练得到的模型中。
  3. 对弱增强的预测结果选取置信度最高的类别作为真实类别,制作为one-hot式的伪标签,即认为弱周期的结果为真实结果,将其与强增强的预测结果进行损失计算,得到非监督loss。与前面的SSL算法不同,FixMatch在非监督部分使用的是交叉熵损,因为我们在这里认为弱增强的结果为真实label。
  4. 将监督损失和非监督损失进行加权融合,得到最终的loss,对其进行反向传播以更新模型。λu 是未标记数据对应损失的权重。

在这里插入图片描述

2、Semi-ViT

论文链接:Semi-supervised Vision Transformers at Scale

Semi-ViT是亚马逊在2022年提出的基于Transformer的大规模半监督视觉算法。

  1. 首先使用MAE掩码式自训练模型在所有数据(包含有label和无label数据进行)进行预训练。
  2. 将训练好的MAE中的VIT(编码器部分)提取出来,再利用有label数据进行模型微调。
  3. 将无label数据输入到微调后的模型中,预测结果中的最高置信度若高于所设置的置信度阈值,我们将该置信度对应的类别作为伪标签。
  4. 将有label数据和第三步生成的伪样本进行shuffle,得到shuffle数据集,将shuffle数据集分别和label数据、无label数据进行MixUp,得到更新过的label数据和无label数据。
  5. 使用Mean teacher模型进行半监督微调,训练得到最终模型。 在这里插入图片描述

五、半监督学习常用数据集

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/964033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线性DP问题

目录 数字三角形DP 动态规划 [自上向下二维数组]DP 动态规划 [自上向下一维数组]DP 动态规划 [自下而上二维数组]DP 动态规划 [自下而上一维数组]记忆化搜索 DFS 最长上升子序列一维状态数组实现扩展:最长序列输出 最长上升子序列 II贪心二分优化算法思路代码实现扩…

2023蓝帽杯初赛

比赛总结就是首先审题要仔细,确定题目意思再去找才不会找错。 内存取证vol工具的使用不够熟练 然后容易走进死胡同,如果一个软件不能得到答案可以换一个看看,说不定就有答案了。 还有服务器取证很生疏,还是要多花时间做点题 取…

黑客之批处理编写

文章目录 一、批处理作用二、如何创建批处理三、批处理语法 一、批处理作用 自上而下成批的处理每一条命令,直到执行最后一条。这里的命令指的是DOS命令,在之前的【黑客常用DOS命令】博客中,我介绍了大量的常用DOS命令。不过我们之前输入命令…

Lesson3-5:OpenCV图像处理---模版匹配和霍夫变换

学习目标 掌握模板匹配的原理,能完成模板匹配的应用理解霍夫线变换的原理,了解霍夫圆检测知道使用OpenCV如何进行线和圆的检测 1 模板匹配 1.1 原理 所谓的模板匹配,就是在给定的图片中查找和模板最相似的区域,该算法的输入包括…

C++之map,set,multimap,multiset的使用

map,set,multimap,multiset的使用 关联式容器键值对树形结构的关联式容器setset介绍set的使用set定义方式set各种操作函数 multiset mapmap的介绍map的使用insert函数find函数erase函数[ ]运算符重载map的迭代器遍历 multimap 关联式容器 在…

ARM编程模型-状态模式

ARM的两种工作状态 大部分的ARM处理器都实现了两种指令集,32位ARM指令集和16位Thumb指令集,看生成的机器码是32位的还是16位的 ARM v6引入了新的指令集Thumb-2,能够提供32位和16位的混合指令,在增强了灵活性的同时保持了代码的高密度。 ARM的…

Linux基础学习2

Linux基础学习2 popen函数 popen函数 https://blog.csdn.net/yzy1103203312/article/details/78483566 https://blog.csdn.net/xy1413_/article/details/127135608 典型用法: FILE * fp popen("ifconfig eth0", "r"); if (!fp) { fprintf…

再谈IOS开发环境配置(2023-09-01 新)

关于IOS的开发,需要配置证书、密钥、管理标识符、功能配置等等,很是繁杂,以前也配置过,这次因为重新购买了新的M1笔记本,准备重新配置下,顺便记录,以便查询。 如果要开发IOS,首先需要…

2023高教社杯数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…

JVM学习(一)--程序计数器

作用:记住下一个jvm指令的执行地址 每一行java源代码,会被编译为多行jvm指令,上文所说的执行地址就是这里的0,3,4等 ,由于执行访问特别频繁,程序计数器的底层是有寄存器来实现的 特点: 线程私有&#xff…

爬虫进阶-反爬破解5(selenium的优势和点击操作+chrome的远程调试能力+通过Chrome隔离实现一台电脑登陆多个账号)

目录 一、selenium的优势和点击操作 二、chrome的远程调试能力 三、通过Chrome隔离实现一台电脑登陆多个账号 一、selenium的优势和点击操作 1.环境搭建 工具:Chrome浏览器chromedriverselenium win用户:chromedriver.exe放在python.exe旁边 MacO…

这段代码这么写有什么问题

这段代码这么写有什么问题? List<String> baseRelList1 new ArrayList<>();epmPersonList.forEach(Obj ->{interviewBacklogMessageList.forEach(t ->{if (!Obj.equals(t.getPsnNum())){baseRelList1.add(Obj);}});});这段代码存在一个问题&#xff0c;即…

transformer源码

1.传统RNN网络 每一层都需要上一层执行完才能执行 1.1 自注意力 在一句话中找到it_指代的是什么&#xff0c;它的上下文语境是什么&#xff1f; self-attetion计算 1.2 multi-header机制 1.3 堆叠多层self-attention&#xff0c;相当于再一次卷积 1.4 位置信息编码 1.5 残…

unity 场景烘焙问题之模型UV有重叠

问题现象&#xff1a;模型烘焙出来后&#xff0c;呈现黑色或布满脏斑&#xff0c;有可能是没有展UV&#xff0c;也有可能是UV重叠了 并且也会出现警告提示&#xff0c;如下图&#xff1a; 如果我们勾选了如下图,还在提示我们勾选&#xff0c;那可能就是 UV重叠了 解决方案 UV…

C++:输出系统时间(及报错处理)

#include <iostream> #include <ctime>using namespace std;int main() {// 基于当前系统的当前日期/时间time_t now time(0);cout << "1970 到目前经过秒数:" << now << endl;tm* ltm localtime(&now);// 输出 tm 结构的各个组…

【微服务】一张图搞懂微服务架构设计

一张图搞懂微服务架构设计 1.前言2.流量入口 Nginx3.网关4.业务组件5.服务注册中心6.缓存和分布式锁7.数据持久层8.结构型数据存储9.消息中间件10.日志收集11.任务调度中心12.分布式对象存储 1.前言 当前&#xff0c;微服务架构在很多公司都已经落地实施了&#xff0c;下面用一…

气象科普丨气象站的分类与应用

气象站是一种用于收集、分析和处理气象数据的设备。根据不同的应用场景和监测需求&#xff0c;气象站可以分为以下几类&#xff1a; 一、农业气象站 农业气象站是专门为农业生产服务的气象站&#xff0c;主要监测土壤温度、土壤湿度等参数&#xff0c;为农业生产提供科学依据…

高效率、高质量的DMG映像制作:DMG Canvas for mac,助你轻松实现

如果你是一位开发者或企业用户&#xff0c;你一定知道DMG磁盘映像文件在分发应用程序或文件时的重要性。DMG磁盘映像文件可以让用户轻松地创建磁盘映像&#xff0c;并将其挂载到Mac电脑上&#xff0c;从而方便地安装或使用应用程序或文件。 然而&#xff0c;传统的DMG磁盘映像…

数学之美 — 1

为什么你会想和他人共享那些美丽的事物呢&#xff1f;因为这会让他&#xff08;她&#xff09;感到愉悦&#xff0c;也能让你在分享的过程中重新欣赏一次事物的美。 ——David Blackwell 1、感官之美&#xff0c;对于那些有规律的事物&#xff0c;你可以利用自己的视觉、触觉、…

CodeBlocks20.03配置wxWidgets

背景 - 现在是2023年 1. 很多年前&#xff0c;下载使用CodeBlocks就发现里面有自带的wxWidgets Project的项目&#xff0c;然而一路Next下去出来的程序根本就不能运行&#xff0c;心有不甘&#xff1b; 2. 前几年&#xff0c;用python做小工具的时候&#xff0c;界面用的wxPy…