【整理】理解半监督学习

大部分整理自知乎文:一文概览能生成代理标签的半监督学习算法

 

传统的机器学习技术分为两类,一类是无监督学习,一类是监督学习。

无监督学习只利用未标记的样本集,而监督学习则只利用标记的样本集进行学习。

但在很多实际问题中,只有少量的带有标记的数据,因为对数据进行标记的代价有时很高,比如在生物学中,对某种蛋白质的结构分析或者功能鉴定,可能会花上生物学家很多年的工作,而大量的未标记的数据却很容易得到。

这就促使能同时利用标记样本和未标记样本的半监督学习技术迅速发展起来。
 

什么是半监督学习(SSL)?


让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能,就是半监督学习(semi-supervised learning)。

要利用未标记样本,必然要做一些将未标记样本所揭示的数据分布信息与类别标记相联系的假设。假设的本质是“相似的样本拥有相似的输出”。

半监督学习可进一步划分为纯(pure)半监督学习 和 直推学习(transductive learning)。

前者假定训练数据中的未标记样本并非待测的数据

而后者则假定学习过程中所考虑的未标记样本恰是待预测数据,学习的目的就是在这些未标记样本上获得最优泛化性能。

 

无标签样本的意义

左图表示根据现有的数据,我们得到的分类边界如左图中蓝线所示。但是当我们有了无标签数据的分布信息后,两个类的分类超平面就变得比较明确了。

因此,使用无标签数据有着提高分类边界的准确性,提高模型的稳健性。

半监督学习算法分类:

  • self-training算法:

1995年,Yarowsky等人提出Self-training算法,被视为半监督学习的基本雏形,它也是把自身预测结果融入自身训练的一个直观示例。Self-training,顾名思义,就是在已有标签基础上,让模型对无标签数据进行分类,然后再把分类预测用于训练,并从中获取额外信息。

形式上,Self-training有一个模型 m 、一个含标签训练数据集 L 和一个不含标签数据集 U 。每次迭代中,模型 m 会基于标签集 C ,为 U 中的样本 x 生成一个标签概率 m(x) 。如果 m(x) 大于阈值 \tau ,我们就用 p(x) = argmax\,m(x) 为样本x生成一个伪标签(pseudo-label),然后把它归入训练集 L 中。

这个过程通常要重复固定次数的迭代,直到为所有“没有把握”的样本确定一个靠谱的伪标签。它的用途非常广泛,以下是伪代码:

自提出后,经典的Self-training算法在之后的二十几年中收获了大量关注。2009年,Reichart等人在论文中证明这种算法在小型数据集中效果显著[6,13];而在这之前的2006年和2008年,两拨研究人员先后证实模型生成的伪标签确实在训练过程中能发挥积极作用[7];Petrov等人也在2012年测试了Self-training算法发挥作用的场景[8]。

Self-training的主要缺点是模型无法纠正自己的错误。如果模型对自己的分类结果很有“自信”,但这是盲目自信,分类结果是错的,那它就会在训练中放大误差。此外,如果数据集 U 和数据集 L 的重合度很低,标签集 C 并不能覆盖U的所有类别,这种不良影响就更严重了。在这种情况下,模型的性能注定会很差。

  • Multi-view training(多视图训练算法)

(1)Co-training(协同训练)

 Co-training有 m_1 和 m_2 两个模型,它们分别在不同的特征集上训练。每轮迭代中,如果两个模型里的一个,比如模型  m_1 认为自己对样本 x 的分类是可信的,置信度高,分类概率大于阈值 \tau ,那  m_1 会为它生成伪标签,然后把它放入 m_2 的训练集。简而言之,一个模型会为另一个模型的输入提供标签。以下是它的伪代码:

  • Self-ensembling

(1)Virtual Adversarial Training (VAT)

如果扰动原始样本是不可能的或是不可期待的,那我们可以转而去扰动特征空间里的样本。这里的扰动不是随机的,比如添加dropout,Virtual Adversarial Training使用的方法更“糟糕”:将输入转换为对抗样本。传统意义上来说,对抗训练需要利用原始样本的标签才能生成扰动,但在2017年,Miyato等人在论文中首次提出Virtual Adversarial Training,指出无需标签,模型也能生成对抗样本,这就为它在半监督学习领域的使用打开了渠道。

Virtual Adversarial Training能在模型最敏感的方向生成扰动,从而提高它的鲁棒性。目前,这种方法已经在文本分类数据集上取得了令人满意的结果。

(2)Π model

这是Laine和Aila在2017年提出的一种新型伪标签提升方法。它不再基于已有干净标签生成伪标签,而是通过对输入数据添加两种不同的扰动和两个不同的正则条件(dropout)  z和 \widetilde{z} ,来让模型学习其中的不变性。

在伪代码中, g(x) 是针对输入的数据增强函数。其中第一个损失项旨在鼓励模型在两种不同噪声环境下输出同一个预测, \lambda 确定贡献;而第二个损失项则是关于标签y的标准交叉熵损失 H 。和之前几种方法不同,这里我们把无监督损失分量同时用在带标签样本和不带标签样本上。

(3)Temporal Ensembling

Temporal Ensembling和Π model来自同一篇论文,不同的是后者关注的是数据增强和正则化,而前者关心的是模型在不同迭代期的表现集成。它背后的思想是:因为单独训练模型代价过大,我们可以利用不同的时间步长来集成模型预测。

这个算法先把整体预测的代理标签 Z 视为模型过去的移动平均值,当我们把代理标签初始化为0时,它们就偏向0。这就意味着随着模型迭代,我们可以根据当前迭代期 t 像Adam一样纠正偏差,从而获得校正偏差后的目标向量 z 。

参考

半监督学习(一)

半监督学习

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值