假设你是一家老字号餐厅的厨师长,招牌菜太火,后厨实在忙不过来。为了赶时间,你请了三位帮厨:王姐出活快但口味偏咸,李哥麻利但偶尔马虎,小张认真却只熟悉部分食材。帮厨便宜、出活快,可问题来了——他们备的菜,能不能直接下锅? 弱监督干的就是这件事:写几条“标注函数”当帮厨,让它们自动给数据打标签,替代昂贵的人工标注。数据量是上来了,但质量没人敢打包票。不管质检直接开火,坏食材会毁掉整桌菜——模型学到的全是噪音。 所以行家在动锅前,都有一套验收流程:拿帮厨的菜和大厨亲手备的对比(弱标注 vs 真实标签)、检查备菜覆盖了菜单上几道菜(覆盖率)、看看帮厨们有没有意见打架(冲突率)、甚至先端出一盘菜试味道(端到端训练模型)。这篇文章就把这套“帮厨验收体系”拆开讲透,让你在弱监督数据上训练模型之前,先心里有底。

岗位关联

学会弱监督质量评估,你就能在几分钟内判断一批弱标注能不能用、哪里需要修,避免拿劣质数据训出坏模型——这是弱监督落地前最后一道、也是最关键的一道防线。

目录
  1. 可视化演示
  2. 对比真实标签——给弱标注来一次“对答案”
  3. 覆盖与冲突——备料够不够、帮厨打不打架
  4. 模型性能验证——好不好,尝一口就知道
  5. 迭代质量提升——让帮厨越干越好
  6. 评估自动化——装一条自动质检流水线
  7. 实战工具链——厨房管理看板
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示弱监督生成的标注行不行?质量的核心机制,通过全局/局部/动态/静态四种模式展示关键概念与交互流程。

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

弱监督生成的标注行不行?质量:弱监督质 弱监督质量评估的必要性与整体框 弱标注与金标准真实标签的对比评 核心机制可视化 弱监督生成的标注行不行?质量整体架构与关键组件

对比真实标签——给弱标注来一次“对答案”

厨师长最朴素的验收方法是什么?把帮厨备的菜端到自己砧板前,亲手切一份标准样品,两相对比。萝卜丝该切多细、牛肉该切什么纹路,一比就知道帮厨合不合格。不用听任何解释,刀子上的功夫骗不了人。

在弱监督里,“标准样品”就是一小批人工精标的真实标签,“帮厨的菜”就是标注函数自动打出的弱标注。做法很直观:从数据里随机抽一批样本,让弱标注和真实标签逐条“对答案”。但抽样要讲究,只抽简单样本,体检报告一定好看,却不代表真实水平,要用分层抽样让难易样本、各个类别都覆盖到。

对答案的过程产出两个核心指标:准确率回答“总共对了几条”,混淆矩阵回答“错在哪类、怎么错的”。再往下做偏差分析——如果发现负类样本被大量误判成正类,说明标注函数对负类的判别规则太激进,这就是后续优化的线索。

这份体检报告虽然只覆盖抽样部分,但足以让厨师长判断要不要信任这批帮厨。如果准确率不到七成,先把明显不合格的函数退回重写,而不是急着开火——毕竟一锅菜下去,坏食材的味道就再也捞不出来了。

Accuracy=TP+TNTP+TN+FP+FN\displaystyle \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
准确率就是“判断正确的样本数”除以“所有抽查样本数”,分母里四个字母分别代表四种判断结果。
  1. TP——说中了的正类帮厨说是正类、大厨也确认是正类的那批样本,判对了,加分项。
    TPTP
  2. TN——说中了的负类帮厨说是负类、大厨也确认是负类,同样判对了。
    TNTN
  3. FP——看走眼的正类帮厨打了正类、真实却是负类,这叫“误报”,相当于把猪肉当羊肉切了。
    FPFP
  4. FN——漏掉的正类帮厨打了负类、真实却是正类,这叫“漏报”,相当于菜单上有这道菜却没备料。
    FNFN
  5. 分子分母相除分子是所有判对的数量,分母是抽查总数,一除就得到整体准确率。
    TP+TNTP+TN+FP+FN\frac{TP + TN}{TP + TN + FP + FN}

覆盖与冲突——备料够不够、帮厨打不打架

有了“对答案”这关还不够,因为帮厨有可能只挑自己会切的菜干,把你的招牌菜晾在一边。厨师长还得再查两件事:菜单上的菜,备料到底覆盖了几道?两位帮厨对同一道菜,有没有给出相反的处理意见?

