-
协同训练
co-traning
是此类方法的重要代表。它最初是针对多视图数据设计的,因此也被视作多视图学习multi-view learning
的代表。
在不少现实应用中,一个数据对象往往同时拥有多个属性集
attribute-set
。每个属性集就构成了一个视图。假设数据集为 , 其中 。属性集合 。假设属性集合划分为 ,其中:
即将属性划分为两个属性集,前 个属性为第一个属性集,后 个属性属于第二个属性集。
- 原始样本 被划分为两个属性向量 ,它们分别属性这两个属性集。
- 这样的数据就是多视图数据,每个属性集都是一个视图。
如: 可以划分为两个属性集:
<身高、体重、年龄>
以及<学历、爱好、工作>
。假设不同视图具有相容性:即其所包含的关于输出空间 的信息是一致的。
令 为从第一个属性集判别的标记空间, 为从第二个属性集判别的标记空间,则有 。
注意:这里仅要求标记空间相同,并没有要求每个标记相同。
协同训练充分利用了多视图的相容互补性。
假设数据拥有两个充分且条件独立视图。
- 充分:指每个视图都包含足以产生最优学习器的信息。
- 条件独立:指在给定类别标记条件下,两个视图独立。
此时,可以用一个简单的办法来利用未标记数据:
- 首先在每个视图上,基于有标记样本,分别训练出一个分类器。
- 然后让每个分类器分别去挑选自己最有把握的未标记样本赋予伪标记,并将伪标记样本提供给另一个分类器作为新增的有标记样本用于训练更新。
- 该“ 互相学习、共同进步”的过程不断迭代进行,直到两个分类器都不再发生变化,或者到达指定的迭代轮数为止。
注意:
- 如果在每轮学习中都考察分类器在所有未标记样本上的分类置信度,则会有很大的计算开销。因此在算法中使用了未标记样本缓冲池。
- 分类置信度的估计因基学习算法而异。
协同训练过程虽然简单,但是理论证明:若两个视图充分且条件独立,则可利用未标记样本通过协同训练将弱分类器的泛化性能提升到任意高。
- 不过视图的条件独立性在现实任务中通常很难满足,因此性能提升幅度没有那么大。
- 但研究表明,即便在更弱的条件下,协同训练仍可以有效提升弱分类器的性能。
协同训练算法本身是为多试图数据而设计的,但此后出现了一些能在单视图数据上使用的变体算法。
它们或是使用不同的学习算法,或是使用不同的数据采样,甚至使用不同的参数设置来产生不同的学习器,也能有效利用未标记数据来提升性能。
后续理论研究表明,此类算法事实上无需数据拥有多试图,仅需弱学习器之间具有显著的分歧(或者差异),即可通过相互提供伪标记样本的方式来提升泛化性能。
而不同视图、不同算法、不同数据采样、不同参数设置等,都是产生差异的渠道,而不是必备条件。
基于分歧的方法只需要采用合适的基学习器,就能较少受到模型假设、损失函数非凸性和数据规模问题的影响,学习方法简单有效、理论基础相对坚实、使用范围较为广泛。
- 为了使用此类方法,需要能生成具有显著分歧、性能尚可的多个学习器。