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)方案做探查。

延伸閱讀