확률 캘리브레이션

편집 역사 토론
통계 수치해석 마지막 수정: 2026-09-05 04:43:09

1. 개요[편집]

확률 캘리브레이션
Probability Calibration
정의확률 $p$ 라고 말한 사건이 실제로 $p$ 의 비율로 일어남
진단 도구신뢰도 다이어그램 · ECE · MCE · 브라이어 분해
사후 보정플랫 스케일링 · 등위회귀(PAV) · 온도 스케일링
필수 조건학습에 안 쓴 별도의 보정 데이터
보정으로 안 되는 것정확도 · 정련도(sharpness) · 분포 이동
대표 관찰현대 심층망은 정확해지면서 더 과확신해졌다 (Guo 외, 2017)

내일 비 올 확률 70 %라고 말한 날들을 모아 보자. 그중 실제로 비가 온 날이 70 %면 그 예보자는 정직한 것이다. 그가 얼마나 잘 맞혔는지와는 다른 질문이다.

확률 캘리브레이션(probability calibration, 확률 보정)은 모형이 내놓은 확률값이 실제 빈도와 일치하도록 만드는 일, 그리고 그 일치 정도를 재는 개념이다. 이진 분류에서 예측 확률을 p^(X)\hat p(X) 라 할 때 완전 캘리브레이션은

P(Y=1p^(X)=p)=pp[0,1]P\big(Y=1 \mid \hat p(X)=p\big) = p \qquad \forall\,p\in[0,1]

로 정의된다. 「0.8이라고 말한 표본들만 모으면 그중 80 %가 양성」이라는 조건부 진술이며, 개별 예측의 정확도와는 논리적으로 독립인 성질이다.

이 구분이 실무에서 값을 하는 이유는, 요즘 모형의 출력이 확률이라는 이름으로 의사결정에 곧장 들어가기 때문이다. 임계값을 비용비로 정하려면, 여러 모형의 확률을 곱하거나 평균 내려면, 기대 손실을 계산해 리스크를 잡으려면 — 전부 그 숫자가 진짜 확률이어야 한다. 소프트맥스 출력이 0.99라는 것과 그 예측이 99 % 맞는다는 것은 전혀 다른 이야기이고, 현대 심층망에서는 특히 다르다.

2. 캘리브레이션만으로는 부족하다[편집]

먼저 함정 하나를 치워야 한다. 완벽하게 캘리브레이션됐지만 완전히 쓸모없는 예측기를 만드는 것은 너무 쉽다. 양성 비율이 30 %인 문제에서 무엇을 보든 항상 0.3을 출력하면 된다. 0.3이라 말한 표본 전체에서 실제 양성 비율이 정확히 0.3이므로 정의를 만족한다.

그래서 캘리브레이션은 언제나 정련도(sharpness, 해상도)와 짝으로 평가한다. 정련도는 예측 확률이 0과 1 쪽으로 얼마나 과감하게 퍼져 있는지, 즉 얼마나 정보를 담고 있는지다. 예보 검증의 고전적 표어가 이것을 압축한다 — 「캘리브레이션을 지키면서 최대한 뾰족하게」(maximize sharpness subject to calibration). 캘리브레이션은 정직함이고 정련도는 유용함이며, 둘 다 필요하다.

이 두 축을 한 숫자로 채점하는 것이 손실 함수 문서에서 다룬 적절 채점규칙이다. 브라이어 점수나 로그 손실 하나가 정직함과 뾰족함을 동시에 벌하므로, 「캘리브레이션 지표만 보고 모형을 고른다」는 것은 반쪽 평가다.

3. 신뢰도 다이어그램과 ECE[편집]

캘리브레이션을 눈으로 보는 표준 도구가 신뢰도 다이어그램(reliability diagram)이다. 예측 확률을 구간(bin)으로 나누고, 각 구간에서 평균 예측 확률을 가로축, 실제 양성 비율을 세로축에 찍는다. 완벽하면 대각선 위에 놓이고, 대각선 아래로 처지면 과확신(말한 것보다 덜 일어남), 위로 뜨면 과소확신이다.

