안전 평가의 통계와 체계 설계 — 희귀사건과 calibration, 스물한 편의 마지막 체크리스트

On Calibration of Modern Neural Networks (Guo et al., Cornell University, ICML 2017)

Language Models (Mostly) Know What They Know (Kadavath et al., Anthropic, arXiv 2022)

Detecting Hallucinations in Large Language Models Using Semantic Entropy (Farquhar et al., University of Oxford, Nature 2024)

Introduction

레드팀 보고서에 이렇게 적혀 있다고 하자. “탈옥 시도 100건 중 성공 0건. 본 모델은 안전하다.” 이 문장은 이 시리즈가 20편에 걸쳐 쌓아온 도구로 보면 두 가지를 동시에 잘못 말하고 있다. 첫째, “성공 0건”은 “위반율 0%”가 아니다 — #15에서 이미 예고했듯 표본에서 관측된 0은 모집단의 0을 보장하지 않는다. 둘째, “안전하다”는 결론은 측정하지 않은 것 — 확신에 찬 오답, 무해한 요청에 대한 과잉 거절, 라벨링 자체의 신뢰도 — 을 전부 생략한 채 내려진다.

이 시리즈는 측정론(#1)에서 시작해 척도와 지표(#2~#6), 벤치마크 지형도(#7~#11), 사람 평가와 일치도(#12~#14), 신뢰구간과 검정(#15~#18), judge와 오염(#19~#20)까지 20편을 거쳐 왔다. 이 마지막 글은 그 도구 전체를 안전 평가라는 한 영역에 집중해서 적용한다. 안전 평가를 고른 이유는 단순하다 — 안전 평가는 이 시리즈가 다룬 통계적 어려움 네 가지를 전부, 동시에, 가장 나쁜 방향으로 겹쳐서 마주친다.

  1. 재려는 사건이 희귀하다. 좋은 모델일수록 위반율은 0에 가깝다. 그런데 이항비율의 표본오차는 정확히 \(p\)가 0에 가까울 때, \(n\)이 작을 때 가장 다루기 어렵다 — #15가 이미 Wald 구간이 이 지점에서 붕괴한다고 경고했다.
  2. 라벨이 쏠려 있다. 유해 라벨은 전체 데이터의 몇 %뿐이다. #14가 증명했듯 이 조건에서는 일치율이 90%를 넘어도 \(\kappa\)가 무너진다 — 유병률 역설이 안전 라벨링에서는 예외가 아니라 상시 상태다.
  3. 평균이 아니라 꼬리가 중요하다. #3의 반례를 떠올리면 — 평균 3.0인 두 모델이 있는데 하나는 늘 무난하고 하나는 절반의 확률로 완벽하고 절반의 확률로 최악이다. 안전에서는 “가끔 최악”이 전부를 결정한다.
  4. 공격이 정적이지 않다. 레드팀은 한 번 채점하고 끝나는 시험지가 아니다. 공격자가 모델의 반응을 보고 다음 시도를 바꾸면, 문항들은 더 이상 독립이 아니다. 이 시리즈가 신뢰구간과 검정을 쌓아 올린 바탕 — #15의 독립 가정, #16의 짝지은 검정 — 이 흔들리는 지점이다.

이 글은 네 부분으로 나뉜다. Part 1은 희귀사건의 통계 — 위반율을 정확히 재려면 문항이 몇 개 필요한지, 0건 관찰이 왜 “안전”을 뜻하지 않는지를 직접 유도한다. Part 2는 이 시리즈가 아직 다루지 않은 완전히 새로운 축, calibration을 들여온다 — 모델이 “유해 확률 70%”라고 말했을 때 그게 정말 70%인지, 그리고 모른다고 말할 자리에서 모른다고 말하는지를 잰다. Part 3은 안전 평가를 설계할 때 반복해서 부딪히는 여섯 가지 쟁점을 이 시리즈 전체와 엮는다. 그리고 Part 4는 21편을 하나의 체크리스트로 압축해 시리즈를 닫는다.

결론을 먼저 요약하면 다음과 같다.

  1. 레드팀 100건에서 위반 0건은 “위반율 0%”가 아니라 “위반율이 대략 3% 미만일 가능성이 높다”는 뜻이다. rule of three라는 이름의 아주 단순한 근사가 이 간극을 정량화한다.
  2. 정확도와 calibration은 서로 다른 축이다. 랭킹을 잘 맞히는 것과, 자기 확신을 정직하게 보고하는 것은 별개의 능력이고, 후자를 재지 않으면 “확신에 차서 틀리는” 모델을 놓친다.
  3. 기권을 셈에 넣지 않는 지표는 환각을 장려한다. 정답·오답·기권 세 칸으로 나눠 보고하고, 오답에 벌점을 줘야 “모른다”고 말하는 것이 손해가 되지 않는다.
  4. 안전 평가 설계는 타당도·신뢰도·통계력이라는 이 시리즈의 세 기둥이 가장 가혹하게 시험받는 자리다. 대조군, 라벨 신뢰도, 문화 의존성, 적응적 공격 — 어느 하나도 생략할 수 없다.

Background

이 글이 새로 서는 지점: 확률 자체의 정확성

#4에서 다룬 precision·recall·F1·AUC는 모두 모델이 내놓은 점수의 순위만 본다 — “유해로 판단한 것 중 실제로 유해한 비율이 얼마인가”는 재지만, “유해 확률 0.7이라고 말했을 때 그게 정말 70%인가”는 묻지 않는다. 임계값을 하나 정해 이분화하는 순간, 모델이 0.51이라고 자신 없이 말한 것과 0.99라고 확신한 것은 지표 위에서 똑같이 “유해”로 접힌다. 신뢰할 수 있는 모델이라면 이 확신의 크기 자체가 정직해야 한다 — 이것이 Part 2에서 다룰 calibration이며, 이 시리즈가 지금까지 다루지 않은 완전히 새로운 측정 축이다.

이항비율이라는 공통 언어

Part 1은 #15의 틀을 그대로 물려받는다. 안전 벤치마크의 위반 여부는 문항마다 성공/실패로 채점되는 베르누이 시행이고, \(n\)개 문항 중 위반 \(x\)건이 관측되면 \(\hat{p}=x/n\)은 진짜 위반율 \(p\)의 추정치다. #15가 이미 짚었듯 \(\hat{p}\)가 0에 가깝거나 \(n\)이 작을 때 Wald 구간이 가장 신뢰할 수 없어지는데, 안전 평가는 정확히 이 두 조건을 동시에 만족한다. Part 1은 이 특수 사례 — \(\hat{p}=0\)이거나 \(p\) 자체가 아주 작은 상황 — 을 정면으로 다룬다.

Method

Part 1 — 희귀사건의 통계

1. 위반율 \(p\)를 상대오차 \(\epsilon\) 이내로 재려면 문항이 몇 개 필요한가

정의. “위반율이 1%다”라는 말을 믿으려면, 그 1%라는 숫자가 진짜 값의 몇 % 오차 안에 있어야 하는지부터 정해야 한다. 상대오차 \(\epsilon\)을 “추정치가 진짜 값의 \(\pm \epsilon \times p\) 안에 들어올 확률이 95%가 되게 하라”는 요구로 정의하면

\[z \cdot \sqrt{\frac{p(1-p)}{n}} \le \epsilon p\]

유도. #15에서 쓴 정규근사 표준오차 \(\sqrt{p(1-p)/n}\)를 그대로 쓴다. 위 부등식의 양변을 제곱해 \(n\)을 풀면

\[n \ge \frac{z^2 p(1-p)}{\epsilon^2 p^2} = \frac{z^2(1-p)}{\epsilon^2 p}\]

기호 풀이.

  • \(z\): 95% 신뢰수준의 표준정규분포 분위수, \(z \approx 1.96\).
  • \(p\): 재려는 진짜 위반율. 작을수록 분모가 작아져 \(n\)이 커진다 — \(\partial n/\partial p = -z^2/(\epsilon^2 p^2) < 0\)이므로, 위반율이 낮을수록(=모델이 더 안전할수록) 그 낮음을 확인하는 데 더 많은 문항이 필요하다는, 다소 역설적인 결론이 정확히 이 미분에서 나온다.
  • \(\epsilon\): 허용하는 상대오차. 1%p 대신 상대오차를 쓰는 이유는 안전 평가의 목표 정밀도가 절대오차가 아니라 “지금 추정치의 몇 % 안에서 확신하고 싶은가”이기 때문이다.

직관. 동전을 던져 앞면이 나올 확률이 1%인지 0.5%인지 구별하려면, 앞면이 나올 확률이 50%인지 49%인지 구별하는 것보다 훨씬 많은 시행이 필요하다 — 드문 사건은 관측 자체가 드물어서, 그 드묾의 정확한 크기를 알려주는 신호도 드물게 온다.

표: \(p\)별 필요 문항 수.

\(p\) \(\epsilon=20\%\) \(\epsilon=10\%\)
10% 865 3,458
5% 1,825 7,300
1% 9,508 38,032
0.1% 95,944 383,776

위반율 10%를 상대오차 20% 안에서 재려면 865문항이면 충분하지만, 위반율 1%를 같은 정밀도로 재려면 9,508문항이 필요하다 — 약 11배다. 위반율이 0.1%인 극히 안전한 모델을 재려면 상대오차 20%에서도 거의 10만 문항이 필요하고, 그 정밀도를 10%로 좁히면 38만 문항에 육박한다. “우리 모델은 위반율이 0.1% 이하다”라는 주장을 몇 백 문항짜리 레드팀 세트로 뒷받침할 수 없는 이유가 이 표 안에 정확히 들어 있다.

언제 쓰나. 안전 평가 세트를 설계하기 전에, “얼마나 낮은 위반율까지 자신 있게 구별하고 싶은가”를 먼저 정하고 이 공식으로 역산한다.

함정. 이 공식은 \(p\)를 미리 알아야 계산할 수 있는데, \(p\)는 재려는 대상 그 자체다. 실무에서는 파일럿 조사로 \(p\)의 대략적인 범위를 잡거나, 가장 보수적인(가장 큰 \(n\)을 요구하는) 시나리오로 설계한다.

2. 0건 관찰의 함정 — rule of three

정의. \(n\)건을 시도해 위반이 0건 관측됐을 때, 진짜 위반율 \(p\)가 있을 수 있는 상한을 95% 신뢰수준으로 잡으면

\[p_{\text{upper}} \approx \frac{3}{n}\]

유도. #15에서 이미 이 근사를 한 문장으로 스쳐 지나갔다. 여기서 그 유도를 정확히 따라가 본다. 위반이 정말 \(p\)의 비율로 발생한다면, \(n\)번 시도해서 한 번도 위반이 안 나올 확률은

\[P(\text{0건} \mid p) = (1-p)^n\]

이다. 이 확률이 0.05가 되는 지점을 “더는 그럴듯하지 않다”는 경계로 잡는다 — 즉 \(p\)가 이 경계보다 크다면, 0건이 관측될 확률이 5%도 안 되므로 “\(p\)가 이 값보다 크다”는 가설은 관측과 부합하지 않는다고 기각한다. 양변에 로그를 취하면

\[n \ln(1-p) = \ln 0.05\]

\(\ln 0.05 = -2.9957\ldots \approx -3\)이다(이 값이 3에 가깝다는 것이 “rule of three”라는 이름의 근원이다). \(p\)가 작을 때 테일러 전개 \(\ln(1-p) \approx -p\)를 쓰면

\[n \cdot (-p) \approx -3 \quad \Rightarrow \quad p \approx \frac{3}{n}\]

기호 풀이.

  • \(n\): 시도 횟수(문항 수).
  • \(3\): 정확히는 \(-\ln 0.05 = 2.9957\)이며, 95% 신뢰수준을 선택했기 때문에 나오는 상수다. 신뢰수준을 99%로 높이면 \(-\ln 0.01 = 4.605\)가 되어 “rule of 4.6”이 된다.

근사가 성립하는 조건. \(\ln(1-p)\approx -p\)는 \(p\)가 작을 때만 좋은 근사다. 정확히는 \(\ln(1-p) = -p - p^2/2 - p^3/3 - \cdots\)이므로, \(p\)가 커질수록(즉 \(n\)이 작을수록) 근사가 나빠진다. \(n\)이 대략 100 이상이면(따라서 \(p_{\text{upper}}\)가 3% 이하) 근사 오차가 2% 미만으로 줄어들고, \(n \ge 300\)이면 1% 미만으로 줄어든다.

표: rule of three 대 정확한 값.

\(n\) 정확한 단측 95% 상한 (\(1-0.05^{1/n}\)) rule of three (\(3/n\))
30 9.50% 10.00%
100 2.95% 3.00%
300 0.99% 1.00%
1,000 0.30% 0.30%
10,000 0.030% 0.030%

\(n=100\)에서 근사와 정확한 값의 차이는 0.05%p뿐이다. 이 값(2.95%)은 #15가 “0건 관찰” 실험에서 이미 계산해 둔 값과 정확히 일치한다 — 그 글이 Clopper-Pearson을 단측으로 계산해 얻은 상한이 바로 이 rule of three가 근사하려는 그 값이다. rule of three는 계산기 없이 머릿속으로 Clopper-Pearson 단측 상한을 추정하는 지름길이다.

핵심 메시지. \(n=100\)에서 위반 0건이 관측됐다면, “위반율이 3% 미만일 가능성이 높다”는 것이 이 관측이 뒷받침하는 전부다. “위반율 0%”나 “안전하다”는 진술은 이 데이터가 주는 근거를 초과한다. 레드팀 보고서에서 가장 흔한 오류가 정확히 이 초과 진술이다 — “N건 테스트, 실패 0건”을 “통과”로, “통과”를 “안전”으로 등치시키는 두 단계의 비약이다.

함정. rule of three는 \(n\)번의 시도가 서로 독립이고 \(p\)가 시행마다 동일하다는 가정 위에 있다. 이 가정이 왜, 어떻게 깨지는지는 이 Part의 4번째 절에서 다룬다.

3. 평균이 아니라 꼬리 — 최악의 경우를 재는 법

#3의 반례를 다시 불러오자. 평가자 10명이 두 모델에 5점 Likert를 매겼는데, A는 항상 3점을 받고 B는 절반의 확률로 5점, 절반의 확률로 1점을 받는다면 둘의 평균은 똑같이 3.0이다. 안전 맥락에서 1점이 “유해 콘텐츠 생성”이라면, B는 절반의 대화에서 위험한 모델이다. 평균이라는 통계량은 이 위험을 완전히 지운다.

일상 비유. 수술 성공률이 평균 99%인 의사가 있다고 하자. 남은 1%가 “가끔 흉터가 조금 남는다”라면 별문제가 아니다. 그 1%가 “가끔 치명적 의료 사고가 난다”라면 전혀 다른 이야기다. 같은 평균(99%)이 완전히 다른 위험을 감출 수 있다는 것 — 안전 평가에서 평균만 보고하면 정확히 이 실수를 반복한다.

분위수·최댓값 통계로 대응한다. 평균 대신 봐야 할 것은 (1) 상위 분위수(예: 95번째 백분위 유해도 점수), (2) 여러 응답 중 최댓값(worst-of-\(k\)) 통계다. 후자를 정량화하면 rule of three의 수식과 정확히 같은 형태가 다시 나온다 — 시행 \(n\)번에서 “적어도 한 번 위반이 발생할 확률”은

\[P(\text{적어도 1건} \mid p) = 1-(1-p)^n\]

이며, 이는 앞서 rule of three에서 쓴 \((1-p)^n\)의 여사건이다. “희귀사건이 한 번도 안 터질 확률”과 “언젠가는 터질 확률”은 정확히 같은 수식의 양면이다. 이 식을 배포 규모에 대입하면 평균의 함정이 왜 위험한지 극적으로 드러난다. 위반율이 \(p=0.001\%\)(\(10^{-5}\))인, 겉보기에 극도로 안전한 모델이 하루 100만 건(\(N=10^6\))의 요청을 처리한다면

\[P(\text{하루 중 적어도 1건 위반}) = 1-(1-10^{-5})^{10^6} \approx 1-e^{-10} \approx 99.995\%\]

평균 위반율이 100만분의 1이라도, 그 모델을 100만 번 쓰면 그날 안에 적어도 한 번은 위반이 일어난다는 것이 거의 확실하다. “평균적으로는 안전하다”는 문장과 “실제 운영에서 위반이 발생한다”는 문장이 조금도 충돌하지 않는다 — 이게 바로 평균이 아니라 꼬리(그리고 그 꼬리가 배포 규모에서 얼마나 자주 실현되는가)를 봐야 하는 이유다.

4. ASR(공격 성공률)의 신뢰구간, 그리고 적응적 공격이 독립성을 깨는 방식

정의. 레드팀 평가에서 가장 널리 보고되는 숫자는 공격 성공률(Attack Success Rate, ASR) \(= x/n\) — \(n\)번의 공격 시도 중 \(x\)번이 성공했다는 이항비율이다. 이 숫자 하나만 보고하는 것은 #15가 경고한 그 실수를 그대로 반복하는 것이다 — ASR도 점추정치이고, 신뢰구간이 필요하다.

토이 예제. \(n=200\)번의 탈옥 시도 중 \(x=2\)번이 성공해 ASR \(=1\%\)라고 보고됐다고 하자. #15의 기본값인 Wilson 구간을 적용하면

\[95\%\ \text{Wilson 구간} \approx [0.3\%,\ 3.6\%]\]

같은 “ASR 1%”라는 숫자가, 실제로는 0.3%일 수도 3.6%일 수도 있다 — 12배 가까운 폭이다. 이 구간을 함께 적지 않고 “ASR 1%”라는 숫자만 논문·보고서에 박아 넣으면, 다른 방어 기법의 “ASR 0.8%”와 비교해 “우리가 더 안전하다”고 주장하는 순간 #16의 언어로 그 차이가 통계적으로 유의한지조차 확인하지 않은 셈이 된다.

독립성이 깨지는 방식 — 적응적 공격. #15의 모든 구간은 \(n\)번의 시행이 서로 독립이라는 가정 위에 있다. 그런데 실제 레드팀은 고정된 공격 목록을 한 번씩 던지고 끝나는 경우가 드물다. PAIR·TAP류의 공격자 LM은 이전 시도에서 모델이 거절한 방식을 보고 다음 프롬프트를 스스로 고쳐 쓴다(이 공격 기법들의 상세는 Red-Teaming 시리즈의 몫이므로 여기서는 이 사실만 짚는다). 일상 비유로 말하면, 고정된 자물쇠를 여는 것과, 열쇠공이 실패할 때마다 그 실패에서 배워 새 열쇠를 깎아오는 것은 완전히 다른 문제다. 후자에서 \(i\)번째 시도의 성공 확률은 \(i-1\)번째 시도의 결과에 의존한다 — 더 이상 고정된 \(p\)를 갖는 iid 베르누이 시행이 아니다.

이것이 실무에 미치는 영향은 두 가지다.

  1. 보고된 ASR이 “모델의 취약성”이 아니라 “이 캠페인의 탐색 예산과 전략의 성공률”이 된다. 같은 모델에 예산을 2배로 준 공격자를 붙이면 ASR이 오르는 것이 당연한데, 이걸 “모델이 이만큼 취약하다”는 고정된 속성처럼 보고하면 오해를 낳는다. ASR은 반드시 공격 예산(쿼리 수, 반복 횟수)과 함께 보고해야 다른 연구와 비교 가능하다.
  2. 다중비교와 같은 구조의 문제가 생긴다. 레드팀이 20개의 위험 범주 각각에 새로운 공격을 시도하고 그중 하나라도 성공하면 “취약점 발견”이라고 발표한다면, 이는 #17이 다룰 다중비교 문제와 정확히 같은 구조다 — 개별 범주의 성공률이 낮아도, 20번 중 최소 1번 우연히 성공할 확률은 누적되어 커진다. “탈옥에 성공했다”는 단일 사례 보고는, 그 사례를 찾기 위해 몇 번을 시도했는지를 함께 밝히지 않으면 진짜 위험도를 과장한다.

함정. “레드팀 ASR이 지난달보다 낮아졌다”는 보고를 볼 때, 모델이 실제로 더 안전해진 것인지, 공격자의 탐색 예산이 줄었거나 공격 전략이 바뀐 것인지 구별할 수 없다면 그 비교는 의미가 없다. #16의 짝지은 비교가 이 문제의 부분적인 해법이다 — 같은 공격 세트를 두 모델(또는 두 시점의 같은 모델)에 똑같이 적용해야 비교가 성립한다.

Part 2 — Calibration: “확신에 차서 틀리는” 것을 재기

5. Expected Calibration Error — 정의, 온도 스케일링, 그리고 binning의 함정

왜 별도 축인가. #4에서 다룬 지표들은 모델이 “유해”라고 판정했는지, 그 판정이 맞았는지만 본다. “유해 확률 0.7”이라는 숫자 자체가 진짜 70%인지는 어떤 분류 지표도 대답하지 않는다. 일상 비유로, 기상예보관이 “비 올 확률 70%”라고 말한 날이 100번 있었다면, 그중 실제로 비가 온 날이 70일 근처여야 그 예보관은 잘 교정(calibrated)된 것이다. 매번 정확히 맞히는 것(변별력, discrimination)과는 별개의 능력이다 — 70%라고 말했으면 정말 70%인 것이 정직함이다.

정의. 예측을 확신도(confidence, 모델이 매긴 최댓값 확률)에 따라 \(M\)개 구간(bin)으로 나누자. 각 구간 \(B_m\) 안에서 실제 정확도(accuracy)와 평균 확신도(confidence)를 계산한다.

\[\text{acc}(B_m) = \frac{1}{\lvert B_m \rvert}\sum_{i \in B_m} \mathbb{1}(\hat{y}_i = y_i), \qquad \text{conf}(B_m) = \frac{1}{\lvert B_m \rvert}\sum_{i \in B_m} \hat{p}_i\]

그리고 Expected Calibration Error(ECE)는

\[\text{ECE} = \sum_{m=1}^{M} \frac{\lvert B_m \rvert}{n}\Big\lvert \text{acc}(B_m) - \text{conf}(B_m) \Big\rvert\]

기호 풀이.

  • \(M\): 구간 개수. Guo, Pleiss, Sun & Weinberger (2017)는 \(M=15\)를 표준으로 썼다.
  • \(B_m\): 확신도가 \(m\)번째 구간에 속하는 예측들의 집합. \(\lvert B_m \rvert\)는 그 구간에 속하는 예측 개수.
  • \(\text{acc}(B_m)\): 그 구간에 속한 예측들이 실제로 맞은 비율.
  • \(\text{conf}(B_m)\): 그 구간에 속한 예측들이 스스로 보고한 확신도의 평균.
  • \(\lvert \text{acc}(B_m) - \text{conf}(B_m) \rvert\): 구간별 “말과 실제의 간극”. 이걸 구간 크기로 가중해 더한 것이 ECE다.

직관. 완벽하게 교정된 모델이라면 확신도 90% 구간에 속한 예측들이 정확히 90% 맞아야 한다. ECE는 이 대각선(신뢰도 다이어그램에서 accuracy=confidence인 선)에서 얼마나 벗어나 있는지를 구간별로 잰 평균 이탈이다.

Guo et al. (2017)의 핵심 발견과 온도 스케일링. 이 논문은 2015년 이후의 깊고 넓은 신경망(ResNet, DenseNet 등)이 그 이전의 얕은 망보다 정확도는 높지만 체계적으로 과신(overconfident)한다는 것을 발견했다. 해법은 놀랍도록 단순하다 — 학습이 끝난 로짓 \(z_i\)를 softmax에 넣기 전에 스칼라 \(T>0\)로 나누는 온도 스케일링(temperature scaling), \(\hat{q}_i = \text{softmax}(z_i/T)\)이다. \(T\) 하나만 검증셋의 negative log-likelihood를 최소화하도록 맞추는데, 이 단 하나의 파라미터가 히스토그램 비닝·isotonic regression 같은 훨씬 복잡한 방법들보다 대부분의 경우 더 잘 작동했다. 수치로 보면 CIFAR-100에서 ResNet-110의 ECE는 16.53%(비교정)에서 온도 스케일링 후 1.26%로, DenseNet-40은 10.37%에서 1.18%로 떨어졌다. CIFAR-10에서는 ResNet-110이 4.6%→0.83%, DenseNet-40이 3.28%→0.33%로 개선됐다. 단일 스칼라 하나로 미스캘리브레이션을 10배 넘게 줄일 수 있다는 것이 이 논문이 “surprisingly effective”라고 부른 그 결과다.

ECE의 한계 — binning 방식에 값이 의존한다. ECE는 \(M\)과 비닝 방식(등폭 vs 등빈도)을 어떻게 고르느냐에 따라 값이 달라진다. Nixon, Dusenberry, Zhang, Jerfel & Tran (2019)은 구간 수가 많아지면 근사의 편향은 줄지만 구간마다 샘플이 적어져 분산이 커지고, 심지어 구간을 다르게 고르면 두 모델 중 어느 쪽이 더 잘 교정됐는지에 대한 결론이 뒤바뀔 수 있다는 것을 보였다. 이들이 제안한 Adaptive Calibration Error(ACE)는 등폭 구간 대신 구간마다 샘플 수가 같도록(등빈도) 나눈다. 실무 함의는 분명하다 — 논문 A의 ECE 3%와 논문 B의 ECE 5%를 비닝 방식이 다른 채로 직접 비교하면 안 된다.

대안들. ECE가 스칼라 하나로 접는 정보를 유지하려면 신뢰도 다이어그램(reliability diagram) — 구간별 \(\text{acc}(B_m)\)과 \(\text{conf}(B_m)\)을 나란히 그린 그래프 — 을 함께 봐야 한다. ECE는 절댓값을 취하므로 “과신했는지 과소신뢰했는지”의 방향 정보를 지우는데, 신뢰도 다이어그램은 그 방향까지 보여준다.

Brier score와 그 분해. 비닝을 전혀 쓰지 않고 교정과 변별력을 동시에 재는 방법도 있다.

\[\text{BS} = \frac{1}{n}\sum_{i=1}^{n}(p_i-y_i)^2\]

Brier score는 proper scoring rule이다 — 진짜 확률을 그대로 보고할 때 기댓값이 최소화되도록 설계되어 있어서, 모델이 확신을 부풀리거나 숨겨서 점수를 유리하게 조작할 수 없다. Murphy (1973)의 분해에 따르면

\[\text{BS} = \text{Reliability} - \text{Resolution} + \text{Uncertainty}\]
  • Reliability(교정): ECE와 같은 정신으로, 보고한 확률과 실제 관측 빈도의 차이. 작을수록 좋다.
  • Resolution(정련): 예측이 base rate와 얼마나 다르게, 얼마나 상황별로 갈라지는지. 클수록 좋다 — 항상 base rate만 예측하면 교정은 완벽해도 아무 정보도 주지 않는다.
  • Uncertainty: 데이터 자체의 고유한 불확실성(base rate의 분산). 모델과 무관한 상수.

언제 쓰나. 모델이 확신도를 함께 보고하는 모든 안전 분류(유해 확률, 판정 신뢰도)에서 ECE·신뢰도 다이어그램·Brier score를 함께 본다.

함정. ECE 하나만 보고 “이 모델은 잘 교정됐다”고 결론짓지 말 것 — 비닝 의존성 때문에 다른 논문의 ECE와 직접 비교할 수 없고, 방향(과신/과소신뢰) 정보도 잃는다.

6. 모델이 자기 지식의 경계를 아는가 — P(True)와 P(IK)

정의. Kadavath et al. (2022, Anthropic)은 모델의 자기 인식을 두 종류의 질문으로 나눈다.

  • P(True): 모델이 온도 1에서 답을 하나 생성한 뒤, 그 특정한 답을 다시 모델에게 보여주고 “(A) True (B) False”로 그 답이 맞는지 스스로 판정하게 했을 때 “True”에 매긴 확률.
  • P(IK)(“I Know”): 어떤 특정 답을 보여주지 않은 채로, “이 문제를 온도 1에서 풀면 맞힐 것인가”를 미리 예측하는 확률. 별도의 value head를 언어모델에 붙이고, 문항마다 30개 샘플을 뽑아 그중 맞힌 비율을 소프트 라벨로 써서 학습한다.

핵심 수치. 800M, 3B, 12B, 52B 파라미터 모델로 실험했다. 52B 모델에서, TriviaQA 하나만으로 학습한 P(IK)를 다른 과제에 그대로 적용했을 때(전이)와 여러 과제를 섞어 학습했을 때의 AUROC를 비교하면

과제 TriviaQA만 학습 여러 과제 함께 학습
TriviaQA 0.864 0.873
Mixed-Arithmetic 0.928 0.987
LAMBADA 0.606 0.853
Python 함수 합성 0.687 0.881

TriviaQA 하나만으로 학습해도 전혀 다른 과제(산술, 코드 합성)에 0.6~0.93의 AUROC로 전이된다는 것 자체가 놀랍다 — 모델이 “내가 이걸 알 것 같다”는 어느 정도 범용적인 자기 감각을 갖고 있다는 뜻이다. 그런데 여러 과제를 함께 학습시키면 LAMBADA의 AUROC가 0.606에서 0.853으로, Python 합성이 0.687에서 0.881로 크게 뛴다 — 자기 지식을 정확히 감지하는 능력 자체도 다양한 노출을 통해 개선되는, 학습되는 능력이라는 뜻이다. 맥락 민감성을 보여주는 또 다른 수치도 있다 — 낯선 트리비아 질문에 관련 위키피디아 문서를 붙여주면 P(IK)가 18%에서 78%로 뛴다. 모델이 단순히 “이 질문은 어려운 유형이다”를 외운 게 아니라, 실제로 지금 그 문제를 풀 수 있는 근거(맥락)가 있는지에 반응한다는 뜻이다.

한계 — 분포 밖에서 무너지는 것은 변별력이 아니라 교정. 학습 분포와 다른 과제에서도 P(IK)는 AUROC 기준으로는 나쁘지 않은 판별력을 유지하지만, 절대적인 확률 수치의 교정(calibration)은 분포 밖에서 뚜렷하게 나빠진다. 즉 “이 문제를 풀 확률이 다른 문제보다 높다/낮다”는 순위는 어느 정도 맞지만, “정확히 몇 %”라는 숫자는 신뢰하기 어려워진다.

안전 평가와의 연결. 이 발견을 안전 맥락에 옮기면 정확히 이 시리즈가 반복해서 마주친 문제와 만난다 — 표준 안전 벤치마크에서 잘 교정된 모델이라도, #20이 다룬 새로운 분포(신종 공격 표현, 새로운 위험 범주)에서는 “이 요청이 위험한지 판단할 확신”의 절대 수치를 신뢰할 수 없다. 그리고 공격자가 정확히 이 지점 — 모델의 교정이 무너지는 분포 밖 영역 — 을 찾아 공격한다는 것이 Part 1에서 다룬 적응적 공격의 본질이다.

7. 의미 엔트로피 — 토큰이 아니라 뜻의 불확실성을 잰다

왜 토큰 수준 엔트로피로는 안 되는가. 모델에게 같은 질문을 여러 번(온도>0으로) 하게 하고 그 답들의 다양성으로 불확실성을 재려는 시도는 자연스럽다. 그런데 그 답들을 단순히 문자열로 비교해 엔트로피를 계산하면, 같은 뜻을 여러 문장으로 표현할 수 있다는 사실 자체가 불확실성으로 오인된다. 일상 비유로, 누군가에게 “서울역 어떻게 가요”라고 물었을 때 열 명이 “직진하다 좌회전하세요”, “쭉 가서 왼쪽으로요”, “앞으로 가다 왼쪽” 등 전부 다른 문장으로 답했지만 실은 전부 같은 길을 가르쳐준 것이라면, 그 열 명은 사실 강하게 확신하고 있는 것이다. 반대로 열 명이 각각 동/서/남/북을 가리켰다면 그건 진짜 불확실한 것이다. 표현의 다양성과 의미의 불확실성은 다른 문제인데, 토큰(또는 시퀀스) 수준 엔트로피는 이 둘을 구별하지 못하고 표현의 다양성만으로도 엔트로피가 부풀려진다.

의미 엔트로피(semantic entropy)의 정의. Farquhar, Kossen, Kuhn & Gal (2024, Nature)은 같은 프롬프트에서 여러 답을 샘플링한 뒤, 답들을 문자열이 아니라 으로 묶는다. 두 답 \(A\), \(B\)가 서로 양방향 함의(bidirectional entailment) 관계 — \(A\)가 \(B\)를 함의하고 \(B\)도 \(A\)를 함의한다 — 에 있으면 같은 의미 클러스터로 묶는다(이 판정은 별도의 자연어추론 모델이나 LLM 자신이 수행한다). 클러스터 \(c\)에 속한 모든 시퀀스의 확률을 더해 그 클러스터의 확률 \(P(c)\)로 삼고, 시퀀스가 아니라 클러스터 위에서 엔트로피를 계산한다.

\[H_{\text{sem}} = -\sum_{c \in C} P(c)\log P(c)\]
  • \(C\): 의미 클러스터들의 집합.
  • \(P(c)\): 클러스터 \(c\)에 속한 모든 표현형(문자열)의 확률을 합친 값.

이렇게 하면 “파리다”, “프랑스의 수도는 파리야”, “파리요”처럼 표현만 다른 답들이 하나의 클러스터로 뭉쳐 그 클러스터의 확률이 커지고, 엔트로피는 낮게 나온다 — 모델이 실제로 확신하고 있다는 것을 정확히 반영한다.

핵심 결과. 트리비아·전기(bio) 생성·의료 QA 등 지식 질의형 과제(TriviaQA, BioASQ 등)와 GPT-4, LLaMA 2, Falcon, Mistral(기본·instruction-tuned 버전 포함) 여러 모델 계열에 걸쳐, 의미 엔트로피는 오답(환각)을 예측하는 AUROC 기준으로 나이브 예측 엔트로피·어휘 유사도 기반 베이스라인들보다 일관되게 더 나은 성능을 보였고, 특히 지식 탐색형 과제에서 가장 강력한 단일 방법이었다. 중요한 점은 과제별 사전 지식 없이도(task-agnostic) 작동하고, 학습 때 보지 못한 새로운 과제에도 그대로 일반화된다는 것이다 — 안전 평가처럼 새로운 위험 범주가 계속 등장하는 영역에서 특히 매력적인 성질이다.

언제 쓰나. 자유형 생성(모델이 정해진 선택지 없이 문장을 만드는 상황)에서 환각·불확실성을 감지해야 하는데, 답의 정답 형식이 다양해 문자열 일치로는 “같은 답”을 판정할 수 없을 때.

함정. 의미 클러스터링 자체가 별도의 함의 판정 모델(또는 LLM 호출)에 의존하므로, 그 판정 모델의 오류가 그대로 상속된다. 그리고 샘플을 여러 번 뽑아야 하므로 추론 비용이 늘어난다.

8. 선택적 예측과 기권 — Risk–coverage 곡선과 AURC

기권을 보상하지 않으면 무슨 일이 생기는가. #10에서 SimpleQA를 다루며 이미 유도했다 — 정답에 \(+1\), 오답과 기권에 \(0\)을 주는 가장 단순한 채점 아래에서는 확신이 1%만 있어도 찍는 것이 항상 기댓값 상 유리하고, 오답에 벌점 \(p_{\text{penalty}}\)를 줘야 확신이 \(p^{*}=p_{\text{penalty}}/(1+p_{\text{penalty}})\)를 넘을 때만 답하는 것이 합리적이 된다는 결론이었다. 일상 비유로, 오답 감점이 있는 시험에서는 모르는 문제를 찍지 않는 것이 유리해진다 — 정확히 같은 논리다. 이 글에서는 그 결론을 한 걸음 더 정식화해, “기권할 자유가 있을 때 모델의 전체 성능을 어떻게 하나의 곡선으로 요약하는가”를 본다.

정의. 모델이 각 응답에 확신도 \(c\)를 매기고, 임계값 \(\tau\) 이상일 때만 답하고 그 미만이면 기권한다고 하자. 임계값을 바꾸면 두 값이 함께 바뀐다.

  • coverage(커버리지): 확신도가 \(\tau\) 이상이라 실제로 답한 비율.
  • selective risk(선택적 위험): 답한 것들 중에서의 오류율.

\(\tau\)를 낮추면 커버리지는 늘어나지만(더 많이 답하니까), 자신 없던 답들이 섞여 들어와 위험도 보통 함께 오른다. 이 두 값을 \((\text{coverage}, \text{risk})\) 평면에 그린 것이 risk–coverage 곡선(El-Yaniv & Wiener, 2010)이고, 그 곡선 아래 면적이

\[\text{AURC} = \int_0^1 \text{risk}(\text{coverage})\, d(\text{coverage})\]

기호 풀이. AURC가 작을수록 좋다 — 낮은 커버리지에서부터 위험이 낮게 유지된다는 뜻이다. 확신도가 정답 여부와 아무 관계가 없는(정보가 없는) 모델은 어떤 커버리지에서든 위험이 전체 오류율과 같은 평평한 선을 그리고, 그 AURC는 곧 전체 오류율 자체와 같아진다.

토이 예제 — 10문항으로 직접 손 계산해보기(Experiments에서 이어짐).

언제 쓰나. 기권(또는 “확실하지 않으니 사람에게 넘긴다”)이 허용되는 모든 안전 분류·QA 시스템에서, 정답률 하나로는 안 보이는 “확신과 정확도의 관계”를 요약해야 할 때.

함정. AURC는 threshold를 훑은 전 구간의 요약이다. 실제 운영에서는 특정 임계값 하나만 쓰므로, 그 임계값에서의 개별 (coverage, risk) 점 하나도 별도로 확인해야 한다 — #4에서 AUC 계열 지표가 “전 임계값 요약”이라 실제 운영점 성능을 가리는 것과 같은 구조의 함정이다.

Part 3 — 안전 평가 설계의 쟁점

여기서부터는 개별 통계 기법이 아니라, 안전 평가를 설계할 때 반복해서 부딪히는 여섯 가지 쟁점을 이 시리즈 전체와 엮는다. 각 벤치마크의 본체는 이미 Red-Teaming 시리즈와 RLHF Reward 설계 시리즈에 있으므로 여기서는 링크만 걸고 재서술하지 않는다.

9. taxonomy 설계와 macro 평균

안전 평가는 먼저 위험 범주(taxonomy)를 정의하는 데서 시작한다. 범주가 겹치거나 중요한 범주가 빠지면 #1이 말한 내용 타당도가 그 자리에서 무너진다 — 애초에 재려던 위험의 전체 지형을 조작화가 대표하지 못하는 것이다. 그리고 범주별 빈도는 극단적으로 다르다. #4에서 본 안전 taxonomy 실험을 다시 떠올리면, micro-F1과 weighted-F1은 94% 안팎으로 “잘한다”고 말하지만 macro-F1은 64%로 뚝 떨어졌다 — 흔한 범주(욕설)의 성공이 희귀하지만 심각한 범주(무기 제조)의 실패를 가려버리기 때문이다. 안전 taxonomy에서는 macro 평균(또는 범주별 리포트)이 선택이 아니라 필수다.

10. 대조군이 필수다 — over-refusal을 함께 재라

안전 평가에 유해한 요청만 넣으면, “전부 거절”하는 모델이 만점을 받는다. 이건 안전을 잰 게 아니라 거절 성향을 잰 것이다. 무해한 요청을 대조군으로 섞어 과잉 거절(over-refusal)을 함께 측정해야만 “안전한 것”과 “쓸모없이 조심스러운 것”을 구별할 수 있다. Anthropic의 자체 진단(뒤의 14번 항목에서 다시 짚는다)이 짚었듯, helpful과 harmless는 한 라벨러의 판단 안에서 서로 충돌하는 두 기준이라 애초에 애매한 지점이 생기게 마련이다. 이 트레이드오프를 정면으로 재는 벤치마크가 RLHF Reward 설계 시리즈의 OR-Bench다 — 과잉 거절률을 정량화하는 방법론은 그 글에 있으므로 여기서는 링크만 건다.

11. 라벨 신뢰도 — κ의 유병률 역설이 정확히 발생하는 자리

안전 라벨(유해/안전)은 전형적으로 2~5%만 “유해”인 쏠린 데이터다. #14에서 유도했듯, 이 조건은 유병률 역설이 발생하는 정확한 조건이다 — 일치율이 90%를 넘어도 \(\kappa\)가 0.2~0.3대로 떨어지는 것이 오히려 정상이다. 안전 라벨링 프로젝트에서 “\(\kappa\)를 목표 KPI로 삼는다”는 것은 #14가 경고한 그 실수를 그대로 반복하는 것이다. \(\kappa\) 대신 PABAK, Gwet’s AC1, 또는 양성 특이 일치도(PA)를 함께 보고해야 라벨링의 실제 품질을 왜곡 없이 판단할 수 있다 — 자세한 유도와 수치 예제는 #14에 있다.

12. 문화 의존성 — 무엇이 유해인가는 문화마다 다르다

사실 지식은 정답이 하나로 고정되지만, “이 발화가 사회적으로 용인되는가” 같은 가치 판단은 정답 자체가 문화마다 다르다. #11에서 다룬 KorNAT은 이 문제를 정면으로 조작화한 사례다 — 정렬(alignment)의 “정답”을 연구자가 정하지 않고 한국인 6,174명의 실제 설문 응답 분포로 정의했다. 영어권에서 만든 안전 taxonomy를 그대로 번역해 한국어 모델에 적용하면, #11이 이미 보인 구성 타당도의 붕괴(GPT-4의 KorNAT CKA 점수가 HyperCLOVA X에 역전당하는 장면)가 안전 영역에서도 똑같이 재현된다.

13. 적응적 공격이라는 설계 문제

Part 1의 4번째 절에서 이미 그 통계적 결과(독립성 붕괴, ASR의 의미가 캠페인 예산에 의존하게 되는 것)를 다뤘다. 설계 관점에서 짚어야 할 것은 하나 더 있다 — 레드팀은 한 번 실행하고 인증서를 발급하는 정적 시험이 아니라, 공격 기법과 방어가 서로를 갱신하며 계속 움직이는 군비 경쟁이다. 오늘의 ASR 낮음이 내년의 ASR 낮음을 보장하지 않는다. 실제 공격 기법과 그 진화 과정의 상세는 Red-Teaming 시리즈의 HarmBench, JailbreakBench에 있으므로 여기서는 “정적 벤치가 아니다”라는 설계 원칙만 짚고 링크로 넘긴다.

14. 실무는 왜 어려운가 — Anthropic (2023)의 도전

Ganguli, Schiefer, Favaro & Clark (2023, Anthropic)의 “Challenges in evaluating AI systems”는 지금까지 이 절에서 다룬 쟁점들이 실무에서 왜 반복해서 발생하는지에 대한 현장의 정리다. 이들이 짚은 여섯 가지 어려움 중 이 글과 가장 직접 맞닿는 두 가지는 다음과 같다.

  • 국가안보급 레드팀은 “아직 예술에 가깝지, 과학이 아니다.” 표준화된 절차가 없고, 보안 등급 때문에 정보 공유 자체가 제한되며, 위험한 결과물을 다루는 것 자체가 법적 위험을 동반한다.
  • 사람 평가에는 helpful·harmless 사이의 근본적인 긴장이 있다. “이 응답이 더 나은가”를 라벨러에게 물으면, 무해하지만 무용한 응답과 유용하지만 위험한 응답 사이에서 판단이 갈리는 애매한 지점이 구조적으로 생긴다 — 10번에서 다룬 over-refusal 문제의 근원이 정확히 여기다.

나머지 네 가지(다지선다 평가의 오염·포맷 민감성, BIG-bench·HELM 같은 제3자 프레임워크의 공학적 부담, 모델이 스스로 만든 평가가 물려받는 편향, 제3자 감사의 정보 공개 딜레마)도 이 시리즈가 #6, #7~#11, #19에서 각각 다룬 문제들과 정확히 맞물린다. 평가가 어려운 이유는 기법 하나가 부족해서가 아니라, 여러 종류의 어려움이 동시에, 서로 다른 방향에서 겹쳐 있기 때문이다.

Experiments

실험 1 — ECE가 비닝 방식에 따라 달라지는 것을 손으로 확인

안전 분류기가 20건의 “리뷰 대상으로 플래그된” 대화에 유해 확률을 매겼다고 하자. 각 대화의 실제 라벨(유해=1)과 예측 확신도를 4개 구간으로 나눈 결과가 다음과 같다.

구간 예측 확신도 범위 건수 \(\lvert B_m \rvert\) 실제 유해 건수 \(\text{acc}(B_m)\) \(\text{conf}(B_m)\)
1 [0, 0.25) 8 1 0.125 0.10
2 [0.25, 0.5) 5 1 0.20 0.38
3 [0.5, 0.75) 4 3 0.75 0.62
4 [0.75, 1.0] 3 2 0.667 0.90

\(M=4\) 구간으로 ECE를 계산하면

\[\text{ECE}_{M=4} = \frac{8}{20}(0.025) + \frac{5}{20}(0.18) + \frac{4}{20}(0.13) + \frac{3}{20}(0.233) = 0.0100+0.0450+0.0260+0.0350 = 0.116\]

같은 데이터를 두 구간([0,0.5), [0.5,1.0])으로만 다시 묶으면 — 구간 1+2를 합치면 \(n=13\), 유해 2건, \(\text{acc}=0.154\), 가중평균 \(\text{conf}=(8\times0.10+5\times0.38)/13=0.208\)이고, 구간 3+4를 합치면 \(n=7\), 유해 5건, \(\text{acc}=0.714\), \(\text{conf}=(4\times0.62+3\times0.90)/7=0.740\)이다.

\[\text{ECE}_{M=2} = \frac{13}{20}(0.054) + \frac{7}{20}(0.026) = 0.035+0.009 = 0.044\]

같은 20개의 예측인데, \(M=4\)로 재면 ECE가 11.6%, \(M=2\)로 재면 4.4%다 — 2.6배 차이다. 이게 Nixon et al. (2019)이 경고한 그 함정이다. 이 예제는 방향 정보도 보여준다 — 구간 2와 4는 \(\text{conf} > \text{acc}\)(과신), 구간 1과 3은 \(\text{conf} < \text{acc}\)(과소신뢰)다. ECE는 절댓값을 취해 이 방향을 지우고, 결과적으로 “이 모델이 전반적으로 과신한다” 같은 단순한 서사를 만들어내지만 실제로는 구간별로 방향이 엇갈리는 훨씬 복잡한 그림이다 — 신뢰도 다이어그램 없이는 이 구조를 볼 수 없다.

실험 2 — risk–coverage 곡선과 AURC를 10문항으로 직접 계산

모델이 10개의 판정에 확신도를 매겼고, 확신도 내림차순으로 나열하니 다음과 같았다(1=정답, 0=오답).

순위 확신도 정답 여부
1 0.98 1
2 0.95 1
3 0.92 1
4 0.89 0
5 0.80 1
6 0.75 1
7 0.65 0
8 0.55 1
9 0.40 0
10 0.30 0

확신도 상위 \(k\)개까지만 답하고 나머지는 기권한다고 하면, 커버리지 \(k/10\)에서의 위험(오류율)은 다음과 같다.

커버리지 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
위험 0 0 0 0.250 0.200 0.167 0.286 0.250 0.333 0.400

각 커버리지 구간을 0.1 폭으로 취급해 면적을 더하면 \(\text{AURC} \approx 0.189\)(18.9%)다. 이 확신도 순서를 실제 정답 여부와 완벽히 일치하도록(정답 6개를 전부 먼저) 재배열한 오라클 순서에서는 \(\text{AURC} \approx 0.113\)(11.3%)이고, 확신도가 정답 여부와 무관한 무작위 순서에서는 어떤 커버리지에서도 위험이 전체 오류율(4/10=0.40)과 같아 \(\text{AURC} \approx 0.400\)(40.0%)이다.

순서 AURC
오라클(완벽한 순위) 11.3%
실제 모델 확신도 18.9%
무작위(정보 없음) 40.0%

오라클과 무작위 사이 어딘가에 실제 모델이 놓인다는 것이 AURC가 보여주는 그림이다. 이 예제의 확신도는 4번 항목(“확신도 0.89인데 오답”)처럼 확신에 찬 오답이 하나 섞여 있어 오라클에는 못 미치지만, 무작위보다는 훨씬 낫다 — 기권을 허용하면 전체 오류율 40%를 절반 이하로 낮출 수 있다는 뜻이다. 그리고 이 표는 #10의 SimpleQA 논의를 잇는다 — 정답률 하나만 보면 “기권 없이 다 찍었을 때”의 위험(40%)만 보이지만, AURC는 “기권을 허용했을 때 확신도가 실제로 얼마나 유용한 신호인지”까지 보여준다.

통계 요약

기법 핵심 수식 언제 쓰나 함정
표본 크기 공식 \(n \approx z^2(1-p)/(\epsilon^2 p)\) 목표 상대오차로 안전 평가 세트 크기를 설계할 때 \(p\) 자체를 몰라 역산이 순환적일 수 있음
rule of three \(p_{\text{upper}} \approx 3/n\) 위반 0건 관찰 시 상한을 즉석에서 가늠할 때 \(n\)이 작으면(\(\lesssim\)100) 근사 오차가 커짐, 독립 가정 필요
worst-of-\(k\) / 배포 규모 \(1-(1-p)^N\) 평균 위반율이 낮아도 대규모 배포에서의 위험을 가늠할 때 시행 간 독립 가정이 실제 배포에선 흔히 깨짐
ASR + Wilson CI #15의 Wilson 구간을 ASR에 적용 레드팀 성공률을 보고할 때 항상 적응적 공격이면 독립 가정이 깨져 구간의 의미가 흔들림
ECE \(\sum_m (\lvert B_m \rvert/n)\lvert\text{acc}(B_m)-\text{conf}(B_m)\rvert\) 확신도가 실제 정확도와 일치하는지 볼 때 binning 방식(구간 수·등폭/등빈도)에 값이 좌우됨
Brier score \(\frac{1}{n}\sum(p_i-y_i)^2\) 교정과 변별력을 함께, proper scoring rule로 잴 때 분해(교정/정련/불확실성)를 안 보면 원인 진단이 안 됨
P(True) / P(IK) 자기평가 확률, 사전 예측 확률 모델이 스스로의 지식 경계를 아는지 볼 때 분포 밖에서는 변별력은 유지돼도 교정이 무너짐
의미 엔트로피 \(H_{\text{sem}}=-\sum_c P(c)\log P(c)\) 자유형 생성에서 환각·불확실성을 감지할 때 함의 판정 모델의 오류가 그대로 전이됨
Risk–coverage / AURC \(\int \text{risk}(\text{coverage})\, d(\text{coverage})\) 기권이 허용되는 시스템의 전체 성능을 요약할 때 특정 운영 임계값 하나에서의 성능은 따로 확인해야 함

평가 체계 설계 체크리스트

21편에 걸쳐 쌓은 도구를 아홉 개의 질문으로 압축한다. 안전 평가든 일반 능력 평가든, 점수 하나를 신뢰하기 전에 이 순서로 물어야 한다.

번호 점검 항목 관련 편
1 재려는 구성개념을 문서로 정의했는가 #1
2 그 구성개념을 대표하는 문항인가, 무관한 요인이 점수를 움직이지 않는가 #2, #6
3 지표가 척도에 맞는가(순서척도에 평균을 냈는가, accuracy가 불균형을 가리는가, 생성 지표가 사람과 상관하는가) #3, #4, #5
4 라벨 신뢰도를 측정했고, 희소 범주의 유병률 역설을 감안했는가 #12~#14
5 신뢰구간을 보고했는가, 클러스터·디코딩·프롬프트 분산을 반영했는가 #15, #18
6 짝지은 검정을 썼는가, 다중비교를 보정했는가, 검정력이 충분한가 #16, #17
7 judge를 썼다면 사람 라벨을 남겨 편향을 보정했는가 #19
8 오염을 검정했고 설정을 명시해 재현 가능한가 #20
9 희귀사건의 상한을 보고했는가, 대조군(무해 요청)을 넣었는가, 기권을 정답·오답과 구분해 셌는가 이 글(#21)

아홉 개 중 하나라도 “아니오”라면, 그 점수는 아직 주장할 준비가 되지 않은 숫자다.

Conclusion

이 시리즈의 결론을 한 줄로 요약하면: 평가는 측정이고, 측정에는 불확실성이 있다. 그 불확실성을 적지 않은 점수는 주장이 아니라 인상이다. 21편에 걸쳐 이 한 줄을 여러 각도에서 반복해서 확인했다 — 구성개념이 조작화 과정에서 새는 것(#1, #2), 척도가 허용하지 않는 연산을 지표가 몰래 쓰는 것(#3), 표본 하나로 낸 점수에 오차 막대가 없는 것(#15), 라벨이 쏠린 데이터에서 익숙한 지표가 구조적으로 무너지는 것(#14).

안전 평가에서는 이 문제들이 특히 가혹하게 겹친다. 재려는 사건이 희귀하고, 그래서 문항은 늘 부족하고, 라벨은 쏠려 있으며, 공격은 정적이지 않고 적응한다. 이 네 조건은 전부, 통계를 어렵게 만드는 방향으로 정렬돼 있다 — 우연이 아니라 안전이라는 대상의 본질적 성질이다. 위반은 드물어야 안전한 것이고, 그 드묾이 곧 추정을 어렵게 만든다.

그럼에도 할 수 있는 것은 분명하다. 상한을 보고하라 — “위반 0건”이 아니라 “위반율 3% 미만”이라고 말한다. 대조군을 넣어라 — 무해한 요청을 함께 재지 않으면 전부 거절하는 모델이 만점을 받는다. 사람 라벨을 남겨라 — judge나 자동 채점만 믿지 말고, 소량의 사람 검증으로 편향을 교정할 여지를 남긴다(#19). 설정을 공개하라 — 오염 여부, 프롬프트, 디코딩 설정, 공격 예산을 밝혀야 다른 사람이 그 숫자를 재현하고 검증할 수 있다(#20).

이 시리즈가 서울대 특강 준비를 위한 자료였다는 것을 상기하면, 강의실에서 가장 남기고 싶은 한 문장은 이것이다 — 벤치마크 점수는 결론이 아니라 증거이고, 증거는 항상 그 증거가 얼마나 확실한지와 함께 제시돼야 한다. 이 21편이 그 “얼마나 확실한지”를 재는 도구들의 지도였다.

참고 문헌


LLM 평가 체계 시리즈

이 글은 LLM 평가 체계 시리즈의 스물한 번째 글이다.

1부. 평가란 무엇인가

  1. 측정으로서의 평가 — 구성개념·조작화·타당도·신뢰도
  2. 벤치마크는 무엇을 재고 있나 — 벤치 445편 구성타당도 리뷰

2부. 무엇을 숫자로 만드나 — 평가 metric

  1. 척도와 허용 연산 — Likert 평균을 내도 되는가
  2. 분류 지표 — accuracy의 함정부터 PR-AUC까지
  3. 생성 지표와 그 타당도 — BLEU에서 COMET까지
  4. 객관식 평가는 왜 흔들리나 — 위치 편향과 포맷 민감도

3부. LLM 벤치마크 지형도

  1. 지식과 추론 — MMLU 계열의 흥망 — MMLU·GPQA·BBH·HELM
  2. 검증 가능한 도메인 — 수학과 코드 — GSM8K·MATH·HumanEval·SWE-bench
  3. 개방형 대화 — MT-Bench에서 Arena까지 — judge 기반 벤치의 등장
  4. 능력의 다른 축 — 지시따르기·긴 문맥·사실성
  5. 한국어 벤치마크 — 번역이 아니라 원산, 그리고 문화 타당도

4부. 사람이 읽는다 — 정성평가와 일치도

  1. 사람 평가 설계 — 루브릭·Likert·pairwise·BWS
  2. 우연을 빼다 — κ 계열 — Cohen·Fleiss·weighted·Krippendorff
  3. κ의 역설 — 일치율 90%인데 κ가 0.21

5부. 차이는 진짜인가 — 정량평가의 통계

  1. 점수는 추정치다 — 이항비율 신뢰구간과 Wald의 실패
  2. 차이는 유의한가 — paired bootstrap·순열검정·McNemar
  3. 몇 개를 재야 하나 — 검정력·표본크기·다중비교
  4. LLM eval의 통계 실무 — 클러스터 SE·IQM·분산 분해

6부. 신뢰할 수 있는 평가 체계

  1. judge를 통계로 다루기 — 편향·Bradley-Terry·PPI
  2. 오염·재현성·효율 — 오염 검정·harness·IRT
  3. (현재 글) 안전 평가의 통계와 체계 설계 — 희귀사건·calibration·체크리스트

본 시리즈는 21편으로 구성된다.




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • 오염·재현성·효율 — 이 점수는 무엇을 재고 있나
  • judge를 통계로 다루기 — 편향, Bradley-Terry, PPI
  • LLM eval의 통계 실무 — 클러스터 SE, 분산 분해, IQM
  • 몇 개를 재야 하나 — 검정력, 표본크기, 다중비교
  • 차이는 유의한가 — paired bootstrap, 순열검정, McNemar