왜 0.9 같은 매직 넘버는 항상 실패할까
대부분의 AI 에이전트 설정 파일에는 이런 한 줄이 있어요.
ESCALATION_THRESHOLD = 0.90
이 위면 에이전트가 혼자 처리하고, 아래면 사람에게 넘깁니다. 단순하고, 조정하기 쉽고, 뭔가 자율성을 통제하고 있다는 느낌도 들죠.
문제는 이게 틀린 프레임이라는 겁니다. 더 좋은 숫자를 찾는 게 답이 아니에요. 에스컬레이션 임계값은 애초에 퍼센트가 아니었어요. **가격(price)**이었습니다.
대부분의 팀이 "에이전트가 이걸 할 수 있나?"라는 역량 질문을 던져요. SQL을 쓸 수 있나? 환불을 처리할 수 있나? 가능하면 돌려버립니다. 하지만 "할 수 있다"와 "혼자 해도 된다"는 완전히 다른 문제예요. 후자는 비용 질문입니다.
- 에이전트가 처리하면 → 실수 비용(Error Cost)을 리스크로 짊어진다
- 사람에게 넘기면 → 에이전트가 맞았든 틀렸든 사람 시간 비용(Escalation Cost)을 지불한다
이 두 숫자만 있으면 나머지는 거의 민망할 정도로 단순해져요. (근거자료: Towards Data Science 원문)

