深夜,你接手一桩冷案。会议室白板上贴着 90 个嫌疑人的档案,手里却只有 3 份老口供,经费只够再雇 20 次线人。理智的做法是:先用已有口供训练自己的直觉,然后圈出最拿不准的人,让线人去核实;拿到新口供后更新判断,再圈下一批;如果发现自己总把某一类人排除在外,就修正排查重点;等到新情报对破案几乎没贡献时,果断收网。这个办案流程,就是主动学习。模型是侦探,未标注数据是嫌疑名单,人工标注员是线人,每一次标注都是花钱买情报。模型不断反馈自己的疑惑——哪些样本它分辨不清、哪些类别它总是搞混——标注员照着反馈精准回应,新标签回流训练,模型疑惑变少,直到反馈说“我已经心里有数了”。这套模型反馈驱动标注的闭环,就是主动学习的反馈机制。本文带你拆解:反馈从哪里来、如何驱动选择、如何动态调整、何时收手。

岗位关联

掌握模型反馈机制,你就能用更低的标注预算换来更高精度的模型,这在资源紧张的工业界是硬通货,也是算法工程师从“写代码”走向“设计数据闭环”的分水岭。

目录
  1. 可视化演示
  2. 反馈闭环总览
  3. 不确定性反馈
  4. 错误分析反馈
  5. 动态策略调整
  6. 闭环停止条件
  7. 反馈工程实现
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示模型告诉你该标啥的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

模型告诉你该标啥:模型预测 模型预测不确定性反馈与数据选择 模型错误分析反馈与标注重点指导 核心机制可视化 模型告诉你该标啥整体架构与关键组件

反馈闭环总览

把主动学习想象成侦探办案。侦探的白板上贴着两份名单:左边是“待排查嫌疑人”(未标注池),右边是“已核实档案”(已标注集)。他手头只有三份老口供,经费却只够请 20 次线人。聪明的侦探会先用已有口供训练直觉,圈出最可疑的人派线人去查;情报一回传,立刻更新白板,再圈下一批。白板上的循环,就是主动学习的反馈闭环。

技术视角下,白板循环由四步组成:从未标注池里取样本 → 用已标注集训练或更新模型 → 模型对池中样本逐个反馈打分 → 把分数最高的样本送去人工标注;新标签回填训练集,模型进入下一轮。整个机制的核心在于第三步:模型反馈什么时候是可靠的“向导”。

形式化地看,每轮主动学习是从未标注池 $\mathcal{U}$ 中选出一个样本 $x^{*}$,使得某个反馈函数 $\phi(x)$ 最大。$\phi(x)$ 的写法决定了反馈的品位:它可以是下一节的不确定性熵,也可以是第三节的错误倾向指数,还可以是第四节的自适应加权分。

白板一圈圈转下去,名册越来越薄,侦探的直觉越来越准。接下来,我们拆开 $\phi(x)$ 这个“直觉”,看看它到底在算什么。

x∗=arg⁡max⁡x∈Uϕ(x)\displaystyle x^{*} = \arg\max_{x \in \mathcal{U}} \phi(x)
这个公式说:在未标注集合里,找到让反馈分 $\phi$ 最高的那个样本 $x^{*}$,它就是本轮的“待标注对象”。
  1. 读池子$\mathcal{U}$ 表示未标注样本池,也就是“嫌疑人名单”,模型只能从这里面选人,不能凭空造样本。
    U\displaystyle \mathcal{U}
  2. 算反馈分$\phi(x)$ 是模型给每个样本打的“困惑分”,分值越高代表模型越没把握,越值得优先标注。
    ϕ(x)\displaystyle \phi(x)
  3. 找最大值$\arg\max_{x \in \mathcal{U}}$ 表示“在池子里找出让分数最大的那个样本”,模型反馈在此刻变成标注指令。
    arg⁡max⁡x∈U\displaystyle \arg\max_{x \in \mathcal{U}}
  4. 写下答案$x^{*}$ 是被选中送去人工标注的样本,标注员给完真实标签后,它就从未知变成已知。
    x∗\displaystyle x^{*}

不确定性反馈

