什么是主动学习? 原创
如果数据是无标签的,我们很难构建一个监督学习系统。
使用无监督技术是一种可行的解决方案,但它们能完成的任务类型有限。
另一种可能的方法,是依赖自监督学习。
自监督学习是指我们有一个无标签的数据集,但我们通过某种方式能够从中构建一个监督学习模型。
这通常依赖于任务的固有属性。
例如,ChatGPT自回归地基于当前词预测下一个单词。
这样我们就可以简单地将文本左移一位在海量文本上构造训练数据集。
输入:"The cat sat on"
标签:"cat sat on the"
或者像BERT那样,通过将文本中的某些单词替换为占位符,并预测这些占位符的单词。
"The cat sat on the [MASK]。"
"I went to the [MASK] to buy some milk."
但并不是所有任务都有这种属性,所以它的应用场景也有限。
现在唯一能想到的方法就是标注数据集。然而,数据标注既困难、昂贵、耗时,又枯燥乏味。
主动学习是一种相对简单、便宜、快速且有趣的解决方法。
顾名思义,它的想法是通过主动获取人工反馈,帮助模型改进其在难以处理样本上的表现。下图总结了这一过程:
让我们看下细节。
我们先手动标注一小部分数据。
根据经验,标注约1%的数据集是个不错的选择。
接下来,在这个小的标注数据集上训练一个模型。
当然,这个模型不会是完美的,但没关系。
接下来,使用训练好的模型在未标注的数据上生成预测:
很明显,我们无法确定这些预测是否正确,因为我们没有标签。
但我们可以得到这些预测的置信度。
因为在主动学习中,我们通常会选择能够在其预测中提供置信水平的模型。
概率模型(即为每个类别提供概率估计的模型)通常在这里是一个很好的选择。
这是因为可以从概率输出中确定置信度的水平。
在上述两个例子中,考虑第1和第2大概率之间的差距:
● 在例子#1中,差距较大。这可能表示模型对它的预测非常有信心。
● 在例子#2中,差距较小。这可能表示模型对它的预测信心不足。
现在,回到上面生成的预测,并按照置信度的大小对它们进行排名:
在上面的图像中:
● 模型已经对前两个实例非常有信心。没有必要再检查它们了。
● 相反,最好由我们(人类)来标注模型信心最弱的实例。
为了更好地理解,考虑下面的图像。从逻辑上讲,哪个数据点的人工标签将为模型提供更多信息?我知道你已经知道答案。
因此,在下一步中,我们对置信度低的预测进行人工标注,并将其与先前标注的数据集一起去继续改进模型。
多次重复这个过程,直到你对模型的表现感到满意为止。
根据我的经验,主动学习是处理无标注数据集的一个极大节省时间的办法。唯一需要小心的是生成置信度度量。
如果你搞错了这一步,它会影响之后的每一个训练步骤。
另外,除了人工标注的低置信度数据和种子数据,还可以使用高置信度数据。它们的标签将是模型的预测结果。
这种主动学习的变体称为合作学习。
本文转载自公众号人工智能大讲堂