本来想上个月写的,又拖延了
这个半监督深度学习又小结系列将会以某个主题来讲述半监督深度学习的现状,呃是我了解的现状,前一篇的主题是Consistency regularization,本次的主题为类协同训练
协同训练 Co-training
Co-training是基于分歧的方法,其假设每个数据可以从不同的角度(view)进行分类,不同角度可以训练出不同的分类器,然后用这些从不同角度训练出来的分类器对无标签样本进行分类,再选出认为可信的无标签样本加入训练集中。由于这些分类器从不同角度训练出来的,可以形成一种互补,而提高分类精度;就如同从不同角度可以更好地理解事物一样
但该方法理论很强,但却一定的假设条件(事实上半监督学习都是在一定的假设条件下进行的),引用周志华大大《基于分歧的半监督学习》中的描述,
协同训练法要求数据具有两个充分冗余且满足条件独立性的视图,
1. 「充分 (Sufficient)」 是指每个视图都包含足够产生最优学习器的信息, 此时对其中任一视图来说,另一个视图则是「冗余 (Redundant)」 的
2. 对类别标记来说这两个视图条件独立
这个数据假设就很强力了,既要求数据信息充分还冗余,你还要找到两个独立互补的视图。但是,在一定程度上满足条件的情况下,co-training 的效果也是非常给力。
那么,在半监督深度学习里,co-training会以什么方式呈现呢?问题的关键自然在于,如何去构建两个(或多个)近似代表充分独立的视图的深度模型,两个比较直观的方法就是:
- 使用不同的网路架构(据我看过的论文[1][2]中指出,哪怕是对同一个数据集,不同的网路架构学习到的预测分布是不一样的)
- 使用特殊的训练方法来得到多样化的深度模型
注:以下工作的推荐,是我自认为其思想类似于co-training,因此称为类协同训练,不是说下面的工作就一定是co-training...orz
Deep Co-Training for Semi-Supervised Image Recognition
这是一篇ECCV 2018的文章,论文首先指出,直接对同一个数据集训练两个网路,会有两个弊端:
- 对同一个数据集训练两个网路,并不能保证两个网路具有不同的视图,更不能保证具有不同且互补的信息
- 协同训练会使得两个网路在训练过程中趋于一致,会导致 collapsed neural networks,进而使得协同训练失效
为了解决上述问题,论文主要做了两个工作:
- 提出了一个新的代价函数,进行协同训练,其形式如下:
资讯理论学得不好请多见谅,大概就是均匀分布的熵最大,当两个预测分布不一致时,这两个预测分布求和取平均会使得熵增大(相反,如果预测一致熵就不会增加多少)
论文中还明确强调,该代价函数只用在无标签数据上,因为有标签数据的监督代价函数(论文用的交叉熵)已经使得预测趋于一致(趋于真实标签),用在有标签数据上没有必要,但是好像没说明也用在有标签数据上的后果。
2. (关键)提出了View Difference Constraint。其思路是:我们只有一个数据集D,但我们不能再同一个数据集上训练两个网路,因此需要从D中派生出另一个数据集D,而这个派生方法就是计算D的对抗样本。具体即使用对方的对抗样本来训练自己:
其中, 表示网路 的对抗样本, 是某种代价函数(KL散度?),该约束的设计期望是使得两个网路具备不同却互补信息。
我个人觉得这是一个 very amazing 的想法。尽管我不知道理论上是否能保证两个网路不同却互补,但直观上...orz
实验效果非常的好,两个(或多个)网路使用的是同一种架构,就是感觉没有和集成方法比较感觉有点遗憾,毕竟论文用了多个网路。
PS:[论文][不用点,没有代码]
Tri-net for Semi-Supervised Deep Learning
Tri-net 是 IJCAI 2018 的论文,挂著周志华大大的名字,用的思想也是周志华提出来的 tri-training,可谓阵容豪华。
论文称类协同训练为 disagreement-based semi-supervised learning,其关键在于训练多个分类器,已经对不同视图上的不一致性的探索。为此,论文从三个方面改进:model initialization,diversity augmentation 和 pseudo-label editing
在展开这三个贡献点之前,我们先来看看 Tri-net 的网路架构: