LLM eval의 통계 실무 — 클러스터 SE, 분산 분해, IQM
Adding Error Bars to Evals: A Statistical Approach to Language Model Evaluations (Evan Miller, Anthropic, arXiv 2024)
Introduction
Miller는 이 논문을 이렇게 시작한다. “eval은 흔히 ‘숫자가 높으면 이긴다’는 태도로 돌아가고, 업계는 SOTA 결과를 굵게 강조하지만 그 결과가 통계적으로 유의한지는 검증하지 않는다.” 리더보드에 0.3점 차이로 순위가 갈리고, 그 0.3점이 노이즈인지 진짜 개선인지는 아무도 묻지 않는다.
#15에서 점수를 이항비율의 신뢰구간으로 다뤘고, #16에서 두 모델의 차이를 짝지어 검정하는 법을, #17에서 검정력과 다중비교를 봤다. 모두 일반 통계학의 도구였다. 이 글은 그 도구들을 LLM eval이라는 구체적 현장에 맞춰 재단한다. 지문 하나에 문항이 여러 개 딸려 있고, 같은 문항을 temperature를 올려 여러 번 샘플링하고, 시드 3~5개로 벤치마크 스위트 전체를 요약해야 하는 현장이다. 5부(#15~#18)의 결론편이다.
이 글이 답할 질문은 세 가지다.
- 문항 집합을 고정했을 때, 표준오차를 정확히 계산하려면 무엇을 더 봐야 하는가(Miller의 다섯 권고).
- 모델 자체를 고정할 수 없을 때(시드마다 다른 모델이 나올 때), 그 흔들림은 얼마나 크고 어디서 오는가(Bouthillier).
- 시드가 3~5개뿐일 때, 평균과 중위값을 믿을 수 없다면 무엇을 봐야 하는가(Agarwal).
세 논문을 관통하는 한 문장으로 이 글을 미리 요약하면: 문항을 늘리는 것, 시드를 늘리는 것, 재표집하는 것 — 각각이 줄이는 분산과 줄이지 못하는 분산이 다르다. 그 구분을 못 하면 오차 막대를 그렸다는 사실 자체에 안심하다가 없는 유의성을 만들어낸다.
Background — 분산의 출처를 분해한다
LLM eval 점수가 실행마다 흔들리는 이유는 한 가지가 아니다. 아래 표가 이 글 전체의 뼈대다. 각 분산원을 줄이는 방법과, 그래도 완전히는 없어지지 않는 부분을 구분한다.
| 분산원 | 예 | 줄이는 방법 | 완전히 없앨 수 있나 |
|---|---|---|---|
| 문항 표집 | 어떤 문항이 벤치에 들어갔나 | 문항 수 \(n\) 늘리기 | 아니오 — 초모집단 불확실성 |
| 디코딩 | temperature > 0인 샘플링 | 문항당 \(K\)번 샘플링해 평균 | 예 — \(K \to \infty\) |
| 프롬프트·포맷 | 템플릿 선택, 선택지 순서 | 여러 프롬프트 평균 + 분산 보고 (#6) | 아니오 |
| 채점자 | judge 또는 사람 라벨러 | 라벨러 늘리기, PPI (#19) | 아니오 |
| 클러스터 구조 | 지문 하나에 문항 5개 | 클러스터 SE, block bootstrap | 해당 없음 — 보정 대상이지 줄이는 대상이 아니다 |
이 표에서 가장 중요한 통찰은 “문항 표집”과 “디코딩” 두 줄이다. 이 둘은 겉보기엔 둘 다 “표본을 늘리면 좋아지는 분산”처럼 보이지만 성격이 다르다.
지금 벤치마크에 \(n\)개의 문항이 있다고 하자. 문항 \(i\)를 무한히 다시 채점할 수 있다면 얻을 “진짜” 정답률을 \(x_i\)라 하고, 그 문항이 속한 초모집단 전체에서 \(x_i\)들이 흩어진 정도를 \(Var(x)\)라 하자(문항 간 분산). 반면 문항 \(i\) 하나를 temperature > 0으로 실제 채점할 때 관측되는 점수 \(s_i\)는 \(x_i\) 주변에서 흔들리는데, 그 흔들림의 크기가 \(\sigma_i^2\)다(문항 내 분산, 곧 디코딩 노이즈). 문항 하나당 \(K\)번 샘플링해 평균을 내면 \(Var(s_i) = \sigma_i^2/K\)로 줄어든다. 이걸 \(n\)개 문항 전체의 평균 점수 \(\hat\mu\)의 분산으로 이어 쓰면 다음과 같다.
\[Var(\hat\mu \mid K) = \frac{Var(x) + E[\sigma_i^2]/K}{n}\]여기서 기호를 하나씩 풀면: \(Var(x)\)는 문항 간 분산(초모집단에서 문항의 난이도가 흩어진 정도), \(E[\sigma_i^2]\)는 문항 내 분산의 평균(디코딩 노이즈), \(K\)는 문항당 재샘플링 횟수, \(n\)은 문항 수다.
이 수식이 바로 이 글의 뼈대다. \(K \to \infty\)로 보내면 두 번째 항 \(E[\sigma_i^2]/K\)는 0으로 사라지지만, 첫 번째 항 \(Var(x)/n\)은 그대로 남는다. 즉 문항당 샘플을 아무리 늘려도(디코딩을 완벽하게 평균 내도) “어떤 문항이 벤치에 뽑혔는가”에서 오는 불확실성은 절대 줄어들지 않는다. 시험을 백 번 다시 풀게 해서 실수를 없앨 수는 있어도, 그 시험에 어떤 문제가 나왔는지는 바꿀 수 없다는 뜻이다.
표의 나머지 세 줄(프롬프트·포맷, 채점자, 클러스터 구조)은 이 K-분해와는 다른 축의 문제다. 프롬프트·포맷 분산은 #6에서 이미 다뤘고, 채점자 분산은 #19에서 Prediction-Powered Inference로 다룬다. 클러스터 구조는 이 글의 두 번째 권고에서 정면으로 다룬다.
그리고 이 표에는 없는 여섯 번째 분산원이 있다. 평가 대상인 모델 자체가 시드마다 다르게 나온다는 것이다. 이건 문항 수준이 아니라 “모델을 만드는” 수준의 분산이고, Bouthillier et al. (2021)이 이 글에서 다룰 두 번째 주제다. Miller의 다섯 권고가 “고정된 모델을 어떻게 정확히 재는가”를 다룬다면, Bouthillier의 논문과 Agarwal의 논문은 “잴 대상 자체가 얼마나 흔들리는가”와 “그 흔들림을 소수 시드로 어떻게 요약하는가”를 다룬다. 이 여섯 번째 분산원은 표 밖에 두는 이유가 있다 — 문항을 아무리 정교하게 다뤄도(클러스터 SE를 계산하고, \(K\)를 늘려도) 애초에 채점 대상 모델이 시드 운으로 뽑힌 것이라면 그 정교함이 잘못된 대상을 정밀하게 재는 데 낭비된다. 순서대로 본다.
Method
1. CLT 표준오차 — 문항을 초모집단의 표본으로 본다
정의. 벤치마크의 문항 \(n\)개는 “이 능력을 재는 데 쓸 수 있었을 모든 문항”이라는 보이지 않는 초모집단(super-population)에서 뽑힌 표본이다. 지금 가진 문항을 전부 맞혀도, 그 벤치마크가 던질 수 있었던 다른 \(n\)개 문항 집합에서는 점수가 달라질 수 있다. 이 불확실성을 표준오차로 정량화하는 것이 첫 번째 권고다.
수식.
\[SE_{CLT} = \sqrt{\frac{Var(s)}{n}} = \sqrt{\frac{\frac{1}{n-1}\sum_{i=1}^{n} (s_i - \bar s)^2}{n}}\]이진 채점(맞음/틀림)일 때는 이항분포 형태로 단순화된다.
\[SE_{Bernoulli} = \sqrt{\frac{\bar s (1-\bar s)}{n}}\]기호 풀이. \(s_i\)는 문항 \(i\)의 관측 점수, \(\bar s\)는 \(n\)개 문항의 평균 점수(=흔히 보고되는 “정확도”), \(n\)은 문항 수다.
직관. 선거 여론조사에서 유권자 1,000명을 뽑아 지지율을 재는 것과 똑같은 구조다. 유권자 전체(초모집단)를 다 조사할 수 없어 표본에서 추정하고 오차범위를 붙인다. eval 문항도 마찬가지로, “이 능력 공간 전체”를 다 담을 수 없어 지금 있는 \(n\)개로 추정하고 있을 뿐이다.
수치 예시. 문항 500개에서 정확도 \(\bar s = 0.72\)를 얻었다면, \(SE_{Bernoulli} = \sqrt{0.72 \times 0.28 / 500} \approx 0.0201\), 즉 약 2.01%p다. 이 정도의 SE라면 두 모델의 정확도 차이가 2%p보다 작을 때 “차이가 있다”고 자신 있게 말하기 어렵다.
언제 쓰나. 정확도 하나만 던지지 말고 항상 이 SE를 같이 보고한다. #15에서 다룬 Wilson 구간과 결합하면 \(n\)이 작거나 \(\bar s\)가 0·1에 가까운 극단 상황도 보정된다.
함정. 이 SE는 문항이 서로 독립이라는 가정 위에 서 있다. 문항이 지문을 공유하거나(클러스터), 채점 자체에 노이즈가 있거나(디코딩), 채점자가 흔들리면(judge) 이 SE는 과소평가된다. 아래 권고들이 그 보정이다.
2. 클러스터 표준오차 — 지문 하나에 문항 여럿
정의. DROP, QuAC, RACE, SQuAD 같은 독해형 eval은 독립적으로 선택된 지문(passage) 하나에 관련 문항 여러 개가 딸려 있다. 같은 지문의 문항들은 그 지문의 난이도·주제·길이를 공유하므로 서로 독립이 아니다. 이걸 무시하고 \(n\)개 문항을 \(n\)개의 독립 관측치처럼 다루면 실질적인 정보량(유효 표본 수)을 부풀리게 된다.
수식. Miller가 제시하는 클러스터 SE는 CLT SE에 클러스터 내부의 교차항을 더한 형태다.
\[SE_{clustered} = \sqrt{SE_{CLT}^2 + \frac{1}{n^2}\sum_{c}\sum_{i \in c}\sum_{j \in c,\ j \neq i}(s_i - \bar s)(s_j - \bar s)}\]기호 풀이. \(c\)는 클러스터(지문) 인덱스, \(i, j\)는 같은 클러스터 \(c\)에 속한 서로 다른 문항이다. 삼중 합산은 “같은 지문에 속한 문항 쌍들의 교차편차 합”이다. 문항들이 서로 양의 상관을 가지면(한 지문이 어려우면 그 지문의 문항들이 다같이 어려워짐) 이 항은 양수가 되어 \(SE\)를 키운다. 상관이 완전하면 지문 하나가 통째로 하나의 관측치처럼 행동한다.
직관. 직장 동료 20명에게 “연봉 만족도”를 물었는데 그중 15명이 같은 팀장 밑의 한 팀이라면, 사실상 20개의 독립된 의견이 아니라 “팀 A의 의견 하나 + 나머지 5명”에 가깝다. 지문 하나에 딸린 문항 5개도 마찬가지로 “독립 문항 5개”가 아니라 “지문 하나의 의견 + 약간의 변주”에 가깝다.
실측치. Miller가 실제 데이터로 잰 클러스터 SE와 (독립 가정) 비조정 SE의 비율은 다음과 같다.
| Eval | 클러스터 SE | 비조정 SE | 배율 |
|---|---|---|---|
| DROP | 1.34 | 0.44 | 3.05배 |
| MGSM | 1.62%p | 0.86%p | 1.88배 |
| RACE-H | 0.51%p | 0.46%p | 1.10배 |
논문은 이를 두고 “클러스터 SE가 순진한(naive) SE보다 3배 넘게 커질 수 있다”고 못 박는다. 이 배율이 벤치마다 다른 이유는 지문 안 문항들의 실제 상관이 다르기 때문이다.
언제 쓰나. 독해형 eval, 멀티턴 대화(한 대화의 턴들), 같은 시드 프롬프트에서 파생된 문항 패밀리 등 “문항이 묶여서 나오는” 모든 구조. 클러스터 SE를 계산하려면 애초에 채점 파이프라인이 각 문항의 클러스터 ID를 기록하고 있어야 한다.
함정. 클러스터를 무시하면 신뢰구간이 실제보다 좁아 보여, 노이즈에 불과한 차이를 “유의한 개선”으로 오인하기 쉽다. 실험 절에서 이 대가를 직접 숫자로 계산한다.
3. 문항당 \(K\)회 샘플링 — 분산을 두 조각으로 쪼개서 줄인다
정의. Background에서 이미 유도한 분해를 다시 쓰면, 문항당 \(K\)번 답을 뽑아 평균 내면 디코딩 노이즈(\(\sigma_i^2\))만 \(1/K\)로 줄고 문항 간 분산(\(Var(x)\))은 그대로다.
\[Var(\hat\mu \mid K) = \frac{Var(x) + E[\sigma_i^2]/K}{n}\]대안 — 로그확률로 디코딩 노이즈를 통째로 제거한다. 다지선다형처럼 정답 토큰의 확률을 직접 읽을 수 있는 경우, 샘플링 대신 \(s_i = x_i = p_i\)(정답 토큰의 확률질량 자체)를 점수로 쓸 수 있다. 이러면 \(\epsilon_i = 0\)이 되어 디코딩 분산이 애초에 존재하지 않는다.
\[Var(\hat\mu) = \frac{Var(p)}{n}\]기호 풀이. \(x_i\)는 문항 \(i\)의 “진짜” 정답률(무한히 재샘플링했을 때의 기대값), \(\sigma_i^2\)는 그 주변의 디코딩 변동, \(K\)는 재샘플링 횟수, \(p_i\)는 로그확률 채점에서 쓰는 정답 토큰의 확률이다.
직관. 문항 간 분산은 “어떤 문제가 시험에 나왔는가”이고, 디코딩 분산은 “같은 문제를 여러 번 풀 때 실수로 답이 흔들리는 정도”다. 시험을 여러 번 다시 풀게 하면(\(K \uparrow\)) 실수는 줄이지만 문제 자체는 바꿀 수 없다.
Miller의 수치 예시. 문항 난이도 \(x \sim U[0,1]\)이라 하면 \(Var(x) = 1/12\)다. 디코딩 분산을 \(E[\sigma_i^2] = 1/6\)이라 두면, \(K\)에 따른 분산은 다음 비율로 줄어든다(K=1 기준).
\[\frac{Var(\hat\mu \mid K)}{Var(\hat\mu \mid K=1)} = \frac{1+2/K}{3}\]\(K=1 \to 2\)에서 분산이 \(1/3\) 줄고, \(K=1 \to 4\)에서 절반으로 줄고, \(K \to \infty\)에서도 딱 \(2/3\)까지만 줄어든다(더 이상은 못 줄어든다). 로그확률 채점은 바로 이 \(K \to \infty\) 극한을 단 한 번의 순전파로 달성하는 방법이다 — 그래서 논문은 “next-token probabilities로 채점하면 단일 샘플 채점 대비 분산을 \(2/3\) 줄일 수 있다”고 말한다. 재샘플링의 이론적 상한과 정확히 같은 수다.
언제 쓰나. temperature > 0으로 샘플링하고, 문항 수 자체는 늘리기 어렵거나 비쌀 때(예: 사람이 채점해야 하는 open-ended eval). 다지선다형처럼 로그확률을 읽을 수 있으면 재샘플링 없이 바로 이 상한을 얻는다.
함정. \(K\)를 늘리는 것과 문항을 늘리는 것은 서로 다른 분산을 공격한다. \(K=64\)로 샘플링했다고 해서 “표본이 커졌으니 통계적으로 유의하다”는 결론은 성립하지 않는다 — \(Var(x)/n\) 항은 그대로이기 때문이다. 실험 절에서 \(K\)를 늘리는 데 수확 체감이 얼마나 빨리 오는지 직접 표로 본다.
4. 짝지은 차이 분석 — 같은 문항으로 두 모델을 비교한다
정의. 모델 A와 B를 같은 문항셋 \(n\)개로 비교할 때, 문항 \(i\)의 난이도는 A와 B 모두에게 공유된다. 어려운 문항은 둘 다에게 어렵다. 이 공유된 난이도(공분산)를 무시하고 A의 평균과 B의 평균을 각각 독립으로 다루면 검정력을 스스로 버리는 셈이다.
수식.
\[Var(\hat\mu_{A-B,\ paired}) = Var(\hat\mu_{A-B,\ unpaired}) - \frac{2\,Cov(x_A, x_B)}{n}\]또는 표준오차 형태로,
\[SE_{A-B,\ paired} = \sqrt{SE_A^2 + SE_B^2 - 2\, SE_A\, SE_B\, Corr(s_A, s_B)}\]기호 풀이. \(x_{A,i}, x_{B,i}\)는 문항 \(i\)에서 모델 A, B의 진짜 점수, \(Cov(x_A, x_B)\)는 문항에 걸쳐 A와 B의 난이도가 얼마나 같이 움직이는지, \(SE_A, SE_B\)는 각 모델의 CLT 표준오차(권고 1), \(Corr(s_A, s_B)\)는 문항 수준에서 A와 B의 점수 상관이다.
직관. 다이어트 효과를 잴 때 “사람 100명의 사후 체중 평균”과 “사람 100명의 사전 체중 평균”을 따로 재고 빼는 것보다, 같은 사람의 전후 차이를 재는(paired) 것이 훨씬 정밀하다 — 사람마다 원래 체중이 다르다는 개인차(공분산)가 상쇄되기 때문이다. 문항 난이도도 똑같이 상쇄된다.
수치 예시. 두 모델의 CLT 표준오차가 각각 \(SE_A=2.0\)%p, \(SE_B=2.2\)%p이고, 같은 문항셋에서 두 모델의 점수 상관이 \(Corr(s_A,s_B)=0.6\)이라 하자. 짝짓지 않으면 \(SE_{unpaired}=\sqrt{2.0^2+2.2^2}\approx2.97\)%p이지만, 짝지으면 \(SE_{paired}=\sqrt{2.0^2+2.2^2-2\times2.0\times2.2\times0.6}\approx1.89\)%p다. 같은 데이터로 표준오차를 약 36% 줄인 셈이다 — 문항 난이도가 두 모델에 공유된다는 사실을 활용했을 뿐, 문항을 하나도 더 모으지 않았다.
언제 쓰나. 거의 항상. 두 모델을 같은 문항셋으로 비교하는 상황이면 무조건 짝지어야 한다. #16에서 다룬 paired bootstrap·McNemar가 바로 이 원리를 구현한 도구다.
함정. A의 신뢰구간과 B의 신뢰구간을 따로 그려서 “겹치지 않으니 유의하다”고 판단하는 것은 이 공분산 항을 통째로 버리는 것과 같다. \(Corr(s_A, s_B) \> 0\)이면(대부분 그렇다) 짝짓지 않은 검정은 지나치게 보수적이라, 실제로 존재하는 작은 차이를 놓친다.
5. 검정력 분석 — 실험 전에 몇 문항이 필요한지 계산한다
정의. eval을 만들기 전에, 원하는 최소 탐지 효과(MDE) \(\delta\)를 검출하는 데 몇 문항이 필요한지 미리 계산한다. #17의 표본크기 공식을 LLM eval의 짝짓기·클러스터·재샘플링 구조에 맞춰 다시 쓴 형태다.
수식.
\[n = \frac{(z_{\alpha/2} + z_\beta)^2 \left(\omega^2 + \sigma_A^2/K_A + \sigma_B^2/K_B\right)}{\delta^2}\]기호 풀이. \(z_{\alpha/2}, z_\beta\)는 표준정규분포의 백분위수(유의수준 \(\alpha\), 검정력 \(1-\beta\)에 대응), \(\omega^2 = Var(x_A) + Var(x_B) - 2Cov(x_A, x_B)\)는 문항 수준 “진짜 차이”의 분산(짝지은 차이의 문항 간 변동), \(\sigma_A^2, \sigma_B^2\)는 각 모델의 평균 디코딩 분산, \(K_A, K_B\)는 각 모델의 재샘플링 횟수, \(\delta\)는 검출하려는 최소 차이다.
수치 예시. 논문이 든 예시는 \(\sigma_A = \sigma_B = 0\)(로그확률 채점 등으로 디코딩 분산을 제거), \(\omega^2 = 1/9\), \(\delta = 0.03\)(정확도 3%p 차이), \(\alpha=0.05\), 검정력 80%(\(\beta=0.20\))다. \(z_{0.025}=1.96\), \(z_{0.20}\approx0.8416\)을 넣으면
\[n = \frac{(1.96+0.8416)^2 \times (1/9)}{0.03^2} = \frac{7.849 \times 0.1111}{0.0009} \approx 969\]문항 약 969개, 반올림해 1,000개 정도가 필요하다. 이게 논문이 “새로 만드는 eval은 최소 1,000문항을 넣어야 신호를 잡을 수 있다”고 권고하는 근거다.
직관. #17의 표본크기 공식과 같은 뼈대지만, 분자의 분산 항이 짝지은 차이의 분산(\(\omega^2\), 공분산이 이미 빠진 형태)과 디코딩 분산을 함께 담고 있다는 점이 다르다.
언제 쓰나. 새 eval을 설계할 때, 특히 작은 효과크기(수 %p 차이)를 안정적으로 검출해야 하는 상황.
함정. \(\omega^2\) 대신 각 모델의 비조건화 분산(짝짓기 전 분산)을 그대로 넣으면 필요 문항 수를 실제보다 과대추정한다 — 공분산이 양수라서 실제 \(\omega^2\)가 더 작기 때문이다. 반대로 클러스터 구조가 있는데도 이 공식을 그대로 쓰면 필요 문항 수를 과소추정한다. 클러스터가 있으면 이 \(n\)을 권고 2의 설계효과(design effect)로 나눈 유효 문항 수 기준으로 다시 계산해야 한다 — 실험 절에서 이 결합을 직접 계산한다.
6. 모델을 만드는 분산 — Bouthillier의 관점
지금까지 다섯 권고는 고정된 모델을 어떻게 정확히 재는가를 다뤘다. Bouthillier et al. (2021, MLSys)은 질문을 한 단계 앞으로 옮긴다 — “모델 A가 모델 B보다 낫다”고 말할 때, 그 “모델 A”라는 대상 자체가 이미 확률변수라는 것이다.
정의. 같은 아키텍처와 같은 하이퍼파라미터로 학습을 다시 돌려도, 가중치 초기화, 데이터 순서(SGD가 배치를 방문하는 순서), 데이터 증강의 무작위성, dropout, 그리고 train/validation 분할 자체(데이터 부트스트랩)에 따라 최종 성능이 흔들린다. 저자들은 이걸 학습 과정 자체에 내재된 분산(\(\xi_O\))과, 하이퍼파라미터 탐색 절차 자체에 내재된 분산(\(\xi_H\), 그리드서치·랜덤서치·베이지안 최적화가 무작위성을 갖는다는 사실)으로 나눠 모델링한다.
어떤 소스가 지배적이었나. Figure 1의 상대 비교를 정리하면 다음과 같다.
| 분산 소스 | 상대적 크기 (데이터 부트스트랩=기준) |
|---|---|
| 데이터 부트스트랩(train/val 분할) | 1배 (가장 큼) |
| 가중치 초기화 | 대체로 0.5배 미만 |
| 데이터 순서(SGD shuffling) | 초기화와 비슷한 수준 |
| 하이퍼파라미터 최적화(HOpt) 절차 | 평균적으로 초기화만큼, 종종 그 이상 |
핵심은 논문·리더보드가 흔히 무작위화하는 유일한 소스(가중치 초기화, “시드 3개 평균”)가 가장 지배적인 소스(데이터 분할, HOpt)보다 작다는 것이다. 초기화 시드만 여러 개 돌려 평균 내는 관행은, 정작 더 큰 분산을 내는 두 소스는 고정한 채 작은 소스만 다스리는 셈이다.
직관. 같은 레시피로 빵을 열 번 구워도 오븐의 미세한 온도차, 반죽 시간의 차이, 발효 정도에 따라 결과가 매번 조금씩 다르다. “오늘 구운 빵 하나”만 보고 그 레시피가 지난주 레시피보다 낫다고 결론 내리는 건 위험하다 — 그런데 시드 하나(혹은 둘)로 “새 아키텍처가 베이스라인보다 낫다”고 말하는 논문 다수가 정확히 이 짓을 하고 있다. 더 정확히는, 오븐 온도차(가중치 초기화)만 통제하고 반죽 시간차(데이터 분할, HOpt)는 방치한 채 “그래도 시드는 3개 돌렸으니 됐다”고 안심하는 상황에 가깝다.
왜 시드 평균이 “값싼” 개선인가. 저자들은 모든 소스를 무작위화하는 이상적 추정기(IdealEst)와, HOpt 절차만 고정하고 나머지 모든 소스를 무작위화한 추정기(FixedHOptEst, All)를 같은 반복 수 \(k=100\)에서 비교한다.
| 추정기 | 무작위화하는 소스 | \(k=100\)의 계산 비용 | 얻는 검출력 |
|---|---|---|---|
| IdealEst | 모든 소스(데이터분할·초기화·순서·증강·HOpt) | 1,070 GPU시간 | 기준(이상적) |
| FixedHOptEst(All) | HOpt만 고정, 나머지 전부 무작위화 | 21 GPU시간 | IdealEst의 \(k=100\)과 거의 동등 |
| 현재 관행(Init만) | 가중치 초기화만 무작위화 | (Init만 도는 비용) | IdealEst의 \(k=2\)와 동등 |
즉 HOpt만 고정하고 나머지를 다 무작위화하면 1,070시간짜리 이상적 추정과 맞먹는 검출력을 21시간으로, 약 51배 싼 계산량으로 얻는다. 반면 현재 관행처럼 초기화 시드만 무작위화하면 검출력이 이상적 추정기의 \(k=2\) 수준, 즉 진짜 독립적인 실험을 딱 2번 돌린 것과 비슷한 수준에 머문다.
이 대비가 함의하는 바는 명확하다. 더 나은 알고리즘을 연구하는 것은 새로운 아이디어와 튜닝이 필요해 돈으로 살 수 없는 개선이지만, 여러 소스의 시드를 함께 평균하는 것은 그냥 계산량을 조금 더 사면 되는 개선이다. 51배 싼 값에 추정의 질을 이상적 수준으로 끌어올릴 수 있다면, “모델 A가 B보다 낫다”는 주장을 시드 1~2개로 하는 관행은 굳이 그럴 필요가 없는데도 스스로 저품질 추정을 택하고 있는 셈이다.
언제 쓰나. 훈련 파이프라인이나 아키텍처를 바꿔 “성능이 개선됐다”고 주장할 때, 특히 그 개선폭이 시드 간 흔들림과 비슷하거나 작은 크기일 때.
함정. 초기화 시드만 여러 개 돌리고 “여러 시드로 검증했다”고 쓰는 것은 통계적으로는 절반의 진실이다 — 데이터 분할과 HOpt라는, 보통 더 큰 분산을 내는 두 소스를 여전히 고정한 채다. 반대로 매번 다른 데이터 분할·초기화·순서를 쓰면서 “재현이 안 된다”고 판단하는 것도 오류다 — 그 흔들림이 정상적인 분산 범위 안일 수 있다.
Miller와의 연결. Miller의 다섯 권고는 “학습이 끝난 고정된 모델 하나를 평가 문항으로 재는” 분산을 다뤘다. Bouthillier의 분산은 그 이전 단계 — “어떤 모델이 나올지” 자체의 분산이다. 두 분산은 서로 독립적으로 존재하고 둘 다 실제 “A가 B보다 낫다”는 결론에 스며든다. 대부분의 LLM eval 보고는 이 중 하나만, 때로는 둘 다 통제하지 않는다.
7. 소수 시드의 함정과 IQM — Agarwal의 통계적 절벽
문제. 딥러닝 실험은 시드 3~10개가 흔하다. 논문은 이 소수 시드 체제(few-run regime)에서 평균과 중위값이 둘 다 불충분하다고 지적한다. 평균은 이상치 하나에 크게 끌려간다. 중위값은 이상치에 강하지만 정보를 버려 그 자체로 편향되고 분산이 크다 — 논문은 5개 실행에서 표본 중위값의 편향이 기대 개선치의 36%에 달하는 사례를 보이며, “소수 시드 체제에서는 이 편향이 알고리즘 간 비교 결과를 지배할 수 있다”고 경고한다.
IQM(interquartile mean). 전체 \(N \times M\)개 실행 점수(태스크 \(M\)개 \(\times\) 실행 \(N\)개)를 정렬한 뒤, 하위 25%와 상위 25%를 잘라내고 남은 중간 50%의 평균을 취한다(25% trimmed mean). 실무 구현(예: SciPy의 trim_mean)에서는 \(n \times 0.25\)를 내림한 개수만큼 양끝에서 제거한다.
- 평균보다 나은 이유: 극단값(이상치)이 애초에 제외되므로 이상치에 끌려가지 않는다.
- 중위값보다 나은 이유: 중위값은 단 하나의 값만 쓰지만 IQM은 중간 50%의 여러 값을 쓴다. 그래서 같은 신뢰수준에서 신뢰구간이 중위값보다 훨씬 좁다 — 논문의 표현으로 “IQM은 중위값보다 훨씬 작은 신뢰구간을 내어, 같은 개선을 더 적은 실행 수로 탐지할 수 있게 한다.”
stratified bootstrap. 태스크(stratum)마다 그 태스크의 실행들을 복원추출로 재표집해, 태스크 \(M\)개 각각 \(N\)개의 재표집 실행을 만든다. 이렇게 만든 부트스트랩 표본에서 원하는 통계량(평균·중위값·IQM)을 계산하고, 이 과정을 수천 번 반복해 표본분포를 근사한 뒤 백분위수로 신뢰구간을 만든다. “stratified”는 재표집이 태스크 경계를 넘지 않는다는 뜻이다 — 태스크 간 실행을 섞으면 태스크마다 다른 스케일·난이도 구조가 무너진다.
작은 예로 절차를 그대로 따라가 보자. 태스크가 2개, 각 태스크에 시드 3개씩 있다고 하자(태스크1: 40, 42, 44 / 태스크2: 60, 63, 66). 부트스트랩 재표집 1회는 태스크1에서 3개를 복원추출하고(예: 42, 42, 44) 태스크2에서도 별개로 3개를 복원추출한다(예: 60, 66, 66). 이 6개 값으로 원하는 통계량(예: IQM)을 계산해 하나의 재표집 추정치를 얻는다. 이 과정을 수천 번 반복하면 그 통계량의 표본분포가 쌓이고, 그 분포의 2.5~97.5 백분위수를 잘라내면 95% 신뢰구간이 나온다. 논문은 태스크당 실행 수가 \(N=10\) 정도만 되어도 중위값·IQM 모두 양호한 커버리지를 보인다고 확인한다.
performance profile. 단일 숫자 대신 점수 분포 전체를 보여주는 곡선이다.
\[\hat F_X(\tau) = \frac{1}{M}\sum_{m=1}^{M}\frac{1}{N}\sum_{n=1}^{N}\mathbb{1}[x_{m,n} \> \tau]\]기호 풀이. \(m\)은 태스크, \(n\)은 실행, \(x_{m,n}\)은 태스크 \(m\)의 실행 \(n\)에서 얻은 점수, \(\tau\)는 훑어가는 점수 임계값, \(\mathbb{1}[\cdot]\)은 지표함수다. 예컨대 태스크 2개 \(\times\) 시드 3개(총 6개 점수) 중 \(\tau=50\)을 넘는 점수가 4개라면 \(\hat F_X(50) = 4/6 \approx 0.67\)이다. \(\tau\)를 낮은 값부터 높은 값까지 훑으면 이 비율이 점점 줄어드는 계단식 곡선이 나오고, 그 곡선의 전체 모양이 “평균 점수 하나”보다 훨씬 많은 정보를 담는다. 이 형식의 장점은 지표함수가 \([0,1]\)에 갇혀 있어, “극단적으로 높은 점수를 낸 이상치 실행 하나가 결과를 바꿀 수 있는 최대치는 \(1/(MN)\)뿐”이라는 점이다 — 평균은 이상치 하나가 전체를 임의로 끌고 갈 수 있지만, performance profile은 영향력이 원천적으로 제한된다.
probability of improvement.
\[P(X \> Y) = \frac{1}{M}\sum_{m=1}^{M} P(X_m \> Y_m)\]기호 풀이. \(X, Y\)는 비교할 두 알고리즘, \(m\)은 태스크, \(P(X_m \> Y_m)\)은 태스크 \(m\)에서 \(X\)의 실행들과 \(Y\)의 실행들을 쌍으로 비교했을 때(Mann-Whitney U-statistic 기반의 순위 추정량) \(X\)가 더 나을 확률이다. 전체 지표는 이걸 태스크에 걸쳐 평균한 것이다. 예를 들어 태스크 3개에서 \(P(X_m \> Y_m)\)이 각각 0.75, 0.50, 0.25로 나왔다면 \(P(X \> Y) = (0.75+0.50+0.25)/3 = 0.50\)이다. 평균만 보면 “동전던지기와 다를 바 없다”고 읽히지만, 실은 태스크1에서는 X가 확실히 낫고 태스크3에서는 Y가 확실히 낫다는 이질성이 그 평균 뒤에 숨어 있다. 그래서 이 지표는 태스크별 분해 없이 평균 하나만 보고하면 안 되고, “얼마나 자주 이기는가”만 말하고 “얼마나 크게 이기는가”는 말하지 않는다는 점에서 IQM이나 optimality gap과 함께 봐야 한다.
LLM eval로 옮겨오기. Agarwal의 “태스크”와 “실행”을 LLM eval 스위트에 대응시키면: 태스크 = 벤치마크 혹은 서브태스크(MMLU, GSM8K, HumanEval, …), 실행 = 시드 또는 프롬프트 변형이다. 여기서 중요한 건 이 집계 축이 권고 1~5(Miller)의 축과 다르다는 점이다. Miller는 한 벤치마크 안의 문항들에 걸친 분산을 다뤘고, Agarwal은 벤치마크 스위트 전체에 걸친 시드들을 소수만 가지고 있을 때 그걸 어떻게 요약하느냐를 다룬다. 실무에서는 이 둘을 같이 쓴다 — 벤치마크 하나의 점수엔 클러스터 SE를, 스위트 전체의 집계엔 IQM과 stratified bootstrap을 적용하는 식이다.
언제 쓰나. 벤치마크 스위트를 몇 개 안 되는 시드(3~5개)로 여러 태스크에 걸쳐 집계해서 리더보드 한 줄로 요약해야 할 때. 특히 “이 모델이 저 모델보다 낫다”를 스위트 전체 평균으로 주장하는 논문·리포트라면 거의 항상 해당한다.
함정. IQM·performance profile을 쓰면서도 여전히 시드가 1~2개뿐이라면 소용이 없다 — 이 도구들은 “적은 실행에서 최대한 정보를 뽑아내는” 방법이지 “실행이 하나여도 괜찮다”는 방법이 아니다. 또한 probability of improvement 하나만 보고 “차이가 크다”고 말하는 것도 함정이다. 이 지표는 승률만 말하고 크기는 말하지 않는다.
8. 벤치를 줄여도 되는가 — Perlitz의 순위 안정성
Perlitz et al. (2024, NAACL, IBM Research)의 질문은 이 시리즈의 다른 방향이다 — “eval에 들어가는 계산량 자체를 줄일 수 있는가?”
이들은 HELM에 적용한 실험에서 문항 수를 줄이는 것과 태스크(시나리오) 수를 줄이는 것의 효과가 전혀 다르다는 것을 보인다. 시나리오당 문항 수를 대폭(최대 수백 배) 줄여도 모델 순위는 거의 그대로 유지된다. 반대로 시나리오(태스크) 자체의 수를 줄이면 신뢰도가 급격히 떨어진다. 저자들의 표현으로 “시나리오 수를 줄이면 신뢰도가 급격히(drastically) 떨어진다”는 것이다. 이 결과를 반영한 다운샘플링 절차를 HELM에 적용해 계산량을 최대 200배까지 줄이면서도 원래 순위와의 편차를 최소화했다고 보고한다.
이 결과는 이 글의 다른 두 축과도 맞아떨어진다. 클러스터 SE(권고 2)의 관점에서 보면 한 시나리오 안에서 문항을 늘리는 것은 이미 상관된 문항을 더 늘리는 것이라 정보 이득이 빠르게 감소하고, Bouthillier의 관점에서 보면 다양한 소스(여기서는 다양한 태스크)를 유지하는 것이 단일 소스를 정밀하게 재는 것보다 중요하다. “문항은 줄여도 되지만 태스크 다양성은 지켜라”가 이 절의 한 줄 요약이다.
언제 쓰나. 이미 신뢰할 수 있다고 검증된 스위트(HELM 등)를 반복 실험(하이퍼파라미터 탐색, ablation)에 자주 돌려야 해서 계산 예산이 문제가 될 때.
함정. “문항 수는 줄여도 안전하다”는 결론을 “무엇을 줄여도 안전하다”로 일반화하면 안 된다. 이 논문의 발견은 정확히 반대 방향의 축(시나리오 수)에는 적용되지 않는다고 스스로 못 박고 있다.
Experiments — 수치로 확인한다
실험 1. 클러스터를 무시한 대가
문항 500개가 지문 100개에 5개씩 딸려 있다고 하자(\(m=5\), 클러스터 100개). 클러스터 내 상관 \(\rho\)에 따라 통계학의 표준 개념인 설계효과(design effect, Kish 1965) \(DEFF = 1+(m-1)\rho\)를 적용하면, 유효 표본 수는 \(n_{eff} = n / DEFF\)로 줄고 SE는 \(\sqrt{DEFF}\)배로 커진다. (이 “설계효과”라는 이름 자체는 Miller의 논문에 나오지 않는 서베이 통계학의 표준 개념이지만, 그가 제시한 삼중합산 클러스터 SE 공식이 실무에서 얼마나 커지는지를 가늠하는 데 정확히 들어맞는다.)
| \(\rho\) | \(DEFF=1+(m-1)\rho\) | \(n_{eff}=n/DEFF\) | SE 배율 \(\sqrt{DEFF}\) | 독립 가정 시 과소평가율 |
|---|---|---|---|---|
| 0.1 | 1.4 | 357 | 1.183배 | 15.5% |
| 0.3 | 2.2 | 227 | 1.483배 | 32.6% |
| 0.5 | 3.0 | 167 | 1.732배 | 42.3% |
과소평가율은 \(1 - 1/\sqrt{DEFF}\)로 계산했다. \(\rho=0.3\)인 경우가 가장 흔히 마주치는 사례다 — 유효 표본은 500개가 아니라 227개에 불과하고, 독립을 가정한 SE는 실제 SE의 약 \(1/1.483 \approx 67.4\%\)만 반영하므로 약 33% 과소평가한다.
정확도 \(\bar s = 0.5\)(분산이 가장 큰 최악의 경우)를 가정하면 비조정 SE는 \(\sqrt{0.25/500} \approx 2.24\)%p다. 여기에 배율을 곱하면 \(\rho=0.1\)일 때 2.65%p, \(\rho=0.3\)일 때 3.32%p, \(\rho=0.5\)일 때 3.87%p로 커진다. 즉 “정확도 차이 2~3%p로 순위를 매긴다”는 흔한 관행은, 클러스터를 무시하면 그 차이가 통째로 오차 막대 안에 들어갈 수 있다는 뜻이다. 실제로 Miller가 DROP에서 관측한 배율(3.05배)은 이 표의 \(\rho=0.5\) 시나리오(1.73배)보다도 훨씬 크다 — 실전 데이터의 클러스터 상관이 토이 예제보다 더 강할 수 있다는 뜻이다.
실험 2. \(K\)를 늘리는 데의 수확 체감
문항 간 분산과 문항 내(디코딩) 분산의 비를 \(r = E[\sigma_i^2]/Var(x)\)로 정의하자. Miller의 예시 값(문항 난이도 \(x \sim U[0,1]\)이라 \(Var(x)=1/12\), 디코딩 분산 \(E[\sigma_i^2]=1/6\))을 쓰면 \(r=2\)다. 일반화하면 \(K=1\) 대비 분산 비율은
\[\frac{Var(\hat\mu \mid K)}{Var(\hat\mu \mid K=1)} = \frac{1+r/K}{1+r}\]\(r=2\)에서 \(K\)를 늘려가면 다음과 같다.
| \(K\) | 분산 비율 | SE 비율(\(\sqrt{}\)) | SE 감소율 | \(K\)를 2배로 늘렸을 때 추가 감소 |
|---|---|---|---|---|
| 1 | 1.000 | 1.000 | 0% | — |
| 2 | 0.667 | 0.816 | 18.4% | 18.4%p |
| 4 | 0.500 | 0.707 | 29.3% | 10.9%p |
| 8 | 0.417 | 0.646 | 35.5% | 6.2%p |
| 16 | 0.375 | 0.612 | 38.8% | 3.3%p |
| \(\infty\) | 0.333 | 0.577 | 42.3% | (남은 전체가 3.5%p) |
\(K=1 \to 2\)는 SE를 18.4%p 줄이지만, \(K=8 \to 16\)은 3.3%p만 줄인다 — 계산량은 두 배씩 늘어나는데 얻는 것은 급격히 줄어든다. \(K=8\) 근처에서 이미 이론적 상한(42.3%)의 대부분(35.5%p, 즉 상한의 84%)을 챙긴 상태라, 그 이상 \(K\)를 늘리는 것은 비용 대비 실익이 작다.
이 손익점은 \(r\)(디코딩 노이즈 대비 문항 난이도 분산의 비)에 따라 달라진다. \(K \to \infty\)의 최종 SE 감소율은 \(1 - 1/\sqrt{1+r}\)로 정리된다.
| \(r\) | 의미 | \(K\to\infty\) SE 감소율 |
|---|---|---|
| 0.5 | 디코딩이 상대적으로 조용함 | 18.3% |
| 1 | 둘이 비슷함 | 29.3% |
| 2 | Miller 예시 | 42.3% |
| 5 | 디코딩이 매우 시끄러움(높은 temperature) | 59.2% |
| 10 | 극단적으로 시끄러움 | 69.8% |
디코딩이 시끄러운 상황(\(r\)이 클수록)일수록 재샘플링이 벌어들이는 몫이 크지만, 그래도 100%에 도달하는 경우는 없다 — 문항 간 분산 \(Var(x)/n\)은 어떤 \(r\)에서도 남는다. 실무적으로는 \(r\)을 사전에 추정할 수 없더라도, \(K=4\)에서 \(K=8\)로 갈 때의 SE 개선이 체감상 미미하다면(위 표의 어떤 \(r\)에서도 \(K=8 \to 16\) 구간의 이득은 전체 상한의 10% 미만이다) 그 지점에서 멈추고 나머지 예산을 문항 수 \(n\)을 늘리는 데 쓰는 것이 더 낫다 — \(n\)을 늘리는 것만이 \(Var(x)/n\)이라는, 절대 사라지지 않는 항 자체를 줄인다.
실험 3. 평균 vs 중위값 vs IQM
시드 5개로 어떤 벤치마크를 평가해 다음 정확도(%)를 얻었다고 하자. 시드 5는 대체로 비슷한데 하나가 훈련 불안정 등의 이유로 크게 튄 경우다.
\[41.2,\quad 42.0,\quad 42.5,\quad 43.1,\quad 61.8\]- 평균: \((41.2+42.0+42.5+43.1+61.8)/5 = 46.12\). 이상치 하나가 평균을 실제 중심에서 약 3.6%p 위로 끌어올린다.
- 중위값: 정렬한 값의 가운데인 \(42.5\). 이상치에 흔들리지 않지만, 5개 중 딱 1개의 값만 쓴 결과다.
- IQM: 하위 25%(가장 작은 1개, \(41.2\))와 상위 25%(가장 큰 1개, \(61.8\))를 제외하고 남은 3개(\(42.0, 42.5, 43.1\))의 평균. \((42.0+42.5+43.1)/3 \approx 42.53\).
이 예제가 보여주는 것은 세 가지다. 평균은 이상치 하나에 4%p 가까이 끌려간다(믿을 수 없다). 중위값은 이상치에 끌리지 않지만 정보를 4개나 버린다. IQM은 중위값과 거의 같은 값(42.53 vs 42.5)을 내면서도 3개의 관측치를 썼다 — 이상치를 배제하는 로버스트함은 중위값과 같은 수준으로 유지하면서, 더 많은 데이터를 쓰기 때문에 (실행 수가 늘어나는 상황에서) 신뢰구간이 중위값보다 체계적으로 좁아진다. 이게 논문이 “IQM이 같은 개선을 더 적은 실행 수로 탐지한다”고 말하는 이유를 가장 작은 예제로 보여주는 장면이다.
여기서 그 튄 시드(61.8)의 원인이 무엇인지 되짚어보면 이 글 전체가 하나로 이어진다. 그 원인이 정말 “이번 학습에서 운 좋게 잘 나온 것”(Bouthillier의 시드 분산)이라면 IQM으로 걸러내는 게 맞다. 하지만 그 원인이 “이 시드가 우연히 쉬운 문항을 많이 만난 것”(Miller의 클러스터·문항 표집 분산)이라면 IQM으로 걸러낼 문제가 아니라 애초에 문항 구성을 다시 봐야 한다. 같은 숫자 61.8을 두고도 “왜 튀었는가”에 대한 답이 다르면 처방이 다르다는 뜻이다.
실험 4. 클러스터와 검정력의 결합
권고 2(클러스터)와 권고 5(검정력)를 합치면 설계 단계에서 훨씬 현실적인 그림이 나온다. 권고 5에서 계산한 969문항은 문항이 서로 독립이라는 가정 위에 있다. 그 969문항이 실험 1처럼 지문당 5문항으로 묶여 나온다면, 같은 검정력을 유지하기 위해 물리적 문항 수를 설계효과만큼 곱해줘야 한다.
| \(\rho\) | \(DEFF\) | 필요 문항 수(\(969 \times DEFF\)) | 필요 지문 수(\(m=5\) 기준) |
|---|---|---|---|
| 0.1 | 1.4 | 1,357 | 271 |
| 0.3 | 2.2 | 2,132 | 427 |
| 0.5 | 3.0 | 2,907 | 581 |
\(\rho=0.3\)만 되어도 필요한 문항 수가 969개에서 2,132개로, 두 배 넘게 뛴다. 이 계산을 빼먹고 “표본크기 공식대로 969문항을 준비했다”고 안심하면, 클러스터 구조가 있는 eval에서는 처음부터 검정력이 목표치(80%)에 못 미치는 실험을 설계한 셈이 된다. 검정력 분석과 클러스터 SE는 따로 배우는 두 도구가 아니라, 설계 단계에서 반드시 같이 써야 하는 한 벌이다.
이 네 실험을 나란히 놓으면 한정된 예산을 어디에 먼저 써야 하는지가 드러난다. 클러스터를 무시한 대가(실험 1)와 검정력 부족의 대가(실험 4)는 애초에 문항 수 자체를 다시 계산하게 만드는 구조적 문제라 가장 먼저 고쳐야 한다. \(K\)를 늘리는 것(실험 2)은 이미 확보한 문항 안에서 싸게 얻을 수 있는 개선이지만 뚜렷한 상한이 있다. 시드를 늘리고 IQM으로 집계하는 것(실험 3)은 “문항을 재는” 문제가 아니라 “모델을 만드는” 단계의 분산을 다루는, 완전히 다른 예산 항목이다. 이 셋 중 어느 것도 다른 것의 대체재가 아니다 — 문항을 늘려도 시드 분산은 줄지 않고, 시드를 늘려도 클러스터 상관은 사라지지 않는다.
통계 요약
| 권고·기법 | 무엇을 고치나 | 언제 반드시 필요한가 |
|---|---|---|
| CLT 표준오차 (Miller #1) | 점수를 점추정이 아니라 구간추정으로 취급 | 항상 — 점수 하나만 보고하는 모든 상황 |
| 클러스터 SE (Miller #2) | 문항 간 독립 가정 위반으로 인한 SE 과소평가 | 지문 공유형(독해), 멀티턴, 같은 템플릿에서 파생된 문항 |
| \(K\)회 재샘플링 / 로그확률 채점 (Miller #3) | 디코딩(temperature) 노이즈 | temperature > 0 샘플링 + 문항 수를 늘릴 수 없을 때 |
| 짝지은 차이 분석 (Miller #4) | 문항 난이도 공유로 생기는 상관을 무시해 검정력을 버리는 것 | 두 모델을 같은 문항셋으로 비교할 때(거의 항상) |
| 검정력 분석 (Miller #5) | 사전 설계 없이 eval을 만들고 나서 유의성 부재를 탓하는 것 | 새 eval 설계, 작은 효과크기를 검출해야 할 때 |
| 다중 소스 분산 재구성 (Bouthillier) | 시드 1~2개로 “모델이 더 낫다”를 주장하는 것 | 훈련 파이프라인·아키텍처를 바꿔 성능 개선을 주장할 때 |
| IQM / stratified bootstrap / performance profile (Agarwal) | 소수 시드 집계에서 평균·중위값의 편향과 저효율 | 시드 3~5개 \(\times\) 태스크 여러 개인 스위트 집계 |
| 벤치 다운샘플링 (Perlitz) | 계산량 대비 순위 신뢰도를 잘못 트레이드오프하는 것 | 문항을 줄여 반복 실험 비용을 낮추려 할 때(태스크 수는 유지) |
Conclusion
이 글의 핵심을 한 줄로 요약하면: “고정된 모델을 재는 분산”(Miller)과 “모델 자체가 흔들리는 분산”(Bouthillier)은 서로 다른 축이고, 시드가 적을 때 그 축들을 요약하는 방법(Agarwal)은 평균도 중위값도 아니다. 문항을 늘리는 것, \(K\)를 늘리는 것, 시드를 늘리는 것은 각각 다른 분산을 줄이고, 그중 문항 표집 분산은 무엇으로도 완전히 없어지지 않는다.
이 결론이 5부(#15~#18)에서 갖는 자리도 분명하다. #15가 “점수는 추정치다”라는 관점 자체를 세웠고, #16이 그 추정치들의 차이를 검정하는 법을, #17이 사전에 표본 크기를 계산하는 법을 다뤘다면, 이 글은 그 세 도구를 LLM eval의 실제 구조(클러스터, 디코딩 노이즈, 소수 시드)에 맞춰 다시 조립했다. 일반 통계학의 공식을 그대로 갖다 쓰면 클러스터 상관을 놓치고, 디코딩 노이즈와 문항 표집 분산을 혼동하고, 소수 시드에서 평균의 함정에 빠진다 — 이 글의 세 논문은 정확히 그 세 함정을 하나씩 막는다.
5부를 닫으며, 평가 결과를 보고할 때 반드시 함께 적어야 할 체크리스트를 남긴다.
- 문항 수 \(n\) — 이게 없으면 신뢰구간을 계산할 수조차 없다. \(n\)이 500개인지 5,000개인지에 따라 같은 %p 차이의 의미가 완전히 달라진다.
- 클러스터 구조 유무 — 지문·멀티턴처럼 문항이 묶여 있는지, 있다면 클러스터 SE를 썼는지. 실험 1이 보여준 대로 이 하나만 빠뜨려도 SE가 3배 이상 벌어질 수 있다.
- 문항당 샘플 수 \(K\) — temperature > 0이라면 몇 번 샘플링해 평균 냈는지, 그리고 \(K\)를 늘린 것이 디코딩 분산만 줄였을 뿐 문항 표집 분산은 그대로라는 점을 함께 밝힌다.
- 프롬프트 고정 여부 — 하나의 템플릿으로 고정했는지, 여러 템플릿의 평균과 분산을 보고했는지(#6).
- 표준오차와 그 계산 방식 — CLT 기반인지 클러스터 보정을 거쳤는지 명시한다. “SE는 대략 이 정도”라는 뭉뚱그린 서술로는 재현할 수 없다.
- 짝지음 여부 — 두 모델을 비교할 때 같은 문항셋으로 짝지어 차이를 검정했는지(#16).
- 다중비교 보정 여부 — 벤치마크 여러 개, 서브태스크 여러 개를 동시에 비교했다면 Bonferroni나 BH로 보정했는지(#17).
이 체크리스트를 다 채웠다고 해도 한 가지는 남는다 — 채점자 자체의 분산이다. 사람 라벨러든 LLM judge든, 채점자가 흔드는 분산은 지금까지의 어떤 권고로도 잡히지 않는다. 그 문제를 정면으로 다루는 것이 다음 글, #19 judge를 통계로 다루기다.
참고 문헌
- Miller, E. (Anthropic), 2024. Adding Error Bars to Evals: A Statistical Approach to Language Model Evaluations (arXiv 2411.00640).
- Bouthillier, X. et al. (Mila / Université de Montréal), 2021. Accounting for Variance in Machine Learning Benchmarks (MLSys 2021).
- Agarwal, R., Schwarzer, M., Castro, P. S., Courville, A., Bellemare, M. G., 2021. Deep Reinforcement Learning at the Edge of the Statistical Precipice (NeurIPS 2021, Outstanding Paper).
- Perlitz, Y. et al. (IBM Research), 2024. Efficient Benchmarking (of Language Models) (NAACL 2024).
- Kish, L., 1965. Survey Sampling. Wiley — 설계효과(design effect) \(1+(m-1)\rho\)의 표준 출처.
LLM 평가 체계 시리즈
이 글은 LLM 평가 체계 시리즈의 열여덟 번째 글이다.
1부. 평가란 무엇인가
- 측정으로서의 평가 — 구성개념·조작화·타당도·신뢰도
- 벤치마크는 무엇을 재고 있나 — 벤치 445편 구성타당도 리뷰
2부. 무엇을 숫자로 만드나 — 평가 metric
- 척도와 허용 연산 — Likert 평균을 내도 되는가
- 분류 지표 — accuracy의 함정부터 PR-AUC까지
- 생성 지표와 그 타당도 — BLEU에서 COMET까지
- 객관식 평가는 왜 흔들리나 — 위치 편향과 포맷 민감도
3부. LLM 벤치마크 지형도
- 지식과 추론 — MMLU 계열의 흥망 — MMLU·GPQA·BBH·HELM
- 검증 가능한 도메인 — 수학과 코드 — GSM8K·MATH·HumanEval·SWE-bench
- 개방형 대화 — MT-Bench에서 Arena까지 — judge 기반 벤치의 등장
- 능력의 다른 축 — 지시따르기·긴 문맥·사실성
- 한국어 벤치마크 — 번역이 아니라 원산, 그리고 문화 타당도
4부. 사람이 읽는다 — 정성평가와 일치도
- 사람 평가 설계 — 루브릭·Likert·pairwise·BWS
- 우연을 빼다 — κ 계열 — Cohen·Fleiss·weighted·Krippendorff
- κ의 역설 — 일치율 90%인데 κ가 0.21
5부. 차이는 진짜인가 — 정량평가의 통계
- 점수는 추정치다 — 이항비율 신뢰구간과 Wald의 실패
- 차이는 유의한가 — paired bootstrap·순열검정·McNemar
- 몇 개를 재야 하나 — 검정력·표본크기·다중비교
- (현재 글) LLM eval의 통계 실무 — 클러스터 SE·IQM·분산 분해
6부. 신뢰할 수 있는 평가 체계
- judge를 통계로 다루기 — 편향·Bradley-Terry·PPI
- 오염·재현성·효율 — 오염 검정·harness·IRT
- 안전 평가의 통계와 체계 설계 — 희귀사건·calibration·체크리스트
본 시리즈는 21편으로 구성된다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: