半监督学习概述

1、半监督学习

今天在阅读一篇论文时了解了这个之前一直不太清晰的概念。下面是查阅了相关资料后对半监督学习的理解。如有错误,望更正。

半监督学习是一种介于监督学习和无监督学习之间的学习凡是,我们都知道,在监督学习中,样本的类比、类别标签都是已知的,学习的目的是找到样本的特征与类别标签之间的联系。一般来讲训练样本的数量越多,训练得到的分类器的分类精度也会越高。但是在很多现实问题当中,一方面是由于人工标记样本的成本很高,导致有标签的数据十分稀少。(如果是让算法工程师亲自去标记数据,会消耗相当大的时间和精力;也有很多公司采取雇佣一定数量的数据标记师,这种做法也无疑是耗费了大量金钱在数据标记上。)而另一方面,无标签的数据很容易被收集到,其数量往往是有标签样本的上百倍。因此,半监督学习(这里仅针对半监督分类),就是要利用大量的无标签样本和少量带有标签的样本来训练分类器,解决有标签样本不足的难题。

2、self-training

self-training可能是最早提出的半监督学习方法,最早可以追溯到1965.self-training相比于其他半监督学习方法的优势在于简单以及不需要任何假设。
半监督学习概述_第1张图片
上面是self-training的算法流程图,简单介绍一下:

  • 1、将初始化的有标签数据作为初始的训练集(Xtrain,ytrain)=(X_l,y_l),根据该训练集训练得到一个初始分类器 C i n t C_{int} Cint
  • 2、利用 C i n t C_{int} Cint对无标签数据集 X u X_u Xu进行分类,选出最有把握的样本 X c o n f , y c o n f X_{conf},y_{conf} Xconf,yconf(可以设定阈值来选择)
  • 3、从 X u X_u Xu中去掉 X c o n f , y c o n f X_{conf},y_{conf} Xconf,yconf
  • 4、将 X c o n f , y c o n f X_{conf},y_{conf} Xconf,yconf加入到有标签数据集中, ( X t r a i n , y t r a i n ) ← ( X l , y l ) ∪ ( X c o n f , y c o n f ) (Xtrain,ytrain)←(X_l,y_l)∪(X_{conf},y_{conf}) (Xtrain,ytrain)(Xl,yl)(Xconf,yconf)
  • 5,根据新的训练集训练新的分类器,重复步骤2到5直到满足停止条件(例如所有无标签样本都被标记完了)
    最后得到的分类器就是最终的分类器。

3、协同学习 (co-training)

和自我学习一样,协同学习的目的也是为了用现有的有标签的数据去标记其他数据。具体步骤如下:假设现在有数据集,每组数据有2个特征(feature): x1 和 x2。我们把其中有标签的那部分数据集称为L (表示为[x1,x2,y]),没有标签的数据集称为U (表示为[x1,x2])。

初始化数据,把L 分为L1 ([x1,y]) 和L2 ([x2,y])。这里注意,L 是一个数据集,里面包涵了很多数据,我就顺便提醒一下。
重复:a) 分别用L1和L2训练出一个模型 F1和F2
b) 分别用模型F1和F2去预测U (给U打标签),同样这里也是只选出最有把握的一些结果。

c) 把F1预测的结果放入L2,把F2预测的结果放入L1 (交叉放置)

d) 更新L 和 U

  1. 直到数据集不发生变化 (和自我学习一样)

4、参考资料

1)半监督学习之self-training
2)半监督分类的方式:self-training和co-training的算法简述

你可能感兴趣的:(深度学习,机器学习)