半监督之伪标签法

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

相关文章

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

【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