Semi-supervised Learning

半监督学习(semi-supervised learning) 1、introduction 2、Semi-supervised Learning for Generative Model 3、Low-density Separation Assumption:非黑即白 4、Smoothness Assumption:近朱者赤,近墨者黑 5、Better Representation:去芜存菁,化繁为简

Introduction

Supervised Learning:

Semi-supervised Learning:} +

Why semi-supervised learning help?

为什么semi-supervised learning会有效呢?

The distribution of the unlabeled data tell us something.

unlabeled data虽然只有input,但它的分布,却可以告诉我们一些事情

以下图为例,在只有labeled data的情况下,红线是二元分类的分界线

但当我们加入unlabeled data的时候,由于特征分布发生了变化,分界线也随之改变

semi-supervised learning的使用往往伴随着假设,而该假设的合理与否,决定了结果的好坏程度;比如上图中的unlabeled data,它显然是一只狗,而特征分布却与猫被划分在了一起,很可能是由于这两张图片的背景都是绿色导致的,因此假设是否合理显得至关重要

Semi-supervised Learning for Generative Model

Supervised Generative Model

事实上,在监督学习中,我们已经讨论过概率生成模型了,假设class1和class2的分布分别为的高斯分布,计算出Prior Probability后,再根据贝叶斯公式可以推得新生成的x所属的类别

Semi-supervised Generative Model

如果在原先的数据下多了unlabeled data(下图中绿色的点),它就会影响最终的决定,你会发现原先的显然是不合理的,新的需要使得样本点的分布更接近下图虚线圆所标出的范围,除此之外,右侧的Prior Probability会给人一种比左侧大的感觉(右侧样本点"变多"了)

此时,unlabeled data对都产生了一定程度的影响,划分两个class的decision boundary也会随之发生变化

讲完了直观上的解释,接下来进行具体推导(假设做二元分类):

以上的推导基于的基本思想是,把unlabeled data 看成是可以划分的,一部分属于,一部分属于,此时它的概率,也就是的先验概率乘上这个class产生的概率+的先验概率乘上这个class产生的概率

实际上我们在利用极大似然函数更新参数的时候,就利用了该拆分的结果:

Low-density Separation Assumption

接下来介绍一种新的方法,它基于的假设是Low-density separation

通俗来讲,就是这个世界是非黑即白的,在两个class的交界处data的密度(density)是很低的,它们之间会有一道明显的鸿沟,此时unlabeled data(下图绿色的点)就是帮助你在原本正确的基础上挑一条更好的boundary

Self Training

low-density separation最具代表性也最简单的方法是self training

注:该方法对Regression是不适用的

实际上,该方法与之前提到的generative model还是挺像的,区别在于:

如果我们使用的是neural network的做法,是从labeled data中得到的一组参数,此时丢进来一个unlabeled data ,通过后得到,即它有0.7的概率属于class 1,0.3的概率属于class 2

可以看到,在neural network里使用soft label是没有用的,因为把原始的model里的某个点丢回去重新训练,得到的依旧是同一组参数,实际上low density separation就是通过强制分类来提升分类效果的方法

Entropy-based Regularization

该方法是low-density separation的进阶版,你可能会觉得hard label这种直接强制性打标签的方式有些太武断了,而entropy-based regularization则做了相应的改进:,其中是一个概率分布(distribution)

由于我们不知道unlabeled data 的label到底是什么,但如果通过entropy-based regularization得到的分布集中在某个class上的话,那这个model就是好的,而如果分布是比较分散的,那这个model就是不好的,如下图所示:

接下来的问题是,如何用数值的方法来evaluate distribution的集中(好坏)与否,要用到的方法叫entropy,一个distribution的entropy可以告诉你它的集中程度:

对上图中的第1、2种情况,算出的,而第3种情况,算出的,可见entropy越大,distribution就越分散,entropy越小,distribution就越集中

因此我们的目标是在labeled data上分类要正确,在unlabeled data上,output的entropy要越小越好,此时就要修改loss function

Semi-supervised SVM

SVM要做的是,给你两个class的data,去找一个boundary:

对unlabeled data穷举所有可能的label,下图中列举了三种可能的情况;然后对每一种可能的结果都去算SVM,再找出可以让margin最大,同时又minimize error的那种情况,下图中是用黑色方框标注的情况

SVM paper:Thorsten Joachims, ”Transductive Inference for Text Classification using Support Vector Machines”, ICML, 1999

