Advertisement

【李宏毅机器学习笔记】11、 Semi-supervised

阅读量:

【李宏毅机器学习笔记】1、回归问题(Regression)

【李宏毅机器学习笔记】2、error产生自哪里?

【李宏毅机器学习笔记】3、gradient descent

【李宏毅机器学习笔记】4、Classification

【李宏毅机器学习笔记】5、Logistic Regression

【李宏毅机器学习笔记】6、简短介绍Deep Learning

【李宏毅机器学习笔记】7、反向传播(Backpropagation)

【李宏毅机器学习笔记】8、Tips for Training DNN

【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)

【李宏毅机器学习笔记】10、Why deep?(待填坑)

【李宏毅机器学习笔记】11、 Semi-supervised

【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods

【李宏毅机器学习笔记】 13、Unsupervised Learning - Word Embedding(待填坑)

【李宏毅机器学习笔记】 14、Unsupervised Learning - Neighbor Embedding(待填坑)

【李宏毅机器学习笔记】 15、Unsupervised Learning - Auto-encoder(待填坑)

【李宏毅机器学习笔记】 16、Unsupervised Learning - Deep Generative Model(待填坑)

【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)

【李宏毅机器学习笔记】 19、Structured Learning - Introduction(待填坑)

【李宏毅机器学习笔记】 20、Structured Learning - Linear Model(待填坑)

【李宏毅机器学习笔记】 21、Structured Learning - Structured SVM(待填坑)

【李宏毅机器学习笔记】 22、Structured Learning - Sequence Labeling(待填坑)

【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

【李宏毅机器学习笔记】 24、集成学习(Ensemble)

------------------------------------------------------------------------------------------------------

【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=22

课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

-------------------------------------------------------------------------------------------------------

在supervised learning中,每一个样本 x^r ,都有对应的label y^r\hat 。

而Semi-supervised learning,则不仅包含x^ry^r\hat,还包含了没label的data x^u

  • 通常做Semi-supervised learning,没label的data会远多于有label的data 。

Semi-supervised learning 有 Transductive learning和Inductive learning 两种方法。

  • 在Transductive learning中,没label的data testing data里面(个人觉得testing data是指validation data那个意思)
  • 在Inductive learning中,没label的data没在 testing data里面(个人觉得testing data是指validation data那个意思)

为什么是Semi-supervised learning?

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

Semi-supervised Learning for Generative Model

Supervised Generative Model

这个是Supervised Generative Model(具体内容可看第4篇笔记

Semi-supervised Generative Model

在刚才已经有label的data的基础上,再加上如上图的绿色的没label的data 。

此时,由于这些没label的data会影响,所以最后分界线也跟着变了

具体公式怎么做,如下。

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

上图的step 1就对应EM算法的E,step 2就对应EM算法的M 。

第4篇笔记知道 ,Generative Model 就是根据label data生成一个能最大化Likelihood()的model。

而现在加了unlabel data,的公式就变成上图所示的那样。

Low-density Separation

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

Self-training

  1. 通过label data 算出model(随便什么方法计算都可以)
  2. 用这个model去给unlabeled data打标签(这个叫Pseudo-label),然后抽一些(怎么抽随便你)放到label data里。

重复1、2步。

注意:方法不能用于regression的问题上。

刚才有说过要给unlabel data 打标签,这里打的标签要是hard label,体现了Low-density Separation这个方法的“非黑即白”的特点。 什么是hard label,如上图。

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

  • 用hard label就是直接将这个data的target设为class 1 。
  • 用soft label,则仍然是把这个data的target设为,和网络的输出是一样的。所以后面这个data丢给网络训练是没起作用的。

Self-training有一个进阶版,就是Entropy-based Regularization。

Entropy-based Regularization

在这个方法中,network的不是直接输出 x 属于什么class。而是输出一个分布,这个分布是 x 属于所有class的概率。

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

这里用entropy 来衡量这件事情。同时把这项entropy 加到原来(只有label data)的Loss Function上,所以希望这一项越小越好。

  • 第一个分布,x 属于class 1的概率是1,符合刚才说的比较好的情形,能明确看出x属于某一类,此时 = 0 。
  • 第三个分布,x 属于每一类的概率都差不多,约等于1/5,符合刚才说的不好的情形,此时 =

Outlook: Semi-supervised SVM

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

Smoothness Assumption


Smoothness Assumption这个假设是这样:

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

下面是一个更具体的例子。

以左图为例子,如果只看这三个数字,感觉 会更像,而 比较不相像。

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

就会觉得, 应该是属于同一类的。

同理,上图中的人脸的识别也一样。

上图是一个文章分类的例子,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

对所有data进行聚类(Cluster),如上图。cluster 1 里 label data 是class 1 的比较多,就把cluster 1里的所有unlabel data

都归于class 1。

Graph-based Approach

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

下面看下怎么建这个图(graph)。

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

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

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

刚才说的都是比较定性的概念,这里用具体公式来定义有多smoothness。

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

衡量smoothness的公式S也可以写成上图的样子,它们结果会相等的。

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

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

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

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

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

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

全部评论 (0)

还没有任何评论哟~