과확신 온도 T로 왜곡한 분류기 점수 2000개를 절반씩 적합·홀드아웃으로 나눠 PAV 등위회귀와 플랫 스케일링을 매 프레임 다시 적합한다. T=3에서 홀드아웃 ECE 0.137이 플랫 0.038·등위 0.042로 내려가지만, 완전보정된 p_true를 넣어도 이 표본 수에서는 0.032가 나온다. 등위회귀를 적합에 쓴 표본에서 재면 ECE는 4e−16, 정의상 0이다.

이 그림을 한 숫자로 줄인 것이 기대 캘리브레이션 오차(expected calibration error, ECE)다. 구간 B1,,BMB_1,\dots,B_M 에 대해

ECE=m=1MBmnacc(Bm)conf(Bm),MCE=maxmacc(Bm)conf(Bm)\mathrm{ECE} = \sum_{m=1}^{M}\frac{\lvert B_m\rvert}{n}\,\Big\lvert\, \mathrm{acc}(B_m) - \mathrm{conf}(B_m) \Big\rvert, \qquad \mathrm{MCE} = \max_{m}\Big\lvert\,\mathrm{acc}(B_m)-\mathrm{conf}(B_m)\Big\rvert

ECE 는 표본 가중 평균 격차, MCE 는 최악 구간의 격차다. 안전이 걸린 시스템에서는 평균보다 최악이 중요하므로 MCE 를 본다.

3.1. binning 편향 — ECE 를 믿을 때의 주의사항[편집]

ECE 는 구현이 열 줄이라 널리 쓰이지만, 추정량으로서 성질이 나쁘다. 문제는 전부 구간 나누기에서 온다.

  • 구간이 성기면 오차가 숨는다. 한 구간 안에서 과확신 표본과 과소확신 표본이 섞이면 서로 상쇄되어 격차가 작게 나온다. 극단적으로 구간이 하나면 ECE 는 「전체 평균 확률 대 전체 양성 비율」의 차이 하나로 줄어들어, 진짜 캘리브레이션 오차를 크게 과소평가한다.
  • 구간이 촘촘하면 잡음이 오차로 잡힌다. 절댓값이 씌워져 있어 구간 안의 표본이 적으면 우연한 변동이 그대로 양의 값으로 누적된다(EXEX\mathbb E\lvert X\rvert \ge \lvert\mathbb E X\rvert). 완벽히 캘리브레이션된 예측기조차 ECE 가 0이 아니게 나온다.
  • 구간 방식에 따라 값이 바뀐다. 등폭(equal-width) 구간은 예측이 0.99 근처에 몰리는 심층망에서 거의 모든 표본이 마지막 한 구간에 들어가 해상도를 잃는다. 등량(equal-mass, 분위수) 구간이 대개 낫지만, 어느 쪽을 썼는지 밝히지 않은 ECE 값은 비교 불가능하다.
  • ECE 는 적절 채점규칙이 아니다. 최소화 대상으로 삼으면 「구간 경계를 피해 다니는」 식으로 게임할 수 있다. 편향을 덜어낸 추정량과 커널 기반 대안이 여럿 제안돼 있으므로, 논문 수준의 주장을 하려면 그쪽을 쓰는 것이 맞다.

실무 규칙으로 정리하면 이렇다. ECE 는 같은 구간 설정 아래에서 모형끼리 비교하는 용도로만 쓰고, 절대값에 의미를 부여하지 않는다. 그리고 숫자보다 신뢰도 다이어그램 그림을 함께 본다 — 어느 확률 구간에서 어느 방향으로 틀리는지는 숫자 하나로 안 나온다.

4. 브라이어 점수의 분해[편집]