这两个问题对应弱监督中的覆盖率和冲突率。覆盖率回答“够不够”:至少有一个标注函数给出标签的样本,占全部样本的比例。冲突率回答“乱不乱”:多个函数对同一样本给出不一致标签的样本占比。一个管数量,一个管质量,两者互补缺一不可。

覆盖率低的风险在于,大量样本没有标签,训练时被白白丢弃,模型在未覆盖区域容易“放飞自我”;更隐蔽的是分布偏差——如果难的样本全没被覆盖,模型就永远学不会难题。冲突率高则说明函数在某类样本上判别规则互相矛盾,直接套用多数投票可能埋雷,需要定位冲突集中在哪些特征上。

冲突率的计算方法完全对称:只要某条样本上存在两种及以上不同的标签,就计一次冲突。

覆盖率像“开业前点齐菜单”,冲突率像“后厨对菜谱有争议”。两项都合格,备料这一关才放行;否则就算勉强开火,上菜时也会状况百出。

Coverage=1N∑i=1Nci,ci={1if sample i is covered0otherwise\displaystyle \text{Coverage} = \frac{1}{N} \sum_{i=1}^{N} c_i, \quad c_i = \begin{cases} 1 & \text{if sample } i \text{ is covered} \\ 0 & \text{otherwise} \end{cases}
覆盖率就是“被至少一位帮厨接手的样本数”除以“全部样本数”,先给每道菜打钩,再数钩子。
  1. d_i——冲突标记同一份食材,两位帮厨给出不同处理意见,就是一次冲突事件。
    di=1(disagree on sample i)d_i = \mathbb{1}(\text{disagree on sample } i)
  2. 归一化成比例把冲突事件数除以样本总量,方便跟其他数据集横向比较。
    1N∑i=1Ndi\frac{1}{N} \sum_{i=1}^{N} d_i

模型性能验证——好不好,尝一口就知道

后厨备料看着都齐,但菜到底好不好吃,只有下了锅端上桌才知道。厨师长最信服的验收方式,是拿帮厨备的菜做一道招牌菜,请老顾客试吃打分——舌尖不会说谎。

对应到机器学习:把弱标注当作训练标签,端到端训练一个目标模型,在干净的验证集或测试集上评估性能。这是“用脚投票”——标注好不好,模型替你说。它绕开了“单个标签对不对”的纠缠,直接回答“用这批数据训出来的东西能不能用”。

技术上有三个要点。第一,必须有对照组:用真实标签训练同款模型作为“天花板”基线,如果弱标注模型与它的差距在可接受范围(比如三到五个百分点),说明标注可用。第二,指标要选对:分类不平衡时,准确率会骗人,F1 是精确率和召回率的调和平均,能同时惩罚误报和漏报。第三,可以做消融实验:逐个移除某些标注函数,看模型性能掉不掉,从而定位真正起作用的函数。

试吃结果太差,说明问题可能不在个别帮厨,而是整套备料思路都要调整。反过来,试吃合格也不等于万事大吉,别忘了这份评分只代表“招牌菜能做”,其他菜色还需要继续监督。

F1=2×Precision×RecallPrecision+Recall\displaystyle \text{F1} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
F1 是精确率(判正类准不准)和召回率(正类抓得全不全)的调和平均,偏科太严重时分数会被狠狠拉低。
  1. 精确率 Precision模型判为正类的样本里,真正是正类的比例,对应“切出来的是不是好肉”。
    Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}
  2. 召回率 Recall真实正类样本里,被模型成功抓到的比例,对应“该切的好肉切出来多少”。
    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
  3. 调和平均两者相乘再乘 2 处以两者之和,任意一方拉胯都会让 F1 明显下降。
    F1=2×Precision×RecallPrecision+Recall\text{F1} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

迭代质量提升——让帮厨越干越好

质量评估不是一次性验收,而是持久战。发现菜切歪了,厨师长要指出是哪位帮厨、哪个动作出的错,让他下次改进——真正的后厨高手,都是这么一碟一碟调教出来的。

迭代提升的第一步是错误归因:把模型预测错的样本拎出来,逆推它们是哪条标注函数打的标。如果一批错误样本都来自同一个函数的规则,问题就锁定在它身上。第二步是函数优化:加规则、调阈值、合并重叠函数,甚至删掉一直在帮倒忙的函数。

