主动学习:让模型挑要标注的数据
标注数据往往是最贵的一环。手里有一大堆未标注样本,全标太贵,随机挑又可能漏掉最关键的那几个。主动学习(Active Learning)的做法是:让已经训好的模型来判断「哪些样本我最不确定、标了之后最有用」,优先把这批喂给人去标注,再用新标签继续迭代。
为什么不让模型自己选
被动收集标签时,很多样本模型已经很有把握,再标也只是重复确认;而真正能提升模型的是那些边界模糊、容易分错的样本。主动学习把标注当成一种「查询」,目标是用最少的查询次数最大化模型性能。它在标注成本高(医学影像、专业文本)或标注人力有限的场景里回报尤其明显。
三种常见采样策略
最常用的是不确定性采样:挑模型预测概率最低、或熵最高、或 margin 最小的样本。另一种是多样性采样,确保选出的样本彼此有差异,避免扎堆。还有委员会查询(Query by Committee),训练多个模型,挑它们意见最不一致的样本。实际中常把不确定性与多样性结合,既补漏又防重复。
def uncertainty_sampling(model, pool, k=10):
probs = model.predict_proba(pool) # 每个样本各类别概率
entropy = -np.sum(probs * np.log(probs + 1e-9), axis=1)
idx = np.argsort(entropy)[-k:] # 取最不确定的 k 个
return idx # 交给人工标注
落地时的几个坑
主动学习不是一次性挑完,而是一个循环:标注、训练、再挑。要注意标注质量一致,否则噪声会放大。冷启动时模型还没训好,第一轮可以随机或分层抽样打底。还要防止选样偏差——模型总挑相似的难例,可能让数据分布偏移,因此定期混入随机样本很有必要。
小结
主动学习让模型自己决定标注优先级,把有限的人工预算集中在信息量最大的样本上,从而在更少标签下逼近全量标注的效果。它适合标注昂贵、未标注数据充足的场景,关键是把不确定性采样、多样性与稳定的标注循环结合起来。
参考与延伸阅读
- Settles, B. Active Learning Literature Survey(University of Wisconsin, 2009)。主动学习领域最常被引用的综述。已核验。
- 具体采样实现与冷启动策略以各开源主动学习库文档为准,不同框架的默认查询函数可能不同。待核实。
本文累计阅读 — 次