3. 主动学习基础

主动学习(Active Learning)的核心思想是:让模型不再被动接受全部标注数据,而是主动挑选“最有价值”的样本交给标注者,从而用更少的标注成本获得更高的模型性能。理解主动学习,首先要区分四种基本范式:池式主动学习、流式主动学习、查询合成与成员查询。它们对数据访问方式、查询形式和标注预算的假设各不相同,直接决定了工程实现的架构与策略。

核心判断:主动学习不是“随机抽样”,而是“基于不确定性、代表性或信息增益的定向采样”。不同范式的差别,本质上是“能看多少数据、能问什么问题、标注者如何回答”这三个约束的差别。

一、四种范式的基本定义与对比

池式主动学习假设全部未标注数据已经存在,算法从池中反复挑选样本;流式主动学习假设数据以流的形式到达,必须在线决定是否查询;查询合成不依赖已有样本,而是直接构造最优查询;成员查询则允许算法向标注者提出“是/否”问题,甚至生成任意样本进行询问。四者的关系可以用下面的结构图表示。

主动学习四大基本范式 数据访问方式 · 查询形式 · 标注交互 · 典型场景 池式主动学习 Pool-based 全部未标注数据已存在 从池中批量挑选样本 可反复评估、全局比较 场景:图像分类、NLP微调 流式主动学习 Stream-based 数据逐个到达,不可回看 在线判断“查/不查” 决策即时、预算敏感 场景:推荐、风控、IoT 查询合成 Query Synthesis 不依赖已有样本池 直接构造最优查询样本 可生成反事实、边界样本 场景:仿真、对抗、控制 成员查询 Membership Query 向标注者问“是/否” 可查询任意输入点 理论最优但实践受限 场景:概念学习、理论分析 共同闭环: 未标注数据 → 查询策略(不确定性/代表性/信息增益) → 标注者反馈 → 模型更新 → 重新评估 差异点:池式可全局比较;流式只能在线决策;查询合成可造样本;成员查询可问任意点。 池式:离线池、批量查询 流式:在线流、即时决策 合成:生成查询、无池依赖 成员:是/否问答、理论强 工程选型建议:有静态数据集优先池式;数据持续到达用流式;需要边界样本用合成;理论分析用成员查询。

二、池式主动学习:最常用的工程范式

池式主动学习是工业界最成熟的范式。它假设我们拥有一个大规模未标注池 U = {x₁, x₂, ..., xₙ},以及一个已标注集 L。每一轮,模型在 L 上训练后,对 U 中所有样本计算“查询分数”,选出 top-k 交给标注者,然后更新 L 和 U,进入下一轮。

常见的查询策略包括:不确定性采样(如最小置信度、熵、边际采样)、代表性采样(如聚类中心、核心集)、多样性采样(如 BatchBALD、贪心多样性)以及期望模型变化。池式的优势在于可以全局比较所有未标注样本,适合图像分类、文本分类、目标检测等静态数据集场景。

# 池式主动学习伪代码
L = 初始标注集
U = 未标注池
for round in range(R):
    model = train(L)
    scores = uncertainty(model, U)      # 计算查询分数
    query_idx = top_k(scores, k)        # 选 top-k
    L += label(U[query_idx])            # 人工标注
    U = U - U[query_idx]                # 移出池
    evaluate(model, test_set)

三、流式主动学习:在线决策与预算控制

流式主动学习面对的是数据流 x₁, x₂, x₃, ...,每个样本只到达一次,算法必须立即决定“查询”还是“跳过”。它不能回看历史样本,也不能全局比较。典型策略是设定一个不确定性阈值 θ:当模型对当前样本的预测熵大于 θ 时,才请求标注。

流式场景的关键挑战是预算分配和概念漂移。如果阈值固定,早期模型不准确会导致大量查询,后期预算不足;如果数据分布变化,旧阈值可能失效。因此工程上常采用自适应阈值、滑动窗口统计或强化学习策略。流式主动学习广泛用于推荐系统、风控、IoT 传感器等数据持续到达的场景。

流式主动学习的一个实用技巧:维护一个“查询预算池”,每轮根据剩余预算和当前模型不确定性动态调整阈值,避免前期过度查询导致后期无预算可用。

四、查询合成与成员查询:从“选样本”到“造问题”

查询合成不依赖已有未标注池,而是直接构造新的查询样本。例如在仿真环境中生成接近决策边界的样本,或在文本任务中生成反事实样本。它的优势是能探索数据分布稀疏区域,但风险是生成的样本可能不自然、标注者难以理解。

成员查询则允许算法向标注者提出“这个样本是否属于目标概念”的是/否问题。理论上,成员查询可以用很少的查询学习到精确概念,但在实际中,标注者往往无法回答任意构造的样本,因此更多用于理论分析和特定封闭场景。

范式 数据访问 查询形式 标注交互 典型场景 工程难度
池式主动学习 静态未标注池 从池中选样本 批量标注 图像分类、NLP微调 低
流式主动学习 数据流逐个到达 在线判断查/不查 即时标注 推荐、风控、IoT 中
查询合成 无池依赖 构造新样本 标注生成样本 仿真、对抗、控制 高
成员查询 可查询任意点 是/否问答 回答二分类问题 概念学习、理论分析 极高

五、常见误区与复盘

  • 误区一:主动学习一定比随机采样好。在噪声极大或标注者不可靠时,主动学习可能放大偏差,甚至不如随机采样。
  • 误区二:只关注不确定性,忽略代表性。纯不确定性采样容易选到离群点,导致标注浪费。工程上常将不确定性与多样性结合。
  • 误区三:流式场景照搬池式策略。流式不能回看,必须在线决策,阈值和预算策略需要专门设计。
  • 误区四:查询合成样本一定有效。合成样本可能不自然,标注者难以理解,反而引入噪声。
复盘要点:选择主动学习范式时,先问三个问题——数据是静态池还是流式?标注者能回答什么问题?预算是多少?答案决定了你应该用池式、流式、查询合成还是成员查询,而不是盲目追求“最先进”的算法。

总结来说,池式主动学习适合静态数据集和批量标注;流式主动学习适合在线数据流和即时决策;查询合成适合需要探索边界或生成反事实的场景;成员查询则更多用于理论分析和封闭概念学习。理解这四种范式的假设与边界,是构建主动学习数据闭环的第一步。