半监督学习在CV中的简述

Kaka Chen 2020-09-13

半监督学习在计算机视觉中的简述 Brief Intro of Semi-Supervised Learning in Computer Vision

概述

当前的CV计算模式无论是早先的Machine Learning还是现在的Deep Learning解决方案,都是遵照着ML/DL expertise+Computation+Data的形式展开,其中ML/DL expertise代表着算法工程师们在特征工程、模型选择、模型设计、模型训练上的人为抉择,Computation是硬件承载这些方案的计算能力,而Data则是支撑所有解决方案进行的数据模块,包括参与训练的数据集和后续验证的数据集。但是工业界上,如果需要进行非常严谨的监督学习方法,针对Data而言,需要大量的人力用于对数据的人工标注。 而半监督学习的模式则是为弥补只有少数标注数据(labeled data)而有大量未标注数据的情况下,希望能和拥有全标注数据集的监督学习达到相同或类似学习效果的权宜之计。当根据手头仅有的标注数据,会将一些虽然没有标注但可被观测到的数据进行一些合理的推测,其中推测主要基于两个假设:

  • 聚类假设cluster assumption:假设数据间具有相同的聚类结构,同一类数据会落入同一个聚类类别内。
  • 流形假设manifold assumption:假设数据分布在一个流形上,相近的样本具有相似的预测结果。

半监督学习有四种主要方法:

  • 生成式方法(generative methods): 也称为自训练算法(self-training)假设标注与未标注图片来源于同一个生成模型,将未标注数据看作模型参数的缺失,可以用EM等方法进行估计。用有标签数据训练一个分类器,然后用这个分类器对无标签数据进行分类,这样就会产生伪标签(pseudo label)软标签(soft label),挑选你认为分类正确的无标签样本(此处应该有一个挑选准则),把选出来的无标签样本用来训练分类器。
  • 基于图的方法(graph-based methods):构建出一个图结构,节点对应训练样本,边对应样本关系,根据某些准则将标注信息在图上进行扩散。也称为标签传播法(Label Propagation Algorithm)
  • 低密度分割法(low-density separation methods):强制分类边界穿过输入空间的低密度区域,如S3VMs
  • 基于分歧的方法(disagreement methods):其实也是自训练的一种,算法会生成多个学习器,并让它们合作来挖掘未标注数据,其中不同学习器之间的分歧是让学习过程持续进行的关键,如联合训练(co-training)

半监督深度学习

整体上,半监督深度学习会以包含标注数据和未标注数据混合的数据作为自己的训练集,其中一半后者在数量上会远远大于前者。 整体思路上,半监督深度学习会有三类架构:

  1. 先用未标注数据预训练模型后,再用标注数据进行微调,其中初始化方式可以:
    • 无监督预训练:所有数据逐层重构预训练,对网络每一层都做重构自编码,得到参数后用标注数据微调
    • 伪有监督预训练:通过标签生成都方法先把无标注数据打上标签再微调
  2. 先用标注数据训练网络,再根据网络中已有的深度特征来做半监督学习:其实就是一种伪有监督训练,先从有标签数据中获得特征,再利用这些特征对无标签数据进行分类,选出分类正确对数据加入训练,往复循环。这个过程可能会加入一定对无标签噪声干扰网络训练。
  3. 让网络work in semi-supervised fashion。上述方法其实还是会让网络运行在一种有监督的状态下,以下一些方法可以让算法真正处于一种半监督状态。

伪标签

伪标签

网络先对无标签数据进行预测,将预测结果作为该数据的伪标签使用。代价函数可以为:

分别是有标签数据的代价和无标签数据的代价之和。α(t)为相加的权重,决定着无标签数据代价在网络中的作用大小,一般初始时网络本身预测性能不佳,因此无法相信伪标签的真实性。所以α(t)会是满足一个从0开始的增长函数,现有论文中均使用了一种高斯型的爬升函数。含代码分享

Noisy Student

核心思想是训练两个不同的模型,分别是teacherstudent。通过Teacher模型首先在有标签数据集上进行训练,获得一个较粗糙的模型,接着在无标签数据上进行推理预测,将结果作为无标签数据的标签。然后将原有带标签的数据和新打上标签的数据合并后用于student模型的训练。利用RandAugment对图像进行增强,作为噪声的一种形式,在训练过程中野假如了模型噪声、dropout和随机深度等方法。一旦student模型训练完毕后,就能成为新的teacher模型,重新对无标签数据上新打的标签进行校验和修改,再去训练新的student模型。这个过程会被重复三遍。

一致性正则化

这种模式使用的理念是,即使在添加了噪声之后,对未标记图像的模型预测也应该保持不变。我们可以使用输入噪声,如图像增强和高斯噪声。噪声也可以通过使用 Dropout 引入到结构中。

Ladder Networks For Semi-Supervised Learning

使用Ladder Networks的半监督学习。无监督预训练一般是用重构样本进行训练,其编码(学习特征)的目的是尽可能地保留样本的信息;而有监督学习是用于分类,希望只保留其本质特征,去除不必要的特征。LadderNet 通过 skip connection解决这个问题,通过在每层的编码器和解码器之间添加跳跃连接(skip connection),减轻模型较高层表示细节的压力,使得无监督学习和有监督学习能结合在一起,并在最高层添加分类器,ladderNet 就变身成一个半监督模型。

