李宏毅机器学习笔记-半监督学习

在这里插入图片描述
半监督学习,一般应用于少量带标签的数据(数量R)和大量未带标签数据的场景(数量U),一般来说,U>>R。

半监督学习一般可以分为2种情况,一种是transductive learning,这种情况下,将unlabeled datafeature利用进来。另外一种是inductive learning,这种情况下,在训练的整个过程中,完全不看任何unlabeled data的信息。

为什么要做semi-supervised learning呢,因为我们现实中大多数情况下,搜集数据比较容易,但是数据标注比较困难。包括我们的人生中,我们自己也是一直在做semi-supervised learning.
在这里插入图片描述
为什么semi-supervised learning会有用呢,因为unlabeled data可以告诉我们一些信息。通常,我们在做semi-supervised learning时,会做出一些假设,这个假设很关键,会影响最后的结果。
在这里插入图片描述
这节课的主要讲述4个部分,第一个是讲generative model时如何做semi-supervised learning。然后在讲述2个常用的通用假设,分别是low density separation假设和smoothness假设,最后,semi-supervised learning还有一个比较好用的一招是better representation

1、Generative Model

在这里插入图片描述
假设说我们已知标签的数据,有两个类别C1和C2,假设他们是属于高斯分布。我们可以画出我们的决策边界,对于任何一个数据,可以求出这个数据x属于类别C1的概率,如上图所示。
在这里插入图片描述
但是,这个时候如果再给了一个unlabeled data,那么我们上面的决策边界就会受到影响。这在直觉上是这样。
在这里插入图片描述
实际操作是怎么做的呢?
首先,先初始化一组参数 θ \theta θ。初始化可以随机设定参数,虽然说初始化的值也很重要。
第一步, 根据初始设定的参数,可以估计每个unlabeled data属于class 1的概率。
第二步,算出第一步的概率之后,便可以update 我们的model。
后续不断重复第一步和第二步。
如果我们知道EM算法的话,那么第一步就是E的过程,第二步就是M的过程。
在这里插入图片描述
这件事情直觉上可以理解为何这样做,我们实际上还是分析下原因,如上图所示。

2、Low density Separation Assumption

在这里插入图片描述
我们认为这个世界是一个非黑即白的世界。意思就是,在两个类别的交界处,密度是比较低的,data量是很少的,基本上不太会出现data。Low density最具代表性的方法就是self training
在这里插入图片描述
self training的方法非常的直觉和通俗易懂,我们不做过多的讲述。
我们现在需要来考虑的一个问题时,self training的方法如果用来做回归regression,会怎么样呢?work吗?
我们可以花5s的时间思考一下。
答案其实是无效的。拿最简单的线性回归为例,不断self training出来的数据,再加入到model中进行训练,model不会发生变化,因此这招对于regression是无效的。
在这里插入图片描述
self training的过程和之前的generative model的过程还是非常相似的,但也有不同之处。主要的不同之处在于hard labelsoft label的区别。以神经网络为例,我们可以想下hard labelsoft label哪个有效?
实际上,如果以ANN为例,soft label是完全无效的。为什么呢?因为在现有的参数上这个unlabeled data都可以做到[0.7,0.3]的输出,如果此时标签还是[0.7,0.3],那么就完全不需要更新参数了,不需要更新model了。

Entropy-based Regularization

在这里插入图片描述
熵要越小越好。可以在损失函数时将unlabeled data的熵一起加入作为最小化项。

3、Smoothness Assumption

在这里插入图片描述
在这里插入图片描述
Smoothness Assumption的基本思想是,如果x相似,那么具有相同的标签。更具体的来说,如果数据的分布并不平均,那么假如两个x之间数据流非常密集,那么两个x具有相同的标签。如上图所示,虽然x2与x3的距离更近,但是x1和x2具有相同的标签。
这种假设往往更符合真实假设,因为同一种类别之间会有非常多的过渡形态。

如何实现Smoothness Assumption

1 cluster and then label

在这里插入图片描述
最简单的方法是聚类和打标。这个方法的前提假设是我们可以将同一个class的label都聚集在一起。但是,例如说在图像识别中,可能同一个class会长的很不像,不同的class会长的很像。因此,如果要使得这个方法有用,那么你的cluster的方法要很强。
在我们尝试的时候,可以用deep autoencoder来实现。
一般先用deep autoencoder进行call feature,然后再call clustering,这样一般就会work。

2 graph-based approach

在这里插入图片描述
我们使用graph来表达connected by a high density path这件事情。我们把所有的data points都建立成一个graph。这样的话,如果有2个点,在graph上是相连的,是走的到的,那么他们就是同一个class.
有时候,建立这个graph是一件很自然的事情,但有时候,我们要自己想办法去建立这个graph。
在这里插入图片描述
一个graph对结果的影响是非常重要的。但是这个事情做起来,很多的时候,凭的是自己的直觉。通常我们可以这样做:

首先需要定义如何去计算他们之间的相似度,例如说对于图像,直接从像素层面去建立相似度,可能效果会比较差。但是如果经过auto-encoder之后再建立相似度,结果可能会比较好。

算完相似度之后,我们便可以开始建立graph了。可以利用KNN的方法,相连固定k个值,也可以用e-neighborhood,只相连相似度超过一定阈值的点。也可以用RBF函数来计算相似度。使用RBF函数的优点在于,只要距离远一点点,那么相似度就下降非常快。
在这里插入图片描述
在这种机制下,类别会不断的传播。
在这里插入图片描述
之前算是定性地计算这种graph,接下来我们来定量地表示。
我们需要定义一个量,smoothness,例如说上图中存在2个例子,左右都有4个点,连线上的数字代表的是权重weight。现在我们来考虑下,左右两边哪边比较smooth一些。我们都会觉得左边更加smooth一些。我们可以用一个公式来定量的描述左右两边到底有多smooth。smooth程度用s表示,左边s=0.5,右边s=3。s值越小越好。
在这里插入图片描述
s的公式描述可以简化写成上图中的公式。其中W就是每个点之间的连接权重。例如说x1和x2之间的权重是2,因此w[1,2]和x[2,1]均为2.D则是一个对角矩阵,将w的每一行加起来刚好可以得到D上的对角元素。L也称为Graph Laplacian
在这里插入图片描述
在训练ANN模型时,我们可以将smoothness作为损失项加入进去,类似于正则项一样。当然,这个smooth可以放在网络结构的任何地方,不一定要求输出要smooth,也可以要求其他地方要smooth。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值