모델 보정(Calibration)이란 무엇이며 ECE는 어떻게 측정하는가
요약
모델 보정(Calibration)은 모델이 보고하는 확률과 실제 예측의 정확도 사이의 불일치를 측정하고 수정하는 과정입니다. 이 문제는 특히 결정 모델을 사용할 때 중요하며, ECE(Expected Calibration Error)를 통해 신뢰도와 실제 성능 간의 격차를 수치화할 수 있습니다.
핵심 포인트
- 모델 보정은 확률적 신뢰도가 실제 정확도를 반영하도록 조정하는 것.
- ECE는 모델이 보고하는 신뢰도와 실제 정확도의 차이를 측정한다.
- Temperature scaling 등 다양한 기법으로 과신을 수정할 수 있다.
- 의사결정 자동화 시스템에서 잘못된 신뢰도는 큰 오류를 초래한다.
어떤 분류기가 "98% 확신합니다"라고 말한다면, 100번 중 98번 맞혀야 합니다. 하지만 실제로는 많은 언어 모델이 그 정도의 신뢰도를 제공하지만, 10번 중 7번밖에 맞히지 못하는 경우가 많습니다. 이처럼 모델이 보고하는 확률과 실제로 정답일 확률 사이의 불일치를 측정하고 수정하는 것이 바로 **모델 보정(calibración de modelos)**입니다.
이 문제는 특히 모델을 _결정 모델(decision model)_로 사용할 때 발생합니다. 결정 모델이란 텍스트를 토큰 단위로 생성하는 대신, 한 번에 고정된 옵션들 중에서 선택하는 시스템을 말합니다. 이 경우 보고되는 신뢰도는 보통 확실성의 점수처럼 취급되지만, 보정되지 않으면 그 점수는 거짓말을 하게 됩니다.
요약 (TL;DR)
- 98%의 신뢰도가 98%의 정확도를 의미하지는 않습니다. 보정은 바로 이 격차를 측정합니다.
- ECE(Expected Calibration Error, 기대 보정 오차)는 모델의 신뢰도와 실제 정확도 사이가 얼마나 떨어져 있는지를 숫자로 요약해줍니다.
- Temperature scaling은 아무것도 재훈련할 필요 없이 로짓(logits)에 대한 매개변수를 조정하여 과신을 수정합니다.
- Platt scaling과 isotonic regression은 불일치가 클래스나 빈(bins) 간에 균일하지 않을 때 사용됩니다.
- 어떤 분류기의 ECE를 신뢰하기 전에 계산하는 데 PyTorch로 20줄이면 충분합니다.
모델 보정이란 무엇인가?
**모델 보정(calibración de modelos)**은 분류기가 보고하는 확률이 각 예측에 대해 평균적으로 실제 정확도 빈도와 일치하는 속성입니다. 즉, 80%의 신뢰도를 가진 보정된 모델은 자신의 성능을 과대평가하거나 과소평가하지 않고, 그 경우 약 80% 정도 맞히게 됩니다.
보정(Calibration)은 정확도(Accuracy)와는 다릅니다. 어떤 모델이 90%의 확률로 맞히더라도, 거의 모든 경우에 99%의 신뢰도를 보고한다면 보정이 매우 잘못된 상태일 수 있습니다. 정확도는 낮지만 자신의 신뢰 수준이 오류율을 정직하게 반영하는 모델은 완벽하게 보정되었을 수 있습니다. 이 둘은 직교하는 두 축입니다. 하나는 모델이 맞았는지 측정하고, 다른 하나는 모델이 언제 자신이 맞았는지 아는지를 측정합니다.
신뢰도 90%에서 100% 사이의 구간에는 Qwen3-1.7B를 사용한 실험 예측 1221개 중 809개가 집중되었습니다.
왜 중요한가
모델 보정은 의사결정을 자동화하는 시스템, 즉 의료 분류(triage), 콘텐츠 조정(moderation), 신용 위험 점수 산정(scoring) 또는 '이것을 믿고 인간의 검토 없이 통과시킨다'라고 결정하는 모든 파이프라인에서 특히 중요합니다. 만약 그 임계값(threshold)이 잘못 보정되었다면, 해당 파이프라인은 성공적으로 자동화하는 것만큼이나 오류를 높은 확신도로 자동화하게 됩니다.
본 기사의 동기가 된 사례가 이를 잘 보여줍니다. 한 개발자가 CommonsenseQA 샘플에 대한 다지선다형 분류기(multiple-choice classifier)로 Qwen3-1.7B 모델을 평가했습니다. 이 과정에서 출력을 다섯 가지 가능한 토큰(A, B, C, D, E)으로 제한하고, 해당 로짓(logits)의 소프트맥스(softmax)를 신뢰도 점수로 사용했습니다. 이 모델은 1221개의 질문 중 725개(정확도 59.38%)를 맞혔는데, 이는 미세 조정되지 않은 1.7B 매개변수 모델에게는 합리적인 결과였습니다. 문제는 전반적인 정확도가 아니었습니다. 신뢰도 수준별로 예측을 그룹화했을 때 발생한 문제였습니다.
예측값을 10개의 신뢰도 구간(bin)으로 나눈 결과, 상위 구간(90%~100%)은 평균 98.55%의 신뢰도를 보였지만 실제로는 단지 70.09%의 정확도만을 달성했습니다. 모델은 거의 완벽하게 확신한다고 말하는 그룹에서 10번 중 약 3번이나 틀렸습니다. 80%~90% 구간에서는 격차가 더욱 심각했는데, 평균 신뢰도는 85.55%였으나 실제 정확도는 47.11%에 불과했습니다. 즉, 모델은 단순히 틀리는 것을 넘어, 그 실패의 정도를 실제 성공 확률과 전혀 관련 없는 높은 신뢰도로 제시하고 있었습니다.
작동 방식: 로짓(logit)에서 보정된 확률까지
모든 것은 네트워크의 마지막 레이어에서 시작됩니다. 분류기(classifier)는 직접적으로 확률을 생성하는 것이 아니라, 정규화되지 않은 숫자 벡터인 **로짓(logits)**을 생성합니다. 이 로짓은 이후 softmax를 거쳐 확률 분포로 변환됩니다. 공식은 softmax(z)_i = exp(z_i / T) / Σ exp(z_j / T)이며, 여기서 T는 온도(temperature)입니다. T = 1일 경우 표준 softmax가 나오며, T를 높이면 분포가 평탄해지고 낮추면 날카로워집니다.
보정 문제가 발생하는 이유는 현대의 네트워크들이 충분한 용량과 에포크(epoch)로 학습되면서 로짓의 크기가 커지는 경향이 있기 때문입니다. 즉, 네트워크는 정확하게 아는 것보다 자신감 있게 '안다'고 느끼는 것을 더 빠르게 학습합니다. 이 주제에 대한 참고 논문인 [
flowchart TD
A["모델의 로짓(Logits)"] --> B["온도 T를 적용한 Softmax"]
B --> C["클래스별 확률"]
...
수식은 ECE = Σ (n_m / N) * |acc(m) - conf(m)|이며, 여기서 n_m은 bin m에 속하는 예제 개수, N은 전체 개수, acc(m)는 해당 bin의 실제 정확도, 그리고 conf(m)는 해당 bin의 평균 신뢰도를 의미합니다. ECE가 0이라는 것은 완벽한 보정을 의미하며, 실제로는 클래스가 많은 태스크에서 보정되지 않은 모델들은 0.10에서 0.25 사이의 값을 보이는 경우가 많습니다.
같은 내용을 시각적으로 이해하는 방법은 **신뢰도 다이어그램(reliability diagram)**입니다. 이는 X축이 각 bin의 평균 신뢰도를, Y축이 해당 bin의 실제 정확도를 나타내는 막대 그래프입니다. 만약 모델이 완벽하게 보정되었다면, 모든 막대는 신뢰도와 정확도가 같은 대각선 위에 놓일 것입니다. Qwen3-1.7B 실험에서처럼 높은 신뢰도의 bin에서 막대가 대각선 아래에 위치한다면, 이 다이어그램은 모델이 체계적으로 과신하고 있다는 것을 한눈에 보여줍니다.
실제 예시: ECE 측정 단계별 가이드
가장 먼저 해야 할 일은 수정하기 전에 측정하는 것입니다. 다음 예시는 딥러닝 프레임워크에 의존하지 않고, 신뢰도와 정확도의 배열로부터 ECE를 계산합니다:
import numpy as np
def expected_calibration_error(confidences, accuracies, n_bins=10):
...
flowchart TD
A["보정되지 않은 로짓"] --> B{"몇 개의 클래스가 있는가?"}
B -->|"이진 분류(Binary)"| C["Platt 스케일링(Platt scaling)"]
B -->|"다중 클래스(Multiclass)"| D{"클래스 간의 보정되지 않은 정도가 균일한가?"}
D -->|"예(Yes)"| E["온도 스케일링(Temperature scaling)"]
D -->|"아니오, 비대칭적이다(No, is asymmetric)"| F["Dirichlet 보정(Dirichlet calibration)"]
D -->|"검증 데이터가 충분한가?"| G["등방성 회귀(Isotonic regression)"]
0.05를 초과하는 ECE는 이미 프로덕션 환경의 분류기에게 높은 수치로 간주됩니다.
## 실제 사용 사례
...
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기