Eval Set Sizing: LLM A/B 테스트의 통계적 검정력(Statistical Power) 수학
요약
LLM A/B 테스트에서 평가 데이터셋 크기(Eval Set Sizing)를 적절하게 설정하는 것은 매우 중요합니다. 단순히 점수 차이가 발생했다고 해서 개선되었다고 판단해서는 안 되며, 그 차이가 통계적으로 유의미한지 검증해야 합니다. 본문은 작은 샘플 크기가 '노이즈'에 불과할 수 있음을 지적하며, 신뢰 구간(Confidence Interval)을 통해 현재 점수 변화가 우연인지 아닌지를 수학적으로 분석하는 방법을 제시합니다.
핵심 포인트
- LLM 평가에서 작은 데이터셋으로 얻은 성능 개선은 통계적 노이즈일 가능성이 높습니다. (예: 100개 샘플의 4점 차이는 신뢰 구간 내에 있을 수 있음)
- 평가 점수(Pass-rate)는 이항 분포(Binomial)를 따르므로, 적절한 샘플 크기 계산이 필수적입니다.
- 신뢰도와 정밀도는 샘플 크기의 제곱근($ ext{precision} ext{ scales with } ext{sqrt}(n)$)에 비례하여 증가합니다. 따라서 더 큰 데이터셋을 사용하는 것이 효율적입니다.
- 두 그룹 간의 차이(A vs B)를 감지하기 위한 정확한 표본 크기 공식(Sample-size formula for two-proportion comparison)을 제시하고 있습니다.
한 팀이 프롬프트 변경을 배포합니다. 평가 세트(eval set)는 100개의 질문으로 구성되어 있습니다. 이전 프롬프트 점수는 78점이었고, 새 프롬프트는 82점을 기록했습니다. 슬랙에 알림이 울리고; 이 수치가 배포 노트에 적히며; 변경 사항이 배포됩니다. 2주 후, 고객 지원 문의량은 변화가 없습니다. '성공'은 100개 예시 중 네 개가 바뀐 것에 불과했습니다. 이렇게 작은 샘플로는 네 개의 차이가 노이즈 플로어(noise floor) 안에 완전히 포함됩니다. 동일한 프롬프트를 다른 날 같은 모델에서 다시 실행해도 그보다 더 많이 변동합니다. 이 팀은 개선을 측정한 것이 아니라, 동전 던지기를 측정하고 어느 면이 나오든 결과를 취급했습니다. 이것이 프로덕션 LLM 작업에서 가장 저렴하고 흔한 평가 실수입니다.
해결책은 더 나은 심사관이나 더 정교한 지표가 아닙니다. 해결책은 평가 세트 크기(eval set size)를 충분히 크게 만들어 4점의 차이가 의미를 갖게 만드는 것입니다. 이것은 알려진 답이 있는 수학 문제입니다.
왜 100개 예시로는 동전 던지기와 같은가?
통과율 평가(Pass-rate evals)는 이항 분포(binomial distribution)입니다. 각 예시는 베르누이 시행(Bernoulli trial)입니다: 답이 맞거나 아니거나 둘 중 하나입니다. 점수는 표본 비율(sample proportion)입니다.
$n=100$이고 $p=0.80$일 때, 비율의 표준 오차(standard error of a proportion)는 약 $\sqrt{0.80 \times 0.20 / 100} = 0.04$입니다.
95% 신뢰 구간(confidence interval)은 대략 $\pm 2 \times SE = \pm 8$ 퍼센트포인트입니다. 다시 읽어보세요. 100개 예시로 80%의 통과율이라면, 95% 신뢰 수준에서 실제 통과율은 72%와 88% 사이에 있습니다. 두 프롬프트 간의 4점 차이는 노이즈의 절반도 되지 않습니다.
이것은 단일 실행에 대한 이야기입니다. 프롬프트 A와 프롬프트 B 사이의 차이를 감지하려면, 두 신뢰 구간이 겹치지 않아야 합니다. 차이에 대한 표준 오차는 양쪽 팔(both arms)의 분산(variances)에 따라 증가하므로 임계값은 더 엄격해집니다.
import math
def se_proportion ( p : float , n : int ) -> float :
return math.sqrt ( p * ( 1 - p ) / n )
def ci_95 ( p : float , n : int ) -> tuple [ float , float ]:
se = se_proportion ( p , n )
return ( p - 1.96 * se , p + 1.96 * se )
print ( ci_95 ( 0.80 , 100 )) # (~0.72, ~0.88)
print ( ci_95 ( 0.80 , 1000 )) # (~0.78, ~0.82)
print ( ci_95 ( 0.80 , 5000 )) # (~0.789, ~0.811)
$n=1000$일 때, 95% 구간은 대략 $\pm 2.5$ 포인트로 줄어듭니다. $n=5000$일 때는 $\pm 1.1$ 포인트입니다.
평가 실행 비용(cost of an evaluation run)은 $n$에 비례하여 증가하지만, 당신의 판결 정밀도(precision of your verdict)는 $\sqrt{n}$에 비례하여 증가합니다. 샘플링에 투자하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기