侦探看档案最怕什么?最怕模棱两可。三个证人说他是好人,三个说他是坏人,档案里没有一条决定性证据。这种“怎么猜都只有一半把握”的人,恰恰是破案缺口——模型也一样,它最没把握的样本最值得人类答疑。

神经网络分类器最终输出一串概率,比如“猫 0.51、狗 0.49”。这种五五开的软输出就是不确定性信号。主动学习把“模型没把握”当作第一反馈来源:优先标注那些概率分布摊得最平的样本。

度量“摊平程度”最常用的工具是熵 $H(x)$。熵越大,分布越均匀,模型越没底。工程上还有两个简化版本:置信度最低采样只看 $\max_c P(c|x)$ 谁最小;边缘采样看前两名概率之差谁最小。三者本质相同——模型反馈三个字:没把握。

只追“最没把握”的人固然高效,但别忘了:有些看起来普通的人才是关键角色。当模型长期只捡软柿子时,就需要复盘旧案,看看自己的直觉哪里有系统性偏差。

H(x)=−∑c=1CP(c∣x)log⁡P(c∣x)\displaystyle H(x) = -\sum_{c=1}^{C} P(c|x) \log P(c|x)
熵衡量概率分布的“混乱程度”:如果模型输出 (0.5, 0.5),熵最大;如果输出 (0.99, 0.01),熵很小,说明模型几乎确定了。
  1. 列类别$c$ 从 1 跑到 $C$,$C$ 是类别总数,比如猫狗分类里 $C=2$。
    ∑c=1C\displaystyle \sum_{c=1}^{C}
  2. 算概率$P(c|x)$ 表示模型认为样本 $x$ 属于类别 $c$ 的概率,来自 softmax 层的软输出。
    P(c∣x)\displaystyle P(c|x)
  3. 取对数$\log P(c|x)$ 把概率映射成“惊讶程度”,概率越接近 0,数值越负,代表越意外。
    log⁡P(c∣x)\displaystyle \log P(c|x)
  4. 加负号加权$-P(c|x)\log P(c|x)$ 用概率本身给“惊讶程度”加权,低概率事件贡献却不小。
    −P(c∣x)log⁡P(c∣x)\displaystyle -P(c|x)\log P(c|x)
  5. 累加出熵把所有类别的加权惊讶度加起来,就是整体不确定性 $H(x)$。
    H(x)\displaystyle H(x)

错误分析反馈

破了几桩案子后,侦探复盘旧案,发现自己有个毛病:凡是“白天出现在走廊里的人”都默认当住户,结果里面有 4 个是入室贼。这是系统性偏差——模型也一样,可能把骑行者当行人、把退款当咨询,而且这种错是成体系的,不是随机抖动。

要修正系统性偏差,先量化偏差。混淆矩阵是标准工具:行是真实类别,列是预测类别,对角线是判对的,非对角线就是错误去向。借助它,我们能回答:模型最容易把哪一类错判成哪一类?

更精细的指标是“误判偏向指数” $E_{ij}$:在所有真实为 $i$ 类的样本中,有多大比例被模型判成了 $j$ 类。这个数值一旦明显偏高,就说明模型反馈里藏着一个需要重点补标的混淆通道。

找到“总把 A 当 B”的病灶后,反馈从“谁没把握”升级为“谁可能是 A 却被看成 B”。标注预算往混淆最严重的通道倾斜,等于把药精准敷在伤口上。

Eij=nij∑knik\displaystyle E_{ij} = \frac{n_{ij}}{\sum_{k} n_{ik}}
$E_{ij}$ 是“真 i 被误判成 j”的比例。比如 42% 的骑行者被认成行人,这就是反馈给出的标注优先级建议。
  1. 数误判$n_{ij}$ 表示真实类别为 $i$ 却被模型判成 $j$ 的样本数量,来自混淆矩阵的非对角元。
    nij\displaystyle n_{ij}
  2. 数总量$\sum_{k} n_{ik}$ 表示所有真实类别为 $i$ 的样本总数,无论模型把它们判成了哪一类。
    ∑knik\displaystyle \sum_{k} n_{ik}
  3. 取比例两者相除得到 $E_{ij}$,数值越大说明“$i$ 被误判成 $j$”这条通道越拥挤。
    Eij=nij∑knik\displaystyle E_{ij} = \frac{n_{ij}}{\sum_{k} n_{ik}}
  4. 转成信号当 $E_{ij}$ 明显高于其它通道,模型反馈就会去池子里重点捞“长得像 $j$ 的 $i$ 类样本”补标。
    Eij>ε\displaystyle E_{ij} > \varepsilon

