Skip to content

결정 경계 실험실 (Boundary Lab)

점이 아니라 결정 경계를 탐색합니다. 라벨을 매길 때마다 Potato는 최소한의 반사실적 편집이 그 라벨을 바꾸는지 묻고, 평범한 주석 작업에서 대조 집합과 품질 관리를 얻어냅니다.

v2.7.0의 새 기능

모든 주석 도구는 점 라벨을 모읍니다. 항목 X에 라벨 Y를 붙이는 식입니다. Boundary Lab은 Potato가 결정 경계를 모으게 합니다. 어노테이터가 라벨을 확정하는 순간, Potato는 텍스트의 최소 반사실적 편집을 보여주며 한 번에 하나씩 프로브를 던집니다.

당신은 Polite라고 했습니다. 이 편집을 거쳐도 그대로일까요?

라벨을 매길 때마다 색으로 구분된 diff 위에 뜨는 반사실 프로브: “그래도 그대로일까요?”

답 하나에 클릭 한 번이면 됩니다. 그러면 평범한 주석 작업이 단순 라벨 내보내기로는 얻을 수 없는 세 가지 산출물을 만들어냅니다.

  1. 대조 집합을 덤으로. 답변된 프로브 하나하나가 라벨이 붙은 (원본, 반사실) 쌍입니다. 모델의 강건성을 높인다고 보고된 반사실 증강 데이터가 바로 이것입니다(Gardner et al. 2020; Kaushik 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)로 프로브를 즉석에서 생성합니다. 프로브는 (인스턴스, 라벨)마다 한 번 생성되어 어노테이터들이 공유하므로, LLM 비용은 어노테이터 수가 아니라 데이터셋 크기에 따라 정해집니다.

rules — 결정론적 어휘 변환입니다. 부정 전환, 강조어 교체, 공손 표지, 문장 부호의 세기, 그리고 불변성을 위한 축약형·인사말 패러프레이즈가 있습니다. 의존성도 모델 호출도 없으며, 덕분에 Boundary Lab을 LLM을 전혀 구성하지 않고도 실행할 수 있습니다.

프로브 종류와 판정

종류의미기대 동작
flip라벨 경계를 넘도록 의도한 최소 편집뒤집힐 수도 유지될 수도 있으며, 어느 쪽이든 정보가 됩니다
invariance의미를 유지하는 패러프레이즈뒤집혀서는 안 되며, 뒤집힘은 비일관성을 뜻합니다

어노테이터는 각 프로브에 유지됨(라벨이 그대로임), 뒤집힘(라벨이 바뀌며, 새 라벨을 고르고 원하면 이유를 적음), 판단 불가 중 하나로 답합니다.

대시보드

/boundary/dashboard(관리자 접근)에서 볼 수 있습니다.

  • 라벨별 경계 민감도 — 각 라벨을 겨냥한 최소 편집 중 실제로 뒤집힌 비율입니다. 뒤집힘 비율이 90%라면 그 라벨은 아슬아슬한 자리에 있고, 10%라면 작은 교란에 강건합니다.
  • 어노테이터 불변성 일관성 — 패러프레이즈 프로브에서 어노테이터별 유지 비율이며, 60% 아래면 빨간색으로 표시됩니다.
  • 라벨이 뒤집히는 지점 — 확인된 뒤집힘을 단어 단위 diff와 어노테이터의 근거와 함께 모아 보여줍니다.

대조 집합 내보내기

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이 원본 라벨과 같은 상태로 내보내지므로 hard negative로 쓸모가 있습니다. unsure 판정은 제외됩니다.

설계 노트

  • 프로브는 (인스턴스, 스킴, 라벨)마다 캐시되어 어노테이터들이 공유하므로, 불변성 일관성을 어노테이터끼리 비교할 수 있습니다.
  • 프로브 패널은 오버레이입니다. 주 주석 흐름을 막지 않고, 프로브 답변은 선택 사항이며, 어노테이터는 언제든 닫을 수 있습니다.
  • 현재 프로빙은 작업당 하나의 단일 선택(radio) 스킴을 대상으로 합니다.

추가 자료