Machine Learning —— Semi-supervised Learning

Machine Learning —— Semi-supervised Learning

Introduction

Supervised Learning: ( x r , y ^ r ) r = 1 R (x^r,\hat{y}^r)^R_{r=1} (xr,y^r)r=1R

  • training data中,每一组data都有input 和对应的output

Semi-supervised Learning: ( x r , y ^ r ) r = 1 R + ( x u ) u = R R + U {(x^r,\hat{y}^r)^R_{r=1}+({x^u})^{R+U}_{u=R}} (xr,y^r)r=1R+(xu)u=RR+U

  • training data中,部分data没有标签
  • 无标签的数据量远大于有标签的数据量
  • semi-supervised learning分为以下两种情况:
    • Transductive Learning:unlabeled data is the testing data,把testing data当做无标签的training data使用,适用于事先已经知道testing data的情况
    • Inductive Learning:unlabeled data is not the testing data,不把testing data的feature拿去给机器训练,适用于事先并不知道testing data的情况

Why semi-supervised learning help?

The distribution of the unlabeled data tell us something.
以下图为例,在只有labeled data的情况下,红线是二元分类的分界线
在这里插入图片描述
但当我们加入unlabeled data的时候,由于特征分布发生了变化,分界线也随之改变
在这里插入图片描述
semi-supervised learning的使用往往伴随着假设,而该假设的合理与否,决定了结果的好坏程度;比如上图中的unlabeled data,它显然是一只狗,而特征分布却与猫被划分在了一起,很可能是由于这两张图片的背景都是绿色导致的,因此假设是否合理显得至关重要

Semi-supervised Learning for Generative Model

Supervised Generative Model

在监督学习中,假设class1和class2的分布分别是 m e a n 1 = u 1 mean_1=u^1 mean1=u1 c o v a r i a n c e 1 = ∑ covariance_1=\sum covariance1= m e a n 2 = u 2 mean_2=u^2 mean2=u2 c o v a r i a n c e 2 = ∑ covariance_2=\sum covariance2=的高斯分布,计算出Prior Probability后,再根据贝叶斯公式退出新生成的x的类别
在这里插入图片描述

Semi-supervised Generative Model

unlabeled data对 u 1 u^1 u1 u 2 u^2 u2 ∑ \sum 都有一定的影响,因此划分两个class的decision boundary也会随之改变
在这里插入图片描述
具体推导过程(假设做二元分类):

  • 先随机初始化一组参数: θ = P ( C 1 ) , P ( C 2 ) , u 1 , u 2 \theta={P(C_1),P(C_2),u^1,u^2} θ=P(C1),P(C2),u1,u2
  • step1:利用初始化的model计算每一笔unlabeled data属于class1的概率,即 P θ ( C 1 ∣ x u ) P_{\theta}(C_1|x^u) Pθ(C1xu)
  • step2:update model
    考虑unlabeled data时,先验概率为
    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)
    同理,对于均值为
    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就是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)

在利用极大似然函数更新参数的时候,就利用了该拆分的结果:

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)

Low-density Separation Assumption

介绍一种新的方法,它基于的假设是Low-density separation

通俗来讲,就是这个世界是非黑即白的,在两个class的交界处data的密度(density)是很低的,它们之间会有一道明显的鸿沟,此时unlabeled data(下图绿色的点)就是帮助你在原本正确的基础上挑一条更好的boundary
在这里插入图片描述

Self Training

low-density separation最具代表性也最简单的方法是self training

  • 先从labeled data训练一个model f ∗ f^* f
  • f ∗ f^* f对unlabeled data进行标记,被标记的data称为pseudo label(伪标签), y u = f ∗ ( x u ) y^u=f^*(x^u) yu=f(xu)
  • 从unlabeled data中拿一些data加到labeled data中
  • 再训练model f ∗ f^* f,循环往复

该方法与之前提到的generative model还是挺像的,区别在于:

  • Self Training使用的是hard label:假设一笔data强制属于某个class
  • Generative Model使用的是soft label:假设一笔data可以按照概率划分,不同部分属于不同class
    在这里插入图片描述

在neural network里使用soft label是没有用的,因为把原始的model里的某个点丢回去重新训练,得到的依旧是同一组参数,实际上low density separation就是通过强制分类来提升分类效果的方法

Entropy-based Regularization

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

unlabeled data 的label到底是什么,但如果通过entropy-based regularization得到的分布集中在某个class上的话,那这个model就是好的,而如果分布是比较分散的,那这个model就是不好的,如下图所示:
在这里插入图片描述
接下来的问题是,如何用数值的方法来evaluate distribution的集中(好坏)与否,要用到的方法叫entropy,一个distribution的entropy可以表征
集中程度

E ( y u ) = − ∑ m = 1 5 y m u l n ( y m u ) E(y^u)=-\sum\limits_{m=1}^5y_m^uln(y^u_m) E(yu)=m=15ymuln(ymu)

对上图中的第1、2种情况,算出的 E ( y u ) = 0 E(y^u)=0 E(yu)=0
第3种情况,算出的 E ( y u ) = − l n ( 1 5 ) E(y^u)=-ln(\frac{1}{5}) E(yu)=ln(51)

entropy越大,distribution就越分散,entropy越小,distribution就越集中

在unlabeled data上,output的entropy要越小越好,此时就要修改loss function

  • 对labeled data来说,它的output要跟正确的label越接近越好,用cross entropy表示如下:
    L = ∑ x r C ( y r , y r ^ ) L=\sum\limits_{x^r}C(y^r,\hat{y^r}) L=xrC(yr,yr^)
  • 对unlabeled data来说,要使得该distribution(也就是output)的entropy越小越好:
    L = ∑ x r E ( y u ) L=\sum\limits_{x^r}E(y^u) L=xrE(yu)
  • 两项综合起来,可以用weight来加权,以决定哪个部分更为重要一些