动态策略调整

侦探不能一条道走到黑。第一周按“最没把握”优先查,抓回十个人全是无关小贼。他意识到:剩下的都是没法靠直觉分辨的顽固分子,继续纠结把握度没意义,不如换策略——查“谁和已确认的团伙头目来往最近”。主动学习同样需要动态调整反馈公式。

不确定性反馈有天然近视:只盯着当前最难判的局部,忽略全局覆盖。几轮之后,最不确定的样本可能都挤在同一片区域,这时候应该让“多样性”进场——优先选那些与已标注样本差异大、能填补特征空间空白的样本。

工程上常见的做法是加权组合:用一个超参数 $\alpha$ 在“不确定性”与“多样性”之间旋钮,每轮根据反馈效果动态调节。当新标注大量重复同类信息时,就把旋钮往多样性一侧拧。

侦探的打分表从“单一可疑度”升级为“可疑度 + 关联度”的加权记分,$\alpha$ 就是他白板上的平衡旋钮。旋钮转得快慢,取决于上一轮反馈有没有让新情报变得越来越不值钱。

ϕcomb(x)=α⋅ϕunc(x)+(1−α)⋅ϕdiv(x)\displaystyle \phi_{\text{comb}}(x) = \alpha \cdot \phi_{\text{unc}}(x) + (1 - \alpha) \cdot \phi_{\text{div}}(x)
综合反馈分 = 不确定性分 × α + 多样性分 × (1−α)。α 越大越激进地追“没把握”,α 越小越保守地铺“覆盖面”。
  1. 拧旋钮$\alpha$ 取值在 0 到 1 之间,控制两类反馈的分配比例,是策略调整的“手指”。
    α∈[0,1]\displaystyle \alpha \in [0, 1]
  2. 读不确定分$\phi_{\text{unc}}(x)$ 就是第二节的熵或置信度类指标,代表模型觉得这个样本多难。
    ϕunc(x)\displaystyle \phi_{\text{unc}}(x)
  3. 读多样性分$\phi_{\text{div}}(x)$ 衡量样本与已标注集合的差异度,差异越大,越能填补空白区域。
    ϕdiv(x)\displaystyle \phi_{\text{div}}(x)
  4. 加权求和两部分加起来得到综合分 $\phi_{\text{comb}}(x)$,它取代单一不确定性,成为新一轮反馈依据。
    ϕcomb(x)=α⋅ϕunc(x)+(1−α)⋅ϕdiv(x)\displaystyle \phi_{\text{comb}}(x) = \alpha \cdot \phi_{\text{unc}}(x) + (1 - \alpha) \cdot \phi_{\text{div}}(x)

闭环停止条件

收网是门艺术。侦探追了 12 天,新情报对复原案情的贡献趋近于零,剩下的人要么无关要么短期查不出。他决定结案——不是掌握全部真相,而是继续查的投入产出比崩了。主动学习循环同样要判断何时收网。

如果闭环永远转,标注预算无限消耗,而模型精度不会无限上升。工程上把停止条件当作预算管理:每标注一批,就在预留验证集上测一次精度增量,看这轮标注到底“买”回了多少模型能力。

当增量跌破阈值,果断把剩余样本归入“普通档案”——它们不是罪犯,只是模型已经看习惯了的寻常人。知道何时停止,和知道先标谁,同样是一门学问。