πmodel

关键思想是为标记数据和未标记数据创建两个随机的图像增强。然后,使用带有 dropout 的模型对两幅图像的标签进行预测。这两个预测的平方差被用作一致性损失。对于标记了的图像,我们也同时计算交叉熵损失。总损失是这两个损失项的加权和。权重 w(t)用于决定一致性损失在总损失中所占的比重。

Temporal Ensembling For Semi-Supervised Learning

Temporal Ensembling的目的是构造更好的伪标签,多个独立训练的网络的集成可取得更好的预测。πmodel和Temporal Ensembling的代价函数和伪标签方法类似,区别在于伪标签的第二部分只有无标签数据的代价,而Temporal Ensembling的代价函数中第二部分是面向所有半监督的数据。

关键思想是对过去的预测使用指数移动平均作为一个观测值。为了获得另一个观测值,我们像往常一样对图像进行增强,并使用带有 dropout 的模型来预测标签。采用当前预测和 EMA 预测的平方差作为一致性损失。对于标记了的图像,我们也计算交叉熵损失。最终损失是这两个损失项的加权和。权重 w(t)用于决定稠度损失在总损失中所占的比重。

Mean teachers

Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results。模型成功的关键就在于target的质量,而提高target质量的方法无非是选择更好的样本噪声或找到一个更好的Teacher Model。这个方法选择了后一种手段,然后对模型的参数进行了移动平均(weight-averaged),从而获得一个mean teacher model,再以此来构造更高质量的target。

Student 模型是有 dropout 的常规模型。教师模型与学生模型具有相同的结构,但其权重是使用学生模型权重的指数移动平均值来设置的。对于已标记或未标记的图像,我们创建图像的两个随机增强的版本。然后,利用学生模型预测第一张图像的标签分布。利用教师模型对第二幅增强图像的标签分布进行预测。这两个预测的平方差被用作一致性损失。对于标记了的图像,我们也计算交叉熵损失。最终损失是这两个损失项的加权和。权重 w(t)用于决定稠度损失在总损失中所占的比重。

Virtual Adversarial Training

这是一种利用对抗性攻击的概念进行一致性正则化的方法。

关键的想法是生成一个图像的对抗性变换,着将改变模型的预测。为此,首先,拍摄一幅图像并创建它的对抗变体,使原始图像和对抗图像的模型输出之间的 KL 散度最大化。

然后按照前面的方法进行。我们将带标签/不带标签的图像作为第一个观测,并将在前面步骤中生成的与之对抗的样本作为第二个观测。然后,用同一模型对两幅图像的标签分布进行预测。这两个预测的 KL 散度被用作一致性损失。对于标记了的图像,我们也计算交叉熵损失。最终损失是这两个损失项的加权和。采用加权偏置模型来确定一致性损失在整体损失中所占的比重。

Unsupervised Data Augmentation

这个方法适用于图像和文本。关键思想是使用自动增强创建一个增强版本的无标签图像。然后用同一模型对两幅图像的标签进行预测。这两个预测的 KL 散度被用作一致性损失。对于有标记的图像,我们只计算交叉熵损失,不计算一致性损失。最终的损失是这两个损失项的加权和。权重 w(t)用于决定稠度损失在总损失中所占的比重。

混合方法

混合方法的主旨是结合了之前工作的思路,如自训练和一致性正则化,以及其他一些提高手段来实现更高效的半监督性能。

MixMatch

对于标记了的图像,我们创建一个增强图像。对于未标记的图像,我们创建 K 个增强图像,并对所有的 K 个图像进行模型预测。然后,对预测进行平均以及温度缩放得到最终的伪标签。这个伪标签将用于所有 k 个增强。

将增强的标记了的图像和未标记图像进行合并,并对整组图像进行打乱。然后取该组的前 N 幅图像为 W~L~,其余 M 幅图像为 W~U~。

现在,在增强了的有标签的 batch 和 W~L~之间进行Mixup。同样,对 M 个增强过的未标记组和 W~U~中的图像和进行 mixup。因此,我们得到了最终的有标签组和无标签组。

现在,对于有标签的组,我们使用 ground truth 混合标签进行模型预测并计算交叉熵损失。同样,对于没有标签的组,我们计算模型预测和计算混合伪标签的均方误差(MSE)损失。对这两项取加权和,用 λ 加权 MSE 损失。

FixMatch

结合了伪标签和一致性正则化,极大地简化了整个方法。它在广泛的基准测试中得到了最先进的结果。

我们在有标签图像上使用交叉熵损失训练一个监督模型。对于每一幅未标记的图像,分别采用弱增强和强增强方法得到两幅图像。弱增强的图像被传递给我们的模型,我们得到预测。把置信度最大的类的概率与阈值进行比较。如果它高于阈值,那么我们将这个类作为标签,即伪标签。然后,将强增强后的图像通过模型进行分类预测。该预测方法与基于交叉熵损失的伪标签的方法进行了比较。把两种损失合并来优化模型。


Reference