![66e7997607f1ce97e86f61472f2d5de6.png](https://i-blog.csdnimg.cn/blog_migrate/b4da0426d45635d21b41efc58e4ae438.jpeg)
我们首先要问自己一个问题,为什么这个世界会需要半监督学习,如果有标签的数据可以使用有监督学习,无标签的数据可以使用无监督学习,那么半监督夹杂中间的时候,相比较上两者究竟解决了什么问题,且是通过什么样的操作来解决这些问题的。
当我们有部分标签的时候,传统的监督模型只能使用部分的标签对整体进行预测,并以此为基础对全局数据进行预测。这会带来一些问题,包括有标签数据占整体数据量级过少带来的过拟合,整体数据量太少带来的对全局的不具有代表性。根本上说我们可以训练的数据少了一大截的尴尬以及要预测的数据多了一大截的尴尬。
这个时候其实最大的问题就是没有标签的数据该如何被使用以至于我们可以使用所有的数据进行训练而不仅仅局限于单独的有标签的样本的训练
从Pseudo-Label 派系的模型来看(包括从Pseudo到Temporal Ensembling 和Teacher Studentmodel等模型),他们提出的解决方案是基于如何把无标签数据转化成有标签数据并进行训练这样一个思路来解决上述问题的,或者我们可以理解为,他们使用无标签数据作为约束函数对有标签数据的训练走向进行了一定程度的约束。类似L2 loss对函数进行了过拟合的约束,半监督的loss对其有监督的loss进行了约束
Pseudo-Label
作为最早的半监督解决方案之一,其概念也是最朴素的,我们从他的LOSS设计入手解构一下Pseudo-Label 是如何把无标签数据转化成有标签数据并进行对比的
![image.png](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/e276d50873160c8dd0bd9106da2f5465.png)
LOSS中前半段是有标签样本的LOSS,后半段为无标签样本的LOSS,Y'm是基于第一轮对于有标签数据的网络对所有数据的预测。f'm是网络在第二轮以及之后的训练的时候每个batch相关的Y‘m标的预测。我们甚至可以把后面的这个项理解成一个对于有标签样本的约束,
在前半段对有标签函数学习的过程中,他确保了之后迭代出的权重对目标的预测在原本无标签的数据上有着一致性。这里存在着的一个问题就是,我们初始的权重不是最优的,而随着epoach的迭代,模型会越来越好,那么强调其一致性就变得更加的有必要,所以在第二段的开始,我们有一个alpha系数,这个系数往往是和epoch相关的高斯爬升函数
Temporal Ensembling
Temporal Ensembling 可以看作为 Pseudo-Label 的一个改进,其一改动重点在于LOSS中的‘无监督’损失部分
![dd.png](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/f8413f5e9b28fe5f5358a24edf354ed6.png)
如上图,其‘无监督’部分不区隔有无监督的标签,对所有的样本都进行了约束。这样带来的好处是增加了对有标签样本的一致性的要求,对有标签样本中的噪音有一定的区隔作用。另一个改进是对所有的输入在同一个batch都进行两次运算,在其中加入扰动并通过loss要求两次的预测有一致性,这也增加了模型的抗噪能力。最后一个优化是他对 pseudo 标签的迭代采取了Zi ← αZi + (1 − α)zi的迭代方式。这样的方式相比较Pseudo-Label 来说更为平滑。在此我们可以拿其与孪生网络的LOSS做一个比较。我们会发现,其实2010年之前孪生网络就提出了利用了两个共享权重网络的预测的距离来构造loss增强模型的鲁棒性,而Temporal Ensembling 在2017年提出的上述概念与其是非常相似的。
MeanTeacher model
相较于Temporal Ensembling对于每一个epoch的标签采取了迭代的方式,MeanTeacher model选择了对 ‘老师模型’的权重进行一个平滑的迭代。如果说 Temporal Ensembling是在一个epoch后对所有的经验进行总结并修基于结果平滑的修改‘标杆结果’,Mean Teacher model 则选择了对‘标杆’在每一个batch后进行平滑的迭代
θ‘t = αθ’t−1 + (1 − α)θt。也就是说我们对于标杆本身不断的进行调优,只是他的改变速度由于alpha的存在明显低于‘学生’的权重调整