ΔAcct=Acct−Acct−1<ε\displaystyle \Delta Acc_t = Acc_t - Acc_{t-1} < \varepsilon
当第 $t$ 轮的测试精度相比上一轮的提升量小于阈值 $\varepsilon$,说明继续标注的收益微乎其微,可以停止反馈循环。
  1. 量当前精度$Acc_t$ 是第 $t$ 轮训练完成后,模型在预留验证集上的准确率。
    Acct\displaystyle Acc_t
  2. 量上一轮精度$Acc_{t-1}$ 是上一轮结束时的准确率,两者必须用同一验证集才可比。
    Acct−1\displaystyle Acc_{t-1}
  3. 做减法$\Delta Acc_t$ 是本轮新增的精度增益,它是停止条件最直接的信号。
    ΔAcct=Acct−Acct−1\displaystyle \Delta Acc_t = Acc_t - Acc_{t-1}
  4. 比阈值当增益小于 $\varepsilon$(比如 0.005),说明新标注几乎没让模型变强,收网。
    ΔAcct<ε\displaystyle \Delta Acc_t < \varepsilon

反馈工程实现

侦探一个人跑不动整条链路,他需要一套稳定的情报管道:向线人发侦察令(模型反馈)、线人排队接活(标注队列)、情报回传(标注回填)、白板更新(模型重训)。管道任何一环堵住,破案节奏都会崩盘。

工程上,模型反馈不是看不见的直觉,而是一条可观测的数据管线:选样服务负责算 $\phi(x)$ 并把样本写进队列;人工标注平台负责展示和回收标签;回填任务把新标签并入训练集;监控面板记录每轮延迟与吞吐。

全链路的快慢直接影响主动学习的经济性。一个样本从模型“提出疑问”到“拿到真实标签”,总延迟是三个环节之和,任何一环超时都会拖慢整个反馈轮次。

管线一稳,侦探只需坐在白板前,看情报一行行流进流出。模型反馈机制就从“灵光一现”变成了可运维的“体系”——这也正是把主动学习从论文搬进产线的最后一步。

Δt=tqueue+tannotate+tmerge\displaystyle \Delta t = t_{\text{queue}} + t_{\text{annotate}} + t_{\text{merge}}
反馈延迟 = 排队等待 + 人工标注 + 数据合并。延迟越小,同一预算下能跑的反馈轮次越多,模型收敛越快。
  1. 排队耗时$t_{\text{queue}}$ 是样本在标注队列里等待空闲标注员的时间,队列越长,这里越容易积压。
    tqueue\displaystyle t_{\text{queue}}
  2. 标注耗时$t_{\text{annotate}}$ 是标注员实际处理该样本的时间,复杂任务(如医学影像)这里会显著拉长。
    tannotate\displaystyle t_{\text{annotate}}
  3. 合并耗时$t_{\text{merge}}$ 是标注结果清洗、格式转换、合入训练集所花的时间,容易被忽视却常是瓶颈。
    tmerge\displaystyle t_{\text{merge}}
  4. 加出总延迟三项相加得到端到端反馈延迟 $\Delta t$,它是反馈机制工程健康度的核心指标。
    Δt=tqueue+tannotate+tmerge\displaystyle \Delta t = t_{\text{queue}} + t_{\text{annotate}} + t_{\text{merge}}

AI 应用场景

医疗影像标注

阶段:数据准备与标注

解决的问题:放射科医生标注一张胸片需 3-5 分钟,十万张胸片里绝大多数是健康样本。传统盲标让专家把时间浪费在“一看就正常”的片子上,真正难判的病灶反而排不上队。主动学习让模型先反馈“这张片的阴影我拿不准”,专家只标模型点名的少量高不确定样本,就能把模型灵敏度拉起来。

具体案例:某医院合作团队用 8 万张未标注胸片,第一轮模型反馈挑出边界模糊的 2000 张由医生精标;第二轮错误分析反馈发现“小结节”常被误判为“血管影”,再定向补标 800 张。最终模型结节检测召回率超过全量标注基线,而标注量仅为全量的 3.5%。

客服意图冷启动

阶段:模型冷启动与迭代

解决的问题:新业务线没有历史意图标注,人工盲抽会抽到大量“你好 / 在吗”等低信息量会话,意图分类器冷启动慢。模型反馈机制把“模棱两可的投诉”优先送人工复核,并持续用错误分析发现“退款”被误判为“咨询”,从而定向修正标注规范。