캘리브레이션과 정련도가 왜 짝인지는 브라이어 점수를 쪼개 보면 대수적으로 드러난다. 예측값을 KK 개 구간으로 묶고 구간 kk 의 표본 수를 nkn_k, 평균 예측을 pˉk\bar p_k, 실제 양성 비율을 oˉk\bar o_k, 전체 양성 비율을 oˉ\bar o 라 하면 (머피, 1973)

BS=1nknk(pˉkoˉk)2신뢰도(REL)    1nknk(oˉkoˉ)2분해능(RES)  +  oˉ(1oˉ)불확실성(UNC)\mathrm{BS} =\underbrace{\frac1n\sum_k n_k\,(\bar p_k-\bar o_k)^2}_{\text{신뢰도(REL)}} \;-\;\underbrace{\frac1n\sum_k n_k\,(\bar o_k-\bar o)^2}_{\text{분해능(RES)}} \;+\;\underbrace{\bar o\,(1-\bar o)}_{\text{불확실성(UNC)}}

세 항의 뜻이 정확히 앞의 논의와 맞물린다.

의미좋은 방향모형이 바꿀 수 있나
신뢰도 REL말한 확률과 실제 빈도의 격차작을수록 좋음예 — 사후 보정으로도 줄어듦
분해능 RES예측이 사건을 얼마나 갈라내는가클수록 좋음예 — 더 좋은 모형이 필요
불확실성 UNC문제 자체의 난이도상수아니오

UNC 는 데이터의 성질이라 손댈 수 없고, 사후 보정은 REL 만 줄인다. 그래서 「보정을 했더니 브라이어 점수가 크게 좋아졌다」는 것은 원래 모형의 확률이 많이 삐뚤어져 있었다는 뜻이지 모형이 똑똑해졌다는 뜻이 아니다. 진짜 개선은 RES 를 키우는 쪽이고, 그건 손실도 보정도 아닌 모형·특징·데이터의 몫이다. 로그 손실에도 같은 꼴의 캘리브레이션-정련도 분해가 존재하며, 일반적으로 모든 적절 채점규칙이 이 두 항으로 쪼개진다.

참고로 이 분해도 구간 나누기를 전제하므로 앞 절의 binning 편향을 그대로 물려받는다. 예보 문헌에서 분해 항을 보고할 때 구간 수를 반드시 명시하는 관행이 여기서 나왔다. 애초에 이 도구 상자 전체가 기계학습이 아니라 앙상블 예보 쪽에서 먼저 완성된 것이다.1

5. 플랫 스케일링[편집]

가장 오래된 사후 보정은 로짓 위에 로지스틱 회귀를 한 번 더 얹는 것이다. 모형의 원 출력(SVM 의 판정값, 로짓 등)을 f(x)f(x) 라 할 때

q^(x)=σ(af(x)+b),(a,b)=argmin  i[tilogq^i+(1ti)log(1q^i)]\hat q(x) = \sigma\big(a\,f(x)+b\big), \qquad (a,b) = \arg\min \; -\sum_{i}\Big[t_i\log \hat q_i + (1-t_i)\log(1-\hat q_i)\Big]

로 두 개의 스칼라만 보정용 데이터에서 적합한다(플랫, 1999). 원래 SVM 점수를 확률로 바꾸기 위해 제안된 방법이고, 지금도 소표본에서는 최선에 가깝다.

세부 두 가지가 중요하다. 첫째, 플랫은 타깃을 0/1 그대로 쓰지 않고 t+=(N++1)/(N++2)t_+ = (N_++1)/(N_++2), t=1/(N+2)t_- = 1/(N_-+2) 로 살짝 안쪽으로 당겨 쓴다. 보정 집합이 완전 분리 가능할 때 aa 가 발산하는 것을 막는 정규화이며, 빼먹으면 소표본에서 정확히 그 사고가 난다. 둘째, 모수가 둘뿐이라는 것이 장점이자 한계다. 분산이 작아 수백 개 표본으로도 안정적이지만, 실제 왜곡이 시그모이드 모양이 아니면 고칠 수 없다.

