机器学习入门之半监督学习

淺唱寂寞╮ 提交于 2020-02-08 16:10:55

引言

要介绍半监督学习(Semi-supervised learning)需要先介绍下监督学习(Supervised learning)。

  • 监督学习:{(xr,y^r}r=1R\{(x^r,\hat{y}^r\}^R_{r=1} 假设有RR笔训练数据,每笔训练数据都有对应的输出y^r\hat{y}^r(标签/类别)
  • 半监督学习: {(xr,y^r}r=1R,xuu=RR+U\{(x^r,\hat{y}^r\}^R_{r=1},{x^u}^{R+U}_{u=R} 有另外一组没有标签的数据
    • 通常U>>RU>>R,没有标签的数量远大于有标签的
    • 直推学习(Transductive learning) : 学习过程中所考虑的未标记样本恰是待预测数据
    • 归纳学习(Inductive learning):训练数据中的未标记样本并非待测的数据

为什么做半监督学习?

  • 数据数据很容器,但是收集有标签的数据很麻烦
  • 人类一直在做半监督学习

在这里插入图片描述

假设我们要做分类的项目,要建一个猫和狗的分类器,同时有一大堆有关猫和狗的图片,但是这些图片是没有关于哪些是猫哪些是狗的标签的。只有少一部分是有标签的。

在这里插入图片描述

假设我们只考虑这些有标签的数据,然后需要找到一个边界,将猫和狗的训练数据分开。可能会像上图红线那样画。如果哪些未标记的数据的分布像是灰色点那样,
虽然这些灰色点没有标签,但是它们还是可以告诉我们一些信息。比如你可能会改成下面这样划分。

在这里插入图片描述

半监督学习使用无标签的数据往往伴随着一些假设,这些假设的精确程度会影响半监督学习的有用程度。

在这里插入图片描述

可能红框的那个灰点实际上是狗,它们因为背景都是绿色的而看起来很像。

半监督学习中的生成模型

先来回顾下监督学习中的生成模型。

在这里插入图片描述

假设有有标签的训练数据xrx^r属于类别C1C_1C2C_2

  • 估测P(Ci)P(C_i)P(xCi)P(x|C_i)
  • 假设每个类别的分布都是高斯分布,它们分别由μ1,Σ\mu^1,\Sigmaμ2,Σ\mu^2,\Sigma生成出来

有了这些参数后,就可以做分类问题,就可以计算一笔新的数据属于哪个类别的概率大。

如果给了很多无标签的数据,它们就会影响判断。在这里插入图片描述

上面的绿色点都是无标签的数据,那么上面的参数是不合理的,因为还有很多分布没有考虑到。
在这里插入图片描述

虚线圆圈的分布可能更加合理。总之这些无标签的数据会影响对P(C1),P(C2),μ1,μ2,ΣP(C_1),P(C_2),\mu^1,\mu^2,\Sigma的估测。

那么实际上要怎么做呢

  • 初始化一组参数θ={P(C1),P(C2),μ1,μ2,Σ}\theta = \{P(C_1),P(C_2),\mu^1,\mu^2,\Sigma\}
  • 第一步:计算每笔无标签数据的后验概率(posterior probability) Pθ(C1xu)P_\theta(C_1|x^u),xux^u表示无标签的数据。
  • 第二步:通过N1+xuP(C1xu)N\frac{N_1+\sum_{x^u} P(C_1|x^u)}{N}(NN是所有样本的数量,N1N_1是被标记为C1C_1的样本数量)来更新P(C1)P(C_1),其中C1C_1出现的次数就是所有无标签数据属于C1C_1的概率之和。
    在这里插入图片描述
    μ1\mu^1通过上面的公式更新(等式右边第一个式子是计算所有属于C1C_1的样本的均值,第二个式子,如果xux^u偏向于C1C_1,那么就对P(C1)P(C_1)的影响就大一点,反之就小一点。把它们加起来,再除以所有xux_uP(C1xu)P(C_1|x^u)的和)。
  • 有了新的参数后就可以回到第一步(EM算法)

为什么是这样。

  • 假设原来只有有标签数据,我们要做的事情是最大化似然logL(θ)=xrlogPθ(xr,y^r)\log L(\theta) = \sum_{x^r} \log P_\theta(x^r,\hat{y}^r),如果给定参数θ\theta,那么每笔训练数据的Pθ(xr,y^r)P_\theta(x^r,\hat{y}^r)是可以算出来的:Pθ(xr,y^r)=Pθ(xry^r)P(y^r)P_\theta(x^r,\hat{y}^r) = P_\theta(x^r | \hat{y}^r)P(\hat{y}^r)
  • 现在同时有有标签数据和无标签数据 使用logL(θ)=xrlogPθ(xr,y^r)+xulogPθ(xu)\log L(\theta) = \sum_{x^r} \log P_\theta(x^r,\hat{y}^r) + \sum_{x^u} \log P_\theta(x^u) ,其中一笔无标签数据出现的几率Pθ(xu)=Pθ(xuC1)P(C1)+Pθ(xuC2)P(C2)P_\theta(x^u) = P_\theta(x^u|C_1)P(C_1) + P_\theta(x^u|C_2)P(C_2)就是C1C_1的先验概率乘以C1C_1类别产生无标签数据的概率加上C2C_2的先验概率乘以C2C_2类别产生无标签数据的概率(全概率公式)。就是说这笔无标签数据可能从C1C_1来,也可能从C2C_2中来,接下来就要最大化logL(θ)=xrlogPθ(xr,y^r)+xulogPθ(xu)\log L(\theta) = \sum_{x^r} \log P_\theta(x^r,\hat{y}^r) + \sum_{x^u} \log P_\theta(x^u)

上面是生成模型,下面介绍一种比较通用的方式,基于低密度分离(Low-density Separation),也就是非黑即白
在这里插入图片描述

就是说在这两个类别的交界处密度很低,可以很容易的分开这两个类别。
其中最典型的方法就是Self-training(自训练算法)

Self-training

  • 给定有标签数据集{(xr,yr^)}r=1R\{(x^r,\hat{y^r})\}^R_{r=1},和无标签数据集{xu}u=lR+U\{x^u\}^{R+U}_{u=l}
  • 重复
    • 从有标签数据集中训练模型ff^*
    • ff^*应用到无标签数据集
      • 获得{(xu,yu)}u=lR+U\{(x^u,y^u)\}^{R+U}_{u=l}
    • 从无标签数据集中拿出一些数据,加到有标签数据集中

与基于生成模型的半监督学习类似。
在做自训练时用的是Hard label,在做生成模型的时候用的是Soft label;在做自训练时我们会强制一笔训练数据一定属于某个类别;在生成模型时,可能一部分属于类别A,另一部分属于类别B。

那么哪个好呢。

假设用于神经网络,θ\theta^*是来自有标签数据。

在这里插入图片描述
将一笔无标签数据喂给NN,如果是Hard那么得到的输出是[1 0],如果是Soft得到的是[0.7 0.3]。如果用Soft,那么得到的结果和经过NN的输出没有变化。就不会有用,因此在NN中是要用Hard的方法。

基于熵的正则化(Entropy-based Regularization)

如果用NN的时候,输出是一个分布的话,我们可以不限制它一定是某个类别,但是假设它的这个分布很集中。

在这里插入图片描述

上图中最后一个例子中,分布是平均的,这样就不符合非黑即白的假设。

那我们如何用数值的方法来计算这个分布的好坏。

E(yu)=m=1Nymuln(ymu) E(y^u)=-\sum_{m=1}^Ny^u_m\ln(y^u_m)

这里类别数N=5。
ymuy^u_m是这笔数据属于某个类别的概率。

在这里插入图片描述

通过上面的公式可以算出它们对应的E(yu)E(y^u)

我们希望这个模型的输出在无标签数据上的熵越小越小。

现在我们可以重新设计损失函数:

在这里插入图片描述

λ\lambda是权重,可以调的。

Smoothness Assumption

  • 假设:相似的xx有相同的输出y^\hat{y}
  • 更精确的假设是:
    • xx的分布是不平均的
    • 如果x1x^1x2x^2都接近于某个高密度区域,那么说它们的输出是一样的

在这里插入图片描述

x1,x2x^1,x^2都属于某个高密度的区域,因此说它们的输出是一样的。

我们考虑手写数字识别的例子。

在这里插入图片描述
我们看这两个2,第一2有个圈圈,第二个2没有,粗看上去这两个2不太相似。

在这里插入图片描述

但是如果考虑更多的数据,会发现这两个2之间有很多连续的形态,因此这两个2应该属于同一个类别。

这一招在文本分类中也很有用。

在这里插入图片描述

假设它们会出现左边那些单词,可以说d1d_1d5d_5像,d5d_5d6d_6像,最终得到d1d_1d3d_3像。

聚类打标签(Cluster and then Label)

在这里插入图片描述

基于图的方式(Graph-based Approach)

如何知道x1x^1x2x^2是否接近于某个高密度区域。

用图结构来表示这些数据点。

在这里插入图片描述

如果这两个顶点是相连的,就说它们属于同一个高密度区域。

例如,通过引用关系来进行论文的分类。

参考

  1. 李宏毅机器学习
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!