前言
在这算是开个坑,之后会陆续介绍弱监督学习大领域下半监督学习近年来的经典方法。为后续研究学习提供思路
1.半监督学习
1.1什么是半监督学习
半监督学习介于监督学习与无监督学习之间。一般而言,半监督学习的任务与监督学习一致,任务中包含有明确的目标,如分类。而所采用的数据既包括有标签的数据,也包括无标签的数据。
简单理解,可以认为半监督学习就是同时运用了标签数据和无标签数据来进行训练的监督学习。当然,在另外一些研究中,带有约束限制的无监督学习也被视为半监督学习,例如受限的聚类算法。
从半监督学习与监督学习的关系出发,我们可以自然得出半监督学习的几个核心点:
- 如何从无标签数据中获取学习信号来指导监督学习?
- 如何平衡运用有标签数据和无标签数据各自的学习信号?
- 如何选择无标签数据?
这几个核心点正是半监督学习方法需要解决的主要矛盾,同时也是半监督学习思想的精髓所在
1.2半监督学习的作用
我们知道,即使在大数据时代,想要获取到大批量高质量的标注数据在实际中往往是一件很困难的事,需要花费大量的人力和时间。尤其在垂直领域,例如金融、法律、医学等领域,数据的标注还需要业务人员甚至行业专家的参与才能实现相对准确的数据标注,满足业务需求,这使得垂直领域的数据标注成本尤其高昂。
而半监督学习正是为了解决这一类问题而出现的。它的核心目标是,希望通过专家标注的少量有标签数据,结合大量的无标签数据,训练出具备强泛化能力的模型,从而解决实际中的问题。
更进一步,半监督学习也是一类更接近于人类学习方法的机器学习范式。试想这样一个场景,我们小时候学习识别小猫、小狗、汽车等等物品时,往往只需要父母进行一两次的指导,我们就能很准确地辨认出什么是猫狗。这背后有一个重要原因是,我们从出生开始就见过很多次小猫、小狗等等动物,虽然还没有人明确告诉过我们这些动物是什么,但我们的大脑已经对于这些事物建立了足够的认识。整个过程抽象出来与半监督学习的思想很相似,父母的指导可视为有标签数据,出生之后的目之所见即为无标签数据,二者结合帮助我们实现快速地学习。
因此,半监督学习技术既是少样本学习的重要路径之一,也有助于帮助我们发展更接近于人类学习范式的机器学习技术。
2.Temporal Ensembling for Semi-Supervised Learning
论文地址:https://arxiv.org/abs/1610.02242
该篇论文发表在LCLR2017上
这篇论文提出了利用ensembling(组合)的方法来完成半监督学习(semi-supervised learning)的任务
2.1模型
作者提出了两个模型:Ⅱ-model and temporal ensembling,暂且翻译为 双模型 和 时序组合模型
2.1.1双模型
作者让同一个图片输入网络两次,由于有一些随机的因素(dropout, augmentation等),会使得两次的隐藏层的输出(也就是z)会不一样,作者把两个不同的z做差,然后求l2,作为loss的一部分,当然loss的另一部分就是那些有标签数据的交叉熵(cross entropy)。另外,由于模型最开始时是很不准确的,所以产生的z可能没有多大意义,所以需要先对有label的数据进行训练,也就是需要把两次不同的z比较的loss进行屏蔽。
作者这里设置了一个随时间变化的变量w(t),在t=0时,设置w(t)为0,也是z比较的loss权重为0,然后w(t)随着时间增大而增大。因此,随着训练时间的增加,w(t) 将会从零开始线性增长至某个饱和值,对应无标签数据的信号也将逐渐释放出来。背后的核心想法也很直观,早期模型预测效果不佳,因此 entropy regularization 产生信号的误差也较大,因而 w(t) 应该从零开始,由小逐渐增大。
如上图所示,Π Model 包含两个核心点:
- 第一:对每一个参与训练的样本,在训练阶段,进行两次前向运算。此处的前向运算,包含一次随机增强变换和一次模型的前向运算。由于增强变换是随机的,同时模型采用了 Dropout,这两个因素都会造成两次前向运算结果的不同,如图中所示的两个 zi。
- 第二:损失函数由两部分构成,如下图所示。第一项由交叉熵构成,仅用来评估有标签数据的误差。第二项由两次前向运算结果的均方误差(MSE)构成,用来评估全部的数据(既包括有标签数据,也包括无标签数据)。其中,第二项含有一个时变系数,用来逐步释放此项的误差信号。此处的第二项即是用来实现一致性正则。
2.1.2时序组合模型
时序组合模型和双模型的不同点在于,比较的z来源不同。在双模型中,两个z都是来自同一迭代时间内产生的两次结果。但在时序组合模型中,一个z来自上次迭代周期产生的结果,一个z来自当前迭代时间内产生的结果,也就是比较了两次不同时间内产生的z。在时序组合模型中,由于一次迭代期间内,只用产生一次z,那么相比于双模型,它就有了两倍的加速。作者在论文中说,他们使用的以前的z,并不是恰恰上次迭代的z,而是历史z的加权和,即综合考虑了模型本次迭代产生的预测结果和历史预测结果(这个看着和reinforcement learning 中的reward的更新类似)。这样做的好处是能够保留历史信息,衰减长远历史信息和稳定当前值。
2.2数据集介绍
2.2.1cifar-10和cifar-100
CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。
数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。训练批次以随机顺序包含剩余图像,但一些训练批次可能包含来自一个类别的图像比另一个更多。总体来说,五个训练集之和包含来自每个类的正好5000张图像。
总结:每张图片较小,包含一类物体,类与类之间完全排斥
CIFAR-100数据集包含100个类,每个类包含600个图像。,每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类)
总结:每张图片同样只包含一类物体,但是类与类之间未完全排斥,存在超类和细致标签(要求模型更佳的检测性能)
2.2.2SVHN数据集
SVHN(Street View House Number)Dateset 来源于谷歌街景门牌号码,原生的数据集1也就是官网的 Format 1 是一些原始的未经处理的彩色图片,如下图所示(不含有蓝色的边框),下载的数据集含有 PNG 的图像和 digitStruct.mat 的文件,其中包含了边框的位置信息,这个数据集每张图片上有好几个数字,适用于 OCR 相关方向。
总结:每张图片较小,0-9数字并且在一张图片上存在多个
2.3实验效果
研究人员分别在 CIFAR-10 和 SVHN 数据集上进行了实验。从图中可以看出,对于 CIFAR-10 数据集上,在仅有 10% 的样本下(左边一列),相对于纯监督或者 GAN 的模型,文章所提出的两个算法模型提升了 23~6个百分点不等。即使在完整数据集下,此论文所提出的方法也比纯监督的方法更优,额外提升 0.5 个百分点。这说明本文所采用的一致性正则项完全可以充当通用的正则项,用来约束模型对于输入的局部噪声不敏感。
参考
https://zhuanlan.zhihu.com/p/138085660
https://www.cnblogs.com/huangshiyu13/p/6634215.html