外观
主动学习
Active Learning
当一开始面对的数据没有标注时,我们能用来构建监督(supervised)系统的办法并不多。

使用无监督(unsupervised)技术(如果它们适合该任务)可能是一种解决方案,但监督系统通常与无监督系统不相上下。另一种方法——如果可行——是依靠自监督学习(self-supervised learning)。自监督学习是指:我们有一个未标注的数据集(比如文本数据),但仍然设法从中构建出一个监督学习模型。这之所以可能,是由于任务本身的内在特性。以大语言模型(LLM)为例,简而言之,其核心目标是基于此前已预测的 token(或给定的上下文)来预测下一个 token。

这是一个分类(classification)任务,而标签就是 token。

但文本数据是原始的,它没有标签。那么我们是如何训练这个分类任务的?

自监督技术解决了这个问题。由于任务本身的内在特性(具体而言就是预测下一个 token),每一段原始文本数据其实都已经被自动标注好了。

模型只需要学习从前面的 token 到下一个 token 的映射。这被称为自监督学习,它前景可观,但适用范围有限,很大程度上取决于任务本身。到了这一步,人们能想到的唯一可能性就是给数据集做标注。然而,数据标注困难、昂贵、耗时且枯燥。主动学习(active learning)则是一种相对简单、低成本、快捷且有趣的方式来应对这一问题。顾名思义,其思路是借助人工对模型拿不准的样本进行主动反馈,从而构建模型。下面的图示对此作了总结:

让我们深入了解细节。我们首先手动标注数据集中很小的一部分。

虽然对于应当标注多少数据并没有硬性规定,但我曾成功地仅标注约 1% 的数据集就用上了主动学习,所以可以尝试在这个量级上下。接下来,在这个小型已标注数据集上构建一个模型。

当然,这不会是一个完美的模型,但没关系。接下来,对我们未标注的数据集生成预测:

显然,我们无法判断这些预测是否正确,因为我们没有任何标签。正因如此,我们在选择模型类型时需要有所挑剔。更具体地说,我们需要一个能够隐式或显式地随预测一同给出置信度(confidence level)的模型。

顾名思义,置信度反映了模型在生成预测时的自信程度。如果模型会说话,它大概会这样说:
- 我预测是“猫”,对这次预测有 95% 的把握。
- 我预测是“猫”,对这次预测有 5% 的把握。
- 以此类推……
概率模型(probabilistic model,即为每个类别提供概率估计的模型)通常很适合这种场景。

这是因为我们可以从概率输出中确定置信度的代理指标。

在上面的两个例子中,考虑最高概率与次高概率之间的差距:
- 在示例 #1 中,差距很大。这表明模型对其预测相当有信心。
- 在示例 #2 中,差距很小。这表明模型对其预测不太有信心。现在,回到上面生成的预测,并按置信度高低对它们排序:

在上图中:
- 模型对前两个样本已经相当有信心。再去检查它们没有意义。
- 相反,最好由我们(人类)来标注模型最没把握的那些样本。为了获得更直观的理解,看看下面的图。从逻辑上讲,哪个数据点的人工标签能给模型提供更多信息?我知道你心里已经有答案了。
- 因此,在下一步中,我们为低置信度预测提供人工标签,并将其与之前标注好的数据集一起反馈给模型:
- 将这个过程重复几次,直到你对性能感到满意为止。根据我的经验,在未标注数据集上构建监督模型时,主动学习一直是一种极大节省时间的方法。唯一需要小心对待的,就是置信度指标的生成。


如果这一步搞砸了,会影响后续每一个训练步骤。在使用主动学习时,我还喜欢做一件事:在将低置信度数据与种子数据合并时,我们也可以同时使用高置信度数据。这些数据的标签就采用模型的预测结果。

主动学习的这种变体被称为协同学习(cooperative learning)。