한 가지 함정이 더 있다. 이미 잘 캘리브레이션된 확률에 플랫 스케일링을 적용하면 오히려 망가질 수 있다 — σ(ap+b)\sigma(a p + b) 꼴은 항등사상을 표현하지 못하기 때문이다. 로짓에 걸면(f=logitpf = \operatorname{logit} p, a=1,b=0a=1,b=0) 항등이 표현되므로, 플랫은 확률이 아니라 로짓에 거는 것이 원칙이다. 확률에 직접 걸고 싶으면 logp\log plog(1p)\log(1-p) 를 따로 쓰는 베타 캘리브레이션 계열이 항등을 포함하도록 설계돼 있다.

6. 등위회귀와 PAV 알고리즘[편집]

모양을 미리 정하지 않고 단조 증가라는 조건만 걸면 비모수 보정이 된다. 보정 데이터를 점수 순으로 정렬해 (s1sn, yi{0,1})(s_1\le\dots\le s_n,\ y_i\in\{0,1\}) 로 두고

minz1z2zn i=1nwi(yizi)2\min_{z_1\le z_2\le\cdots\le z_n}\ \sum_{i=1}^{n} w_i\,(y_i-z_i)^2

를 푼다. 이것이 등위회귀(isotonic regression)이며, 계단 모양의 보정 곡선을 준다. 분류기 보정에 처음 쓴 것은 자드로즈니와 엘칸(2002)이다.

푸는 알고리즘이 PAV(pool adjacent violators, 인접 위반자 병합)다. 논리가 놀랍도록 단순하다.

  1. 각 점을 「무게 wiw_i, 값 yiy_i」인 블록 하나로 두고 왼쪽부터 스택에 쌓는다.
  2. 새로 넣은 블록의 값이 바로 앞 블록의 값보다 작으면(단조 위반) 두 블록을 합치고, 합친 블록의 값은 무게가중 평균으로 둔다.
  3. 합친 결과가 다시 그 앞 블록을 위반하면 계속 합친다. 위반이 없어지면 다음 점으로 간다.

정렬이 끝나 있으면 각 블록이 최대 한 번 만들어지고 한 번 합쳐지므로 전체 O(n)O(n) 이다. 결과는 유일한 전역 최적해이고, 놀랍게도 이 해는 제곱오차뿐 아니라 모든 브레그만 발산에 대해 동시에 최적이라는 성질이 있다 — 그래서 「제곱오차로 푼 답인데 로그 손실 기준으로도 최적이냐」는 걱정을 할 필요가 없다. 부수적 사실 하나 더. PAV 가 만드는 블록 구조는 ROC 곡선의 볼록 껍질과 정확히 대응한다.2

성질을 플랫과 비교하면 이렇다.

항목플랫 스케일링등위회귀
형태 가정시그모이드단조만
모수 수2사실상 블록 수
필요 데이터수백이면 충분대체로 1000 이상
출력 모양매끄러운 곡선계단 함수
순위 보존완전 보존 (단조 증가)보존하되 동점 생성
실패 방식왜곡이 시그모이드가 아니면 못 고침소표본에서 과적합

정리하면 소표본은 플랫, 대표본은 등위회귀이고, 이는 니쿨레스쿠-미질과 카루아나(2005)의 대규모 비교 실험 이후 굳어진 관행이다. 등위회귀가 계단 함수라 같은 확률값을 받는 표본이 뭉치는 것도 기억할 점 — 임계값을 미세하게 조정해야 하는 파이프라인에서는 이 동점이 문제를 일으킬 수 있다.

7. 온도 스케일링과 현대 신경망의 과확신[편집]