具体案例:某电商客服机器人上线新品类,2 万条历史会话零标注。算法团队搭起反馈闭环:模型每轮从未标注池挑熵最高的 200 条,人工标注后回填。六轮后意图分类准确率从 58% 提升到 86%,只标注了 1200 条,不足总量的 6%。

自动驾驶 corner case 挖掘

阶段:感知模型闭环迭代

解决的问题:路采数据里 99% 是常规场景,真正危险的长尾 corner case 极其稀有,盲目标 10 万帧可能只有几十帧有用。利用模型反馈(感知置信度低 + 检测框抖动大)把“夜间逆光行人”这类让模型心虚的帧捞出来,优先发给标注团队,能极大压缩无效标注。

具体案例:某自动驾驶团队在 100 万帧回传数据上运行反馈筛选,选出 3 万帧高不确定样本精标;错误分析显示“骑行者”被系统性误判为“行人”,随后定向补标骑行场景 5000 帧,骑行场景的 AP 提升 15 个点,总标注成本只有原来的 1/5。

Python 演示

python87 行
# -*- coding: utf-8 -*-"""迷你主动学习演示:模型反馈驱动标注选择"""import mathimport random  def euclidean(a, b):    return math.sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2)  class MiniKNN:    """极简 KNN 分类器,充当要被训练的模型"""     def __init__(self, k=3):        self.k = k        self.xs = []        self.ys = []     def fit(self, xs, ys):        self.xs = xs        self.ys = ys     def predict_proba(self, x):        nearest = sorted(zip(self.xs, self.ys),                         key=lambda xy: euclidean(x, xy[0]))[:self.k]        votes = {}        for _, y in nearest:            votes[y] = votes.get(y, 0) + 1        return [votes.get(c, 0) / self.k for c in (0, 1, 2)]     def entropy(self, x):        probs = self.predict_proba(x)        return -sum(p * math.log(p) for p in probs if p > 0)     def score(self, xs, ys):        if not xs:            return 0.0        hit = 0        for x, y in zip(xs, ys):            probs = self.predict_proba(x)            if probs.index(max(probs)) == y:                hit += 1        return hit / len(xs)  def make_data(seed=7):    random.seed(seed)    centers = [(2, 2), (6, 6), (9, 2)]    xs, ys = [], []    for c, (cx, cy) in enumerate(centers):        for _ in range(30):            xs.append((cx + random.uniform(-1.2, 1.2),                       cy + random.uniform(-1.2, 1.2)))            ys.append(c)    data = list(zip(xs, ys))    random.shuffle(data)    xs, ys = zip(*data)    return list(xs), list(ys)  def active_learning_loop(pool_x, pool_y, test_x, test_y, budget=15):    """主动学习闭环:    模型反馈(熵)选出最不确定样本 -> 模拟人工标注 -> 回填 -> 下一轮"""    labeled_idx = [0]    model = MiniKNN()    history = []    for rnd in range(1, budget):        model.fit([pool_x[i] for i in labeled_idx],                  [pool_y[i] for i in labeled_idx])        unlabeled = [i for i in range(len(pool_x)) if i not in labeled_idx]        pick = max(unlabeled, key=lambda i: model.entropy(pool_x[i]))        labeled_idx.append(pick)        acc = model.score(test_x, test_y)        avg_u = (sum(model.entropy(pool_x[i]) for i in unlabeled)                 / len(unlabeled))        history.append((rnd + 1, len(labeled_idx), acc, avg_u))    return history  if __name__ == "__main__":    xs, ys = make_data()    pool_x, pool_y = xs[:70], ys[:70]    test_x, test_y = xs[70:], ys[70:]    history = active_learning_loop(pool_x, pool_y, test_x, test_y, budget=15)    print("轮次  | 已标注 | 测试精度 | 未标注池平均熵")    for rnd, n, acc, avg_u in history:        print(f"{rnd:>4} | {n:>5} | {acc * 100:6.1f}% | {avg_u:.4f}")
目的:用 90 个合成点模拟主动学习闭环——每一轮通过“熵”反馈挑出最不确定的样本,模拟人工标注后回填,观察测试精度上升、未标注池平均熵下降。
  1. pick = max(unlabeled, key=lambda i: model.entropy(pool_x[i]))模型反馈核心:挑熵最大(最没把握)的样本去标注。
  2. model.fit([pool_x[i] for i in labeled_idx], ...)标注回填后重新训练模型,完成闭环的一圈。
  3. acc = model.score(test_x, test_y)在独立验证集上评估本轮真实精度。
  4. avg_u = sum(...) / len(unlabeled)观测未标注池平均熵,为停止条件提供依据。
  5. history.append((rnd + 1, len(labeled_idx), acc, avg_u))记录每轮数据,画出反馈闭环的轨迹。

