机器学习教程 之 半监督学习 Co-training 协同训练 (论文、算法、数据集、代码)

这篇博客介绍的是一篇用于半监督分类问题的方法: 协同训练 Co-training, A. Blum and T. Mitchell, “Combining labeled and unlabeled data with co-training,” in Proc. of the 11th Annual Conf. on Computational Learning Theory, 1998.,这算是半监督领域里面始祖级的论文了,是1998年两位CMU大佬提出的方法。

关于半监督学习

  1. 基于分歧的半监督学习方法
    机器学习教程 之 半监督学习 Tri-training方法 (论文、数据集、代码)
    机器学习教程 之 半监督学习 Co-training 协同训练 (论文、算法、数据集、代码)
    机器学习教程 之 半监督学习 Coreg 协同回归算法 (论文、算法、数据集、代码)
  2. 基于图的半监督学习方法
    DeepLearning | 图注意力网络Graph Attention Network(GAT)论文、模型、代码解析
    DeepLearning | 图卷积神经网络(GCN)解析(论文、算法、代码)
    DeepLearning | 图卷积网络基于拓扑结构的分类(T-GCN)
    机器学习教程 之 半监督学习 基于图正则项的半监督极限学习机

这些博客都提供了算法的讲解和python的代码复现,感兴趣的可以了解一下

目录

  • 一、协同训练 Co-training
  • 二、算法流程
  • 三、资源下载

一、协同训练 Co-training

协同训练是一类基于“分歧”的半监督学习方法,它最初是针对“多视图”数据设计的。为了更好的介绍协同训练,我们这里先介绍什么是多视图数据。

在不少现实应用中,一个数据对象往往同时拥有有多个“属性集”,每个属性集就构成了一个视图。例如,对于一部电影而言,它拥有多个属性集,即图像画面对应的属性集、声音信息对应的属性集、字幕信息对应的属性集、甚至网上的宣传所讨论对应的属性集等。每个属性集都可以看作为一个视图。为简化讨论,这里仅考虑图像画面属性集所构成的视图和声音属性集所构成的视图。于是,一个电影片段可以表示为 ( < x 1 , x 2 > , y ) (,y) (<x1,x2>,y),其中 x 1 x^{1} x1为图像视图中的属性向量, x 2 x^{2} x2为声音视图中的属性向量, y y y是标签,这里表示的是电影类型,例如“动作片”、“爱情片”等等。这样 ( < x 1 , x 2 > , y ) (,y) (<x1,x2>,y) 就是一个有两个视图的数据

假设不同视图具有“相容性”,即所包含的关于输出空间 Y Y Y的信息是一致的:令 Y 1 Y^{1} Y1表示从图像画面信息判别的标记空间, Y 2 Y^{2} Y2表示从声音信息判别的标记空间,则有 Y = Y 1 = Y 2 Y=Y^{1}=Y^{2} Y=Y1=Y2,例如两者都是 { 爱 情 片 、 动 作 片 } \{爱情片、动作片\} {},而不能是 Y 1 = { 爱 情 片 、 动 作 片 } Y^{1}=\{爱情片、动作片\} Y1={} Y 2 = { 惊 悚 片 、 文 艺 片 } Y^{2}=\{惊悚片、文艺片\} Y2={}。在此假设下,显式地考虑多视图这一信息显然是有很多好处的。以电影为例,某个片段上,两人相视,仅凭画面信息难以分辨其类型,但此时若从声音信息听到“我爱你”,则可以判断出该片段很有可能属于“爱情片”;相反的,若仅凭图像画面信息认为“可能是动作片”,仅凭声音信息也认为“可能是动作片”,则当两者一起考虑时就有很大把握判别为“动作片”。显然,在“相容性”基础上,不同视图信息的“互补性”会给学习器的构建带来很大便利。

协同训练正是很好地利用了多视图的“相容互补性”。假设数据拥有两个充分且条件独立的视图,“充分”是指每个视图都包含足以产生最优学习器的信息,“条件独立”则是指在给的类别标记条件下两个视图相互独立。 在此情况下,可以用一个简单的办法来利用未标记数据:首先在每个视图上基于有标签样本分别训练出一个分类器,然后让每个分类器分别去挑选自己“最有把握的”未标记样本赋予伪标记,并将伪标记样本提供给另一个分类器作为新增的有标记样本用于训练更新…这个“互相学习、共同进步”的过程不断迭代进行,直到两个分类器都不再发生变化,或达到预先设定的迭代轮次为止。

协同训练的过程虽然简单,但令人惊讶的是,理论证明显示出,若两个视图充分且条件独立,则可以利用未标记样本通过协同训练将弱分类器的泛化性能提升到任意高。不过,视图的条件独立性在现实任务中通常很难满足,因此提升幅度不会那么大。

二、算法流程

协同训练的算法描述如下所示:

若在每轮学习中都考察分类器在所有未标记样本上的分类置信度,会有很大计算开销,因此在算法中使用了未标记样本缓冲池。分类置信度的估计则因基学习算法的不同而不同,例如若使用贝叶斯分类器,则可以将后验概率转化为分类置信度;若使用支持向量基,则可以将间隔大小转化为分类置信度。

此外,协同训练算法本身是为多视图数据而设计的,但此后出现了一些能在单视图数据上使用的变体算法,它们或是使用不同的学习算法,或是使用不同的数据采样,甚至使用不同的参数设置来产生不同的学习器,也能有效利用未标记数据来提升性能。后续理论研究发现,此类算法事实上无需数据拥有多视图,仅需弱学习器之间具有显著分歧,即可通过相互提供伪标签样本的方式来提升性能。

三、资源下载

微信搜索“老和山算法指南”获取代码下载链接与技术交流群
在这里插入图片描述
有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。

你可能感兴趣的:(机器学习教程)