第三步是用加权投票替代简单多数。现实中,有的帮厨又稳又准,有的只会瞎咋呼,一视同仁地投票会被噪音带偏。给历史上一致率高的函数更大权重,让可靠的帮厨拥有更大的话语权。最后设一道“质量门禁”:覆盖率、冲突率、一致率三项都过线,这批数据才允许进入训练流水线。

每次迭代都像开一次复盘会:帮厨的错误被点名、被修正,备料质量螺旋上升。几轮下来,弱标注的质量甚至能逼近人工标注,而成本只有人工的零头。

y^i=arg⁡max⁡y∈{0,1}∑j=1Mwj⋅1(λj(xi)=y)\displaystyle \hat{y}_i = \arg\max_{y \in \{0,1\}} \sum_{j=1}^{M} w_j \cdot \mathbb{1}\left( \lambda_j(x_i) = y \right)
每个标注函数给样本投一票,最终选得票最多的类别当弱标签;票的份量由权重 w_j 决定。
  1. 标注函数投票每个函数 λ_j 对样本 x_i 输出一个标签,等于帮厨投出一票。
    λj(xi)=y\lambda_j(x_i) = y
  2. 权重加权w_j 是第 j 位帮厨的信誉分,越准权重越大,它的一票含金量越高。
    wj⋅1(λj(xi)=y)w_j \cdot \mathbb{1}(\lambda_j(x_i) = y)
  3. argmax 汇总0 和 1 两类分别累计加权票数,谁高谁胜出,成为这条样本的弱标签。
    y^i=arg⁡max⁡y∈{0,1}∑j=1Mwj⋅1(λj(xi)=y)\hat{y}_i = \arg\max_{y \in \{0,1\}} \sum_{j=1}^{M} w_j \cdot \mathbb{1}(\lambda_j(x_i) = y)

评估自动化——装一条自动质检流水线

后厨越做越大,帮厨越来越多,厨师长不可能天天站在砧板边盯人。他需要一条自动质检流水线:每批备料自动过检,合格放行,异常亮灯,不必事事亲力亲为。

弱监督流水线同样要加一个自动化评估层:每次重跑标注函数生成数据后,自动计算覆盖率、冲突率、抽样一致率,并持续监控这些指标的变化。指标突然跳水,多半是数据分布变了或者某条函数失效了,系统应自动标记出来。

没有真实标签时怎么自动化评估?两条路径:一是一致性检验,让两个独立的标注函数或两个模型版本对同一批样本输出,用 Cohen's Kappa 计算扣除运气后的一致性——两位帮厨不约而同地犯同一个错的概率很低;二是无标签置信度分析,算出模型预测的熵,熵高的样本大概率是标注没覆盖好的区域,值得优先人工复核。最后配上预警机制:指标越界,自动通知负责人。

有了这条自动流水线,厨师长终于从琐事里解放出来,只在警报响起时出面处理。评估从“偶尔抽查”变成“时刻在线”,弱监督的质量底线才算真正兜住。

κ=po−pe1−pe\displaystyle \kappa = \frac{p_o - p_e}{1 - p_e}
Kappa 系数衡量“排除瞎猜运气后”两个标注者真实的一致程度,是自动化质检里最常用的探针。
  1. p_o——观测一致率两位标注员在样本上实际达成一致的比例。
    pop_o
  2. p_e——期望一致率假设两人各自按自己的比例随机打标,纯靠运气“撞上”一致的比例。
    pep_e
  3. 排除运气求真实一致性分子是“实际一致减去运气一致”,分母是“完美一致减去运气一致”,比值越高越可靠。
    κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}

实战工具链——厨房管理看板

好厨师长不光会炒菜,还会把整个备料流程管成体系:谁负责什么、每道菜备到哪一步、哪家供应商靠谱,看板上一目了然。管理靠体系,工程质量才稳定。

工程上,做弱监督质量评估最常用的基础设施是 Snorkel 框架。它把“写规则”这件事声明式地表达出来:你只管写标注函数,Snorkel 会自动学习每个函数的准确度并建模它们之间的相关性,最后输出一个融合好的干净训练集。质量评估的许多指标,在它内部就有对应实现。

完整的工具链还包括三个部分:函数管理(每条函数的版本、上线与下线、生效范围都要记录在案)、可视化看板(把覆盖、冲突、一致率画成折线,随每次迭代实时刷新)、实验记录(每次策略改动的指标快照都落库,方便复盘什么改动真正有效)。最后可以合成一个综合质量分作为看板上的“红绿灯”。

