• 李宏毅机器学习笔记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值来评价假设有多合理

                  

  • 相关阅读:
    重构前的程序:通过rsync命令抓取日志文件
    标准输入、输出和错误和文件重定向
    错误处理的思考
    测试和恢复性的争论:面向对象vs.函数式编程
    哈佛经济学家关于工作效率的意外发现
    追求代码质量: 监视圈复杂度
    天猫程序猿高端算法找妹子
    代码度量工具——SourceMonitor的学习和使用
    我们能从java的HelloWorld学到什么?
    Java高新技术第二篇:反射技术
  • 原文地址:https://www.cnblogs.com/xxlad/p/11319040.html
Copyright © 2020-2023  润新知