에이전트의 신뢰도 점수는 확률이 아닙니다
요약
에이전트가 스스로 보고하는 신뢰도 점수는 환각을 구분하지 못하는 가짜 신호일 가능성이 높습니다. 따라서 에이전트 시스템의 신뢰성을 확보하기 위해서는 자기 보고가 아닌 외부 관찰 가능한 증거와 독립적인 통계적 신호를 활용해야 합니다.
핵심 포인트
- 에이전트의 자기 보고식 신뢰도는 보정된 확률이 아닌 단순 토큰 생성 결과임
- 모델은 확신에 찬 허구와 사실을 내부적으로 구분하지 못함
- 신뢰성 확보를 위해 독립성 축(Independence Axis)에 따른 평가가 필요함
- Tier 1(외부 증거)과 Tier 2(통계적 신호)를 실시간 게이트로 활용 권장
에이전트에게 얼마나 확신하는지 물어보면 에이전트는 기꺼이 대답할 것입니다. "신뢰도: 0.92." 이것은 확률처럼 보입니다. 대시보드에 깔끔하게 표시되기도 하죠. 팀들은 이를 라우팅 로직 (routing logic)에 연결합니다. 신뢰도가 높으면 자동 승인하고, 낮으면 사람에게 보냅니다. 매우 엄격해 보입니다.
하지만 엄격하지 않습니다. 스스로 보고하는 신뢰도 점수는 에이전트가 자신의 숙제를 스스로 채점하는 것과 같으며, 이는 프로덕션 에이전트 시스템 (production agentic systems)에서 가장 유혹적인 가짜 신호 중 하나입니다. 만약 당신이 이 점수를 기준으로 무언가를 차단하고 있다면, 당신은 피고인이 자신의 알리바이에 대해 내놓은 의견을 신뢰하고 있는 것과 같습니다.
이 숫자가 실제로 어디에서 오는가
LLM이 confidence: 0.92를 출력할 때, 그 숫자는 보정된 사후 확률 (calibrated posterior)이 아닙니다. 그것은 당신이 확신하지 못하는 답변을 생성한 것과 동일한 순전파 (forward pass) 과정에 의해 생성된 또 다른 토큰 시퀀스 (token sequence)일 뿐입니다. 그것은 자신이 설명하고 있는 출력값과 동일한 기질을 공유합니다. 만약 모델이 파일 경로를 환각 (hallucination)했다면, 그 경로를 지어낸 것과 동일한 가중치 (weights)가 즐겁게 0.9의 신뢰도를 부여할 것입니다. 왜냐하면 모델의 내부 관점에서는, 확신에 찬 허구와 확신에 찬 사실을 구분할 수 없기 때문입니다.
이것은 "불확실성에 대해 정직하게 말해줘"와 같은 프롬프트 엔지니어링 (prompt-engineering)으로 해결할 수 있는 문제가 아닙니다. 분포를 조정할 수는 있겠지만, 모델의 자기 보고를 독립적인 증거로 만들 수는 없습니다. 루프 (loop) 안에 독립적인 ground truth (실제 정답)가 없기 때문입니다. 채점자와 채점 대상이 동일한 네트워크입니다.
독립성 축의 적용
이것이 바로 우리가 agent-eval에서 평가 (evals)를 구축할 때, 증거의 순위를 비용 축(저렴함에서 비쌈)이 아닌 독립성 축 (independence axis) — 독립적임에서 부패하기 쉬움 — 에 따라 매기는 이유입니다. 세 가지 단계가 있습니다:
- Tier 1 — 에이전트가 위조할 수 없는 외부 관찰 가능한 증거 (externally observable proof). JSON이 파싱됨. 디스크에 파일이 존재함. 코드가 컴파일됨. 테스트를 통과함. 호출이 타임아웃 내에 반환됨. 출력이 비어 있지 않음. 이 중 어느 것도 자신감 있는 모델이 속일 수 없습니다. 왜냐하면 의견을 묻는 것이 아니라 현실을 확인하는 것이기 때문입니다.
- Tier 2 — 에이전트가 작성하지 않은 기준점(baseline)에 대한 통계적 신호. 출력값과 실제 작업 간의 임베딩 유사도 (Embedding similarity). 길이 및 반복 체크. 디프 (diff)가 실제로 무언가를 변경했는지 여부. 에이전트가 기준점을 작성하지 않았으므로, 비교를 조작할 수 없습니다.
- Tier 3 — 판사로서의 모델 (model-as-judge). 공유된 기질 (shared-substrate)에 기반한 의견. 이는 신호일 뿐, 결코 판결이 아닙니다.
자기 보고식 신뢰도 점수 (self-reported confidence score)는 Tier 3조차 되지 않습니다. Tier 3는 최소한 별도의 모델이 산출물 (artifact)을 검사할 수 있게 해줍니다. 자기 신뢰 (Self-confidence)는 판단 대상인 모델이 동일한 호흡으로 스스로를 판단하는 것이며, 이는 극도로 순환적 (circular)입니다. 이는 축의 가장 부패하기 쉬운 끝단에 속합니다.
여기서 도출되는 두 가지 사실
Tier 1+2는 실시간 게이트 (real-time gate)입니다. 이들은 결정론적 (deterministic)이고, 비용이 거의 들지 않으며, 빠르기 때문에 핫 패스 (hot path)에 위치하여 잘못된 실행이 배포되기 전에 차단할 수 있습니다. Tier 3는 오프라인 전용입니다. 비용이 발생하고, 느리며, 비결정론적 (non-deterministic)입니다. 판사는 당신의 지연 시간 예산 (latency budget) 안에 머무를 수 없습니다. 그리고 자기 보고식 신뢰도는 게이트로 사용하기에 충분히 저렴해 보일지라도, 그것을 기준으로 게이트를 설정하는 것은 아무것도 하지 않는 것보다 더 나쁩니다. 왜냐하면 당신에게 거짓된 안도감을 주기 때문입니다.
모델이 다른 모델의 추론을 판단하는 것은 순환적입니다. Tier 1+2는 에이전트의 궤적 (trajectories)에 대해 실행될 수 있습니다. Tier 3는 불가능합니다. 만약 판사가 추론 단계 (reasoning steps)를 채점하도록 허용한다면, 판사와 피판단자는 동일한 기질을 공유하게 되며 독립적인 그라운드 트루스 (ground truth)가 존재하지 않게 됩니다. 따라서 Tier 3는 피판단 에이전트가 작성하지 않은 산출물만을 검사할 수 있습니다. 자기 신뢰는 그 무엇보다 이 규칙을 심각하게 위반합니다. 그것은 추론자 에 의해 작성된, 추론 내용에 대한 주장입니다.
대신 해야 할 일
에이전트 스스로의 의견에 따라 라우팅(route)하지 마세요. 독립적인 검증(independent checks)에 따라 라우팅하세요. TypeScript에서의 형태는 다음과 같습니다:
type AgentOutput = {
answer: string;
filePath: string;
...
selfConfidence가 타입에는 존재하지만, 게이트(gate)에서는 전혀 읽히지 않는다는 점에 주목하세요. 그것이 핵심입니다. 이를 로그(log)로 남기거나, 오프라인에서 결과와 상관관계를 분석하거나, 심지어 정답률과 역상관관계(anti-correlated)가 있다는 사실을 발견할 수는 있지만, 핫 패스(hot path)에서 투표권을 가져서는 안 됩니다.
80%를 출시하고, 나머지는 판사(judge)가 속삭이게 하세요
대부분의 프로덕션 실패는 지루하고 기계적입니다: 오래된 데이터, 충돌(crash), 잘못된 형식의 출력, 환각된 경로(hallucinated path), 빈 결과값 등입니다. 이 모든 것들은 Tier 1+2 단계만으로도 거의 비용 없이 결정론적(deterministically)으로 잡아낼 수 있습니다. 모델을 판사로 사용하는 것은 어조, 유용성, 설명이 실제로 명확한지 여부와 같은 주관적인 나머지 약 20%의 꼬리 부분(tail)을 위해서만 남겨두세요. 그리고 그 출력물에는
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기