常见误区

误区“模型输出 0.48/0.52 我就标它,每轮都这样,应该最优吧?”初学者往往把“最没把握”当成唯一真理,认为主动学习就是不停地挑熵最大样本。

正解不确定性反馈只是信息来源之一。模型可能在同一个噪声区域反复发现“最没把握”,导致重复标注同一类样本。工程上需要轮换或加权多样性指标,让反馈视角不断刷新——侦探总追同一个人,永远破不了团伙案。

为何常见:熵和置信度直观又容易计算,教程里常拿它当开场例子,容易让新手误以为是全部。

误区“反正都是抽样,主动学习和随机标有什么区别?”有人跑一两次实验看到精度接近,就认定主动学习是玄学。

正解随机抽样不依赖模型反馈,预算均匀撒在整片数据上;主动学习的每一步选择都绑定在模型当前状态上,反馈让预算往“信息量最大”的地方倾斜。样本预算紧张或类别不均衡时,差距会被拉得非常大。

为何常见:小数据集上两者精度的确接近,只有规模变大、分布变偏时,反馈机制的价值才显现,初学者样本太小看不到差别。

误区“模型都输出 0.99 的置信度了,它肯定完全懂这个样本。”初学者习惯把概率数值当作客观真相。

正解softmax 是模型内部的相对软输出,会受训练数据分布、类别数、温度参数影响,分布外样本可能被高置信地胡说。模型反馈只能当“相对信号”,真正校准要靠验证集和错误分析交叉验证——侦探的直觉再强,也得拿旧案卷验证。

为何常见:深度学习模型在训练集上置信度普遍高,加上“概率 = 信心”的日常直觉,让人容易上当。

误区“反正预算充足,把池子标空总没错吧?”很多团队把主动学习当成标注游戏,从不设置停止条件。

正解主动学习的经济价值恰恰来自停止:当精度增量连续几轮跌破阈值,继续标注的边际产出趋近于零,不如把预算投到新数据或模型优化。侦探不会用 20 万经费去查一个证据链已经锁死的案子。

为何常见:人天性认为数据越多越好,忽略了数据质量与收益递减曲线,导致标注成本失控。

面试题

Q1. 主动学习反馈机制的核心目标是什么?

单选题 · easy

  • A.让模型自己生成标注来省人力
  • B.用最少的人工标注达到高精度← 正确答案
  • C.增加训练数据以提高计算量
  • D.完全替代深度学习训练流程

答案:B。主动学习要在标注预算有限时,用最少人工标注训练出尽量好的模型,好比侦探的目标是花最少的线人费破案。A 是伪标签范畴,C、D 都不符合定义。

Q2. 以下哪类未标注样本最值得优先标注?

单选题 · easy

  • A.模型预测概率最均匀的样本← 正确答案
  • B.模型预测概率最集中的样本
  • C.特征向量欧氏长度最大的样本
  • D.出现频率最高的训练样本

答案:A。概率分布最均匀意味着熵最大、类别最难分,模型反馈最强烈。侦探总挑“证词最对不上”的人先查,而不是挑最好认的脸。B 是已有把握的,C、D 与信息量无关。

Q3. 已知三分类模型 softmax 输出为 P = (0.90, 0.05, 0.05),用自然对数计算该样本的熵约为多少?

单选题 · mid

  • A.约 0.39← 正确答案
  • B.约 0.95
  • C.约 1.61
  • D.约 0.10