当厨师的每一条直觉都变成看板上的数字,弱监督就不再是“玄学”,而是一套可审计、可复盘的工程体系。质量评估的终极目标正是如此:让每一份弱标注的来路和成色,都有据可查。

Q=Coverage+(1−ConflictRate)+Agreement3\displaystyle Q = \frac{\text{Coverage} + (1 - \text{ConflictRate}) + \text{Agreement}}{3}
综合质量分把“够不够、乱不乱、准不准”三个维度揉成一个 0 到 1 的数字,绿灯放行、红灯返工。
  1. Coverage——够不够覆盖率衡量有标签的样本占比,数量维度。
    Coverage\text{Coverage}
  2. 1 - ConflictRate——乱不乱冲突率的反指标,冲突越少,这个维度得分越高。
    1−ConflictRate1 - \text{ConflictRate}
  3. Agreement——准不准弱标注与真实标签抽样对比的一致率,质量维度。
    Agreement\text{Agreement}
  4. 取平均得总分三个归一化指标相加除以 3,得到看板上的综合质量分。
    Q=Coverage+(1−ConflictRate)+Agreement3Q = \frac{\text{Coverage} + (1 - \text{ConflictRate}) + \text{Agreement}}{3}

AI 应用场景

场景一:电商评论情感分析的质量把关

阶段:数据质量评估(模型训练前)

解决的问题:传统做法是把评论外包给标注公司,一万条要花几千块、等一周。算法团队用关键词加依存句法写了 20 条标注函数,成本几乎为零,但谁也不敢保证这批自动标注靠谱。用质量评估先抽样对比真实标签,再看覆盖和冲突,确认合格后才敢进训练流程。

具体案例:某电商平台做评论情感分析时发现,“物流慢但客服态度好”这类矛盾评论,两条标注函数一个判正一个判负,冲突率高达 18%。通过冲突样本热力图定位到是“转折句式”没覆盖,补了一条处理“但/然而”的规则后冲突率降到 4%,模型 F1 从 0.71 提升到 0.83。

场景二:智能客服意图识别的持续监控

阶段:持续迭代与上线监控

解决的问题:弱标注上线后质量会漂移——用户话术总在变,老规则慢慢失效。靠人工抽测成本高、响应慢,需要自动化质量面板每天盯住覆盖率和冲突率,设置质量门禁,谁不过线谁返工。

具体案例:某银行客服机器人每周新增 5 万条会话,弱监督流水线自动打标。某天上线新活动后,“转账”意图的覆盖率从 82% 跌到 60%,监控面板立即预警。算法工程师定位到是新活动相关的口语化话术没有规则覆盖,及时补充了三条标注函数,避免了下周训练数据被污染。

Python 演示

python59 行
# -*- coding: utf-8 -*-"""弱监督标注质量评估: 覆盖 / 冲突 / 一致率 / 端到端验证"""import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score np.random.seed(42)N = 1000X = np.random.randn(N, 4)y_true = (X[:, 0] + 0.6 * X[:, 1] > 0).astype(int)   # 模拟真实标签 def lf_a(row, idx):   # 帮厨A: 只认第一个特征    if idx % 4 == 0:        return None    return int(row[0] > 0) def lf_b(row, idx):   # 帮厨B: 结合前两个特征    if idx % 5 == 0:        return None    return int(row[0] + row[1] > 0.2) def lf_c(row, idx):   # 帮厨C: 只认第二个特征    if idx % 7 == 0:        return None    return int(row[1] < 0) labels = np.full(N, -1)          # -1 表示该样本未被任何函数覆盖covered_count = 0conflict_count = 0for i in range(N):    votes = []    for fn in (lf_a, lf_b, lf_c):        label = fn(X[i], i)        if label is not None:            votes.append(label)    if not votes:        continue    covered_count += 1    if len(set(votes)) > 1:        conflict_count += 1    labels[i] = 1 if sum(votes) >= 2 else 0    # 多数投票融合 mask = labels != -1coverage = covered_count / Nconflict_rate = conflict_count / covered_countagreement = accuracy_score(y_true[mask], labels[mask])print("覆盖率: %.1f%%" % (100.0 * coverage))print("冲突率: %.1f%%" % (100.0 * conflict_rate))print("弱标注与真实标签一致率: %.1f%%" % (100.0 * agreement)) weak_model = LogisticRegression()weak_model.fit(X[mask], labels[mask])weak_score = accuracy_score(y_true, weak_model.predict(X)) oracle_model = LogisticRegression()oracle_model.fit(X, y_true)oracle_score = accuracy_score(y_true, oracle_model.predict(X))print("弱标注训练模型准确率: %.4f" % weak_score)print("真实标注训练模型准确率: %.4f" % oracle_score)
目的:模拟三位“帮厨”(标注函数)自动生成弱标注,先算覆盖率、冲突率、一致率,再端到端训练模型并与真实标签训练的结果对比,演示完整质量评估流程。
  1. labels = np.full(N, -1)初始化弱标签容器,-1 表示这条样本没有任何函数认领
  2. if label is not None: votes.append(label)帮厨给出标签才记一票,弃权不算
  3. if len(set(votes)) > 1: conflict_count += 1set 去重后超过一个值,说明帮厨们打架了
  4. labels[i] = 1 if sum(votes) >= 2 else 0多数投票融合各路意见,得到最终弱标签
  5. mask = labels != -1只保留被覆盖的样本参与后续评估
  6. weak_model.fit(X[mask], labels[mask])用弱标注训练真实模型,这是“端到端试吃”
  7. oracle_model.fit(X, y_true)用真实标签训练对照组,作为质量天花板
  8. print("覆盖率: ...")三个质量指标一屏展示,对应看板上的红绿灯

