按照“非黑即白”的思路,假设类别之间的boundary周围的data是很少的,即假设不同类别数据之间应该有1个很明显的boundary。
Self-training
最简单的基于Low-density Separation假设的半监督学习是Self-training。
使用有标签的数据训练1个模型$f^*$,模型类型和训练方式没有限制,神经网络、深或浅、其它机器学习方法等等都可以
使用模型$f^$生成未标注数据的伪标签(Pseudo-label),即$y^u=f^(x^u)$
取出一部分未标注数据将它们添加到有标签数据中,然后回到步骤1
如何选择未标注数据仍然是一个open question,可以自行设计策略,比如给每个样本一个置信度。
Self-training和生成模型中的半监督学习(见上1篇文章)还挺像的,它们的区别在于:
- Self-training使用hard label,即假定某个无标签样本一定属于某个类别(“非黑即白”)
- 生成模型使用soft label,即假定某个无标签样本有一定概率属于某类别(也可以理解为一个样本可以按照后验概率划分成多个部分,不同部分属于不同类别)
Self-training使用了hard label,它并不适用于regression。
生成模型使用了soft label,它生成的伪标签在分类任务中是没有用的。因为把某个无标签样本(通过soft label生成伪标签)丢进模型重新训练模型,模型参数根本不会发生变化。
实际上,low-density separation就是通过hard label来提升分类效果的方法。
Entropy-based Regularization
该方法是Self-training的进阶版。
Self-training中使用的hard label还是有些武断和激进,Entropy-based Regularization对此进行了改进。
在使用神经网络进行分类时,$y^u=f^_{\theta^}(x^u)$,其中$y_u$是1个one-hot编码。现在我们并不限制其必须是某个类别,而是将其看做1个分布,我们希望这个分布越集中越好(“非黑即白”),因为分布越集中时它的含义就是样本$x^u$属于某类别的概率很大属于其它类别的概率很小。
我们可以使用Entropy评估分布$y^u$的集中程度$E(y^u)=-\sum_{m=1}^5y_m^uln(y_m^u)$,假设是5分类,其值越小则表示分布$y^u$越集中。
无监督分类的目标为有标签数据分类正确、无标签数据分类结果集中,所以损失函数则为$L=\sum_{x^r}C(y^r,\hat y^r)+\lambda\sum_{x^u}E(y^u)$,其中第1项为有标签数据的交叉熵损失、第2项为无标签数据的entropy、$\lambda$表示无标签数据的损失权重,因为式中第2项的作用类似于regularization,所以该方法被称为Entropy-based Regularization。
Semi-supervised SVM
SVM为两个类别的数据找到一个boundary,该boundary与两个类别的margin最大、分类错误最小。
Semi-supervised SVM穷举所有无标签数据的类别并进行计算,最终选择与两个类别的margin最大、分类错误最小的boundary。
在数据量大的时候,Semi-supervised SVM难以穷举出所有情况,但还有一种求近似解的方法,其大致思路是初始化一些label,然后每次尝试改动1个样本的label并判断是否更优,如果更优则改变该样本的label,具体见Transductive Inference for Text Classification using Support Vector Machines。
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸鱼
知乎(zhihu.com):@臭咸鱼
博客园(cnblogs.com):@臭咸鱼
B站(bilibili.com):@绝版臭咸鱼
微信公众号:@臭咸鱼
转载请注明出处,欢迎讨论和交流!