Skip to content

面向标注的主动学习

主动学习是什么、何时有用,以及 Potato 支持的查询策略(不确定性、多样性、BADGE、BALD),帮助你用更少的标注获得同等的模型质量。

主动学习决定接下来标注哪些条目,从而让模型用远更少的标签达到相同的准确率。它不再随机标注,而是优先标注模型认为最有信息量的条目。 当标注成为瓶颈时,这是回报最高的技术之一。

背景知识参见主动学习。功能参考请见主动学习

这个循环

  1. 标注一小批种子数据。
  2. 用现有数据训练一个快速模型。
  3. 给未标注池中的条目打分,挑出最有信息量的那些。
  4. 标注它们,加入数据集,重新训练。如此往复。

它带来的回报是数据效率:模型把你的标注预算花在它能学到最多的地方。

Potato 支持的查询策略

  • 不确定性采样:挑选模型最没把握的条目(靠近决策边界)。最简单、且往往有效的默认选择。
  • 多样性采样:挑选彼此差异较大的条目,避免把预算浪费在近乎重复的内容上。
  • BADGE:利用梯度嵌入,将不确定性与多样性结合起来。
  • BALD:贝叶斯策略,选择预期最能降低模型不确定性的条目。
  • 混合:融合多种策略。
yaml
active_learning:
  enabled: true
  schema_names: [sentiment]
  query_strategy: uncertainty   # or diversity, badge, bald, hybrid
  min_instances_for_training: 20

主动学习何时有用,何时无用

当标注成本高、数据池很大,且用一小批种子数据就能训出有用的模型时,它就有用。在以下情况下,它的作用较小

  • 任务太简单,随机标注很快就能让效果饱和。
  • 你需要一个无偏的留出测试集——评估数据要保持随机抽样,因为主动学习选出的数据是刻意偏斜的。
  • 相对于工程投入而言,标注成本本就很低。

延伸阅读