半监督之伪标签法

2024-01-20 08:50
文章标签 监督 标签 之伪

本文主要是介绍半监督之伪标签法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

方法

(1) Positive & Negative Pseudo Label

(2)基于不确定性的伪标签选择法

实验结果

后续伪标签更新

总结


前言

半监督学习一般有两个方法一致性正则打伪标签法即 consistency regularization 和 pseudo-label, 其中一致性正则主要是基于数据增强的一致性正则,目前比较成熟,关于数据增强笔者也总结过一篇博客即

《半监督之数据增强》: https://blog.csdn.net/weixin_42001089/article/details/113307918

今天来看看打伪标签法,这个其实原理很简单,就是先用少量的有标签数据训练一个基础模型,然后用其对大量无监督数据进行预测得到pseudo-label ,然后用其和少量的有标签数据一起训练模型,然后在对大量无监督数据进行预测得到pseudo-label ,然后再训练模型,不断循环最终达到收敛。

今天这篇论文呢,就是在打伪标签法继续改进,一起来看看吧

In Defense Of Pseudo-Labeling: An Uncertainty-Aware Pseudo-Label Selection Framework For Semi-Supervised Learning

论文:https://arxiv.org/pdf/2101.06329.pdf

这是一篇收录在ICLR 2021的论文,简称UPS

关于其解读的话可以看:

伪标签还能这样用?半监督力作UPS(ICLR 21)大揭秘! - 知乎

讲的很详细了,笔者这里简单总结一下核心idea和看法。部分话来源于上述知乎。

方法

(1) Positive & Negative Pseudo Label

伪标签有时候是不准的,基于带噪学习 Negative Learning的思想,其实我们一直是基于正样本的,反过来想想呢?我们有时候不确定其到底属于哪一类,但是我们比较确定其不属于哪一类

以前我们都是基于门限,来确定是否属于c类

现在我们我们定义一个变量即gc

红色部分代表正样本,绿色部分代表负样本,仔细看,当预测是否属于c类的时候,如果概率高过Tp ,那么红色是1,绿色是0,gc结果是1,如果低于Tn,那么红色是0,绿色是1,gc结果还是1,基于情况即大于Tn小于Tp ,gc是0,逻辑含义就是:

gc代表的就是用不用其训练网络,当概率高过Tp即正样本置信度高,我们可以用,当低于Tn负样本置信度高,我们也可以拿来训练网络,但当处于中间时,就是不确定了,我们就不用其训练网络了,所以loss是

(2)基于不确定性的伪标签选择法

仅凭网络softmax层输出的概率值作为置信度唯一的依据显然不够——作者参考了深度网络不确定性估计的技术(MC-dropout, ICML 2016),计算输出值的不确定性作为另一种置信度(如图2所示),和softmax层输出的概率双管齐下,筛出可靠的贴伪标签的样本。

这里的逻辑是这样的:网络校正可以衡量伪标签是否可靠,而模型对单个样本的不确定性和网络校正有着一种映射关系,如下图

这里的纵坐标就是网络校正的量化指标即 the Expected Calibration Error (ECE) score, 看到模型对单个样本的不确定性(STD)越低,网络校正的误差就越小,所以不确定性也可以作为一种置信度,于是我们可以进一步改进loss

这里的u就是计算不确定性,kp和kn是正负样本不确定性的门限,直观理解就是当低于一定门限时(说明伪标签可靠),我们才用即红框和绿框才为1

说到这里可能有个疑问就是u函数是什么即不确定性怎么计算,可以看

https://arxiv.org/abs/1506.02142

大概思路就是对当前 batch 数据做 dropout,然后foward. 重复多次,计算均值和方差

作者还用SpatialDropout、DropBlock等方法替代Dropout计算模型输出的不确定性。

实验结果

(1)CIFAR-10和CIFAR-100上面,基于打伪标签的UPS算法可以取得和MixMatch的一样的性能。

(2)UCF-101视频分类数据集上,UPS也有好的结果

(3)多标签图片分类任务Pascal VOC2007数据集上也是SOTA,paper说这是第一篇在多标签上面做半监督的研究,注意因为我们是基于门限的,所以可以适配多标签的

(4)CIFAR-10上做了UPS各个模块的消融实验,其中UA(Uncertainty Aware)模块起着至关重要的作用,而NL(Negative Learning)模块也有辅助收益。

(5)在CIFAR-10上探究了kp参数的影响

(6)说明了不确性的通用性即用SpatialDropout、DropBlock等方法替代Dropout,结果是有普遍性

(7)打伪标签和数据增强具有正交性

