什么是半监督学习?
传统的机器学习技术分为两类,一类是无监督学习,一类是监督学习。
无监督学习只利用未标记的样本集,而监督学习则只利用标记的样本集进行学习。
但在很多实际问题中,只有少量的带有标记的数据,因为对数据进行标记的代价有时很高,比如在生物学中,对某种蛋白质的结构分析或者功能鉴定,可能会花上生物学家很多年的工作,而大量的未标记的数据却很容易得到。
这就促使能同时利用标记样本和未标记样本的半监督学习技术迅速发展起来。
半监督学习理论简述:
半监督学习有两个样本集,一个有标记,一个没有标记.分别记作
Lable={(xi,yi)},Unlabled={(xi)}.并且数量上,L<
半监督学习的动力,motivation
- 有标记样本难以获取.
需要专门的人员,特别的设备,额外的开销等等. - 无标记的样本相对而言是很廉价的.
半监督学习与直推式学习的区别:
这个网上也有论述.主要就是半监督学习是归纳式的,生成的模型可用做更广泛的样本;而直推式学习仅仅为了当前无标记样本的分类.
简单的说,前者使用无标记样本,为了以后其他样本更好的分类.
后者只是为了分类好这些有限的无标记样本.
最近的一段时间一直在学习半监督学习算法,目前,国内的南京大学周志华老师是这方面的泰斗,写了很多这方面牛的文章,可以参考一下他的主页:http://cs.nju.edu.cn/zhouzh/。在国内的学术界周老师一直是我比较钦佩的人之一。下面贴出来的文章出自周老师之手,通俗易懂。受益匪浅。。
引言
在传统的监督学习中,学习器通过对大量有标记的(labeled)训练例进行学习,从而建立模型用于预测未见示例的标记。这里的“标记”(label)是指示例所对应的输出,在分类问题中标记就是示例的类别,而在回归问题中标记就是示例所对应的实值输出。随着数据收集和存储技术的飞速发展,收集大量未标记的(unlabeled)示例已相当容易,而获取大量有标记的示例则相对较为困难,因为获得这些标记可能需要耗费大量的人力物力。例如在计算机辅助医学图像分析中,可以从医院获得大量的医学图像作为训练例,但如果要求医学专家把这些图像中的病灶都标识出来,则往往是不现实的。事实上,在真实世界问题中通常存在大量的未标记示例,但有标记示例则比较少,尤其是在一些在线应用中这一问题更加突出。例如,在进行 Web 网页推荐时,需要用户标记出哪些网页是他感兴趣的,很少会有用户愿意花大量的时间来提供标记,因此有标记的网页示例比较少, Web上存在着无数的网页,它们都可作为未标记示例来使用。显然,如果只使用少量的有标记示例,那么利用它们所训练出的学习系统往往很难具有强泛化能力;另一方面,如果仅使用少量“昂贵的”有标记示例而不利用大量“廉价的”未标记示例,则是对数据资源的极大的浪费。因此,在有标记示例较少时,如何利用大量的未标记示例来改善学习性能已成为当前机器学习研究中最受关注的问题之一。目前,利用未标记示例的主流学习技术主要有三大类[Zhou06],即半监督学习(semi-supervisedlearning)、直推学习(transductive learning)和主动学习(active learning)。这三类技术都是试图利用大量的未标记示例来辅助对少量有标记示例的学习,但它们的基本思想却有显著的不同。在半监督学习[ChapelleSZ06][Zhu06]中,学习器试图自行利用未标记示例,即整个学习过程不需人工干预,仅基于学习器自身对未标记示例进行利用。直推学习[Vapnik98][Joachims99]与半监督学习的相似之处是它也是由学习器自行利用未标记示例,但不同的是,直推学习假定未标记示例就是测试例,即学习的目的就是在这些未标记示例上取得最佳泛化能力。换句话说,半监督学习考虑的是一个“开放世界”,即在进行学习时并不知道要预测的示例是什么,而直推学习考虑的则是一个“封闭世界”,在学习时已经知道了需要预测哪些示例。实际上,直推学习这一思路直接来源于统计学习理论[Vapnik98],并被一些学者认为是统计学习理论对机器学习思想的最重要的贡献 1 。其出发点是不要通过解一个困难的问题来解决一个相对简单的问题。V. Vapnik认为,经典的归纳学习假设期望学得一个在整个示例分布上具有低错误率的决策函数,这实际上把问题复杂化了,因为在很多情况下,人们并不关心决策函数在整个示例分布上性能怎么样,而只是期望在给定的要预测的示例上达到最好的性能。后者比前者简单,因此,在学习过程中可以显式地考虑测试例从而更容易地达到目的。这一思想在机器学习界目前仍有争议,但直推学习作为一种重要的利用未标记示例的技术,则已经受到了众多学者的关注。主动学习[SeungOS92][LewisG94][AbeM98]和前面两类技术不同,它假设学习器对环境有一定的控制能力,可以“主动地”向学习器之外的某个“神谕”(oracle) 2 进行查询来获得训练例的标记。因此,在主动学习中,学习器自行挑选出一些未标记示例并通过神谕查询获得这些示例的标记,然后再将这些有标记示例作为训练例来进行常规的监督学习,而其技术难点则在于如何使用尽可能少的查询来获得强泛化能力。对比半监督学习、直推学习和主动学习可以看出,后者在利用未标记示例的过程中需要与外界进行交互,而前两者则完全依靠学习器自身,正因为此,也有一些研究者将直推学习作为一种半监督学习技术来进行研究。本章的主旨是介绍半监督学习中的协同训练(co-training)这一风范(paradigm),因此,对直推学习和主动学习不再做更多的介绍,仅在第 2 节对半监督学习的概况做一简要描述。半监督学习
一般认为,半监督学习的研究始于 B. Shahshahani 和 D. Landgrebe 的工作[ShahshahaniL94],但未标记示例的价值实际上早在上世纪 80 年代末就已经被一些研究者意识到了[Lippman89]。D.J.Miller 和 H.S. Uyar [MillerU97]认为,半监督学习的研究起步相对较晚,可能是因为在当时的主流机器学习技术(例如前馈神经网络)中考虑未标记示例相对比较困难。随着统计学习技术的不断发展,以及利用未标记示例这一需求的日渐强烈,半监督学习才在近年来逐渐成为一个研究热点。半监督学习的基本设置是给定一个来自某未知分布的有标记示例集L={(x1, y1), (x2, y2), …, (x |L|,y|L|)}以及一个未标记示例集U = {x1’, x2’, … , x |U|’},期望学得函数f: X→Y可以准确地对示例x 预测其标记y。这里xi, xj’ ∈X 均为d维向量,yi∈Y为示例xi的标记,|L|和|U|分别为L和U的大小,即它们所包含的示例数。在介绍具体的半监督学习技术之前,有必要先探讨一下为什么可以利用未标记示例来改善学习性能。关于这个问题,有不少研究者给出了解释。例如,D.J. Miller 和 H.S. Uyar [MillerU97] 从数据分布估计的角度给出了一个直观的分析。他们假设所有数据服从于某个由 L 个高斯分布混合而成的分布,即
其中为混合系数,为参数。这样,标记就可视为一个由选定的混合成分mi和特征向量xi以概率P(ci | xi, mi) 决定的随机变量。于是,根据最大后验概率假设,最优分类由式 2 给出:
其中:
这样,学习目标就变成了利用训练例来估计P(ci = k | mj = j, xi)和P(mi = j | x)。这两项中的第一项与类别标记有关,而第二项并不依赖于示例的标记,因此,如果有大量的未标记示例可用,则意味着能够用于估计第二项的示例数显著增多,这会使得第二项的估计变得更加准确,从而导致式 2 更加准确,也就是说,分类器的泛化能力得以提高。此后,T. Zhang和F. J. Oles [ZhangO00] 进一步分析了未标记示例在半监督学习中的价值,并指出如果一个参数化模型如果能够分解成P(x, y | θ) = P(y| x, θ) P(x | θ) 的形式,那么未标记示例的价值就体现在它们能够帮助更好地估计模型参数从而导致模型性能的提高。
实际上,只要能够合理建立未标记示例分布和学习目标之间的联系,就可以利用未标记示例来辅助提高学习性能。在[ShahshahaniL94][MillerU97]中,这一联系是通过对生成式模型(generativemodel)参数的估计来体现的,但在更一般的情况下就需要在某些假设的基础上来建立未标记示例和目标之间的联系。目前,在半监督学习中有两个常用的基本假设,即聚类假设(cluster assumption)和流形假设(manifold assumption)。
聚类假设是指处在相同聚类(cluster)中的示例有较大的可能拥有相同的标记。根据该假设,决策边界就应该尽量通过数据较为稀疏的地方,从而避免把稠密的聚类中的数据点分到决策边界两侧。在这一假设下,大量未标记示例的作用就是帮助探明示例空间中数据分布的稠密和稀疏区域,从而指导学习算法对利用有标记示例学习到的决策边界进行调整,使其尽量通过数据分布的稀疏区域。聚类假设简单、直观,常以不同的方式直接用于各种半监督学习算法的设计中。例如, Joachims[Joachims99] 提出了TSVM算法 3 ,在训练过程中,该算法不断修改SVM的划分超平面并交换超平面两侧某些未标记示例的可能标记,使得SVM在所有训练数据(包括有标记和未标记示例)上最大化间隔(margin),从而得到一个既通过数据相对稀疏的区域又尽可能正确划分有标记示例的超平面;N. D. Lawrence和 M. I. Jordan [LawrenceJ05] 通过修改高斯过程(Gaussian process)中的噪音模型来进行半监督学习,他们在正、反两类之间引入了“零类”,并强制要求所有的未标记示例都不能被分为零类,从而迫使学习到的分类边界避开数据稠密区域; Grandvalet和Y. Bengio [GrandvaletB05] 通过使用最小化熵作为正则化项来进行半监督学习,由于熵仅与模型在未标记示例上的输出有关,因此,最小化熵的直接结果就是降低模型的不确定性,迫使决策边界通过数据稀疏区域。
流形假设是指处于一个很小的局部邻域内的示例具有相似的性质,因此,其标记也应该相似。这一假设反映了决策函数的局部平滑性。和聚类假设着眼整体特性不同,流形假设主要考虑模型的局部特性。在该假设下,大量未标记示例的作用就是让数据空间变得更加稠密,从而有助于更加准确地刻画局部区域的特性,使得决策函数能够更好地进行数据拟合。流形假设也可以容易地直接用于半监督学习算法的设计中。例如,J. Zhu 等人 [ZhuGL03] 使用高斯随机场以及谐波函数来进行半监督学习,他们首先基于训练例建立一个图,图中每个结点就是一个(有标记或未标记)示例,然后求解根据流形假设定义的能量函数的最优值,从而获得对未标记示例的最优标记;D. Zhou 等人 [ZhouBLWS04] 在根据示例相似性建立图之后,让示例的标记信息不断向图中的邻近示例传播,直到达到全局稳定状态。值得注意的是,一般情形下,流形假设和聚类假设是一致的。由于聚类通常比较稠密,满足流形假设的模型能够在数据稠密的聚类中得出相似的输出。然而,由于流形假设强调的是相似示例具有相似的输出而不是完全相同的标记,因此流行假设比聚类假设更为一般,这使其在聚类假设难以成立的半监督回归中仍然有效[ZhouL05b][ZhouL07]。根据半监督学习算法的工作方式,可以大致将现有的很多半监督学习算法分为三大类。第一类
算法以生成式模型为分类器,将未标记示例属于每个类别的概率视为一组缺失参数,然后采用 EM算法来进行标记估计和模型参数估计,其代表包括[ShahshahaniL94][MillerU97] [NigamMTM00]等。此类算法可以看成是在少量有标记示例周围进行聚类,是早期直接采用聚类假设的做法。第二类算法 是 基 于 图 正 则 化 框 架 的 半 监 督 学 习 算 法 , 其 代 表 包 括 [BlumC01][ZhuGL03][BelkinN04][ZhouBLWS04][BelkinNS05]等。此类算法直接或间接地利用了流形假设,它们通常先根据训练例及某种相似度度量建立一个图,图中结点对应了(有标记或未标记)示例,边为示例间的相似度,然后,定义所需优化的目标函数并使用决策函数在图上的光滑性作为正则化项来求取最优模型参数。第三类算法是协同训练(co-training)算法。此类算法隐含地利用了聚类假设或流形假设,它们使用两个或多个学习器,在学习过程中,这些学习器挑选若干个置信度高的未标记示例进行相互标记,
从而使得模型得以更新。在 A. Blum 和 T. Mitchell [BlumM98] 提出最早的协同训练算法后,很多研究者对其进行了研究并取得了很多进展,使得协同训练成为半监督学习中最重要的风范(paradigm)之一,而不再只是一个算法。本章接下来的几节就将对协同训练进行进一步的介绍。
下面几个图来生动形象地诠释半监督的好处:
上图中,只有两个标记样本,X,O,剩下绿点是无标记的样本.通过无标记样本的加入,原来的分类界限从0移到了0.5处,更好地拟合了样本的现实分布.
半监督学习算法分类:
- self-training(自训练算法)
- generative models生成模型
- SVMs半监督支持向量机
- graph-basedmethods图论方法
- multiview learing多视角算法
其他方法
接着简单介绍上述的几个算法
self-training算法:
还是两个样本集合:Labled={(xi,yi)};Unlabled= {xj}.
执行如下算法
Repeat:
1. 用L生成分类策略F;
2. 用F分类U,计算误差
3. 选取U的子集u,即误差小的,加入标记.L=L+u;
重复上述步骤,直到U为空集.
上面的算法中,L通过不断在U中,选择表现良好的样本加入,并且不断更新子集的算法F,最后得到一个最有的F.
Self-training的一个具体实例:最近邻算法
记d(x1,x2)为两个样本的欧式距离,执行如下算法:
Repeat:
1. 用L生成分类策略F;
2. 选择x = argmin d(x, x0). 其中x∈U,min x0∈L.也就是选择离标记样本最近的无标记样本.
2. 用F给x定一个类别F(x).
3. 把(x,F(x))加入L中
重复上述步骤,直到U为空集.
上面算法中,也就是定义了self-training的”误差最小”,也就是用欧式距离来定义”表现最好的无标记样本”,再用F给个标记,加入L中,并且也动态更新F.
下面是这种算法的效果图:
上图从两个点出发,不断加入最近邻点,不断更新F.上面的算法表现良好,当然更多的是表现不好.如下:
生成模型
生成算法来源于假设,比如我们假设原样本满足高斯分布,然后用最大释然的概率思想来拟合一个高斯分布,也就是常用的高斯混合模型(GMM).
简单介绍下高斯混合模型:
假设如下的样本分布:
我们假设他们满足高斯分布.
高斯分布的参数有: θ = {w1, w2, µ1, µ2, Σ1, Σ2}
利用最大似然的思想,最大化如下概率:
p(x, y|θ) = p(y|θ)p(x|y, θ).
得到如下的假设分布:
顺便贴一个介绍高斯混合模型日志:
http://blog.csdn.net/zouxy09/article/details/8537620
接着是我们的半监督生成算法:
样本分布如下:
算法过后,得到如下分布:
对比这两个图,说明下高斯混合模型与半监督生成模型的区别:
这两种方法的释然函数不同,前者最大化标记样本出现概率,后者加入了无标记样本出现概率.
算法的具体实现,请参见E-M算法.
这样生成的算法也有许多不良表现,如下:
假设原始的分布式这样的:
通过GMM,它变成了这样:
几个需要注意的地方:
1. 高斯混合的局部收敛性
2. 减少无标记样本的权值
半监督SVM,图算法模型,流行模型等.
SVM的理论不再赘述,就是一个最优超平面:
偷一张很牛逼的SVM图: