무엇인가
LLM에게 "답과 함께 확신도를 0~1로 달라"고 하면 모델은 언제나 그럴듯한 숫자를 줍니다. 보정(calibration)은 그 숫자가 실제 정답률과 맞는지를 따지는 일입니다. "90%"라고 말한 답들 가운데 실제로 90% 안팎이 맞아야 보정된 것입니다.
2026년 10월 앰루트 조시의 글 「Asking LLM for confidence」는 말로 한 확신도가 모델 안의 계기판을 읽은 값이 아니라 대화의 그럴듯한 이어짐이라고 지적해 해커뉴스 첫 화면에 올랐습니다. 이 생각은 75년 된 확률 예보 채점법과 2023년 「그냥 보정을 요청하라(Just Ask for Calibration)」 이후의 말로 한 확신도(verbalized confidence) 연구 위에 서 있습니다. 결론은 단순합니다. 숫자가 믿을 만한지는 정답이 붙은 기록으로 채점해 봐야만 안다.
어떻게 동작하나
믿을 만한 확신도의 조건은 둘입니다. ① 예측의 근거가 된 정보를 반영한다(정보가 같으면 같고, 바뀌면 바뀐다). ② 같은 종류의 질문에서 실제 결과로 검증되었다. 채점에는 세 숫자를 함께 봅니다.
| 지표 | 무엇을 재나 | 읽는 법 |
|---|---|---|
| ECE (기대 보정 오차) | 확신도 구간마다 평균 확신도와 실제 정답률의 차이를 구간 크기로 가중 평균 | 낮을수록 좋다. '늘 평균만 말하기'도 0이 될 수 있다 |
| AUROC | 맞힌 답 하나와 틀린 답 하나를 골랐을 때 맞힌 쪽 확신도가 더 높을 확률 | 0.5는 동전 던지기, 1.0은 완벽한 변별 |
| 브라이어 점수 (1950) | (확신도 − 결과)²의 평균. 보정과 변별력을 한꺼번에 | 낮을수록 좋다. 정직하게 말해야 기대 점수가 최적인 적정 채점 규칙 |
말로 한 확신도의 전형적 증상은 세 가지입니다. 다시 물으면 숫자가 바뀌고, "정말 확실해요?"라고 되물으면 답과 숫자가 움직이고, 앞에 "확실히 정답입니다"라고 써 두면 숫자가 따라 오릅니다. RLHF도 보정을 해칩니다. GPT-4 기술 보고서에서 사전학습 모델의 ECE는 0.007이었지만 PPO 후 0.074로 열 배가 됐습니다.
처방은 확신도를 모델의 입이 아니라 기록에서 가져오는 것입니다. 관찰할 수 있는 신호(재표본 일치도, 검색 근거, 토큰 확률, 판정 모델 확률, 실행 검증)를 고르고, 답마다 신호와 실제 결과를 기록하고, 신호별로 묶어 정답률을 세어 그 값을 다음 확신도로 씁니다. 기계학습의 히스토그램 구간화(2001)와 같은 절차입니다.
빠른 시작
채점은 표준 라이브러리만으로 됩니다. 아래는 위 세 지표의 정의를 그대로 옮긴 것입니다. 확신도는 0~1, 결과는 맞으면 1 틀리면 0입니다.
def brier(conf, ok):
return sum((c - o) ** 2 for c, o in zip(conf, ok)) / len(conf)
def ece(conf, ok, bins=10):
total = 0.0
for b in range(bins):
idx = [i for i, c in enumerate(conf) if b / bins < c <= (b + 1) / bins or (b == 0 and c == 0)]
if idx:
acc = sum(ok[i] for i in idx) / len(idx)
avg = sum(conf[i] for i in idx) / len(idx)
total += len(idx) / len(conf) * abs(acc - avg)
return total
def auroc(conf, ok):
pos = [c for c, o in zip(conf, ok) if o]
neg = [c for c, o in zip(conf, ok) if not o]
wins = sum((p > q) + 0.5 * (p == q) for p in pos for q in neg)
return wins / (len(pos) * len(neg))
conf = [0.9, 0.95, 0.9, 0.6, 0.9] # 모델이 말한 확신도
ok = [1, 0, 1, 0, 0] # 사람이 채점한 결과
print(brier(conf, ok), ece(conf, ok), auroc(conf, ok))
정답 기록이 수백 건 쌓이면 확신도 구간별 실제 정답률(신뢰도 표)과 AUROC를 함께 그리고, 자동 처리 문턱은 "0.8이면 발송"이 아니라 "이 문턱에서 자동 처리된 답의 오류율 X%, 사람 검토량 Y%"로 정합니다. 이 항목의 라이브 실행에서 모델이 답과 확신도를 함께 내는 모습을 직접 볼 수 있습니다.
코어닷투데이 실측
2026년 10월 24일 대화형 모델 5개와 판정 모델 4개에 KMMLU 300문항, KMMLU-HARD 298문항, SimpleQA Verified 200문항을 물었습니다. "정답 / 확신도(0~100)" 두 줄로만 답하게 했고, 첫 답의 확신도를 정답 여부와 대조했습니다(ECE 10구간).
| 모델 · 세트 | 정확도 | 평균 확신도 | ECE | AUROC |
|---|---|---|---|---|
| GPT-4.1 mini · KMMLU | 55.7% | 91.0% | 0.354 | 0.53 |
| GPT-4.1 mini · HARD | 36.2% | 90.4% | 0.541 | 0.50 |
| Qwen3.5 4B · KMMLU | 36.1% | 97.0% | 0.608 | 0.57 |
| GPT-6.1 Sol · KMMLU | 95.7% | 97.5% | 0.027 | 0.75 |
| GPT-6.1 Sol · SimpleQA | 69.7% | 86.6% | 0.177 | 0.87 |
| Claude Sonnet 5.5 · KMMLU | 92.5% | 83.2% | 0.093 | 0.74 |
| Claude Sonnet 5.5 · SimpleQA(156) | 42.9% | 48.9% | 0.091 | 0.85 |
- 소형 모델의 숫자는 흉내였다. GPT-4.1 mini는 응답의 72%에 "90"을 썼고, "정말 확실한가요?" 한마디에 KMMLU 답의 55%를 바꿔 정확도가 55.7%에서 46.7%로 떨어졌는데 평균 확신도는 91.0에서 95.4로 올랐다. Qwen3.5 4B는 앞 문장만 "확실히"와 "잘 모르겠다"로 바꿔도 확신도가 96.6 대 43.2로 움직였다.
- 프런티어 모델의 숫자에는 정보가 있었다. 다만 같은 "90"이 모델마다 뜻이 다르다. Claude는 낮게(과소 확신), GPT-6.1 Sol은 높게 말했고, Sol은 사실 질문(SimpleQA)에서 17%포인트를 부풀렸다.
- 기록은 보정을, 신호는 변별력을 준다. '다섯 번 일치도'만으로 만든 기록 규칙이 GPT-4.1 mini의 ECE를 0.354→0.053, HARD 0.541→0.025로 낮췄지만, 규칙의 AUROC는 신호가 가진 정보만큼(0.53~0.80)만 나왔다. 판정 모델 OpenAI Decisions는 KMMLU에서 ECE 0.045·AUROC 0.85로 가장 잘 보정됐지만 정확도는 71.7%였다.
한계: 게이트웨이 크레딧이 떨어져 Claude는 첫 답(KMMLU 두 세트 598문항, SimpleQA 156문항)만 받았고, KMMLU는 공개 데이터라 최신 모델의 학습 데이터에 섞였을 수 있습니다.
언제 쓰고, 언제 피하나
- 잘 맞는다: 확신도로 분기하는 에이전트(자동 발송 vs 사람 검토), LLM 심판의 점수 관리, 모델·프롬프트를 바꿀 때마다 다시 재는 회귀 점검. 정답 기록을 만들 수 있는 업무라면 어디든.
- 다른 방법을 먼저 본다: 맞고 틀림을 실행으로 확정할 수 있으면(테스트·재계산·스키마 검사) 확신도보다 검증이 낫다. "95%의 경우 정답이 후보 안에 있다" 같은 보장이 필요하면 컨포멀 예측을 쓴다.
한계와 주의
- 사용자에게 "신뢰도 92%"를 띄울 때는 "비슷한 질문 1,200건 중 92%가 맞았음"처럼 기록을 함께 보인다. 설명이 길수록 사람은 답을 더 믿지만 정확도는 그대로다.
- 재표본 일치도·의미 엔트로피는 답이 매번 바뀌는 지어내기만 잡는다. 같은 가짜 판례를 일관되게 주장하는 모델은 통과한다.
- RLCR 같은 보정 강화학습은 훈련 분포 안에서 숫자를 믿을 만하게 만들지만, 분포 밖(내 업무)에서는 여전히 다시 재야 한다.
- 공급사가 모델을 바꾸면 보정이 깨진다. 판정 모델도 과제가 바뀌면 문턱을 다시 맞춰야 했다.
- 칼라이 등(2025)의 '틀리면 t/(1−t)점 감점' 채점에서 논문 본문은 t=0.75일 때 감점 2로 적었지만 공식대로면 3이다.



