李宏毅2020机器学习课堂笔记---semi_supervised Learning

Semi-Supervised Learning(半监督学习)

1、introduction

在现实生活中,我们的数据有被标记的也有没有标记的。当我们的数据都是被标记的时候,就符合监督学习的场景。

那么对于半监督学习来说,我们的数据一部分是被标记的,另一部分是没有标记的。一般来说,当我们的数据集 unlabel 的数据远大于 label的数据时,我们就要进行半监督学习。

半监督学习又可以分为下面两种方法:

  • transductive learning(直推学习):unlabeled data is the testing data

即,把testing data当做无标签的training data使用,适用于事先已经知道testing data的情况(一些比赛的时候)

值得注意的是,这种方法使用的仅仅是testing data的feature,而不是label,因此不会出现“直接对testing data做训练而产生cheating的效果

  • inductive Learning(归纳学习):unlabeled data is not the testing data

即,不把testing data的feature拿去给机器训练,适用于事先并不知道testing data的情况(更普遍的情况)

为什么要使用半监督学习?

实际上我们从来不缺data,只是缺有label的data,就像你可以拍很多照片,但它们一开始都是没有标签的。但是对这些数据进行标记又要付出昂贵的代价。在日常生活中,人类也都在进行半监督学习。

那么半监督学习有效果嘛?

半监督学习是基于一种假设的,半监督的学习效果的好坏完全看假设是否合理。因此假设是否合理显得至关重要。

2、Semi-supervised Learning for Generative Model

在生成模型的假设下,以高斯分布为例。
在这里插入图片描述

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

  • 先随机初始化一组参数: θ = { P ( C 1 ) , P ( C 2 ) , u 1 , u 2 , Σ } \theta=\{P(C_1),P(C_2),u^1,u^2,\Sigma\} θ={P(C1),P(C2),u1,u2,Σ}
  • step1:利用初始model计算每一笔unlabeled data x u x^u xu属于class 1的概率 P θ ( C 1 ∣ x u ) P_{\theta}(C_1|x^u) Pθ(C1xu)
  • step2:update model

如果不考虑unlabeled data,则先验概率显然为属于class1的样本点数 N 1 N_1 N1/总的样本点数 N N N,即 P ( C 1 ) = N 1 N P(C_1)=\frac{N_1}{N} P(C1)=NN1

而考虑unlabeled data时,分子还要加上所有unlabeled data属于class 1的概率和,此时它们被看作小数,可以理解为按照概率一部分属于 C 1 C_1 C1,一部分属于 C 2 C_2 C2
P ( C 1 ) = N 1 + ∑ x u P ( C 1 ∣ x u ) N P(C_1)=\frac{N_1+\sum_{x^u}P(C_1|x^u)}{N} P(C1)=NN1+xuP(C1xu)
同理,对于均值,原先的mean u 1 = 1 N 1 ∑ x r ∈ C 1 x r u_1=\frac{1}{N_1}\sum\limits_{x^r\in C_1} x^r u1=N11xrC1xr加上根据概率对 x u x^u xu求和再归一化的结果即可
u 1 = 1 N 1 ∑ x r ∈ C 1 x r + 1 ∑ x u P ( C 1 ∣ x u ) ∑ x u P ( C 1 ∣ x u ) x u u_1=\frac{1}{N_1}\sum\limits_{x^r\in C_1} x^r+\frac{1}{\sum_{x^u}P(C_1|x^u)}\sum\limits_{x^u}P(C_1|x^u)x^u u1=N11xrC1xr+xuP(C1xu)1xuP(C1xu)xu
剩余的参数同理,接下来就有了一组新的参数 θ ′ \theta' θ,于是回到step1->step2->step1循环

  • 理论上该方法保证是可以收敛的,而一开始给 θ \theta θ的初始值会影响收敛的结果,类似gradient descent
  • 上述的step1就是EM algorithm里的E,step2则是M

以上的推导基于的基本思想是,把unlabeled data x u x^u xu看成是可以划分的,一部分属于 C 1 C_1 C1,一部分属于 C 2 C_2 C2,此时它的概率 P θ ( x u ) = P θ ( x u ∣ C 1 ) P ( C 1 ) + P θ ( x u ∣ C 2 ) P ( C 2 ) P_{\theta}(x^u)=P_{\theta}(x^u|C_1)P(C_1)+P_{\theta}(x^u|C_2)P(C_2) Pθ(xu)=Pθ(xuC1)P(C1)+Pθ(xuC2)P(C2),也就是 C 1 C_1 C1的先验概率乘上 C 1 C_1 C1这个class产生 x u x^u xu的概率+ C 2 C_2 C2的先验概率乘上 C 2 C_2 C2这个class产生 x u x^u xu的概率

实际上我们在利用极大似然函数更新参数的时候,就利用了该拆分的结果:
l o g L ( θ ) = ∑ x r l o g P θ ( x r ) + ∑ x u l o g P θ ( x u ) logL(\theta)=\sum\limits_{x^r} logP_{\theta}(x^r)+\sum\limits_{x^u}logP_{\theta}(x^u) logL(θ)=xrlogPθ(xr)+xulogPθ(xu)

3、Low-density Separation Assumption:非黑即白

基于的假设是Low-density separation,也就是类与类之间的交界处 几乎没有数据的分布。
在这里插入图片描述
low-density separation最具代表性也最简单的方法是self training

  • 先从labeled data去训练一个model f ∗ f^* f,训练方式没有限制
  • 然后用该 f ∗ f^* f去对unlabeled data打上label, y u = f ∗ ( x u ) y^u=f^*(x^u) yu=f(xu),也叫作pseudo label(伪标签)
  • 从unlabeled data中拿出一些data加到 labeled data里,至于data的选取需要你自己设计算法来挑选
  • 回头再去训练 f ∗ f^* f,循环即可

