Press "Enter" to skip to content

从4篇顶会论文看Self-training最新研究进展

 

©PaperWeekly 原创 · 作者|张一帆

 

学校|华南理工大学本科生

 

研究方向|CV,Causality

 

本文梳理了 Self-training 的最新进展,涉及 4 篇比较有意思的论文。

 

 

What is self-training?

 

Self-training 是最简单的半监督方法之一,其主要思想是找到一种方法,用未标记的数据集来扩充已标记的数据集。算法流程如下:

 

1. 首先,利用已标记的数据来训练一个好的模型,然后使用这个模型对未标记的数据进行标记。

 

2. 然后,进行伪标签的生成,因为我们知道,已训练好的模型对未标记数据的所有预测都不可能都是好的,因此对于经典的 Self-training,通常是使用分数阈值(confidence score)过滤部分预测,以选择出未标记数据的预测标签的一个子集。

 

3. 其次,将生成的伪标签与原始的标记数据相结合,并在合并后数据上进行联合训练。

 

4. 整个过程可以重复 n 次,直到达到收敛。

 

Self-training 最大的问题在就在于伪标签非常的 noisy,会使得模型朝着错误的方向发展。以下文章大多数都是为了解决这个问题。

 

 

ICCV 2019

 

 

论文标题:

 

Confidence Regularized Self-Training

 

论文链接:

 

https://arxiv.org/abs/1908.09822

 

代码链接:

 

https://github.com/yzou2/CRST

 

这篇文章通过对模型进行正则化,迫使输出的 vector 不那幺 sharp(参考 label smooth 的作用),从而减轻使用软伪标签学习的伪标签不正确或模糊所带来的误导效果。

 

Main Contribution

 

该文的大致流程可见下图:

 

 

方法一:在打标签的过程中添加 label regularization (LR),增加 pesudo label 的熵,类似于 label smooth 的作用。

 

方法二:在网络重新训练的过程中添加 model regularization (MR),增加网络输出概率的熵。

 

作者提出了多项正则化手段,其目的在于增加 pesudo label 的熵。通过求解 KKT 条件,作者还解出了在该条件下模型的输出概率。可以看出是本质上都是熵增正则化项或者类似于熵增正则化项。

 

 

作者在后面通过实验论证为什幺置信正则化平滑(Confidence regularization smooths)有效,两种正则化均能够使(被模型预测为正的正样本的 confidence/置信度,换句话说就是伪标签与真实标签相同时,伪标签对应类的概率值)略微降低,同时能够使(被模型预测为正的负样本的 confidence/置信度,换句话说就是伪标签与真实标签不同时,伪标签对应类的概率值)明显降低,实验结果可见下图:

 

 

 

NeurlPS 2020

 

 

论文标题:

 

Uncertainty-aware Self-training for Text Classification with Few Labels

 

论文链接:

 

https://arxiv.org/pdf/2006.15315.pdf

 

这篇文章利用不确定性增强伪标签的可信度,减少 noisy 带来的影响。

 

3.1 Main Contribution

 

使用贝叶斯不一致主动学习(Bayesian Active Learning by Disagreement, BALD)的思想评估样本标签的不确定性,凭借不确定性选择用于 re-train 模型的伪标签样本。

 

3.2 Background-Bayesian neural network(BNN)

 

给定网络参数,贝叶斯推断是想要找一个后验分布:

 

 

即 NN,这个积分显然是 intractable,因此就有很多工作用到了随即正则化的工具(dropout)来构建易于处理的分布族中,它可以替代难以计算的真实模型后验。

 

如果我们使用不同的 dropout 采样个 masked model,那幺近似后验可以通过 MC 积分得到:

 

 

3.3 Method

 

3.3.1 如何得到伪标签?

 

对于选出的每个 unlabel 的数据,我们可以将其传入 NN次,因为使用了 dropout,我们会得到不同的个预测结果。直接将预测结果求平均就得到了预测标签(当然也可以采取其他方式)。

 

3.3.2 如何选择样本?

 

接下来的 Bayesian Active Learning by Disagreement(BALD)即文章选择的选取带伪标签数据的方式。它具体的计算公式如下:

 

 

对 BALD 不了解也没关系,该式的值大就说明模型对的标签非常的不确定,因此我们可以用 BALD 对模型进行排名然后挑选,本文的策略可以概括为:

 

先对每个类选择相同数目的样本,防止某些类特别容易造成的样本极度不均衡。然后在每个类中使用 BALD 对样本进行排名并依概率抽取。如果我们想要挖掘简单样本就以排名,否则以排名。

 

3.3.3 Confident Learning

 

然后我们分别计算预测结果的均值和方差。均值就是前面的。

 

 

可以看到总的方差可以分为两项 (i) 模型对预测标签的不确定性 (ii) 噪声项。我们希望更关注那些标签可信度高的样本(方差小),因此我们对每个样本的损失加上作为惩罚项。

 

 