2017년 궈(Guo) 등의 관찰이 이 분야를 다시 뜨겁게 만들었다. 1990년대의 얕은 신경망은 꽤 잘 캘리브레이션돼 있었는데, 훨씬 정확한 현대 심층망은 심하게 과확신한다는 것이다. 정확도 곡선이 평평해진 뒤에도 학습이 계속되면서 테스트 NLL 이 도리어 올라가는 현상이 그 핵심이다 — 모형이 이미 맞힌 표본의 확률을 1 쪽으로 계속 밀어 손실을 짜내는 것이고, 그 결과 정확도는 그대로인데 확률은 부풀려진다. 용량 증가, 배치 정규화, 약해진 가중치 감쇠가 이 경향을 함께 키우는 요인으로 지목됐다.

처방은 허무할 정도로 간단했다. 로짓 벡터 z\mathbf z 를 스칼라 하나로 나눈다.

q^=softmax ⁣(z/T),T>0 는 보정 데이터에서 NLL 최소화\hat{\mathbf q} = \operatorname{softmax}\!\big(\mathbf z / T\big), \qquad T>0 \ \text{는 보정 데이터에서 NLL 최소화}

T>1T>1 이면 분포가 평평해지고, T<1T<1 이면 뾰족해진다. 적합 기준을 NLL 로 두는 것이 표준이며, 여기서 ECE 를 직접 줄이려 드는 것은 권장되지 않는다.3 온도 스케일링의 결정적 장점은 TT 가 양수인 한 로짓의 순서를 바꾸지 않는다는 것 — 따라서 정확도가 정확히 보존된다. 「보정했더니 정확도가 떨어졌다」는 걱정이 원리적으로 불가능하고, 모수가 하나뿐이라 수백 개 표본으로도 안정적으로 적합된다. 이 두 성질 때문에 온도 스케일링이 사실상 기본값이 됐다.

한계도 분명하다.

  • 평균적으로만 고친다. TT 하나로 전 구간을 같은 방향으로 눌러 펴는 것이라, 어떤 확률 구간은 과확신이고 다른 구간은 과소확신인 상황은 못 고친다.
  • 클래스별 편차를 못 고친다. 소수 클래스만 유독 과확신인 불균형 문제에서는 클래스별 자유도가 필요하다.
  • 분포 이동에 약하다. 검증 집합에서 맞춘 TT 는 그 분포에서만 유효하고, 입력 분포가 흔들리면 보정이 함께 무너진다는 것이 반복해서 보고됐다. 보정은 외삽하지 않는다.

학습 단계에서 과확신을 억제하는 접근도 있다. 라벨 스무딩과 포컬 손실이 대표적인데, 둘 다 ECE 를 낮추는 효과가 보고된 반면 적절 채점규칙이 아니게 되는 대가를 치른다. 자세한 논의는 손실 함수 쪽에 있다. 그리고 학습 시 억제와 사후 온도 스케일링은 배타적이지 않아서, 실무에서는 대개 둘 다 한다.

8. 다중분류 확장과 데이터 분할[편집]

KK 클래스로 가면 「캘리브레이션됐다」는 말이 하나가 아니다.

  • 신뢰도 캘리브레이션(confidence): 최댓값 확률만 본다. P(Y=y^maxkp^k=p)=pP(Y=\hat y \mid \max_k \hat p_k = p) = p. ECE 논문 대부분이 재는 것이 이것이다. 가장 약한 조건.
  • 클래스별 캘리브레이션(classwise): 각 클래스 kk 에 대해 일대다로 따로 성립. 클래스별 ECE 를 평균 낸다.
  • 정준 캘리브레이션(canonical): 확률 벡터 전체에 대해 조건부 분포가 일치. 가장 강하고, 검증에 필요한 표본이 KK 에 대해 폭발해서 사실상 잴 수 없다.

논문의 ECE 값을 읽을 때 어느 정의인지 먼저 확인해야 한다. 신뢰도 캘리브레이션은 만족하는데 클래스별로는 엉망인 모형이 흔하고, 의료·금융처럼 특정 클래스의 확률이 직접 쓰이는 곳에서는 후자가 진짜 문제다.