Semi-supervised SVM

两个class的data,去找一个boundary:

  • 要有最大的margin,让这两个class分的越开越好
  • 要分类错误越少越好

对unlabeled data穷举所有可能的label,下图中列举了三种可能的情况;然后对每一种可能的结果都去算SVM,再找出可以让margin最大,同时又minimize error的那种情况,下图中是用黑色方框标注的情况
在这里插入图片描述

Smoothness Assumption

concepts

smoothness assumption的基本精神是:近朱者赤,近墨者黑

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

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

假设下图是data的分布, x 1 x^1 x1 x 2 x^2 x2 x 3 x^3 x3是其中的三笔data,如果单纯地看x的相似度,显然 x 2 x^2 x2 x 3 x^3 x3更接近一些,但对于smoothness assumption来说, x 1 x^1 x1 x 2 x^2 x2是处于同一块区域的,它们之间可以有一条相连的路径;而 x 2 x^2 x2 x 3 x^3 x3之间则是“断开”的,没有high density path,因此 x 1 x^1 x1 x 2 x^2 x2更“像”
在这里插入图片描述

digits detection

以手写数字识别为例,对于最右侧的2和3以及最左侧的2,显然最右侧的2和3在pixel上相似度更高一些;但如果把所有连续变化的2都放进来,就会产生一种“不直接相连的相似”,根据Smoothness Assumption的理论,由于2之间有连续过渡的形态,因此第一个2和最后一个2是比较像的,而最右侧2和3之间由于没有过渡的data,因此它们是比较不像的,人脸的过渡数据也同理
在这里插入图片描述

file classification

Smoothness Assumption在文件分类上是非常有用的

假设对天文学(astronomy)和旅行(travel)的文章进行分类,它们各自有专属的词汇,此时如果unlabeled data与label data的词汇是相同或重合(overlap)的,那么就很容易分类;但在真实的情况下,unlabeled data和labeled data之间可能没有任何重复的words,因为世界上的词汇太多了,sparse的分布很难会使overlap发生

但如果unlabeled data足够多,就会以一种相似传递的形式,建立起文档之间相似的桥梁
在这里插入图片描述

cluster and then label

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

对图像分类来说,如果单纯用pixel的相似度来划分cluster,得到的结果一般都会很差,你需要设计一个很好的方法来描述image(类似Deep Autoencoder的方式来提取feature),这样cluster才会有效果
在这里插入图片描述

Graph-based Approach

之前讲的是比较直觉的做法,接下来引入Graph Structure来表达connected by a high density path这件事

我们把所有的data points都建成一个graph,有时候建立vertex之间的关系是比较容易的,比如网页之间的链接关系、论文之间的引用关系;但有时候需要你自己去寻找vertex之间的关系

graph的好坏,对结果起着至关重要的影响,而如何build graph却是一件heuristic的事情,需要凭着经验和直觉来做

  • 首先定义两个object x i , x j x^i,x^j xi,xj之间的相似度 s ( x i , x j ) s(x^i,x^j) s(xi,xj)
    如果是基于pixel的相似度,performance可能会不太好;建议使用autoencoder提取出来的feature来计算相似度,得到的performance会好一些
  • 算完相似度后,就可以建graph了,方式有很多种:
    k nearest neighbor:假设k=3,则每个point与相似度最接近的3个点相连
    e-neighborhood:每个point与相似度超过某个特定threshold e的点相连
  • 还可以给Edge特定的weight,让它与相似度 s ( x i , x j ) s(x^i,x^j) s(xi,xj)成正比
    1 建议用RBM function来确定相似度: s ( x i , x y ) = e ζ ∣ ∣ x i , x j ∣ ∣ 2 s(x^i,x^y)=e^{\zeta||x^i,x^j||^2} s(xi,xy)=eζxi,xj2
    计算两个vector的Euclidean Distance(欧几里得距离),加上参数后再去exponential
    2 至于加exponential,经验上来说通常是可以帮助提升performance的,在这里只有当 x i , x j x^i,x^j xi,xj非常接近的时候,singularity才会大;只要距离稍微远一点,singularity就会下降得很快,变得很小
    3 使用exponential的RBM function可以做到只有非常近的两个点才能相连,稍微远一点就无法相连的效果,避免了下图中跨区域相连的情况
    在这里插入图片描述
    graph-based approach的基本精神是,在graph上已经有一些labeled data,那么跟它们相连的point,属于同一类的概率就会上升,每一笔data都会去影响它的邻居,而graph带来的最重要的好处是,这个影响是会随着edges传递出去的,即使有些点并没有真的跟labeled data相连,也可以被传递到相应的属性

比如下图中,如果graph建的足够好,那么两个被分别label为蓝色和红色的点就可以传递完两张完整的图;从中我们也可以看出,如果想要让这种方法生效,收集到的data一定要足够多,否则可能传递到一半,graph就断掉了,information的传递就失效了
在这里插入图片描述
介绍完了如何定性使用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的值越小越好
在这里插入图片描述
当然上面的式子还可以化简,如果把labeled data和unlabeled data的y组成一个(R+U)-dim vector,即

y = [ . . . y i . . . y j ] T y=[...y^i...y^j]^T y=[...yi...yj]T

于是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

训练目标:

  • labeled data的cross entropy越小越好(neural network的output跟真正的label越接近越好)
  • smooth S越小越好(neural network的output,不管是labeled还是unlabeled,都要符合Smoothness Assumption的假设)

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

Better Representation

Better Representation的精神是,去芜存菁,化繁为简

Reference

https://sakura-gh.github.io/ML-notes/ML-notes-html/15_Semi-supervised-Learning.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值