Skip to content

Boundary Lab

Die Entscheidungsgrenze sondieren, nicht nur den Punkt. Nach jedem Label fragt Potato, ob eine minimale kontrafaktische Änderung es kippen würde, und gewinnt so Kontrastmengen und Qualitätskontrolle aus gewöhnlicher Annotation.

Neu in v2.7.0

Jedes Annotationswerkzeug sammelt Punktlabels: Element X bekommt Label Y. Boundary Lab bringt Potato dazu, Entscheidungsgrenzen zu sammeln. Sobald ein Annotator ein Label festlegt, zeigt Potato minimale kontrafaktische Änderungen des Textes und fragt, eine Sonde nach der anderen:

Du hast Polite gewählt. Würde das diese Änderung überstehen?

Nach jedem Label eine kontrafaktische Sonde über einem farbigen Diff: „Gilt das weiterhin?"

Jede Antwort kostet einen Klick. Gewöhnliche Annotation liefert damit drei Artefakte, die ein reiner Label-Export nicht hergibt.

  1. Kontrastmengen (contrast sets), gratis. Jede beantwortete Sonde ist ein gelabeltes Paar aus (Original, kontrafaktischer Variante): die kontrafaktisch angereicherten Daten, die nachweislich die Robustheit von Modellen verbessern (Gardner et al. 2020; Kaushik et al. 2020). Eine Kontrastmenge aufzubauen ist sonst ein eigener und teurer Arbeitsschritt.
  2. Grenzbegründungen. Kippt ein Label, sagt der Annotator, was die Grenze überschritten hat. Diese Begründungen zeigen genau, wo das Codebuch mehrdeutig ist.
  3. Unsichtbare Qualitätskontrolle. Invarianz-Sonden sind bedeutungserhaltende Paraphrasen, und ein konsistenter Annotator kippt bei ihnen nie. Wer es doch tut, wird im Dashboard markiert, was ein Aufmerksamkeitssignal ergibt, ohne ein einziges gefälschtes Gold-Element einzuschleusen.

Konfiguration

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

Sondenquellen

Sonden stammen aus drei Stufen. Spätere Stufen füllen die Plätze, die frühere frei lassen, sodass die Funktion sanft degradiert.

precomputed — kuratierte kontrafaktische Varianten zusammen mit den eigenen Daten ausliefern. Deterministisch und ideal für kontrollierte Studien:

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 — Sonden zur Laufzeit mit einem beliebigen konfigurierten AI-Endpunkt erzeugen (Anthropic, OpenAI, Ollama, vLLM). Sonden werden einmal pro (Instanz, Label) erzeugt und über alle Annotatoren geteilt, sodass die LLM-Kosten von der Datensatzgröße abhängen und nicht von der Zahl der Annotatoren.

rules — deterministische lexikalische Transformationen: Negationen umschalten, Intensivierer tauschen, Höflichkeitsmarker, Intensität der Interpunktion sowie Paraphrasen über Kontraktionen oder Grußformeln für die Invarianz. Keine Abhängigkeiten und keine Modellaufrufe, und genau deshalb läuft Boundary Lab ganz ohne konfiguriertes LLM.

Sondenarten und Urteile

ArtBedeutungErwartetes Verhalten
flipKleinste Änderung, die die Labelgrenze überschreiten sollKann kippen oder halten, beides ist aufschlussreich
invarianceBedeutungserhaltende ParaphraseSollte nie kippen; ein Kippen deutet auf Inkonsistenz hin

Annotatoren beantworten jede Sonde mit hält (das Label bleibt bestehen), kippt (das Label ändert sich, sie wählen das neue und sagen optional warum) oder kann ich nicht sagen.

Das Dashboard

Unter /boundary/dashboard (Admin-Zugang):

  • Grenzsensitivität pro Label — von den minimalen Änderungen, die auf ein Label zielen, der Anteil, der gekippt ist. Eine Kipprate von 90 % heißt, das Label steht auf Messers Schneide; 10 % heißt, es ist robust gegen kleine Störungen.
  • Invarianz-Konsistenz pro Annotator — Halterate jedes Annotators bei Paraphrase-Sonden, unter 60 % rot markiert.
  • Wo Labels kippen — eine Galerie bestätigter Kipper mit wortweisen Diffs und den Begründungen der Annotatoren.

Export der Kontrastmenge

GET /boundary/api/export (Admin) lädt JSONL herunter, ein gelabeltes Paar je beantworteter Sonde:

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-Urteile werden mit einem counterfactual_label exportiert, das dem ursprünglichen Label entspricht, was sie als Hard Negatives brauchbar macht. unsure-Urteile werden ausgeschlossen.

Designhinweise

  • Sonden werden pro (Instanz, Schema, Label) zwischengespeichert und über alle Annotatoren geteilt, sodass die Invarianz-Konsistenz zwischen Annotatoren vergleichbar ist.
  • Das Sondenpanel ist ein Overlay. Es blockiert nie den eigentlichen Annotationsfluss, das Beantworten der Sonden ist freiwillig, und Annotatoren können es jederzeit schließen.
  • Sondiert wird derzeit ein einzelnes Einfachauswahl-Schema (radio) pro Aufgabe.

Weiterführende Informationen