보정기 자체도 자유도에 따라 갈린다. 로짓에 걸리는 아핀 변환 Wz+bW\mathbf z+\mathbf b 를 다 허용하는 행렬 스케일링은 모수가 K2+KK^2+K 개라 클래스가 많으면 곧바로 과적합하고, 대각선만 쓰는 벡터 스케일링(KK 개 척도 + KK 개 편향)이 절충, 온도 스케일링은 그 극단으로 모수 하나다. 디리클레 캘리브레이션처럼 정규화를 얹어 행렬 스케일링을 실용화한 방법도 있다. 일대다 보정기를 KK 개 따로 학습한 뒤 합이 1이 되도록 재정규화하는 고전적 방식도 여전히 쓰이는데, 재정규화가 개별 보정기의 캘리브레이션을 조금 깨뜨린다는 점은 알고 써야 한다.

마지막으로, 이 문서 전체에서 가장 자주 어겨지는 규칙.

보정 데이터는 학습에 쓰지 않은 데이터여야 한다.

학습 데이터에서 모형은 이미 거의 완벽하므로, 그 위에서 잰 신뢰도 다이어그램은 거의 대각선에 붙는다. 그 데이터로 TT 를 맞추면 T1T\approx1 이 나오고 보정이 아무 일도 하지 않는다. 「온도 스케일링을 했는데 효과가 없다」는 신고의 압도적 다수가 이 실수다. 표준 처방은 검증 집합의 일부(전체의 10~20 % 정도)를 보정 전용으로 떼는 것이고, 데이터가 아까우면 kk-겹 교차검증 식으로 폴드마다 보정기를 학습해 평균 내는 방식을 쓴다(이 경우 보정기들의 앙상블이 되어 분산도 함께 줄어든다).

캘리브레이션이 안 되는 상황을 위한 다른 길도 있다. 앙상블을 쓰면 확률이 자연스럽게 부드러워지고, 점추정 확률 대신 집합 예측을 내놓아 유한 표본에서 커버리지를 보장하는 컨포멀 예측 계열은 아예 목표를 바꾼다. 후자는 「확률이 정직한가」가 아니라 「예측 집합이 정답을 90 % 포함하는가」를 보장하는 것이라, 캘리브레이션의 대체재가 아니라 다른 질문에 대한 답이다.

9. 관련 문서[편집]

10. Footnotes[편집]

  1. 예보 분야는 이 문제를 기계학습보다 반세기 앞서 정리해 놨다. 브라이어의 논문이 1950년, 머피의 분해가 1973년이다. 2017년 심층학습 커뮤니티가 신뢰도 다이어그램을 「재발견」했을 때 기상학자들의 반응은 대체로 「그거 우리가 매일 그리는 그림인데」였다고 한다.

  2. 이 대응 덕에 등위회귀 보정은 「ROC 곡선을 볼록 껍질로 바꾸는 것」과 같은 조작이 된다. 볼록 껍질 아래로 파인 부분은 점수의 단조성이 국소적으로 뒤집힌 구간이고, PAV 는 그 구간을 하나로 뭉개 버린다. 그래서 등위회귀 보정 뒤에 AUC 가 아주 살짝 오르는 일이 생기는데, 성능이 좋아진 게 아니라 원래 낭비하던 순서 정보를 정리한 것이다.

  3. TT 를 NLL 로 맞추는 것과 ECE 로 맞추는 것은 다른 답을 준다. ECE 를 직접 최소화하면 그 지표에서는 더 좋아 보이지만 적절 채점규칙이 아닌 것을 최적화하는 셈이라 권장되지 않는다. 지표를 목적함수로 승격시키는 순간 그 지표는 지표이기를 그만둔다는, 굿하트 법칙의 소박한 사례.