面向标注的主动学习
主动学习是什么、何时有用,以及 Potato 支持的查询策略(不确定性、多样性、BADGE、BALD),帮助你用更少的标注获得同等的模型质量。
主动学习决定接下来标注哪些条目,从而让模型用远更少的标签达到相同的准确率。它不再随机标注,而是优先标注模型认为最有信息量的条目。 当标注成为瓶颈时,这是回报最高的技术之一。
这个循环
- 标注一小批种子数据。
- 用现有数据训练一个快速模型。
- 给未标注池中的条目打分,挑出最有信息量的那些。
- 标注它们,加入数据集,重新训练。如此往复。
它带来的回报是数据效率:模型把你的标注预算花在它能学到最多的地方。
Potato 支持的查询策略
- 不确定性采样:挑选模型最没把握的条目(靠近决策边界)。最简单、且往往有效的默认选择。
- 多样性采样:挑选彼此差异较大的条目,避免把预算浪费在近乎重复的内容上。
- BADGE:利用梯度嵌入,将不确定性与多样性结合起来。
- BALD:贝叶斯策略,选择预期最能降低模型不确定性的条目。
- 混合:融合多种策略。
yaml
active_learning:
enabled: true
schema_names: [sentiment]
query_strategy: uncertainty # or diversity, badge, bald, hybrid
min_instances_for_training: 20主动学习何时有用,何时无用
当标注成本高、数据池很大,且用一小批种子数据就能训出有用的模型时,它就有用。在以下情况下,它的作用较小:
- 任务太简单,随机标注很快就能让效果饱和。
- 你需要一个无偏的留出测试集——评估数据要保持随机抽样,因为主动学习选出的数据是刻意偏斜的。
- 相对于工程投入而言,标注成本本就很低。