1. 基于分歧的方法
与生成式方法、半监督SVM、图半监督学习等基于单学习器利用未标记数据不同,基于分歧的方
法(disagreement--based methods)使用多学习器,而学习器之间的“分歧”(disagreement)对未标记
数据的利用至关重要。
1.2 协同训练
“协同训练”(co-training)[Blum and Mitchell,l998]是此类方法的重要代表,它最初是针对“多视图”
(multi--view)数据设计的,因此也被看作“多视图学习”(multi--view learning)的代表。在介绍协同训
练之前,我们先看看什么是多视图数据。
在不少现实应用中,一个数据对象往往同时拥有多个“属性集”(attributeset),每个属性集就构成了
一个“视图”(view)。例如对一部电影来说,它拥有多个属性集:图像画面信息所对应的属性集、声
音信息所对应的属性集、字幕信息所对应的属性集、甚至网上的宣传讨论所对应的属性集等。每个
属性集都可看作一个视图。为简化讨论,暂且仅考虑图像画面属性集所构成的视图和声音属性集所
构成的视图。于是,一个电影片段可表示为样本(<x1,x2>,y),其中x是样本在视图元中的示例,即
基于该视图属性描述而得的属性向量,不妨假定x1为图像视图中的属性向量,x2为声音视图中的属
性向量;y是标记,假定是电影的类型,例如“动作片”、“爱情片”等。(<x1,x2>,y)这样的数据就是多
视图数据。
假设不同视图具有“相容性”(compatibility),即其所包含的关于输出空间y的信息是一致的:令y1表
示从图像画面信息判别的标记空间,y2表示从声音信息判别的标记空间,则有y=y1=y2,例如两者
都是{爱情片,动作片},而不能是y1={爱情片,动作片},而y2={文艺片,惊悚片}。在此假设下,
显式地考虑多视图有很多好处。仍以电影为例,某个片段上有两人对视,仅凭图像画面信息难以分
辨其类型,但此时若从声音信息听到“我爱你”,则可判断出该片段很可能属于“爱情片”;另一方
面,若仅凭图像画面信息认为“可能是动作片”,仅凭声音信息也认为“可能是动作片”,则当两者一
起考虑时就有很大的把握判别为“动作片”。显然,在“相容性”基础上,不同视图信息的“互补性”会给
学习器的构建带来很多便利。
协同训练正是很好地利用了多视图的“相容互补性”。假设数据拥有两个充分(sufficient)且条件独立
视图,“充分”是指每个视图都包含足以产生最优学习器的信息,“条件独立”则是指在给定类别标记
条件下两个视图独立。在此情形下,可用一个简单的办法来利用未标记数据:首先在每个视图上基
于有标记样本分别训练出一个分类器,然后让每个分类器分别去挑选自己“最有把握的”未标记样本
赋予伪标记,并将伪标记样本提供给另一个分类器作为新增的有标记样本用于训练更新…,这个
“互相学习、共同进步”的过程不断迭代进行,直到两个分类器都不再发生变化,或达到预先设定的
迭代轮数为止,算法描述如图所示。若在每轮学习中都考察分类器在所有未标记样本上的分类置信
度,会有很大的计算开销,因此在算法中使用了未标记样本缓冲池[Blum and Mitchell,,l998]。分类
置信度的估计则因基学习算法而异,例如若使用朴素贝叶斯分类器,则可将后验概率转化为分类置
信度;若使用支持向量机,则可将间隔大小转化为分类置信度。
协同训练过程虽简单,但令人惊讶的是,理论证明显示出,若两个视图充分且条件独立,则可利用
未标记样本通过协同训练将弱分类器的泛化性能提升到任意高[Blum and Mitchel,l998]。不过,视
图的条件独立性在现实任务中通常很难满足,因此性能提升幅度不会那么大,但研究表明,即便在
更弱的条件下,协同训练仍可有效地提升弱分类器的性能[周志华,2013]。
协同训练算法本身是为多视图数据而设计的,但此后出现了一些能在单视图数据上使用的变体算
法,它们或是使用不同的学习算法[Goldman and Zhou,2000],或使用不同的数据采样[Zhou and
Li,2005b],甚至使用不同的参数设置[Zhou and Li,2005a]来产生不同的学习器,也能有效地利用未
标记数据来提升性能。后续理论研究发现,此类算法事实上无需数据拥有多视图,仅需弱学习器之
间具有显著的分歧(或差异),即可通过相互提供伪标记样本的方式来提升泛化性能[周志华,
2013];不同视图、不同算法、不同数据采样、不同参数设置等,都仅是产生差异的渠道,而非必
备条件。
基于分歧的方法只需采用合适的基学习器,就能较少受到模型假设、损失函数非凸性和数据规模问
题的影响,学习方法简单有效、理论基础相对坚实、适用范围较为广泛。为了使用此类方法,需能
生成具有显著分歧、性能尚可的多个学习器,但当有标记样本很少,尤其是数据不具有多视图时,
要做到这一点并不容易,需有巧妙的设计。
Co-training 是基于分歧的方法,其假设每个数据可以从不同的角度(view)进行分类,不同角度
可以训练出不同的分类器,然后用这些从不同角度训练出来的分类器对无标签样本进行分类,再选
出认为可信的无标签样本加入训练集中