当然这么做会存在一个问题,对于n笔unlabeled data,意味着即使在二元分类里也有种可能的情况,数据量大的时候,几乎难以穷举完毕,上面给出的paper提出了一种approximate的方法,基本精神是:一开始你先得到一些label,然后每次改一笔unlabeled data的label,看看可不可以让你的objective function变大,如果变大就去改变该label,具体内容详见paper

Smoothness Assumption

concepts

smoothness assumption的基本精神是:近朱者赤,近墨者黑

粗糙的定义是相似的x具有相同的,精确的定义是:

假设下图是data的分布,是其中的三笔data,如果单纯地看x的相似度,显然更接近一些,但对于smoothness assumption来说,是处于同一块区域的,它们之间可以有一条相连的路径;而之间则是“断开”的,没有high density path,因此更“像”

digits detection

以手写数字识别为例,对于最右侧的2和3以及最左侧的2,显然最右侧的2和3在pixel上相似度更高一些;但如果把所有连续变化的2都放进来,就会产生一种“不直接相连的相似”,根据Smoothness Assumption的理论,由于2之间有连续过渡的形态,因此第一个2和最后一个2是比较像的,而最右侧2和3之间由于没有过渡的data,因此它们是比较不像的

人脸的过渡数据也同理

file classification

Smoothness Assumption在文件分类上是非常有用的

假设对天文学(astronomy)和旅行(travel)的文章进行分类,它们各自有专属的词汇,此时如果unlabeled data与label data的词汇是相同或重合(overlap)的,那么就很容易分类;但在真实的情况下,unlabeled data和labeled data之间可能没有任何重复的words,因为世界上的词汇太多了,sparse的分布很难会使overlap发生

但如果unlabeled data足够多,就会以一种相似传递的形式,建立起文档之间相似的桥梁

cluster and then label

在具体实现上,有一种简单的方法是cluster and then label,也就是先把data分成几个cluster,划分class之后再拿去训练,但这种方法不一定会得到好的结果,因为它的假设是你可以把同一个class的样本点cluster在一起,而这其实是没那么容易的

对图像分类来说,如果单纯用pixel的相似度来划分cluster,得到的结果一般都会很差,你需要设计一个很好的方法来描述image(类似Deep Autoencoder的方式来提取feature),这样cluster才会有效果

Graph-based Approach

之前讲的是比较直觉的做法,接下来引入Graph Structure来表达connected by a high density path这件事

我们把所有的data points都建成一个graph,有时候建立vertex之间的关系是比较容易的,比如网页之间的链接关系、论文之间的引用关系;但有时候需要你自己去寻找vertex之间的关系

graph的好坏,对结果起着至关重要的影响,而如何build graph却是一件heuristic的事情,需要凭着经验和直觉来做

graph-based approach的基本精神是,在graph上已经有一些labeled data,那么跟它们相连的point,属于同一类的概率就会上升,每一笔data都会去影响它的邻居,而graph带来的最重要的好处是,这个影响是会随着edges传递出去的,即使有些点并没有真的跟labeled data相连,也可以被传递到相应的属性

比如下图中,如果graph建的足够好,那么两个被分别label为蓝色和红色的点就可以传递完两张完整的图;从中我们也可以看出,如果想要让这种方法生效,收集到的data一定要足够多,否则可能传递到一半,graph就断掉了,information的传递就失效了

介绍完了如何定性使用graph,接下来介绍一下如何定量使用graph

定量的使用方式是定义label的smoothness,下图中,edge上的数字是weight,表达data,表示data的label,计算smoothness的方式为:

我们期望smooth的值越小越好

当然上面的式子还可以化简,如果把labeled data和unlabeled data的y组成一个(R+U)-dim vector,即

于是smooth可以改写为:

其中L为(R+U)×(R+U) matrix,成为Graph Laplacian, 定义为

来说,y是label,是neural network的output,取决于neural network的parameters,因此要在原来仅针对labeled data的loss function中加上这一项,得到:

实际上也是一个regularization term

训练目标:

具体训练的时候,不一定只局限于neural network的output要smooth,可以对中间任意一个hidden layer加上smooth的限制

Better Representation

Better Representation的精神是,去芜存菁,化繁为简

我们观察到的世界是比较复杂的,而在它的背后其实是有一些比较简单的东西,在操控着这个复杂的世界,所以只要你能够看透这个世界的假象,直指它的核心的话,就可以让training变得比较容易

举一个例子,在神雕侠侣中,杨过要在三招之内剪掉樊一翁的胡子,虽然胡子的变化是比较复杂的,但头的变化是有限的,杨过看透了这一件事情就可以把胡子剪掉。在这个例子中,樊一翁的胡子就是original representation,而他的头就是你要找的better representation

算法具体思路和内容到unsupervised learning的时候再介绍