伪代码如上,即先对 randomly sample 的样本计算我们需要的参数。然后根据我们的样本选择策略,根据 uncertainty 选取合适的样本。对这些样本计算它们的伪标签,最后将带伪标签用作数据重新训练模型。

 

3.4 Experiments

 

作者使用了情感分类的三个数据集和主题分类的两个数据集,在每个数据集中选择 K 个作为训练数据,其余的作为 unlabelled 数据。

 

相比于各种不同的 baseline,基于 uncertainty 的方法在大多数 benchmark 上都取得了不错的提升。

 

 

 

CVPR 2020

 

 

论文标题:

 

Self-Training With Noisy Student Improves ImageNet Classification

 

论文链接:

 

https://arxiv.org/abs/1911.04252

 

代码链接:

 

https://github.com/google-research/noisystudent

 

这篇文章最大的亮点就在于“noisy student”,产生伪标签的过程与之前无二,但是在重新训练模型(student)的时候需要加噪声(dropout, stochastic depth and augmentation)。整体框架如下:

 

 

除此之外有两点需要注意:

 

1. teacher 和 student 模型架构可以相同也可以不同,但是要想使噪音学生模型学习的好,模型容量必须足够大,以拟合大量的无标注数据集。这里使用的是基准模型,即第一次的 teacher model 是 EfficentNet-B7,而 student model 是一个更大的模型,并逐渐增大直到 EfficientNet-L2。

 

2. 平衡数据:这是 self-training 很多都会做的一个工作,让每个类的未标记图像数量相同。

 

文章实验居多,标签数据使用了 imagenet,无标签数据使用了 JFT,使用最初在 ImageNet 上训练的 EfficientNet-B0 来预测标签,并且只考虑那些标签的置信度高于 0.3 的图像。对于每个类,选择 130K 个样本,对于少于 130K 个样本的类,随机复制一些图像。文章得到的效果如下:

 

 

为什幺 noisy student 能够取得成功?

 

在我们开始讨论之前,让我们退一步思考一下,当同一个模型同时作为教师和学生使用时的情况,由于伪标签是使用相同的教师模型生成的,因此一个合理的假设是,在这种情况下,学生模型在未标记数据上的交叉熵损失将为零,那幺,学生模型最终将不再学习新东西。

 

而对学生加 noisy,可以确保 student model 的任务更难完成,而不仅仅是学习 teacher model 的知识,这也是 Noisy 能够带来提升的一个原因。

 

本文虽然性能提升很大,但是模型的训练时间确实非常之长。

 

 

CVPR 2021

 

 

论文标题:

 

CReST: A Class-Rebalancing Self-Training Framework for Imbalanced Semi-Supervised Learning

 

论文链接:

 

https://arxiv.org/abs/2102.09559

 

在类别不平衡的数据上施展半监督学习的研究很少,而这个问题又非常具有研究价值。该文章通过根据每个 class 样本数目对带伪标签的数据进行抽样,从而提升模型在少量样本上的表现。

 

5.1 Motivation

 

文章的出发点在于,我们通常认为样本少的类表现效果不好,但是这只是部分正确,从下图中我们可以看到,对于样本数目非常少的点,他只是 recall 非常的差,但是 precision 却出乎意料的高。这个发现促使我们去寻找一种方法来提升他的 recall。

 

 

文章就提出了这样一种框架,与传统工作不同,我们对打上伪标签的数据根据类别多少来进行采样。

 

 

那幺这里最重要的问题就是,我们怎幺知道 unlabelled 数据中的类别信息?这里采取了简单的,从有标签样本中进行估计。对于一个被预测为的 unlabelled 数据,它会被加入下一轮的训练集的概率为:

 

 

控制着采样频率。比如对 10- 分类问题,被分为第 10 类的所有样本(minority class)都会被选中(文章假设了各个类是按照样本数目从多到少排序的),而第一类的样本(majority class)只有很少一部分被选中。

 

这种做法有两个好处:1)因为 minority class 的预测精度都很高,因此将他们加入训练集合风险比较小;2)minority class 样本数目本来就少,对模型更加重要。

 

文章还引入了 progressive distribution align-ment 的方法进一步提升模型能力,但是这不是他的主要贡献。

 

5.2 Experiments

 

文章在首先在 CIFAR10-LT 与 CIFAR100-LT) 两个数据集上验证了模型的有效性,在这些数据集中数据被随机丢弃来满足预设的 imbalance factor(数据量最大与数据量最少的类的样本数目比值)与(labelled 与 unlabelled 数据的比值)。

 

以下展示了在不同的情况下模型的表现结果,表中的数据是分类精度。

 

 

文章也对 recall 的影响做了单独的分析,在 CIFAR10-LT 数据集上,本文的策略牺牲了大类样本些许召回精度,换来了小类样本巨大的提升。

 

 

文章的主要问题在于 使用 labelled 数据分布来预测 unlabelled 数据分布 ,如果二者的数据分布差距较大(甚至恰好相反),那幺不见得模型表现得会更好,直观来看甚至会变差。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注