발산(Divergence)은 잘못된 집단을 에스컬레이션합니다: 만장일치 시 자동 통과(auto-pass)의 오류
요약
LLM 에이전트의 검증 파이프라인에서 만장일치 시 자동 통과(auto-pass) 방식이 가진 위험성을 경고합니다. 체계적 편향(systematic bias)이 발생할 경우 에이전트들이 확신에 찬 오답에 합의할 수 있으므로, 단순 발산(divergence) 측정을 넘어선 새로운 에스컬레이션 전략이 필요함을 설명합니다.
핵심 포인트
- 만장일치 기반 자동 통과는 체계적 편향(systematic bias)을 걸러내지 못함
- 발산(divergence)은 모호함은 측정하지만 확신에 찬 오답은 해결 못함
- 알려진 반전 클래스에 대한 결정론적 트리와이어(T1) 도입 제안
- 높은 신뢰도와 만장일치가 결합된 특정 클래스에 대한 역발상 에스컬레이션(T2) 제안
발산(Divergence)은 잘못된 집단을 에스컬레이션합니다: 만장일치 시 자동 통과(auto-pass)의 오류
에이전트 결정론의 환상 (Agent Determinism Illusions) (Part 7)
맥락 설명: 이 파트는 Part 13의 probe-vs-prose 스레드를 이어가는 것이 아닙니다. Part 6의 L2→L3 에스컬레이션 규칙, 즉 투표 불일치를 인간 검토 신호로 취급하는 Dipankar의 방식(move)으로 돌아갑니다. Alexey Spinov의 후속 의견은 해당 신호가 잘못된 집단(population)을 가리키고 있다고 말합니다. 두 가지 실험을 통해 그의 말이 맞는지, 그리고 대신 무엇을 트리와이어(tripwire)에 배치해야 하는지 확인합니다.
Part 6은 다음과 같은 제어 흐름(control flow)을 도출했습니다:
L2 다각도 투표 (multi-perspective votes)
│
만장일치 (unanimous) ──────────► 자동 통과 (AUTO-PASS) / 자동 거절 (AUTO-REJECT)
...
주의 사항은 이미 본문에 언급되었습니다: 발산(divergence)은 모호함(ambiguity)을 측정하는 것이지, 만장일치로 발생하는 체계적 편향(systematic bias)을 해결하는 것이 아닙니다. Alexey의 지적은 더 날카롭습니다. 이는 단순한 주의 사항 문구가 아니라 **라우팅(routing)**에 관한 문제입니다.
1. Alexey의 집단 불일치 (population mismatch)
Part 6 스레드에서 Alexey Spinov는 다음과 같이 작성했습니다 (핵심 내용을 요약함):
위험한 실패는 높은 신뢰도(high-confidence)를 가지며 방향성을 띠는, 즉 체계적(systematic)인 실패입니다. 체계적 편향은 개별적인 것이 아니라 프롬프트 전반에 걸쳐 공유됩니다 (당신의 P3: 다수결 투표(majority voting)는 이를 해결하지 못합니다). 따라서 세 가지 관점은 바로 그러한 사례들에 대해 **동의(agree)**하는 경향을 보일 것입니다. 그러면 발산(Divergence)-인간 검토 방식은 안전하게 모호한 사례들로 당신을 안내하고, 확신에 찬 오답(confidently-wrong) 사례들은 자동 통과(auto-pass)시켜 버립니다. 에스컬레이션 신호가 잘못된 집단을 가리키고 있는 것입니다.
그는 두 가지 저렴한 대체 방안을 제안했습니다:
- T1 — 알려진 반전 클래스(known-reversal classes)에 대한 결정론적 트리와이어(deterministic tripwire) (합의 여부와 상관없이 에스컬레이션).
- T2 — 역사적으로 반전되기 쉬운 클래스에 대해 만장일치 + 높은 신뢰도가 나타나면 에스컬레이션으로 처리 — 이는 “높은 신뢰도, 자동 통과”의 **역(inverse)**입니다.
이것이 테스트 중인 주장입니다. “발산(divergence)은 쓸모없다”가 아니라, “발산만으로는 당신이 이미 측정한 실패 모드(failure mode)에 대해 잘못된 주요 트리와이어(primary tripwire)가 된다”는 것입니다.
2. 실험 A — DF v2에 대한 오프라인 프록시 (새로운 API 미사용)
Part 6의 Mike Update에서 이미 보여주었듯이, 96건의 DF v2 MISS 실행 중 **95.8%**가 자체 보고된 신뢰도(self-reported confidence) ≥ 0.9(평균 0.969)에 머물렀습니다. 이 수치는 특정 구간에 집중되어 있습니다. Part 6는 또한 MISS 실행의 약 80%가 qwen3:0.5b에서 발생했다고 보고했으므로, 이 헤드라인은 집중(concentration)에 관한 사실이지 세 모델 모두에 적용되는 보편적인 법칙은 아닙니다. P2(동일 프롬프트 N=10; 여기서는 고정된 results-v2 덤프 미사용)에서는 동일한 입력에 대해 모델 내 발산(within-model divergence)이 ~0임을 보여주었습니다. 따라서 1차적인 분석 결과는 다음과 같습니다:
conf ≥ 0.9≈ 만장일치 채널 프록시 (unanimous-channel proxy) → Part 6의 Dipankar 규칙에 따라 자동 통과 (auto-pass) 될 것임conf < 0.9≈ 발산 프록시 (divergence-proxy) → 에스컬레이션 (escalate) 될 것임
confidence: null인 DeepSeek DS4 실행 2건을 제외한(정책 테이블에는 스칼라 신뢰도 값이 필요함), MISS인 PASS 결정들 중에서 분석했습니다. 따라서 아래 테이블의 분모는 Part 6의 헤드라인인 n=96이 아니라 n=94입니다:
| 발산 프록시 하의 버킷 (Bucket under divergence-proxy) | MISS 점유율 (n=94) |
|---|---|
| 자동 통과될 것 (AUTO-PASS, conf≥0.9) | 97.9% (92/94) |
| 에스컬레이션될 것 (ESCALATE, conf<0.9) | 2.1% (2/94) |
동일한 PASS 세트에 대한 정책 비교:
| 정책 (Policy) | MISS 포착률 (MISS catch%) | 여전히 자동 통과되는 MISS 비율 (MISS still auto-pass%) |
|---|---|---|
| D (낮은 신뢰도만 에스컬레이션) | 2.1% | 97.9% |
| ... |
†T1은 이 고정 장치(fixture)에 대한 클래스 목록 상한(class-list upper bound)이며, 독립적인 발견이 아닙니다. 모든 DF v2 MISS sid는 이미 DF extasteriskcentered/DS extasteriskcentered입니다. 따라서 “모든 반전 클래스(reversal classes)를 에스컬레이션한다”는 것은 정의상 100%의 MISS를 포착합니다. T1을 오라클 천장(oracle ceiling)으로 읽어야 하며, 실제로 배포 가능한 주장은 D+T2입니다.
스크립트: scripts/escalation-population-mismatch.py.
프록시 하에서의 판결 (T1 단독이 아닌 D 대 D+T2에 대하여): 지지 (SUPPORT).
프록시는 다수의 판사가 재실행하는 것이 아닙니다. 다음 섹션에서는 그러한 변명을 제거합니다.
3. 실험 B — DF 세트에 대한 실제 Strict / Balanced / Lenient 적용
동일한 20개의 DF v2 시나리오. P3와 동일한 세 가지 페르소나. 시나리오당 페르소나당 1회 호출 (모델당 60회 호출). 에스컬레이션 정책은 이제 **실제 투표 패턴 (actual vote patterns)**을 사용합니다:
- D —
split인 경우에만 에스컬레이션 (escalate) - T1 — 승인 경로 (accept path) 상의 알려진 반전 클래스 (known-reversal class, DF ext المس/DS ext المس)인 경우에만 에스컬레이션
- T2 — 반전 클래스(reversal class) 이면서
unanimous_pass인 경우에만 에스컬레이션 - D+T2 — 합집합 (union)
deepseek-v4-flash — 이 주장을 뒷받침하기에 부적절한 기질 (substrate)
거의 모든 나쁜 시나리오가 만장일치로 거부되었습니다. 위험한 승인(dangerous accepts) 0건 (나쁜 결과에 대해 과반수 PASS). 거의 놓치지 않는 모델에서는 “만장일치 미스 자동 통과 (unanimous miss auto-pass)”를 측정할 수 없습니다. 이는 반증(falsifier)이 아니라 결과 없음(null result)입니다.
gemma3:latest — 다른 형태의 실패
엄격/균형(Strict/Balanced) 모델은 거부하고, 관대한(Lenient) 모델은 통과합니다 → 거의 모든 것이 split이며, 과반수는 여전히 나쁜 사례를 거부합니다 → 위험한 승인 0건. 발산(Divergence)은 승인 경로의 거의 모든 노이즈(실제 통과 포함)를 에스컬레이션할 것입니다. 이 또한 Alexey가 명명한 모집단(population)이 아닙니다.
qwen3:0.5b — 주장에 부합하는 기질 (substrate)
6건의 위험한 승인 (나쁜 출력에 대해 과반수 PASS). 그중:
| 패턴 | 횟수 | 비중 |
|---|---|---|
unanimous_pass | 4 | 66.7% |
split | 2 | 33.3% |
해당 실행에 대한 정책 테이블:
| 정책 | MISS 포착률(catch%) | MISS 여전한 자동 통과율(auto-pass%) | 실제 통과 에스컬레이션율(True-pass escalate%) |
|---|---|---|---|
| D | 33.3% | 66.7% | 0% |
| ... |
†§2와 동일한 주의사항: 6건의 위험한 승인 모두 반전 클래스(reversal-class) sid에 위치하므로, T1의 100%는 클래스 목록의 상한선입니다. 핵심적인 행은 D+T2입니다.
스크립트: scripts/df-multiperspective-escalation.py.
결과: results-v2/df-multiperspective-qwen3-0.5b.json (deepseek / gemma 덤프 포함).
실제로 실패 모드(failure mode)를 생성하는 모델에 대한 판결: 부분적(PARTIAL) → 지지(SUPPORT). 위험한 승인의 3분의 2는 만장일치이며 제6조의 규칙에 따라 자동 통과될 것입니다. 발산(Divergence)만으로는 나머지 3분의 1을 포착합니다. D+T2는 이번 실행에서 실제 통과 사례를 에스컬레이션하지 않고 6건 모두를 포착합니다. DeepSeek/Gemma의 결과 없음은 이것이 모든 모델에 대한 주장이 아니라, 기질에 조건화된 (substrate-conditioned) 결과(체계적으로 놓치는 판사들)임을 의미합니다.
4. 파이프라인에서 변경되는 사항
Part 6의 다이어그램은 **진정한 모호성 (genuine ambiguity)**을 위해 유지됩니다. 그것은 더 이상 L2→L3 전환의 유일한 트리거 (trigger)가 아닙니다.
L2 투표 (L2 votes)
│
├─ 알려진 역전 클래스 트리와이어 (known-reversal class tripwire, T1) ──────────► L3 / 강제 거부 경로 (hard reject path)
...
합의(agreement)를 신뢰도(confidence)로 읽은 것이 버그(bug)였습니다. 이전에 틀렸던 클래스에 대한 합의는 상관관계가 있는 오류(correlated errors)가 숨어 있는 지점입니다 — Alexey의 표현이자, qwen의 투표 결과입니다.
Mike의 Part 6 업데이트는 감사 샘플링 (audit-sampling) 측면에서 동일한 꼬리 위험 (tail)을 공격했습니다 (감사 결과에 1/신뢰도 가중치를 부여하지 마십시오). 이 부분은 에스컬레이션 트리거 (escalation-trigger) 측면에서 이를 공격합니다. 동일한 모집단이지만, 제어 노브 (control knob)가 다를 뿐입니다.
5. 한계점 (이 사항들을 유의하십시오)
- DeepSeek / Gemma의 null 값은 다음을 의미합니다: 강력하거나 기묘하게 나뉜 판사들은 이 주장을 스트레스 테스트(stress-test)하지 못합니다. 이 주장은 모든 모델에 관한 것이 아니라, **체계적으로 놓치는 판사들 (judges that miss systematically)**에 관한 것입니다.
- qwen 실행은 페르소나당 N=1 (60회 호출)입니다. "발산(divergence)만으로는 충분하다"는 주장을 거부하기에는 충분하지만, 프로덕션 요율표 (production rate cards)를 만들기에는 충분하지 않습니다.
- T1은 유지 관리되는 클래스 목록 (DF/DS 스타일)이 필요합니다. 이력이 없는 콜드 스타트 (cold-start) 클래스는 D로 회귀하며 — 해당 클래스가 라벨링될 때까지 D의 사각지대 (blind spot)를 상속받습니다.
- forge-verify의
content-verify.mjs는 현재도 여전히 발산(divergence)→UNCLEAR 다수결 로직을 구현하고 있습니다. 이러한 트리와이어 (tripwires)는 설계 + 블로그 증거이며, 이 글에서 아직 제품화된 것은 아닙니다.
업데이트 (2026-07-22): 두 가지 측면 — 재발 (recurrence) vs 신규성 (novelty) (Mike)
Mike Czerwinski, 역전된 트리거(inverted trigger)에 대하여:
그것은 당신이 이미 틀렸다고 포착한 클래스(classes)에 대해서만 작동합니다. "역전 경향이 있는 (Historically reversal-prone)"은 이력을 바탕으로 구축되므로, 아직 보지 못한 역전 경향이 있는 클래스는... 만장일치의 높은 신뢰도(unanimous high confidence)를 생성하며 트리프와이어(tripwire)를 작동시키지 않습니다... 이것은 트리거에 반대하는 논거가 아닙니다... 이것은 이를 두 개의 팔(two-arm)로 구성된 설계의 한쪽 팔로 취급해야 한다는 논거입니다... 알려진 역전 트리프와이어는 재발(recurrence)을 포착합니다. 새로운 체계적 편향(systematic bias)의 첫 번째 발생을 포착하는 것은... 이력 없이도 의견이 일치하지 않을 수 있는... 진정으로 독립적인 두 번째 판독(second read)에 더 가깝습니다... 알려진 역전 클래스에 대한 만장일치의 높은 신뢰도는 적절한 추가 사항입니다. 그것은 '확신에 차서 틀렸지만 이전에 포착된 적이 없는(confidently-wrong-and-never-caught-before)' 문제에 대한 해결책이 아닙니다.
이 스레드에서 그 두 번째 집단은 이제 이름을 갖게 되었습니다: 확신에 차서 틀렸지만 이전에 포착된 적이 없는 (confidently-wrong-and-never-caught-before) (신규성 체계적 편향 (novelty systematic bias)). T1/T2는 재발 팔 (recurrence arm) — 저렴하고, 이력에 의존하며, 필수적입니다. 이것들은 신규성 팔(novelty arm)이 아닙니다.
Mike가 신규성 팔을 채워줄 수 있기를 바랐던 것은 모델의 사전 확률(priors)을 공유하지 않는 독립적인 두 번째 판독인, 신호만을 전달하는 classifier_disagree였습니다. 우리는 Part 6 샘플링 고정 장치(external-signal-ablation.json)에서 해당 절제 연구(ablation)를 수행했습니다: classifier_disagree 단독으로는 25.1%를 포착했으며, 이는 Part 6의 28.4%보다 낮았습니다 — 가장 우수한 단일 외부 신호였지만, 그 자체만으로는 신규성 포착 장치가 되기에 여전히 부족했습니다. barely_passed와 결합하면 성능이 향상되지만, 단독으로는 기준치를 통과하지 못합니다. 따라서 신규성 팔은 "classifier_disagree를 트리프와이어에 단독으로 투입하고 첫 번째 발생 문제가 해결되었다고 말하는 것"이 아닙니다.
이 시리즈가 계속해서 도달하고 있는 갈림길은 다음과 같습니다:
| 팔 (Arm) | 신호 형태 (Signal shape) | 포착 대상 (Catches) | 비용 (Cost) |
|---|---|---|---|
| 재발 (Recurrence) | T1 / T2 — 실패 이력, 알려진 역전 클래스 | 이미 파악된 모드(burned modes)의 반복 | 저렴함 |
| 신규성 (Novelty) | 판독자(judge)의 사전 확률을 공유하지 않는 소스 (채널 외 탐침(out-of-channel probe), 독립적 양식(independent modality) — Part 13의 probe-vs-prose 참조; 동일한 텍스트 채널 내의 또 다른 프롬프트가 아님) | 새로운 체계적 편향의 첫 번째 발생 | 비쌈 |
두 가지 모두 필요합니다. 실수는 저렴한 암(cheap arm)이 비싼 암(expensive arm)의 역할까지 대신할 것이라고 기대하는 것입니다. D+T2는 Part 6 다이어그램에 올바른 추가 요소로 유지됩니다. 이것이 '확신에 찬 오답이자 이전에 발견되지 않았던 오류(confidently-wrong-and-never-caught-before)'를 종결짓지는 못합니다.
업데이트 (2026-07-23): "채널 외부(out-of-channel)"의 실제 의미 (Mike)
새로운 참신함 암(novelty-arm) 프로브(probe)를 구축하기 전에, Mike는 겉모습이 아닌 독립성을 확보해 주는 속성을 명시했습니다:
프로브가 해당 주장이 맞는지에 대해 텍스트로 추론하는 또 다른 LLM 호출이라면, 설령 프롬프트가 다르게 설정되었거나 반대 의견을 내도록 요청받았더라도 여전히 동일 채널(same-channel)로 간주됩니다. 실제로 독립성을 확보해 주는 속성은 프로브의 답변이 원래의 주장이 전혀 건드리지 않은 경로를 통해 사실을 재도출(re-deriving)함으로써 나온다는 점입니다. 즉, 동일한 증거를 다른 프롬프트로 두 번 읽는 것이 아니라, 다른 데이터 소스, 구조적 불변량(structural invariant), 또는 재계산(re-computation)을 통해 도출되어야 합니다.
구체적으로는: …**체크섬(checksum)**이 파일이 무엇을 포함하고 있다고 주장하든 상관없이 틀릴 수 있는 방식처럼, 원래의 주장이 무엇이라고 말했는지와는 독립적으로 프로브가 틀렸을 때 어떤 의미가 될지를 사전에 명시해야 합니다. 만약 프로브의 출력을 평가하는 유일한 방법이 원래 주장의 추론과 비교하는 것이라면, 그것은 여전히 파이프라인의 후반부에 위치한 동일 채널(in-channel)일 뿐입니다. 의미론적 참신함(Semantic novelty)이 어려운 이유는 대부분의 가용한 제2의 의견(second opinions)이 동일한 증거와 동일한 추론 기질(reasoning substrate)을 상속받기 때문입니다… 그렇지 않은 경우는 더 드물고 대개 특정 도메인에 국한되어 있으며, 이것이 아마도 재귀 암(recurrence arm)은 오늘날 구축 가능한 반면 이 암(arm)은 열려 있는 상태로 남아 있는 이유일 것입니다.
체크섬 테스트 (운영적): 주장의 근거를 참조하지 않고 프로브의 합격/불합격 기준을 작성할 수 있습니까? 만약 아니오 $\rightarrow$ 여전히 동일 채널(모자를 쓴 다섯 번째 프롬프트). 만약 예 $\rightarrow$ 채널 외부(out-of-channel) 후보.
| 테스트 실패 (동일 채널 (same-channel)) | 테스트 통과 (채널 외부 (out-of-channel)) |
|---|---|
| 엄격/균형/관대한 (Strict/Balanced/Lenient), "이전 판정관과 의견이 다름", 토론 패널 (debate panels) | 소스 데이터로부터 재계산 (Re-compute); 구조적 불변량 (structural invariant) (스키마 (schema), 타입 (type), 체크섬 (checksum)); 주장의 허위성을 입증하는 출력을 생성하는 명령을 실행하는 러너 (runner) (Part 13 프로브 (probe)) |
L2가 여전히 동일한 아티팩트 상의 텍스트일 때의 classifier_disagree | LLM의 이야기를 읽지 않는 L0/L1 형태/계약 (shape/contract) 체크 — 판결을 해석하기 위해 주장의 산문(prose)이 필요하지 않을 때만 수행 |
따라서: 재귀(recurrence) 암(arm)은 오늘날 구축 가능합니다 (T1/T2). 참신함(novelty) 암은 의도적으로 열려 있습니다 — 우리가 또 다른 프롬프트를 추가하지 않았기 때문이 아니라, 진정한 독립성(independence)은 희소하며 도메인에 따라 형태가 결정되기 때문입니다. Part 13의 프로브 대 산문(probe-vs-prose)은 현재 존재하는 가장 유사한 실마리이며, Mike의 체크섬(checksum) 테스트는 해당 암에 위치한다고 주장하는 모든 것에 대한 수락 기준(acceptance criterion)입니다.
업데이트 (2026-07-23): 구조적 독립성 ≠ 인과적 독립성 (Mike)
체크섬 기준에 대한 Mike의 후속 의견:
체크섬 프레임워크는 올바른 기준을 설정합니다. 왜냐하면 그것은 이야기(story)와 무관하게 반증 가능(falsifiable)하기 때문입니다. 오직 원래의 추론과 비교함으로써만 점수를 매길 수 있는 프로브는 정확성(correctness)이 아니라 일치성(agreement)을 채점하는 것입니다.
명시적으로 언급할 가치가 있는 한 가지 사례는...: 구조적으로는 다르지만 여전히 **동일한 수집 파이프라인 (same collection pipeline)**의 하류(downstream)에 있는 "기타 데이터"입니다. 두 신호가 동일 채널 테스트를 통과하더라도 상류(upstream)에서 공통 원인을 공유할 수 있습니다 — 즉, 주장과 프로브의 입력을 동시에 오염시키는 센서 장애나 스키마 변경 같은 것입니다. 구조적 독립성(structural independence)과 인과적 독립성(causal independence)은 동일한 속성이 아니며, 오늘날 구축 가능한 재귀 사례는 첫 번째 속성만을 확인하면서 조용히 두 번째 속성을 가정하고 있을지도 모릅니다.
두 가지 구분(cuts), 하나가 아닙니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기