李宏毅机器学习笔记08(Semi-Supervised)

半监督学习

1、什么是Semi-Supervised

2、Semi-Surpervised在生成模型中如何实现的(EM算法)

3、Semi-Surpervised基于Low-density Separation(低密度分离)假设是如何实现的

  1)Self-training方法+Entropy-based Regularization

  2)SVM

4、Semi-Surpervised基于Smoothness Assumption(平滑)假设是如何实现的
  1)Cluster and then Label
  2)Graph-based Approach(KNN算法)

1、什么是Semi-Supervised

  

    举个栗子:现在我们要做一个猫狗分类,

  •  如果只考虑labeled data,我们分类的分界线会画在中间;
  •    但如果把unlabeled data 也考虑进去,我们可能会根据unlabeled data 的分布,分界线画成图中的斜线;
  •  semi-supervised learning使用unlabel的方式往往伴随着一些假设,学习有没有用,取决于你这个假设合不合理。(比如灰色的点也可能是个狗不过背景跟猫照片比较像)

                

 

 

2、Semi-Surpervised在生成模型中如何实现的(EM算法)

 

  •   回顾有监督学习中的生成模型,由于data都是有label的,P(Ci)是已知的,P(x|Ci)是通过我们基于高斯分布的假设用最大似然估计出来的;
  •      现在半监督学习中的生成模型,data的一部分是unlabel的,P(Ci)是不确定的(隐变量),P(x|Ci)的假设模型也不能套用原来的u等参数,这时候需要用EM算法

 

        

 

  EM算法(Expectation-Maximization algorithm,又译为期望最大化算法)

  •  EM算法适用于带有无法观测的隐变量的概率模型估计
  •    第一步,用labeled data算出来的高斯模型参数代入公式去求出unlabeled data的P(C1|Xu);
  •    第二步,用极大似然估计更新P(Ci)以及高斯模型参数,求出P(x|Ci),进一步求出新的(Ci|Xu),重复这两步直到收敛(似然概率最大)

  (至于为什么更新参数是要加入P(Ci|Xu)这一项,是因为EM算法思想是把不确定的data用一个概率来表示label,而每一笔不确定的data都有可能来自C1和C2,看右下图)

 

                   

 

3、Semi-Surpervised基于Low-density Separation(低密度分离)假设是如何实现的

  •  生成模型的假设中,假设不确定的data的label是一个概率值
  •    低密度分离的假设是,不确定的data的label要不是1,要不是0(“非黑即白”)。低密度的意思是,两个Class的分界处是低密度的(分得比较开的)

         

  1)Self-training+Entropy-based Regularization

  1.  利用labeled的数据训练(逻辑回归,神经网络,决策树等)出模型f^*
  2.    将一组unlabeled的数据代入,得到新的标签,称为Pseudo-label伪标签;
  3.    将刚才得到新标签数据的一部分和labeled数据结合到一起,得到训练新的模型,重复以上步骤;

  注:在做regression时是不能用这一招的,主要因为把unlabeled data加入到训练数据中,f*并不会受影响

 

                  

 

 

  加上Entropy-based Regularization

  接着Self-Learning做进一步改进:

  •  基于熵的正则假设:假设输出是一个分布(类似于生成模型的概率),那么根据“低密度分离”原则,我们希望每输出一个值,它的分布都是很集中的(“非黑即白”)
  •    用熵可以描述集中不集中这件事情,在Loss函数中加入unlabeled data的熵(相当于上面方法基础上加上正则项),我们希望这个熵越小越好

 

    

 

  2)SVM

4、Semi-Surpervised基于Smoothness Assumption(平滑性)假设是如何实现的

  平滑性假设 :  

  •  x的分布是不均匀的,在有的地方是稀疏的,在有的地方是密集的     
  •    如果在高密度区域比较相近,那么这两个数据具有相同的标签。 

                     

 

 

  1)Cluster and then Label(先聚类后标注)

  

 

  2)Graph-based Approach(KNN算法)

    目标:我们希望利用基于图的方法,建立起下图的模型

    

 

   方法:

  1.    定义相似度,可以根据相似度定权重(加exp)
  2.    添加边界:   用KNN(根据“距离”找出K个最近的邻居)或者e-Neighborhood(超过阈值e才建立边)

   要求有足够的数据才work

 

               

 

   

  •  前面说半监督学习有没有用,取决于你这个假设合不合理。那么我们用以下的S值来评价假设有多合理

 

              

 

posted @ 2019-08-17 16:04  zr-zhang2019  阅读(1161)  评论(0编辑  收藏  举报