【Machine Learning】笔记:Semi-supervised learning

来源:互联网 发布:阿根廷04男篮名单 数据 编辑:程序博客网 时间:2024/05/20 12:46

李宏毅老师的课程的笔记。

Introduction

什么是半监督学习?既有有标记数据 xr,又有无标记数据 xu,一般无标记数据的数量远大于有标记数据。半监督学习又可以分为两种:

  • Transductive learning,无标记数据就是 testing data,注意,用了 testing data 的 feature 是没有问题的,用了 label 才会出问题。
  • Inductive learning,无标记数据不是 testing data,假设在训练时不知道 testing set.

至于要用哪种,可以看下手上的数据,比如一些比赛中 testing data 已经给出了,那就可以用。

Semi-supervised learning for generative model

监督学习下的 generative model

首先,估计 prior probability P(Ci),再估计出每一类有标记数据的分布 P(x|Ci),假设为共用协方差矩阵的高斯分布,因此只需估计 μiΣ 就行。之后,就可以估计出测试数据属于某一类的概率了,如:P(C1|x)=p(x|C1)P(C1)p(x|C1)P(C1)+p(x|C2)P(C2).

半监督学习下的 generative model

前面部分与监督学习下的操作一样,估计出 P(Ci)μiΣ,接下来,使用未标记的数据 xu 来对这些参数重新估计,以二分类问题为例:

  1. 初始化 θ={P(C1),P(C2),μ1,μ2,Σ}
  2. 计算未标记数据的 posterior probability Pθ(C1|xu)
  3. 更新参数,P(C1)=N1+xuP(C1|xu)Nμ1=1N1xrC1xr+1xuP(C1|xu)xuP(C1|xu)xu,等等,在做完之后,再回到第二步。

事实上,如果了解 EM 算法,第二步就是 E,第三步就是 M. 这样反复下去,在最终一定会收敛,但收敛的结果与初始化的值有关。

原理

在监督学习下,我们要最大化的概率函数是 L(θ)=xrlogPθ(xr,yr),其中 Pθ(xr,yr)=Pθ(xr|yr)P(yr).
在半监督学习下,要最大化的概率函数是 L(θ)=xrlogPθ(xr,yr)+xulogPθ(xu),其中 Pθ(xu)=Pθ(xu|C1)P(C1)+Pθ(xu|C2)P(C2),而要最大化这个,就可以用上面迭代的方法来做

Low-density separation assumption

在用这个假设时,需要假设有一个很明显的区域(low density),能把数据分开。

Self-training

Self-training 是 low density separation 下最典型的方法。
先对有标记的数据训练出一个 f,用什么方法都可以,用这个 f 来预测无标记的数据,预测出的就叫 pseudo label. 接下来,就用无标记数据中拿出一部分数据,放到有标记数据中,怎么选出这部分是自己定的,也可以对每一个数据提供一个权重。新加入了这些数据之后,就可以再重新训练一个 f,往复进行。
这招用在 regression 中,是没有用的,因为用预测出来的数字重新用来做训练,并不会影响模型的参数。
在做 self-training 时,其实就是把某个未标记数据指定一个分类,而在 generative model 中,其实就是把未标记数据对应于各个分类的概率计算出来。两者很相像,前者叫作 hard label,后者叫作 soft label. 那么,到底哪种比较好呢?看情况,比如在用神经网络时,soft label 就没有用了。

Entropy-based Regularization

Self-training 有一个进阶版,就是 entropy-based regularization. 在这样的方法中,我们就不用在预测未标记数据时让它确定属于哪一个,而是用 entropy 来让它属于某一类的几率更大。
定义损失函数 L=xrC(xr,y^r)+λxuE(yu),其中 E(yu) 是在未标记数据上的 entropy,E(yu)=m=15yumln(yum),它可以算微分,因此可以直接梯度下降来求解。

Semi-supervised SVM

将未标记数据穷举所有的分法,然后对每一种分法都进行 SVM,具有最大的间隔和最小误差的那一种。
但是,如果有 10000 个未标记数据,那么就会有 210000 种分法来穷举,Transductive Inference for Text Classi cation using Support Vector Machines 中提出的解决办法是,每次只改一个数据,看一下能否让间距变大,变大了就改。

smoothness assumption

作出如下假设:x 的分布不均匀,在有些地方集中,有些地方分散,若 x1x2 在一个 high density region 内很接近,那么 y^1 就与 y^2 相同。这里的关键在于,x1x2 要 connected by a high density path,看下图:
high density region
在这里,x2x3 比较接近,但 x2x1 才是在 high density region 内接近的。
这样的假设在有些情况下是很合理的,比如手写数字辨识,23 在某些情况下可以很接近,反而不同的 2 可能会相差很远,但是,不同的 2 之间,可以由很多渐变的 2 连接过去。

Graph-based Approach

在这样的假设下,就可以用 graph-based approach 的方法来做。
首先需要定义相似度,一般可以用 Gaussian Radial Basis Function (RBF) 来定义:s(xi,xj)=exp(γxixj2),这个函数可以让相似度随着距离的增加而迅速减小。
定义完相似度之后,就可以逐渐把数据点之间相连的边加上去,加边可以用 kNN 或者 e-Neighborhood 的方法来做。然后设置边的权重,和 s(xi,xj) 成比例。
然后,定义在图上的标记的 smoothness,S=12i,jwi,j(yiyj)2,该式可以写成 S=yTLyyR+U 维的向量(所有的有标记和无标记数据),L=DWD 是所有数据之间两两的连接权重,W 是对角矩阵,对角线上的值是每个数据点所有的连接的权重之和。之后,就可以定义出 loss function L=xrC(yr,y^r)+λS.
具体可参考 J. Weston, F. Ratle, and R. Collobert, “Deep learning via semi-supervised embedding,” ICML, 2008.

原创粉丝点击