(8)类别均衡对于打伪标签的重要性, 平衡很重要,作者在前几轮都是强制每类相同。

(9)就是一些可视化的展示,即选出置信度高的(置信度超过0.9,按照UPS方法的置信度超参,Tp=0.7, Tn=0.05) ,但是高不确定性的(高于0.1的,kp=0.05,kn=0.005)

可以看到这些大部分都是错的,也就是说所以基于NL(Negative Learning)策略选出了置信度比较高的,但是其有一部分还是错误的标签,即再加上不确定性可进一步筛选出更置信度高的伪标签。

后续伪标签更新

(1) 还有就是为了选出一些质量高的伪标签数据,可以进行一些简单的筛选策略比如:

(2) 使用了最近火的对比学习,具体可以看:

Self-Tuning for Data-Efficient Deep Learning​​​​​​​

ICML2021 | Self-Tuning: 如何减少对标记数据的需求?

总结

(1)打伪标签法和一致性正则是正交的,即可叠加产生收益,比如Match系列方法就是两则结合的产物:MixMatch(NIPS 2019),ReMixMatch(ICLR 2020),FixMatch(NIPS 2020)和FeatMatch(ECCV 2020)

(2)再来看一下最终论文中的loss,和其中最重要的gc,这也是本篇paper的创新点。

其中gc

红框是应用了不确定性策略,绿色应用了Positive & Negative Pseudo Label策略,综合两个策略,只有同时满足两个策略即两个策略都有高的置信度,gc才为1(这个样本的伪标签可信),即才用这个样本去训练,否则不用。

(3)伪标签训练的时候,数据平衡很重要,我们可以前几轮强制用每类相同的数据量去训练

(4)给我们一个思路就是不要只盯着正样本,负样本同样具有参考和改进意义,以后要多关注和思考一下即Negative Learning

(5)其实paper本质上改进的出发点就是要筛选出高质量的样本训练,说到这里不得不想到,在数据增强领域同样可以从这个出发点进行改进,即数据增强产生的样本都不一定是高质量的,可以筛选出高质量的进行训练,关于这方面的想法,阿里已经发表论文

Learning to Augment for Data-Scarce Domain BERT Knowledge Distillation

笔记也进行了解读,在开头提到的数据增强博客中

(6)不确定性这个挺有意思的,可以多多专研理解一下

看到很多小伙伴私信和关注,为了不迷路,欢迎大家关注笔者的微信公众号,会定期发一些关于NLP的干活总结和实践心得,当然别的方向也会发,一起学习:


​​​​​​​

 

这篇关于半监督之伪标签法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625458

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

Spring下自定义xml标签

dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。 一 编写模型类 1 package com.hulk.testdubbo.model;2 3 public class Hero {4 private String name;5 private int

Struts2常用标签总结--转载

Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于

LLM应用实战: 产业治理多标签分类

数据介绍 标签体系 产业治理方面的标签体系共计200+个,每个标签共有4个层级,且第3、4层级有标签含义的概括信息。 原始数据 企业官网介绍数据,包括基本介绍、主要产品等 企业专利数据,包括专利名称和专利摘要信息,且专利的数据量大。 LLM选型 经调研,采用Qwen2-72B-Instruct-GPTQ-Int4量化版本,占用显存更少,且效果与非量化相当,

Vue 向标签中传入 this

我曾经问过 chatgpt 这个问题,chatgpt 说不行! 但是,chatgpt 说的就算吗? 来试试吧: https://andi.cn/page/621733.html 当然是可以的!

(感知机-Perceptron)—有监督学习方法、非概率模型、判别模型、线性模型、参数化模型、批量学习、核方法

定义 假设输入空间(特征空间)是 χ \chi χ ⊆ R n \subseteq R^n ⊆Rn,输出空间是y = { + 1 , − 1 } =\{+1,-1 \} ={+1,−1} 。输入 x ∈ χ x \in \chi x∈χ表示实例的特征向量,对应于输入空间(特征空间)的点;输出 y ∈ y \in y∈y表示实例的类别。由输入空间到输出空间的如下函数: f ( x ) = s

SimD:基于相似度距离的小目标检测标签分配

摘要 https://arxiv.org/pdf/2407.02394 由于物体尺寸有限且信息不足,小物体检测正成为计算机视觉领域最具挑战性的任务之一。标签分配策略是影响物体检测精度的关键因素。尽管已经存在一些针对小物体的有效标签分配策略,但大多数策略都集中在降低对边界框的敏感性以增加正样本数量上,并且需要设置一些固定的超参数。然而,更多的正样本并不一定会带来更好的检测结果,事实上,过多的正样本