主动学习:让模型挑要标注的数据

标注数据往往是最贵的一环。手里有一大堆未标注样本,全标太贵,随机挑又可能漏掉最关键的那几个。主动学习(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)。主动学习领域最常被引用的综述。已核验。
  • 具体采样实现与冷启动策略以各开源主动学习库文档为准,不同框架的默认查询函数可能不同。待核实。
本文累计阅读