Skip to content

Laboratório de fronteiras de decisão (Boundary Lab)

Sonde a fronteira de decisão, não apenas o ponto. Depois de cada rótulo, o Potato pergunta se uma edição contrafactual mínima o mudaria, e assim extrai conjuntos de contraste e controle de qualidade da anotação comum.

Novo na v2.7.0

Toda ferramenta de anotação coleta rótulos pontuais: o item X recebe o rótulo Y. O Boundary Lab faz o Potato coletar fronteiras de decisão. No momento em que um anotador confirma um rótulo, o Potato mostra edições contrafactuais mínimas do texto e pergunta, uma sondagem por vez:

Você disse Polite. Isso sobreviveria a esta edição?

Depois de cada rótulo, uma sondagem contrafactual sobre um diff colorido: “isso continuaria valendo?”

Cada resposta custa um clique. A anotação comum passa então a produzir três artefatos que uma exportação simples de rótulos não entrega.

  1. Conjuntos de contraste, de graça. Toda sondagem respondida é um par rotulado (original, contrafactual): os dados aumentados com contrafactuais que se mostraram capazes de melhorar a robustez dos modelos (Gardner et al. 2020; Kaushik et al. 2020). Montar um conjunto de contraste normalmente é um trabalho à parte e caro.
  2. Justificativas de fronteira. Quando um rótulo muda, o anotador diz o que cruzou a linha. Essas justificativas apontam com precisão onde o seu livro de códigos é ambíguo.
  3. Controle de qualidade invisível. As sondagens de invariância são paráfrases que preservam o significado, e um anotador consistente nunca muda de rótulo diante delas. Quem muda é sinalizado no painel, o que dá um sinal de atenção sem plantar um único item-ouro falso.

Configuração

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

Fontes das sondagens

As sondagens vêm de três camadas. As camadas seguintes preenchem as vagas que as anteriores deixam vazias, então o recurso degrada de forma suave.

precomputed — distribua contrafactuais curados junto com seus dados. É determinístico e ideal para estudos controlados:

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 — gere as sondagens na hora com qualquer endpoint de IA configurado (Anthropic, OpenAI, Ollama, vLLM). As sondagens são geradas uma única vez por (instância, rótulo) e compartilhadas entre os anotadores, então o custo de LLM é limitado pelo tamanho do conjunto de dados, e não pelo número de anotadores.

rules — transformações lexicais determinísticas: inversão de negações, troca de intensificadores, marcadores de polidez, carga da pontuação e paráfrases de contrações ou saudações para a invariância. Sem dependências e sem chamadas a modelos, o que é justamente o que permite rodar o Boundary Lab sem nenhum LLM configurado.

Tipos de sondagem e vereditos

TipoSignificadoComportamento esperado
flipA menor edição pensada para cruzar a fronteira do rótuloPode mudar ou se manter — os dois casos são informativos
invarianceParáfrase que preserva o significadoNunca deveria mudar; mudanças indicam inconsistência

Os anotadores respondem a cada sondagem com mantém (o rótulo sobrevive), muda (o rótulo muda, e eles escolhem o novo e, se quiserem, dizem por quê) ou não sei dizer.

O painel

Em /boundary/dashboard (acesso de administrador):

  • Sensibilidade de fronteira por rótulo — das edições mínimas dirigidas a cada rótulo, a fração que provocou mudança. Uma taxa de 90% significa que o rótulo vive no fio da navalha; 10% significa que ele é robusto a pequenas perturbações.
  • Consistência de invariância por anotador — taxa de respostas “mantém” de cada anotador nas sondagens de paráfrase, sinalizada em vermelho abaixo de 60%.
  • Onde os rótulos mudam — uma galeria de mudanças confirmadas com diffs em nível de palavra e as justificativas dos anotadores.

Exportação do conjunto de contraste

GET /boundary/api/export (administrador) baixa um JSONL, com um par rotulado por sondagem respondida:

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}

Os vereditos holds são exportados com counterfactual_label igual ao rótulo original, o que os torna úteis como negativos difíceis. Os vereditos unsure ficam de fora.

Notas de projeto

  • As sondagens ficam em cache por (instância, esquema, rótulo) e são compartilhadas entre os anotadores, então a consistência de invariância é comparável de um anotador para outro.
  • O painel de sondagem é uma sobreposição. Ele nunca bloqueia o fluxo principal de anotação, responder às sondagens é opcional e os anotadores podem dispensá-lo a qualquer momento.
  • Por enquanto, a sondagem atua sobre um único esquema de escolha única (radio) por tarefa.

Leitura adicional