常见误区

误区“覆盖率都到 95% 了,这批弱标注肯定没问题,直接拿去训练吧!”初学者很容易把覆盖率当成唯一的信赖指标。

正解覆盖率只回答“多少样本有标签”,不回答“标签对不对”。覆盖率 95% 但一致率只有 40%,照样训出坏模型。覆盖率是数量维度指标,必须和冲突率、一致率、模型端到端验证搭配看——就像后厨备料充足,不代表每道菜都做得好吃。

为何常见:覆盖率最容易计算、最直观,人天生喜欢用一个数字下结论,于是把“量足”误解成“质优”。

误区“两个函数打架?把打架的样本全删了,数据集立刻干净,训练也快。”这是处理脏数据时的本能反应。

正解删样本会带来两重伤害:一是信息损失,冲突样本往往是难度最高的边界样本,全删了模型永远学不会难点;二是掩盖问题,冲突背后极可能是某条函数的设计缺陷,删掉等于不修。正确做法是分析冲突集中在哪些特征上,修掉出问题的函数。

为何常见:“删数据”是日常清洗脏数据的惯性动作,操作简单见效快,容易被直接搬到弱监督场景误用。

误区“模型线上跑得挺稳,F1 也达标,弱标注那步就不要再折腾了。”

正解模型效果好可能是运气:训练分布和测试分布恰好重合、任务本身简单、或存在信息泄漏。弱监督数据在长尾部分的错误照样会潜伏到线上,等到新场景才爆发。要留出与训练互不重叠的干净验证集做端到端评估,而不是只看上线指标。

为何常见:人们习惯用最终结果反推过程质量,但机器学习里“结果好”和“标注好”既不是充分条件也不是必要条件。

误区“我们没有任何人工标注数据,所以质量评估根本做不了,只能碰运气。”

正解有真实标签的抽样对比是黄金标准,但不是唯一手段。可以计算函数间的一致性检验 Kappa、分析模型预测熵、把弱标注放进无监督任务里验证聚类一致性。评估的目的是“发现问题”,没有金标准也有不少探针可用。

为何常见:对比评估太深入人心,让人误以为评估只能依赖对比对象,忽略了统计方法在无标签场景下的威力。

面试题

Q1. 弱监督中,覆盖率指的是什么?

单选题 · easy

  • A.被至少一个标注函数覆盖的样本占比← 正确答案
  • B.标注函数输出正类标签的比例
  • C.人工复核样本占全部数据的比例
  • D.模型在测试集上预测正确的比例

答案:A。覆盖率衡量“有多少样本被标注函数接手了”,分母是全部样本、分子是被至少一个函数覆盖的样本。它回答“够不够”,不回答“准不准”,因此不能替代一致率、冲突率等质量指标。

Q2. 冲突率描述的是哪种情况?

单选题 · easy

  • A.同一函数在不同批次上结论的矛盾
  • B.多个函数对同一样本给出不同的标签← 正确答案
  • C.弱标签与真实标签不一致的比例
  • D.模型训练时损失函数震荡的频率

答案:B。冲突率专门衡量“多个标注函数在同一条样本上给出不同标签”的占比,相当于帮厨对同一道菜意见打架。它跟模型训练动态无关,也跟真实标签无关,是纯标注层指标。

Q3. 抽样人工复核弱标注时,正确的做法是?

