半监督学习semi-supervised

半监督学习介绍

半监督学习semi-supervised
在supervised learning中,每一个样本 x r x^r xr ,都有对应的 l a b e l y r label y^r labelyr

而Semi-supervised learning,则不仅包含 x r 、 y r x^r 、y^r xryr,还包含了没label的data x u x^u xu

通常做Semi-supervised learning,没label的data会远多于有label的data 。
Semi-supervised learning 有 Transductive learning和Inductive learning 两种方法。

在Transductive learning中,没label的data是从testing data取的。
在Inductive learning中,没label的data没在testing data里面。

为什么是Semi-supervised learning?
获取有label的data成本太高。也可以说不缺data,但缺有label的data。
人类也在做Semi-supervised learning

Semi-supervised Learning for Generative Model

Supervised Generative Model

半监督学习semi-supervised
这个是Supervised Generative Model。

Semi-supervised Generative Model

半监督学习semi-supervised
在刚才已经有label的data的基础上,再加上如上图的绿色的没label的data 。

此时,由于这些没label的data会影响半监督学习semi-supervised
,所以最后分界线也跟着变了

具体公式怎么做,如下。
半监督学习semi-supervised
1.初始化参数,这些参数可以用有label的data估测而来。
2.根据已有的参数,估测unlabel data属于哪一类的概率,比如属于class 1的概率等。
3.按照图中所示公式,更新模型
4.重复2、3步

半监督学习semi-supervised
Generative Model 就是根据label data生成一个能最大化Likelihood(半监督学习semi-supervised
)的model。

而现在加了unlabel data,半监督学习semi-supervised
的公式就变成上图所示的那样。

Low-density Separation

半监督学习semi-supervised
Low-density Separation,就是说两个类之间,如果存在一个density比较小(data比较少)的地方,那么这两个类的分界线应该就在这里。

Self-training

半监督学习semi-supervised
1.通过label data 算出model(随便什么方法计算都可以)
2.用这个model去给unlabeled data打标签(这个叫Pseudo-label),然后抽一些(怎么抽随便你)放到label data里。
3.重复1、2步。

注意:方法不能用于regression的问题上。
半监督学习semi-supervised
刚才有说过要给unlabel data 打标签,这里打的标签要是hard label,体现了Low-density Separation这个方法的“非黑即白”的特点。 什么是hard label,如上图。

把 unlabel data 丢到 network 里,输出这个unlabel data属于class 1的几率是0.7,属于class 2的几率是0.3。

1.用hard label就是直接将这个data的target设为class 1 。
2.用soft label,则仍然是把这个data的target设为半监督学习semi-supervised
,和网络的输出是一样的。所以后面这个data丢给网络训练是没起作用的。
Self-training有一个进阶版,就是Entropy-based Regularization。

Entropy-based Regularization

半监督学习semi-supervised
在这个方法中,network的不是直接输出 x 属于什么class。而是输出一个分布,这个分布是 x 属于所有class的概率。

1.这个分布,越能明确看出 x 属于某一class就越好。
2.如果这个分布是 x 属于所有class的几率都差不多,那就是不好的。

半监督学习semi-supervised

Outlook: Semi-supervised SVM

半监督学习semi-supervised
Semi-supervised SVM的想法是这样,找一条分界线,将class 1和class 2区隔开。这条分界线要求在错误率比较低的前提下,还要把使得margin尽量比较大。如上图,第2中就符合这个要求。

Smoothness Assumption

半监督学习semi-supervised
Smoothness Assumption这个假设是这样:

如上图,以人类直觉来看 x 2 x^2 x2 x 3 x^3 x3 离得比较近、 x 2 x^2 x2 x 1 x^1 x1 离得比较远。但这并不意味着 x 2 x^2 x2 x 3 x^3 x3 比较像(或者说属于同一类)。因为 x 2 和 x 3 x^2 和 x^3 x2x3 有一个地方是data比较稀疏的区域。而 x 1 、 x 2 x^1 、x^2 x1x2 虽然距离比较远,但它们中间都是的区域是有很多data“挤在一起”(即 high density region)。所以Smoothness Assumption的想法,应该判断 x 1 、 x 2 x^1 、x^2 x1x2 是同一类的。

下面是一个更具体的例子。
半监督学习semi-supervised
半监督学习semi-supervised
半监督学习semi-supervised
上图是一个文章分类的例子,d1、d2、d3、d4等代表不同的文章。

左图中,data数量不够,此时我们说d1和d3属于同一类,可能不是那么自信。

而当我们搜集更多data,变成右图的样子。

就可以看出d1和d5比较像,d5和d6比较像,d6和d7比较像,d7和d3比较像。这时就可以下判断,d1和d3是属于同一类。

现在知道了Smoothness Assumption的想法,怎么实践呢?用Cluster and then Label 或者 Graph-based Approach。

Cluster and then Label

半监督学习semi-supervised
对所有data进行聚类(Cluster),如上图。cluster 1 里 label data 是class 1 的比较多,就把cluster 1里的所有unlabel data都归于class 1。

Graph-based Approach

半监督学习semi-supervised
把data(图中的点)连接起来,形成一张图(graph)。即便data间距离很远,但只要“有路相通”,就是属于同一类的。

下面看下怎么建这个图(graph)。
半监督学习semi-supervised
1.为了把data(图中的点)连接成图,需要可以使用Gaussian Radial Basis Function(公式如上图)计算data间的相似性。
2.使用K Nearest Neighbor(kNN)或者e-Neighborhood将这些相似性比较高的点连接起来,两种方法的效果图如上图所示。

其中,Gaussian Radial Basis Function取exp的原因是为了防止出现错误,取了exp后,整个function的下降速度会快很多,这样只有两个点距离比较近,才能被认为是同一类。这样就能防止了图中的绿色点和橙色点,会被误认为同一类。

半监督学习semi-supervised
如上图,初始时只有 x 那个点是被label为class 1,但通过建立关系后,会慢慢往外“感染”。到最后,即便没有和 x 直接相连的data,也可以归为class 1。 但是还是要说一下,这个前提一定要是data足够多,能互相建立起关系才可以。

半监督学习semi-supervised
刚才说的都是比较定性的概念,这里用具体公式来定义有多smoothness。

套上图里的公式,这时可以得出左边的图比右边的图smooth。

半监督学习semi-supervised
衡量smoothness的公式S也可以写成上图的样子,它们结果会相等的。

R+U指的是包括了label的data和unlabel的data。

W矩阵的数值代表weight,1行2列代表 x 1 到 x 2 x^1 到 x^2 x1x2 的weight ,其他以此类推。

D的第一行指的是W的第一行的总和,其他以此类推。

半监督学习semi-supervised
把S加到Loss Function后面,作为一项正则项。此时Loss Function要做的事情,不仅是要最小化Cross entropy,还要最小化S这一项。可以用gradient descent来做这件事情。

S之所以能最小化,是因为:上图的公式S的 y 就是 x 作为输入后,Network输出的结果。所以可以通过调网络的参数,来使S最小化。

另外,也可以使Network中间的layer的output变smooth,并不是只有最后的output可以变smooth。