Boundary Lab
点ではなく決定境界を調べます。ラベルが付くたびに、Potatoは最小限の反実仮想的な編集でその判断が変わるかを尋ね、通常のアノテーションからコントラストセットと品質管理を生み出します。
v2.7.0の新機能
どのアノテーションツールも点のラベルを集めます。アイテムXにラベルY、という具合です。Boundary Lab(境界ラボ)は、Potatoに決定境界を集めさせます。アノテーターがラベルを確定した瞬間、Potatoはテキストに最小限の反実仮想的な編集を加えたものを提示し、1つずつ尋ねます。
あなたは Polite と答えました。この編集を加えても、その判断は保たれますか?

回答はクリック1回で済みます。こうして通常のアノテーションから、素のラベル出力では得られない3つの成果物が生まれます。
- コントラストセットが手間なく手に入る。 回答済みのプローブはすべて、ラベル付きの*(オリジナル, 反実仮想)*ペアです。反実仮想で拡張したデータはモデルの頑健性を高めることが示されています(Gardner et al. 2020、Kaushik et al. 2020)。コントラストセットの構築は通常、別立ての手間のかかる作業です。
- 境界の根拠。 ラベルが反転したとき、アノテーターは何が線を越えさせたのかを述べます。この根拠は、コードブックのどこが曖昧なのかを突き止めます。
- 見えない品質管理。 不変性プローブは意味を保つ言い換えなので、一貫したアノテーターがここで判断を変えることはありません。変えてしまったアノテーターはダッシュボードでフラグ付けされます。偽のゴールドアイテムを1つも仕込まずに、注意力のシグナルが得られます。
設定
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プローブのソース
プローブは3つの層から供給されます。前の層が埋めきれなかった枠を後の層が埋めるので、条件が揃わなくても機能は段階的に縮退します。
precomputed — 精選した反実仮想をデータと一緒に配布します。決定的なので、統制された研究に向いています。
{"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をまったく設定しなくてもBoundary Labを動かせる理由です。
プローブの種類と判定
| 種類 | 意味 | 期待される挙動 |
|---|---|---|
flip | ラベルの境界を越えることを狙った最小の編集 | 反転しても保たれてもよい。どちらも情報になる |
invariance | 意味を保つ言い換え | 反転しないはず。反転は一貫性の欠如を示す |
アノテーターは各プローブに holds(ラベルは保たれる)、flips(ラベルが変わる。新しいラベルを選び、任意で理由を述べる)、can't tell(判断できない)のいずれかで答えます。
ダッシュボード
/boundary/dashboard(管理者アクセス)で確認できます。
- ラベル別の境界感度 — 各ラベルを狙った最小編集のうち、実際に反転した割合。反転率90%はそのラベルが紙一重のところにあることを、10%は小さな摂動に対して頑健であることを意味します。
- アノテーターの不変性一貫性 — 言い換えプローブに対するアノテーターごとのhold率。60%を下回ると赤でフラグ付けされます。
- ラベルが反転する場所 — 確認された反転を、単語単位の差分とアノテーターの根拠とともに並べたギャラリー。
コントラストセットのエクスポート
GET /boundary/api/export(管理者)はJSONLをダウンロードします。回答済みプローブ1件につき、ラベル付きペアが1行です。
{"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 が元のラベルと同じ値でエクスポートされるので、hard negativeとして使えます。unsure の判定は除外されます。
設計上のメモ
- プローブは (instance, schema, label) ごとにキャッシュされ、アノテーター間で共有されます。そのため不変性の一貫性はアノテーター同士で比較できます。
- プローブのパネルはオーバーレイです。メインのアノテーション作業を妨げることはなく、プローブへの回答は任意で、アノテーターはいつでも閉じられます。
- 現時点でプロービングの対象は、タスクごとに1つの単一選択(
radio)スキーマです。
参考資料
- Truth Serum — ゴールドラベルに頼らないもうひとつの品質シグナル
- 品質管理 — 注意力チェックとゴールドスタンダード
- ゴールドスタンダードと注意力チェック
- ソースドキュメント