学习笔记:多视角学习-协同训练
半监督学习
在传统的有监督学习中,我们通过训练大量有标记数据得到一个强学习器,然后预测一个未知样例。而现实生活中,通常数据集中大量数据是无标记的,只有很少一部分是有标记的。比如在电子商务系统中,我们需要推荐用户感兴趣的商品,然而只有很少的用户会主动标记他们感兴趣的商品,系统中还存在着大量其他的商品,它们都可作为未标记示例来使用。我们的目标就是利用这些大量的、廉价的无标记数据帮助我们得到更好的训练模型。
为什么无标记数据是有用的?可以从贝叶斯公式来理解。
贝叶斯公式 P ( C i ∣ x ) = Σ P ( x ∣ C i ) P ( C i ) / P ( x ) P(Ci|x)=ΣP(x|Ci)P(Ci)/P(x) P(Ci∣x)=ΣP(x∣Ci)P(Ci)/P(x),表明我们可以将先验概率 P ( C i ) P(Ci) P(Ci)转换为后验概率 P ( C i ∣ x ) P(Ci|x) P(Ci∣x)。 P ( C i ∣ x ) P(Ci|x) P(Ci∣x)代表在输入示例的特征向量x的条件下该示例类别属于Ci 的概率。我们能够从标记数据中计算出 P ( x ∣ C i ) 和 P ( C i ) P(x|Ci)和P(Ci) P(x∣Ci)和P(Ci),大量的无标记数据则有助于得到更接近于真值的p(x)。由贝叶斯公式可以看出p(x)能够影响到P(Ci|x)的值,也就是说大量的无标记数据是有助于分类器学习的。
协同训练
Co-training 是基于分歧的方法,其假设每个数据可以从不同的角度(view)进行分类,不同角度可以训练出不同的分类器,然后用这些从不同角度训练出来的分类器对无标签样本进行分类,再选出认为可信的无标签样本加入训练集中。
由于这些分类器从不同角度训练出来的,可以形成一种互补,而提高分类精度;就如同从不同角度可以更好地理解事物一样。
当数据充分时,在具有这种特征的数据集的任何一个视图上均可以利用一定的机器学习算法训练出一个强分类器。因为无论是链接还是网页内容都能独立完备地唯一确定一个网页。
但是在这里,大量数据都是无标记的,无法训练出一个强泛化能力的分类器,怎么办呢?协同训练应运而生!
假设数据集属性有两个充分冗余的视图view1和view2,设为X1和X2,则一个示例就可以表示为(x1, x2),其中x1是x在X1视图中的特征向量,x2则是x在X2视图中的特征向量。
假设f是在示例空间X中的目标函数,若x的标记为l则应有 f ( x ) = f 1 ( x 1 ) = f 2 ( x 2 ) = l f(x) = f1(x1) = f2(x2) = l f(x)=f1(x1)=f2(x2)=l。
A. Blum和T. Mitchell定义了所谓的“相容性”,即对X上的某个分布D,C1和C2分别是定义在X1和X2上的概念类,如果D对满足 f 1 ( x ) ≠ f 2 ( x 2 ) 的示例 ( x 1 , x 2 ) f1(x) ≠ f2(x2) 的示例 (x1, x2) f1(x)=f2(x2)的示例(x1,x2) 指派零概率,则称目标函数f = ( f 1 , f 2 ) ∈ C 1 × C 2 (f1, f2) ∈ C1 × C2 (f1,f2)∈C1×C2与D“相容”。
这样,就有可能利用未标记示例来辅助探查哪些目标概念是相容的,而该信息有助于减少学习算法所需的有标记示例数。
下图左边的每个结点对应了X1中的一个特征向量,右边的每个结点对应了X2中的一个特征向量,当且仅当示例(x1, x2)在分布D下以非零概率存在时,结点x1和x2之间才存在边,这些边在图中已经用线条标示出来,其中用实边标示的边对应了已经观察到的未标记示例。在这一表示下,C中与D相容的概念就对应了在图中连通成分之间没有交叉线的划分。
显然,属于同一连通成分的示例必然属于同样的类别,而未标记示例可以帮助学习算法了解图中的连通性(了解分布D),因此,通过利用未标记示例,学习算法可以使用较少的有标记示例达到原来需要更多的有标记示例才能达到的效果。
标准协同训练算法的步骤为:
输入:标记数据集L,未标记数据集U。
- 用L1训练视图X1上的分类器f1,用L2训练视图X2上的分类器f2;
- 用f1和f2分别对未标记数据U进行分类;
- 把f1对U的分类结果中,前k个最置信的数据(正例p个反例n个)及其分类结果加入L2;把f2对U的分类结果中,前k个最置信的数据及其分类结果加入L1;把这2(p+n)个数据从U中移除;
- 重复上述过程,直到U为空集。
输出:分类器f1和f2。
注: f1和f2可以是同一种分类器也可以不是同一种分类器。
协同训练法要求数据具有两个充分冗余且满足条件独立性的视图:
\1. “充分(Sufficient)” 是指每个视图都包含足够产生最优学习器的信息, 此时对其中任一视图来说,另一个视图则是“冗余(Redundant)” 的;
\2. 对类别标记来说这两个视图条件独立。
这个数据假设就很强力了,既要求数据信息充分还冗余,你还要找到两个独立互补的视图。但是,在一定程度上满足条件的情况下,co-training 的效果也是非常给力。
那么,在半监督深度学习里,co-training 会以什么方式呈现呢?问题的关键自然在于,如何去构建两个(或多个)近似代表充分独立的视图的深度模型,两个比较直观的方法就是:
使用不同的网络架构
使用特殊的训练方法来得到多样化的深度模型
参考资料
[1].Combining Labeled and Unlabeled Data with Co-Training
[2].半监督学习中的协同训练风范
[3].A Co-Regularization Approach to Semi-supervised Learning with Multiple Views
[4].When Does Co-Training Work in Real Data?
[5].Semi-Supervised Learning with Multiple Views