答案:A。H = -0.90×ln(0.90) - 0.05×ln(0.05) - 0.05×ln(0.05) ≈ 0.39。这就像估算一卷证词的混乱程度:几乎一边倒的证词熵很低,B/C/D 都是取对数或加权时的典型计算错误。

Q4. 在混淆矩阵中,元素 n_ij 的正确含义是什么?

单选题 · mid

  • A.第 i 类样本被模型判为第 j 类的数量← 正确答案
  • B.第 j 类样本被模型判为第 i 类的数量
  • C.模型在验证集上正确预测的总数
  • D.训练集中第 i 类样本的出现次数

答案:A。混淆矩阵的行是真实类别、列是预测类别,n_ij 表示“真实是 i 却被判成 j”。好比区分“凶手装成维修工”和“维修工被误抓”,方向错了整个分析就反了。

Q5. 哪些信号说明主动学习该调换标注策略?

多选题 · mid

  • A.不确定性采样反复选同一簇样本← 正确答案
  • B.新标注样本带来的精度增益趋近于零← 正确答案
  • C.已标注数据总量超过十万条
  • D.未标注池中多样性样本占比过低← 正确答案

答案:ABD。不确定性采样选不出去重样本(A)、精度增益趋零(B)、多样性不足(D)都是策略需要切换的信号;侦探发现反复查同一个人、新情报毫无增量时,就该换一套排查思路。C 中“总量大”本身不是切换依据。

Q6. 为什么停止条件不能只盯着测试精度?

单选题 · hard

  • A.测试精度计算开销太大
  • B.测试精度需要预留标注集,加剧标注成本← 正确答案
  • C.测试精度没有上限可以无限提高
  • D.测试精度与标注数量完全无关

答案:B。测试集也要人工标注,在主动学习预算里是隐形成本;为一桩案子专门养一支测评队会比多雇线人还贵。A 不是核心矛盾,C、D 不符合事实。

Q7. 工程化实现反馈闭环时,哪些设计是合理的?

多选题 · hard

  • A.反馈与标注队列解耦异步回填← 正确答案
  • B.每次只允许一个样本进出队列
  • C.监控标注延迟与吞吐量指标← 正确答案
  • D.把模型反馈日志单独落库← 正确答案

答案:ACD。反馈闭环应当解耦异步(A)、可监控(C)、可回溯(D);情报管道要能同时跑多个线人,而不是只允许单线联系。B 的“单样本进出”会严重拖慢吞吐,不合理。

Q8. 边缘采样(margin sampling)选择样本的标准是?

单选题 · mid

  • A.取预测概率前两类差距最小的样本← 正确答案
  • B.取预测概率最大和最小差最大的样本
  • C.随机选择决策边界附近的噪声样本
  • D.只选择人工标注过的边界样本

答案:A。边缘采样看“最可能的两个类别的概率差”,差越小说明边界越模糊,越值得标。侦探更在意两个嫌疑人的证词“几乎一致”的关键对质,而不是听最响的声音。

Q9. 主动学习反馈闭环中,人工标注员的角色是?

单选题 · easy

  • A.替代模型的训练过程
  • B.为模型推荐样本提供真实标签← 正确答案
  • C.决定神经网络的所有超参数
  • D.维护模型推理的硬件环境

答案:B。标注员的核心职责是给模型反馈指定的样本打真实标签。线人的活儿是回来报告真相,而不是替侦探写判决书。A、C、D 都偏离了标注在闭环中的定位。

Q10. 关于模型“过度自信”的说法,哪些是正确的?

多选题 · extreme

  • A.softmax 高概率不等同高正确率← 正确答案
  • B.分布外数据可能给出极高置信度← 正确答案
  • C.过度自信可用温度缩放校准← 正确答案
  • D.置信度越高越不值得标注意见

答案:ABC。softmax 置信度可能来自过拟合或分布外数据,不等于准确率高(A、B);温度缩放能重新校准置信度(C);而高置信度的样本仍可能是对抗样本或误标样本,照样值得标注(D 错)——一个满脸自信的说谎者,侦探反而更要留个心眼。