Skip to content

边界实验室

探查决策边界,而不只是那一个点。标注者每次给出标签后,Potato 都会追问:一处最小的反事实改动会不会推翻它——让普通标注顺带产出对比集和质量控制信号。

v2.7.0 新增

所有标注工具收集的都是点标签:条目 X 得到标签 Y。边界实验室(Boundary Lab)让 Potato 收集的是决策边界。标注者提交标签的那一刻,Potato 会展示对文本的最小反事实改写,一次问一个探针:

你选的是 Polite。这处改动之后它还成立吗?

标注后在带颜色的差异对比上进行反事实探查:“它还成立吗?”

每次回答只需一次点击。普通的标注流程于是产出三样纯标签导出拿不到的东西。

  1. 顺带得到对比集。 每个回答过的探针都是一对带标签的 (原文, 反事实) 数据,也就是被证明能提升模型鲁棒性的反事实增强数据(Gardner et al. 2020Kaushik et al. 2020)。构建对比集通常是一项单独且昂贵的工作。
  2. 边界理由。 标签发生翻转时,标注者要说出是什么越过了那条线。这些理由能精确指出标注手册在哪里有歧义。
  3. 无形的质量控制。 不变性探针是保持语义的改写,一致的标注者绝不会在它们上面翻转。翻转的人会在仪表板上被标出来,你不用埋一条假的黄金条目就拿到了注意力信号。

配置

yaml
boundary_probing:
  enabled: true
  schema: politeness          # scheme to probe (default: first radio scheme)
  probes_per_item: 3          # probes per (instance, label), invariance included
  include_invariance: true    # add one paraphrase probe (the QC signal)
  sources:                    # probe generation tiers, in priority order
    - precomputed
    - llm
    - rules
  precomputed_key: counterfactuals   # item-data field for precomputed probes
  rationale_on_flip: true     # ask "what crossed the line?" when a label flips
  debounce_ms: 900            # delay between label selection and probe fetch

探针来源

探针来自三个层级。后面的层级会填补前面层级留空的位置,因此功能可以优雅降级。

precomputed —— 随数据一起提供人工整理好的反事实样本。确定性强,适合受控研究:

json
{"id": "req_02", "text": "Send me the slides before the meeting.",
 "counterfactuals": [
   {"text": "Please send me the slides before the meeting.", "kind": "flip",
    "edit_hint": "added \"please\""},
   {"text": "Before the meeting, send me the slides.", "kind": "invariance",
    "edit_hint": "reordered clauses"}
 ]}

llm —— 用任意已配置的 AI 端点(Anthropic、OpenAI、Ollama、vLLM)即时生成探针。探针按 (instance, label) 生成一次并在标注者之间共享,因此 LLM 成本取决于数据集规模,而不是标注者人数。

rules —— 确定性的词汇变换:否定翻转、程度词替换、礼貌标记、标点强度,以及用于不变性的缩写或问候语改写。它没有依赖,也不调用模型,这正是边界实验室在完全不配置 LLM 的情况下也能运行的原因。

探针类型与判定

类型含义预期行为
flip意在跨越标签边界的最小改动可能翻转也可能保持 —— 两种结果都有信息量
invariance保持语义的改写不应翻转;翻转说明标注前后不一致

标注者对每个探针的回答有三种:holds(标签依然成立)、flips(标签改变,此时要选出新标签,并可选说明原因),或 can't tell(说不准)。

仪表板

/boundary/dashboard(需管理员权限):

  • 按标签的边界敏感度 —— 针对每个标签的最小改动中,发生翻转的比例。90% 的翻转率说明这个标签处在刀刃上;10% 则说明它对小扰动很稳健。
  • 标注者不变性一致度 —— 每个标注者在改写探针上的保持率,低于 60% 会标红。
  • 标签在哪里翻转 —— 已确认翻转的合集,附带词级差异对比和标注者写下的理由。

对比集导出

GET /boundary/api/export(管理员)下载 JSONL,每个回答过的探针一行带标签的数据对:

json
{"instance_id": "req_02", "schema": "politeness",
 "original_text": "Send me the slides before the meeting.",
 "original_label": "Impolite",
 "counterfactual_text": "Please send me the slides before the meeting.",
 "counterfactual_label": "Neutral",
 "kind": "flip", "flipped": true,
 "rationale": "please softens the command",
 "edit_hint": "added \"please\"", "probe_source": "precomputed",
 "annotator": "alice", "timestamp": 1783827299.4}

holds 判定导出时 counterfactual_label 等于原标签,因此可以拿来当困难负例用。unsure 判定不会导出。

设计说明

  • 探针按 (instance, schema, label) 缓存并在标注者之间共享,因此不变性一致度在标注者之间是可比的。
  • 探针面板是一层浮层。它不会打断主标注流程,探针回答是可选的,标注者随时可以关掉它。
  • 目前每个任务只针对一个单选(radio)方案做探查。

延伸阅读