单选题 · mid

  • A.只抽最容易的样本看结果
  • B.分层随机抽样覆盖各难度段← 正确答案
  • C.只抽难样本忽略简单段
  • D.把全部数据都人工重标

答案:B。抽样要能代表整体,只抽简单样本会让准确率虚高,只抽难样本会低估质量。分层随机抽样按类别、难度均匀取样,得到的体检报告才可信。全量人工重标成本太高,违背弱监督初衷。

Q4. 为什么分类不平衡时要优先看 F1 而不是准确率?

单选题 · mid

  • A.精确率和召回率的简单平均
  • B.调和平均可平衡漏报与误报← 正确答案
  • C.只关心正类预测的准确率
  • D.只关心负类预测的准确率

答案:B。正负类严重失衡时,模型全预测负类也能拿到很高准确率,产生“假健康”。F1 是精确率和召回率的调和平均,漏报和误报任何一边偏科都会明显拉低分数,所以更能暴露弱标注的真实缺陷。

Q5. 弱监督质量迭代提升的第一步应该做什么?

单选题 · mid

  • A.随机增加几条新的标注函数
  • B.错误归因找出问题在哪条函数← 正确答案
  • C.把现有标注函数全部删除
  • D.直接调大模型的学习率参数

答案:B。迭代讲究对症下药。先把预测错误的样本逆推回对应的标注函数,定位病灶,再决定是改规则、调阈值还是删函数。乱加函数、全盘删除都是盲动,调学习率更是与标注质量无关。

Q6. 没有真实标签时,如何评估弱标注质量?

单选题 · hard

  • A.没有真实标签就完全无法评估
  • B.一致性检验加置信度分析← 正确答案
  • C.直接看训练损失值的大小
  • D.靠猜靠感觉拍脑袋决定

答案:B。真实标签对比是黄金标准,但不是唯一出路。可用 Cohen's Kappa 做函数间一致性检验,排除运气后的高一致性能间接反映质量;模型预测熵高说明该区域标注没覆盖好,也值得人工复核。训练损失受模型容量影响,不能直接代表标注质量。

Q7. Cohen's Kappa 与简单一致率的核心区别是什么?

单选题 · hard

  • A.它扣除了随机达成一致的影响← 正确答案
  • B.Kappa 的运算速度比一致率快
  • C.Kappa 只能处理二分类任务
  • D.Kappa 不需要任何标注信息

答案:A。两位标注者即使完全瞎猜,也会有一部分样本“碰巧一致”,简单一致率会高估真实一致性。Kappa 用 p_o 减去运气成分 p_e,再除以 1 减 p_e,得到的是排除运气后的真实一致性,因而更可靠。

Q8. 覆盖率低会带来哪些风险?

多选题 · easy

  • A.大量样本无标签造成数据浪费← 正确答案
  • B.模型在未覆盖区域预测不稳定← 正确答案
  • C.模型一定会在训练集上过拟合
  • D.覆盖率低说明标注精度一定高

答案:AB。覆盖率低意味着大量样本没被任何函数认领,这些数据在训练时被丢弃,模型在对应区域没有监督信号,预测自然不稳定。过拟合与否要看模型与数据复杂度,跟覆盖率没有必然关系;覆盖率低也不代表精度高,两者是不同维度的指标。

Q9. 弱标注冲突率升高,可能的原因有哪些?

多选题 · mid

  • A.标注函数依赖了不同的特征← 正确答案
  • B.样本处于决策边界的模糊地带← 正确答案
  • C.数据集里全都是无关的特征
  • D.标注函数太少导致覆盖不足

答案:AB。冲突的根源是“同样一条样本,规则打架”。函数各看各的特征,比如一个看长度一个看情感词,遇到“又长又差评”的样本就会冲突;样本本身处于决策边界时,任何规则都容易犹豫。函数太少通常导致覆盖率低,而不是冲突率高。

Q10. 下列哪些是弱监督质量评估的正确做法?

多选题 · extreme

  • A.抽样对比真实标签算准确率← 正确答案
  • B.分析覆盖率与冲突率的分布← 正确答案
  • C.端到端训练模型验证效果← 正确答案
  • D.只看覆盖率一个指标就决策

答案:ABC。完整的质量评估体系包括三根支柱:抽样对比真实标签看准不准、覆盖与冲突分析看够不够和乱不乱、端到端模型验证看最终效果。任何单一指标(尤其是覆盖率)都不足以支撑“直接训练”的决策,必须综合评价。