监督学习往往需要大量的标注数据,而标注数据的成本比较高.因此,利用大量的无标注数据来提高监督学习的效果有着十分重要的意义。这种利用少量标注数据和大量无标注数据进行学习的方式称为半监督学习(Semi-Supervised Learning,SSL)。
自训练
自训练(Self-Training, or Self-Teaching) 是一种简单而有效的半监督学习方法。它首先使用标注数据来训练一个模型,并使用这个模型来预测无标 注样本的标签,把预测置信度比较高的样本及其预测的伪标签加入训练集,然后 重新训练新的模型,并不断重复这个过程。
自训练方法简单易行,适用于多种模型和任务。然而,它依赖于初始模型的性能,如果初始模型性能较差,可能会引入错误的标签,导致错误的积累和模型性能下降。
协同训练
协同训练(Co-Training)是自训练的一种改进方法,通过两个基于不同视角(view)的分类器来互相促进。很多数据都有相对独立的不同视角。比如互联网上的每个网页都由两种视角组成:文字内容(text)和指向其他网页的链接 (hyperlink)。如果要确定一个网页的类别,既可以根据文字内容来判断,也可根据网页之间的链接关系来判断。
假设一个样本 ,其中 和 分别表示两种不同视角 和 的 特征,并满足下面两个假设:
- 条件独立性:给定样本标签 时,两种特征条件独立。即
- 充足和冗余性:当数据充分时,每种视角的特征都足以单独训练出一个正确的分类器
令 为需要学习的真实映射函数, 和 分别为两个视角的分类器,有
协同算法要求两种视角是条件独立的,如果两种视角完全一样,则协同训练退化成自训练算法。
由于不同视角的条件独立性,在不同视角上训练出来的模型就相当于从不同视角来理解问题,具有一定的互补性。协同训练就是利用这种互补性来进行自训练的一种方法。首先在训练集上根据不同视角分别训练两个模型 和 ,然后用 和 在无标注数据集上进行预测,各选取预测置信度比较高的样本加入训练集,重新训练两个不同视角的模型,并不断重复这个过程。