실제 임계값은 '비율'이다 (Chow's Rejection Rule, 1970)
인간이 에스컬레이션된 티켓을 항상 올바르게 처리한다고 가정해봅시다. 에이전트가 혼자 행동해야 하는 조건은 다음과 같아요.
(1 - p) × ErrorCost < EscalationCost
여기서 p = 에이전트가 정답일 확률
이걸 p에 대해 정리하면:
p > 1 - (EscalationCost / ErrorCost)
이 우변 값이 진짜 임계값입니다. 여기서 주목할 점은:
- 모델 성능에 의존하지 않는다
- 워크숍에서 정한 정책에 의존하지 않는다
- 단지 두 비용의 비율에만 달려 있다
실수가 싸면 임계값이 낮아지고 에이전트가 더 자주 혼자 행동해도 됩니다. 실수가 비싸면 임계값이 올라가고, 아무리 자신감 넘치는 에이전트라도 사람에게 물어봐야 해요.
고정 컷오프는 이 비율이 모든 결정에 대해 동일하다고 가정합니다. 그런 경우는 거의 없어요.
두 개의 티켓 예시
숫자는 논증용으로 만든 것이지만 구조는 실제와 같아요.
케이스 A — 평범한 환불 요청
- 실수 시 정리 비용: £15 (후속 티켓 + goodwill credit)
- 에스컬레이션 비용: £4 (전문가 3분)
- 임계값 = 1 - 4/15 ≈ 0.73
- 에이전트 신뢰도 90% → 혼자 처리해야 함
케이스 B — 계정 탈취 의심
- 실수 시 정리 비용: £2,000 (사기 손실, 규제 대응, 이탈 고객)
- 에스컬레이션 비용: £4
- 임계값 = 1 - 4/2000 ≈ 0.998
- 에이전트 신뢰도 90% → 반드시 에스컬레이션
같은 에이전트, 같은 90%, 정반대의 정답입니다. 0.9 룰은 두 경우 모두 혼자 처리하라고 지시하고, 두 번째 케이스에서 티켓당 £196을 조용히 태워버려요.
코드로 본 규칙
# 교육용 예시입니다. 프로덕션 코드가 아닙니다.
def should_act_alone(p_correct: float, error_cost: float, escalate_cost: float) -> bool:
"""
Chow의 rejection rule 기반 결정.
p_correct는 반드시 캘리브레이션된 확률이어야 함.
"""
threshold = 1 - (escalate_cost / error_cost)
return p_correct > threshold
# 케이스 A: 평범한 환불
assert should_act_alone(0.90, error_cost=15, escalate_cost=4) is True
# 케이스 B: 계정 탈취 의심
assert should_act_alone(0.90, error_cost=2000, escalate_cost=4) is False
함수 안에는 화려한 게 없어요. 정말 중요한 건 세 입력값을 어떻게 고르느냐입니다. 매직 넘버가 0.85냐 0.92냐를 두고 싸우는 데 시간을 쓰지 마세요.

함정 1: 캘리브레이션 (Confidence ≠ Calibration)
위 산수는 전부 하나의 가정 위에 서 있어요. 에이전트가 90%라고 말할 때, 실제로 90% 맞는다는 가정.
이게 캘리브레이션이고, confidence와는 다릅니다.
- Confidence: 모델이 뱉는 숫자
- Calibration: 그 숫자가 실제로 의미가 있는지
만약 stated 0.95가 실제로는 0.70이라면? 기대 오차 비용은 산수의 6배입니다. 그렇게 정성껏 계산한 임계값은 픽션이 돼요. 리스크를 관리하는 게 아니라, 확률처럼 생긴 숫자로 리스크를 세탁하는 겁니다.
캘리브레이션 체크 절차
- 모든 결정을 stated confidence와 함께 로깅
- 결정 클래스별로 confidence band 구간화
- 각 구간에서 stated vs. realized accuracy 비교
- 90%라고 했는데 78%가 맞다면 그 갭을 매핑 (Isotonic regression 또는 Platt scaling)
주의할 점 두 가지:
- 에이전트는 희귀하고 고위험인 클래스에서 캘리브레이션이 최악인 경우가 많아요. 정확히 그 클래스가 극단적 임계값을 들고 있죠. 글로벌 평균은 중요한 실패를 숨깁니다.
- 티켓 믹스가 바뀌면 매핑도 드리프트합니다. 스케줄에 맞춰 재측정하세요.
함정 2: 에스컬레이션 비용은 생각보다 훨씬 비싸다
에스컬레이션 비용 ≠ 분 × 시급이 아닙니다.
- 에스컬레이션은 큐에 쌓이고, 큐는 혼잡해져요
- 더 나쁜 건 과잉 에스컬레이션이 리뷰어를 도장 찍는 기계로 만든다는 겁니다
- 한 시간에 평범한 환불 40건을 보내면, 일주일 안에 아무도 안 읽어요
모든 걸 승인하는 인간은 통제 장치가 아니라 의례(ritual)입니다. 볼륨이 커질수록 이 갭은 벌어져요.
함정 3: 인간도 틀린다
아까 미뤄둔 가정을 꺼내봅시다. 전문가의 오류율을 h라고 하면:
(1 - p) × ErrorCost < EscalationCost + h × ErrorCost
보통 h는 무시할 만큼 작지만, 진짜 애매한 티켓에서는 그렇지 않아요. 이 경우 임계값이 에이전트 쪽으로 다시 기웁니다. 의외로 많은 분들이 이 부분에서 놀라워하더라고요.

실무 적용 절차 (5단계)
- 결정 클래스 그룹화 — 실수 비용이 비슷한 것끼리 묶기. 환불은 환불끼리, 보안 사고는 보안 사고끼리.
- 각 클래스에 가격 매기기 — 에이전트 만든 사람 말고, 뒷정리하는 사람에게 물어보세요. 파이낸스와 서포트 옵스가 엔지니어링보다 이 숫자를 훨씬 잘 압니다. 그리고 대개 누가 물어봐줘서 좋아해요.
- 에스컬레이션 비용 추정 — 혼잡과 도장 찍기 효과 포함해서.
- 캘리브레이션된 확률을 규칙에 사용 — raw score 말고.
- 클래스별 임계값 도출, 비용이 움직이면 같이 움직이게 — 새로운 사기 패턴이 등장하면 보안 실수 가격이 올라가고, 임계값도 자동으로 올라갑니다. 회의 필요 없음. 도출된 것이지, 선포된 게 아니니까.
한국 개발 생태계에서의 적용 맥락
국내 SI·금융권 환경에서는 이 접근이 특히 중요합니다. 왜냐하면:
- 감사(Audit) 요구사항 때문에 "왜 이 결정을 에이전트에 맡겼는가"를 설명해야 하는데, "0.9 넘어서요"는 답이 안 됩니다. "실수 비용 대비 에스컬레이션 비용이 낮아서"는 답이 됩니다.
- 규제 산업(금융, 의료, 공공)에서는 클래스별로 임계값을 다르게 가져가는 게 컴플라이언스 방어에 유리해요.
- 반대로 초기 스타트업에서는 에스컬레이션 비용이 사실상 창업자 시간이라 비율이 극단적으로 낮아집니다. 이 경우 거의 모든 걸 에이전트에 맡기는 게 합리적이에요.
이 접근의 한계
솔직히 말하면:
- 비용 추정 자체가 어렵습니다. 특히 규제 리스크나 브랜드 리스크처럼 정량화가 힘든 항목은 숫자로 만들기가 괴로워요.
- 클래스 경계가 흐릿한 경우가 많아요. "계정 탈취 의심"과 "평범한 비밀번호 재설정"은 스펙트럼이죠.
- 캘리브레이션 측정 비용이 만만치 않습니다. 특히 롱테일 클래스는 샘플이 안 모여요.
그래도 이 방식의 진짜 장점은 논쟁의 축을 바꾼다는 겁니다. "0.85가 맞아, 0.92가 맞아?"라는 끝없는 싸움 대신, "이 실수의 가격은 얼마야?"라는 답할 수 있는 질문으로 넘어가요.
다음 단계 학습 방향
- Learning to Defer 연구 라인 (Chow 1970 → Geifman & El-Yaniv 2017 → 최신 selective prediction 논문)
- Calibration 기법: Temperature scaling, Isotonic regression, Platt scaling
- Cost-sensitive learning: 클래스별 비용 행렬을 학습에 반영하는 방법
마무리
"내 에이전트가 혼자 행동하기 전에 얼마나 자신감 있어야 하나?"는 답할 수 없는 질문입니다. 명세가 부족하니까요.
"여기서 잘못된 판단의 비용은 얼마고, 물어보는 비용은 얼마인가?"는 답할 수 있습니다.
임계값을 가격으로 설정하세요. 퍼센트는 알아서 정리됩니다.
함께 보면 좋은 글
- Gemini 3로 본 현실적인 AI 에이전트 6가지 오픈소스 프레임워크 실전 가이드 — 에이전트 프레임워크를 실제로 붙여볼 때 이 임계값 로직을 어디에 심는지 감이 잡혀요.
- NVIDIA Quantum InfiniBand, 이제 한 번의 클릭으로 멀티 테넌트 보안을 구현한다 — 인프라 레벨에서 "정책을 선포하지 말고 도출하라"는 같은 철학을 보여주는 사례입니다.