我们真的需要那么多标注数据吗?半监督学习技术近年来的发展历程及典型算法框架的演进
文章中的重点
获取高质量的有标注数据的成本非常高,有时候对于某些领域可能没有那么足够多的有标注的数据来辅助我们模型的训练,所以我们希望可以通过少量有标注的数据和大量无标注的数据也可以得到效果近似的模型,半监督的学习由此而来。
核心问题:
- 如何从无标签数据中获取学习信号来指导监督学习?
- 如何平衡运用有标签数据和无标签数据各自的学习信号?
- 如何选择无标签数据
Pseudo-Label:The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks(熵正则化)
这篇中用了伪标签的思想,将无标签的数据放入模型中,得到预测的概率结果,选择概率最大的作为该条数据的伪标签,然后筛选置信度高的数据作为补充的数据放入到有标签的数据集中,继续进行模型的训练。
损失函数:包含两个部分,无监督数据的损失项相当于熵中的正则项。
Π Model & Temporal ensembling Model:Temporal ensembling for semi-supervised learning(一致性正则)
对于每一条数据输入模型两次,经过一次增强变换,同时在放入神经网络中(dropout),得到两个不同的输出Z,计算两个Z的MSE损失,同时对于有标签的数据,还要进行一步交叉熵损失的计算。
损失函数:
所得
- 通过增加损失函数的损失项,从而获取无标签数据中学习信号来指导有监督的学习。
(熵正则化、一致性正则) - 有标签数据和无标签数据相差过多的时候 ,容易导致有标签的数据发生过拟合,应该设定阈值,当有标签的数据概率超过阈值,则不计算该条有标签数据的损失。
- 对于无标签的选择,应该选择该数据集相似领域内的。当然若是混入了其他数据,我们同样可以设定阈值,若低于这个阈值,则相当于这条数据与原始数据集不相关,可以忽略该条数据。