注:该方法对Regression是不适用的,这里我的理解是,本身用我定义好的模型进行预测,拿回去再去训练是没有什么影响的。

self-training 方法类似与上面假设的生成模型,区别在于,self-training的方法对标签是hard label(你觉得大概率上class 1 ,那他就是class 1。不需要给其他类别一点可能,类似于专情男),生成模型方法打标签的方式是soft label(分别对类别进行了可能性的分配,像极了渣男),对比之下,在network中,专情男的结果一定会优于渣男的结果。

low-density separation的方法二:Entropy-based Regularization

该方法是low-density separation的进阶版,你可能会觉得hard label这种直接强制性打标签的方式有些太武断了,而entropy-based regularization则做了相应的改进: y u = f θ ∗ ∗ ( x u ) y^u=f^*_{\theta^*}(x^u) yu=fθ(xu),其中 y u y^u yu是一个概率分布(distribution)

由于我们不知道unlabeled data x u x^u xu的label到底是什么,但如果通过entropy-based regularization得到的分布集中在某个class上的话,那这个model就是好的,而如果分布是比较分散的,那这个model就是不好的,如下图所示:
在这里插入图片描述
我们的目标是在labeled data上分类要正确,在unlabeled data上,output的entropy要越小越好。改善方法就是要修改loss function:
在这里插入图片描述

  • 可以发现该式长得很像regularization,这也就是entropy regularization的名称由来

Semi-supervised SVM
在这里插入图片描述

4、Smoothness Assumption:近朱者赤,近墨者黑

粗糙的定义是相似的x具有相同的 y ^ \hat y y^
精确的定义是:

  • x的分布是不平均的

  • 如果 x 1 x^1 x1 x 2 x^2 x2在一个high density region上很接近的话,那么 y ^ 1 \hat y^1 y^1 y ^ 2 \hat y^2 y^2就是相同的,也就是这两个点可以在样本点高密度集中分布的区域块中有一条可连接的路径,即 connected by a high density path。

举例来说:
在这里插入图片描述
解决方法-cluster and then label

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

在这里插入图片描述

Graph-based Approach
在这里插入图片描述
如何定性的表示Graph?(一般就直觉+经验)老师列举了几种方式
如何定量的表示Graph?

定量的使用方式是定义label的smoothness,下图中,edge上的数字是weight, x i x^i xi表达data, y i y^i yi表示data的label,计算smoothness的方式为:
S = 1 2 ∑ i , j w i , j ( y i − y j ) 2 S=\frac{1}{2}\sum\limits_{i,j} w_{i,j}(y^i-y^j)^2 S=21i,jwi,j(yiyj)2
我们期望smooth的值越小越好
根据 数学上的某个定理又可以进一步化简公式:
S = 1 2 ∑ i , j w i , j ( y i − y j ) 2 = y T L y S=\frac{1}{2}\sum\limits_{i,j} w_{i,j}(y^i-y^j)^2=y^TLy S=21i,jwi,j(yiyj)2=yTLy其中L为(R+U)×(R+U) matrix,成为Graph Laplacian, 定义为 L = D − W L=D-W L=DW

  • W:把data point两两之间weight的关系建成matrix,代表了 x i x^i xi x j x^j xj之间的weight值
  • D:把W的每一个row上的值加起来放在该行对应的diagonal上即可,比如5=2+3,3=2+1,…
    在这里插入图片描述 S = y T L y S=y^TLy S=yTLy来说,y是label,是neural network的output,取决于neural network的parameters,因此要在原来仅针对labeled data的loss function中加上这一项,得到:
    L = ∑ x r C ( y r , y ^ r ) + λ S L=\sum\limits_{x^r}C(y^r,\hat y^r) + \lambda S L=xrC(yr,y^r)+λS
    λ S \lambda S λS实际上也是一个regularization term。

具体训练的时候,不一定只局限于neural network的output要smooth,可以对中间任意一个hidden layer加上smooth的限制在这里插入图片描述

5、Better Representation:去芜存菁,化繁为简

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

举一个例子,在神雕侠侣中,杨过要在三招之内剪掉樊一翁的胡子,虽然胡子的变化是比较复杂的,但头的变化是有限的,杨过看透了这一件事情就可以把胡子剪掉。在这个例子中,樊一翁的胡子就是original representation,而他的头就是你要找的better representation
在这里插入图片描述
具体细节可参考 非监督学习中的分析。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
李宏毅2020机器学习笔记中,有一个关于注意力机制(Attention)的部分。这部分内容主要介绍了生成模型(Generation)、注意力(Attention)、生成的技巧(Tips for Generation)以及指针网络(Pointer Network)。在生成模型中,主要讲述了如何生成一个有结构的对象。接下来介绍了注意力机制,包括一些有趣的技术,比如图片生成句子等。在生成的技巧部分,提到了一些新的技术以及可能遇到的问题和偏差,并给出了相应的解决方案。最后,稍微提到了强化学习。其中还提到了在输出"machine"这个单词时,只需要关注"机器"这个部分,而不必考虑输入中的"学习"这个部分。这样可以得到更好的结果。另外,还提到了关于产生"ei"的方法,其中有研究应用了连续动态模型自注意力(Self-attention)来学习位置编码的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2020李宏毅机器学习笔记-Condition Generation by RNN&Attention](https://blog.csdn.net/zn961018/article/details/117593813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [李宏毅机器学习学习笔记:Self-attention](https://blog.csdn.net/weixin_44455827/article/details/128094176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值