Skip to content

Laboratorio dei confini di decisione (Boundary Lab)

Sonda il confine di decisione, non solo il punto. Dopo ogni etichetta Potato chiede se una modifica controfattuale minima la cambierebbe, e ricava insiemi di contrasto e controllo qualità dall'annotazione ordinaria.

Novità della v2.7.0

Qualsiasi strumento di annotazione raccoglie etichette puntuali: l'elemento X riceve l'etichetta Y. Boundary Lab fa sì che Potato raccolga confini di decisione. Nel momento in cui un annotatore conferma un'etichetta, Potato mostra modifiche controfattuali minime del testo e chiede, una sonda alla volta:

Hai detto Polite. Reggerebbe anche dopo questa modifica?

Dopo ogni etichetta, una sonda controfattuale su un diff colorato: «reggerebbe ancora?»

Ogni risposta costa un clic. L'annotazione ordinaria produce così tre cose che una semplice esportazione di etichette non può dare.

  1. Insiemi di contrasto, gratis. Ogni sonda a cui si risponde è una coppia etichettata (originale, controfattuale): i dati aumentati con controfattuali che hanno dimostrato di migliorare la robustezza dei modelli (Gardner et al. 2020; Kaushik et al. 2020). Costruire un insieme di contrasto è di norma un lavoro a parte e costoso.
  2. Motivazioni sul confine. Quando un'etichetta cambia, l'annotatore dice che cosa ha superato la linea. Queste motivazioni indicano con precisione dove il tuo codebook è ambiguo.
  3. Controllo qualità invisibile. Le sonde di invarianza sono parafrasi che preservano il significato, e un annotatore coerente non cambia mai etichetta di fronte a esse. Chi lo fa viene segnalato nella dashboard, il che ti dà un segnale di attenzione senza infilare un solo elemento gold fittizio.

Configurazione

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

Sorgenti delle sonde

Le sonde arrivano da tre livelli. I livelli successivi riempiono gli spazi lasciati vuoti da quelli precedenti, così la funzionalità degrada in modo graduale.

precomputed — distribuisci controfattuali curati insieme ai tuoi dati. È deterministico e ideale per studi controllati:

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 — genera le sonde al volo con qualsiasi endpoint AI configurato (Anthropic, OpenAI, Ollama, vLLM). Le sonde vengono generate una sola volta per (istanza, etichetta) e condivise tra gli annotatori, quindi il costo dell'LLM dipende dalla dimensione del dataset e non dal numero di annotatori.

rules — trasformazioni lessicali deterministiche: inversione delle negazioni, scambio degli intensificatori, marcatori di cortesia, carica della punteggiatura e parafrasi di contrazioni o saluti per l'invarianza. Nessuna dipendenza e nessuna chiamata a un modello, ed è questo che permette di usare Boundary Lab senza alcun LLM configurato.

Tipi di sonda e verdetti

TipoSignificatoComportamento atteso
flipLa modifica più piccola pensata per attraversare il confine dell'etichettaPuò cambiare o reggere: entrambi i casi sono informativi
invarianceParafrasi che preserva il significatoNon dovrebbe mai cambiare; un cambiamento indica incoerenza

Gli annotatori rispondono a ogni sonda con regge (l'etichetta sopravvive), cambia (l'etichetta cambia, e scelgono quella nuova spiegando eventualmente perché) oppure non saprei.

La dashboard

Su /boundary/dashboard (accesso amministratore):

  • Sensibilità di confine per etichetta — delle modifiche minime rivolte a ciascuna etichetta, la quota che ha prodotto un cambiamento. Un tasso del 90% significa che l'etichetta vive sul filo del rasoio; il 10% significa che regge alle piccole perturbazioni.
  • Coerenza di invarianza per annotatore — tasso di risposte «regge» di ciascun annotatore sulle sonde di parafrasi, segnalato in rosso sotto il 60%.
  • Dove cambiano le etichette — una galleria dei cambiamenti confermati con i diff a livello di parola e le motivazioni degli annotatori.

Esportazione dell'insieme di contrasto

GET /boundary/api/export (amministratore) scarica un JSONL, una coppia etichettata per ogni sonda a cui si è risposto:

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}

I verdetti holds vengono esportati con counterfactual_label uguale all'etichetta originale, il che li rende utili come negativi difficili. I verdetti unsure sono esclusi.

Note di progettazione

  • Le sonde sono memorizzate in cache per (istanza, schema, etichetta) e condivise tra gli annotatori, così la coerenza di invarianza è confrontabile da un annotatore all'altro.
  • Il pannello delle sonde è un livello sovrapposto. Non blocca mai il flusso principale di annotazione, rispondere alle sonde è facoltativo e gli annotatori possono chiuderlo in qualsiasi momento.
  • Per ora il sondaggio agisce su un solo schema a scelta singola (radio) per task.

Ulteriori letture