제4부 평가(Evaluation)
4.2 LLM-as-judge · 자동 평가
객관식 문제에는 정답 키가 있다. "이 요약이 좋은가", "이 톤이 고객에게 맞나", "이 코드 설명이 친절한가"에는 없다. 그런데 대화형 LLM 제품의 품질은 거의 전부가 이 후자, 정답 키가 없는 개방형(open-ended) 품질이다. 앞 장(4.1)에서 본 표준 벤치마크는 정답이 있는 슬라이스만 재고, 그것만으로는 "우리 챗봇이 어제보다 나아졌나"에 답하지 못한다. 이상적인 평가자는 사람이지만, 프롬프트를 한 줄 고칠 때마다 사람을 불러 수백 개 응답을 읽힐 수는 없다. 이 장은 그 간극을 메우는 두 갈래 — 모델로 모델을 채점하는 LLM-as-judge, 사람의 쌍대 선호를 랭킹으로 집계하는 아레나·Elo — 를 근본까지 분석하고, 이 둘을 하나의 오프라인 평가 스위트로 묶어 개발 루프에 넣는 데까지 간다. 여기서 세우는 판정 편향의 산술과 보정의 논리는 안전성 평가(4.3)와 온라인 품질 모니터링(7.6)에도 그대로 추가된다.
한 가지를 처음부터 명시하고 시작하자. 이 장의 도구는 전부 대리지표(proxy)다. 인간 선호가 궁극의 기준이라는 데는 이론이 없고(정렬의 목표 자체가 그것이다), 자동 평가는 그 인간 평가를 대체하는 것이 아니라 아껴 쓰기 위한 빠르고 저렴한 대리 신호일 뿐이다. 이 관계를 잊고 대리지표를 궁극 기준으로 착각하면, 이 장 마지막에서 볼 게이밍(4.1·3.4와 같은 병)으로 곧장 수렴한다.
4.2.1 인간 평가는 왜 개발 루프에 못 들어가나
세 가지 장벽이 인간 평가를 개발 루프 밖으로 배제한다. 느리고, 비용이 크고, 재현이 약하다. 세 번째가 특히 교묘한데, 사람은 피곤하고 기준이 변동하고 평가자마다 다르기 때문이다 — 어제의 8점과 오늘의 8점이 같은 8점이 아니다. 회귀(regression)를 잡으려면 같은 기준으로 반복해야 하는데, 인간 평가는 바로 그 반복성이 약하다. 라벨러 간 일치도가 흔히 60~75% 수준에 그친다는 관찰(3.3)이 이 한계의 정량적 표현이다.
느리고 비용이 크다는 것이 얼마나 심각한지는 숫자를 넣어 보면 명확해진다. 골든셋 500개 프롬프트에 대해 후보 시스템과 기준선을 쌍대로 비교한다고 하자. 판정 잡음을 줄이려 한 쌍당 라벨러 3명을 투입하면 총 1,500건의 인간 판정이 필요하다. 한 판정에 질문을 읽고 두 응답을 정독해 고르는 데 여유 있게 보아 2분이 든다면 3,000분, 즉 50 사람-시간이다. 전문 라벨러의 부담비용을 시급 $30$ 달러로 설정하면 한 번의 평가에 약 $1{,}500$ 달러, 벽시계 시간으로는 라벨러 10명을 병렬로 실행해도 1인당 5시간에 모집·교육·품질관리 오버헤드까지 더해 사실상 하루가 넘게 걸린다. 하루에 프롬프트를 열 번 고치는 개발 속도와는 두 자릿수 이상 어긋난다.
같은 500쌍을 LLM 판정자에게 맡기면 그림이 달라진다. 뒤에서 볼 위치 스왑(4.2.6)까지 넣어 쌍당 2회 호출이면 1,000회, 한 호출이 질문·두 응답·루브릭 해서 대략 입력 2천 토큰에 출력 3백 토큰 정도이니 강한 판정자 모델로도 호출당 1~2센트 수준(모델·토큰 길이에 따라 달라진다), 합쳐 10~20달러 안팎에서 끝나고, 동시 호출로 몇 분이면 완료된다. 100배 저렴하고 두세 자릿수 빠르다. 바로 이 비대칭이 자동 평가의 존재 이유다 — 대리 신호로 매일 반복 iterate하고, 값비싼 인간 판정은 그 대리 신호가 궁극 기준과 정말 일치하는지 드물게 확인하는 앵커로만 남긴다.
규칙으로 검출되는 것은 규칙으로 검출하는 것이 먼저다. 정확 일치·F1·정규식·JSON 유효성으로 검증되는 것은 코드로 처리하고(4.2.13), 그것으로 검출되지 않는 개방형 품질만 판정자에게 넘긴다. 판정자는 느리고 비용이 크고 자기 편향이 있는 대리 중에서도 특히 비용이 큰 대리라, 결정적으로 검출되는 것에 낭비하면 안 된다.
4.2.2 LLM 판정자의 세 설계 축
"모델로 모델을 채점한다"는 아이디어는 한 줄이지만, 실제 설계는 세 축에서 갈린다. 이 축을 섞어 쓰면 편향 논의도 뒤죽박죽이 되므로 먼저 분리한다.
첫째 축은 판정자에게 무엇을 묻느냐다 — 응답 하나에 절대 점수를 매기게 하느냐(점수화, pointwise), 두 응답을 나란히 놓고 어느 쪽이 나은지만 고르게 하느냐(쌍대비교, pairwise). 둘째 축은 정답 예시(reference)를 함께 주느냐다. 셋째 축은 채점 기준을 어떻게 전달하느냐 — 무엇을 볼지 루브릭으로 못 박느냐, 결론 전에 근거부터 쓰게 하느냐(사고사슬). 세 축은 서로 독립이라 태스크에 맞춰 조합한다. 다음 세 절에서 하나씩 다룬다.
4.2.3 점수화 대 쌍대비교 — 절대 점수는 왜 못 믿나
이 축이 가장 중요하고 가장 자주 잘못 선택된다. 결론부터 말하면 판정자는 절대 점수를 잘 못 매긴다. 사람도 "이 글 몇 점?"보다 "이 둘 중 어느 게 나아?"를 훨씬 안정적으로 답하는데, LLM 판정자는 그 성향이 더 심하다. 절대 점수(pointwise)가 붕괴하는 방식은 세 갈래다.
첫째, 점수가 좁은 구간에 뭉친다. 1~10 척도를 주면 대부분의 응답이 7~8점에 몰리고 분산이 작아, 정작 가르려는 후보 간의 미세한 품질 차이가 소수점 아래에 묻혀 안 보인다. 둘째, 척도가 시점 간에 변동한다(드리프트). 같은 응답이라도 프롬프트 표현을 조금 바꾸거나 판정자 모델이 조용히 업데이트되면 "8점"이 "7점"이 되어, 지난주 점수와 이번 주 점수를 나란히 놓는 순간 비교가 무의미해진다. 셋째, "8점"이 무엇을 의미하는지가 판정자 안에서도 일관되지 않다 — 앵커 없는 절대 척도라 매 호출이 자기만의 기준을 즉석에서 만든다.
쌍대비교는 이 셋을 상당히 피한다. "A와 B 중 어느 쪽"은 상대 판단이라 척도를 고정할 필요가 없고, 두 응답을 같은 맥락에서 직접 대면시키므로 미세한 차이도 드러난다. 대가가 둘 있다. 하나는 비용 — 후보가 $k$ 개면 모든 쌍을 비교할 때 $\binom{k}{2}=k(k-1)/2$ 회로 늘어난다(고정 기준선 하나와만 겨루면 $O(k)$ 로 줄일 수 있다). 다른 하나는 다음 절부터 심층 분석할 위치 편향인데, "어느 쪽"이라는 물음 자체가 순서에 노출되기 때문이다.
| 점수화(pointwise) | 쌍대비교(pairwise) | |
|---|---|---|
| 판정자에게 묻는 것 | "이 응답 몇 점?"(절대) | "A와 B 중 어느 쪽?"(상대) |
| 재현성·안정성 | 낮음 — 클러스터·드리프트 | 상대적으로 높음 |
| 시점 간 비교 | 위험 — 척도가 변동 | 견고, 단 기준선을 고정해야 함 |
| 비용(후보 $k$개) | $O(k)$ 호출 | $O(k^2)$ 쌍, 기준선 대비면 $O(k)$ |
| 대표 편향 | 관대함·척도 왜곡 | 위치 편향(순서 의존) |
| 언제 좋나 | 합격선 게이트·모니터링 대시보드 | 회귀·A/B·모델 선택 |
내 견해로는, 개방형 품질에서 "어느 쪽이 나은가"를 물을 수 있는 상황이라면 — 프롬프트 A안 대 B안, 새 모델 대 기준선처럼 대부분의 개발 결정이 그렇다 — 쌍대비교를 기본으로 삼는 것이 옳다. 절대 임계가 필요한 곳(합격·불합격 게이트)이나 대시보드에 하나의 숫자를 높여야 할 때만 점수화를 쓰되, 그 점수의 절대값을 신뢰하지 말고 추세와 상대 비교로만 읽어야 한다. 점수화를 꼭 써야 한다면 루브릭 항목별 채점(각 축을 1~5로)이 단일 종합 점수보다 안정적인데, 각 항목이 좁은 질문이라 판정자가 덜 변동하기 때문이다.
4.2.4 참조·루브릭·사고사슬 — 판정자에게 무엇을 쥐여 주나
참조 기반(reference-based)은 판정자에게 정답 예시를 함께 준다 — "이 참조 답안과 비교해 후보의 정확성을 평가하라". 참조가 있으면 판정자가 자기 지식에만 기대지 않아 환각과 자기 오류가 줄고, 채점이 근거를 갖는다. 사실성·정답이 있는 태스크(수학·추출·번역·닫힌 QA)에서 특히 효과가 크다. 함정은 판정자가 참조를 유일 정답으로 오해해, 의미는 맞지만 표현만 다른 답을 틀렸다고 감점하는 것이다. 프롬프트에서 "참조는 하나의 예시일 뿐이며 의미가 맞으면 표현이 달라도 정답"이라고 명시해야 한다. 그리고 참조가 곧 채점 앵커이므로 참조 자체의 품질이 평가 품질의 상한을 정한다 — 불충분한 참조로는 불충분하게밖에 못 잰다. 참조 없음(reference-free)은 정답 없이 "그냥 좋은지"를 판정하는데, 창작·자유 대화·브레인스토밍처럼 정답이 여럿이거나 없는 경우엔 이 방식뿐이다. 대신 판정자 자신의 편향과 지식 한계가 그대로 노출된다.
기준을 어떻게 주느냐가 셋째 축이다. 루브릭은 무엇을 어떻게 볼지 명시한 채점 기준이다. "전반적으로 좋은가"라고 물으면 판정자는 표면 인상 — 길이, 자신감 있는 어투, 마크다운 서식 — 에 휘둘린다. 루브릭은 판정을 그 전반 인상에서 떼어내 구체 기준으로 명시한다. 사고사슬(chain-of-thought) 후 판정은 결론을 먼저 뽑는 대신 근거부터 쓰게 하고 그다음에 판정하게 한다. 결론만 요구할 때보다 일관성이 오르는 경향이 여러 연구에서 보고되는데(도메인·판정자에 따라 편차가 크다), 부수 효과로 근거 로그가 남아 "왜 졌는지"를 사람이 열어 볼 수 있다 — 이 로그가 뒤에서 볼 평가 주도 개발(4.2.14)의 연료다.
아래는 참조 없음·쌍대비교·루브릭+CoT 조합의 판정자 프롬프트 골격이다(설명용 개략).
[역할] 너는 공정한 평가자다. 두 AI 응답 중 사용자 질문에 더 나은 것을 고른다.
[평가 기준(루브릭)]
1. 정확성 — 사실 오류가 없는가
2. 완결성 — 질문의 모든 부분에 답했는가
3. 관련성 — 질문에 집중했는가(불필요한 장황함은 감점)
4. 안전 — 유해하거나 정책을 위반하지 않는가
* 길이나 화려한 형식 자체를 품질로 착각하지 말 것. 내용의 실질로 판단하라.
[사용자 질문] {question}
[응답 A] {answer_a}
[응답 B] {answer_b}
[출력 형식]
먼저 각 기준별로 A와 B를 짧게 비교하라(근거).
그다음 마지막 줄에 정확히 다음 중 하나만: "판정: A" | "판정: B" | "판정: 무승부"
세 축이 태스크에 어떻게 적용되는지가 실무의 요점이다. 코드 정확성이라면 "점수화·참조·루브릭"으로 판정자를 세우느니 아예 판정자 없이 단위테스트를 실행하는 것이 낫고(4.2.13), 톤·유용성처럼 코드로 못 검출하는 개방형 품질이라야 "쌍대비교·참조 없음·루브릭+CoT"가 제 값을 한다.
4.2.5 판정자 편향 — 체계적으로 틀리는 방향
판정자는 무작위로만 틀리는 것이 아니라 체계적으로 한쪽으로 쏠린다. 이 구분이 중요하다 — 무작위 잡음이라면 표본을 늘려 평균 내면 사라지지만, 편향(bias)은 아무리 표본을 늘려도 같은 방향으로 남는다. 그래서 표본 확대가 아니라 편향별 완화 장치를 명시적으로 넣어야 한다. 넷이 특히 실무를 붕괴시킨다.
| 편향 | 무엇인가 | 왜 생기나 | 완화 |
|---|---|---|---|
| 위치 편향(position) | 내용과 무관하게 특정 위치(흔히 첫 번째)의 응답을 선호 | 자기회귀·프롬프트 구조상 순서에 민감 | 위치 스왑 — 순서를 바꿔 두 번 판정하고 일치할 때만 승(4.2.6) |
| 장황함 편향(verbosity) | 길고 상세한 응답을 품질과 무관하게 선호 | 길이를 노력·완결성의 신호로 과신 | 루브릭에 "길이는 품질이 아님" 명시, 길이 정규화·비슷한 길이끼리 비교 |
| 자기선호(self-preference) | 자기(또는 같은 계열)가 생성한 스타일을 선호 | 판정자가 자기 분포와 닮은 텍스트에 높은 확률 부여 | 다른 계열 판정자, 판정자 앙상블, 인간 앵커로 보정 |
| 형식 편향(format/style) | 마크다운·불릿·자신감 있는 어투·인용 형식 등 표면을 선호 | 형식을 권위·품질의 신호로 오인 | 루브릭을 실질 기준으로, 형식을 통제(정규화), CoT로 근거 강제 |
넷 말고도 관대함 편향(점수화에서 후하게 주기), 아첨(sycophancy, 프롬프트가 은근히 정답을 암시하면 거기 동조), 권위 편향(자신 있는 어투를 정확함으로 오인)이 관찰된다. 이들의 공통 처방은 네 장치의 조합이다.
위치 스왑은 다음 절에서 직접 따라간다. 루브릭·CoT는 장황함·형식 편향을 "무엇을 볼지"로 고정해 표면 특징에서 떼어낸다. 참조·기준선은 자기 지식 의존과 드리프트를 줄이는데, 쌍대비교라면 고정 기준선(anchor)과 겨루게 해 시점 간 비교를 안정시키는 부수 이득도 있다. 앙상블은 서로 다른 계열의 판정자 여럿으로 투표·평균하는 것으로, 자기선호처럼 판정자마다 방향이 다른 편향은 평균에서 상쇄되는 경향이 있다.
여기서 정직해야 할 대목이 있다. 완화는 편향을 줄이는 것이지 없애는 것이 아니다. 위치 스왑조차 "양방향에서 다르게 답한 쌍"을 무승부로 버릴 뿐, 판정자가 양방향에서 같은 방향으로 틀리는 편향은 못 검출한다 — 예컨대 두 순서 모두에서 더 긴 응답을 뽑는 장황함 편향은 스왑을 통과해도 그대로 살아남는다. 더 나쁘게는, 모든 판정자가 공유하는 편향(장황함이 대표적이다)은 앙상블로도 안 사라진다. 여러 모델이 같은 방향으로 틀리면 다수결은 그 오답을 더 확신할 뿐이다. 그래서 완화 장치를 다 적용해도 최종 신뢰는 언제나 인간 일치도 검증(4.2.8)에 걸어야 한다.
4.2.6 수계산 — 위치 편향을 스왑으로 상쇄
위치 편향은 완화가 가장 간결해서 반드시 손에 익혀야 한다. 골든셋의 한 프롬프트에 대해 후보 시스템 $X$ 와 기준선 $Y$ 의 응답을 비교한다고 하자. 소박하게 하면 판정자에게 "응답 A는 $X$, 응답 B는 $Y$" 한 순서로만 묻는다. 판정자가 첫 자리(A)를 선호하는 성향이 있으면 $X$ 가 부당하게 이기고, 순서를 뒤집었으면 결과가 달라졌을 수 있는데 그것을 알 길이 없다.
스왑은 같은 쌍을 두 순서로 판정한다. 순서 1에서는 A=$X$, B=$Y$ 로 묻고, 순서 2에서는 A=$Y$, B=$X$ 로 자리만 바꿔 다시 묻는다. 그리고 "두 순서 모두에서 이긴 응답만 승"이라는 일치 규칙(consistency rule)을 적용한다.
핵심은 "결과가 뒤집힌 쌍"의 해석이다. 순서 1에서 첫 자리(=$X$)를 뽑고 순서 2에서도 첫 자리(=$Y$)를 뽑았다면, 판정자는 응답이 아니라 자리를 뽑은 것이다 — 위치 편향이 노출됐으니 그 쌍은 신뢰할 수 없어 무승부로 버린다. 반대로 순서 1에서 $X$, 순서 2에서도 $X$(자리가 바뀌었는데도 $X$ 유지)를 뽑았다면 판정이 위치에 강건하므로 $X$ 의 실제 승리로 센다.
골든셋 4개 프롬프트에 대해 스왑 결과가 아래와 같다고 하자(개략 예시).
| 프롬프트 | 순서1 (A=X, B=Y) | 순서2 (A=Y, B=X) | 해석 | 집계 |
|---|---|---|---|---|
| p1 | A 우세 → X | B 우세 → X | 양방향 X 일치 | X 승 |
| p2 | B 우세 → Y | A 우세 → Y | 양방향 Y 일치 | Y 승 |
| p3 | A 우세 → X | A 우세 → Y | 둘 다 첫 자리 → 위치 편향 | 무승부 |
| p4 | A 우세 → X | B 우세 → X | 양방향 X 일치 | X 승 |
위치 편향을 무시하고 순서 1만 쓰면, $X$ 가 p1·p3·p4에서 첫 자리를 이겼으니 승률은 $3/4=75\%$ 다. 그럴듯하지만 p3의 승리는 순전히 자리 때문일 수 있다. 스왑으로 보정하면 $X$ 승 2, $Y$ 승 1, 무승부 1이고, 무승부를 0.5로 세면
$$\text{win rate}(X) = \frac{2 + 0.5\times 1}{4} = \frac{2.5}{4} = 0.625 = 62.5\%$$
소박한 75%가 62.5%로 내려갔다. 차이 12.5%p가 위치 편향이 부풀린 허수였다. 덤으로 진단 지표 하나가 추가 비용 없이 나온다 — 위치 일관성률(position consistency)은 4쌍 중 3쌍이 양방향 일치했으니 $75\%$ 다. 이 값이 동전 던지기(50%) 근처로 떨어지면 판정자가 이 태스크에서 위치 편향에 심하게 노출된 것이니, 승률을 논하기 전에 판정자 교체나 프롬프트 개선부터 해야 한다.
구현은 라벨 정규화만 조심하면 된다. 순서 2에서 $X$ 는 B 자리에 있으므로, 판정자가 반환한 'A'·'B'를 실제 응답($X$·$Y$) 기준으로 되돌려 비교한다.
def judge_pairwise_swapped(judge, question, resp_x, resp_y):
# 순서를 바꿔 두 번 판정. 반환 라벨을 실제 응답(X/Y/TIE) 기준으로 정규화한다.
v1 = judge(question, a=resp_x, b=resp_y) # 'A'|'B'|'TIE'
v2 = judge(question, a=resp_y, b=resp_x) # 'A'|'B'|'TIE'
x_wins_order1 = (v1 == 'A')
x_wins_order2 = (v2 == 'B') # 순서2에서 X는 B 자리
if x_wins_order1 and x_wins_order2:
return 'X' # 두 순서 모두 X → 위치에 강건
if (v1 == 'B') and (v2 == 'A'):
return 'Y' # 두 순서 모두 Y
return 'TIE' # 뒤집힘/무승부 → 위치 편향 또는 실제 접전
스왑에는 두 대가가 있다. 모든 쌍을 두 번 판정하니 비용이 정확히 두 배가 되고, 무승부로 버린 쌍이 많으면 신호가 줄어든다 — 무승부율이 높으면 표본을 늘리거나 판정자를 바꿔야 한다. 그리고 다시 강조하면 스왑은 위치 편향 전용 처방이다. 두 순서에서 똑같이 긴 응답을 뽑는 장황함 편향은 스왑으로 전혀 교정되지 않으니, 그것은 루브릭·길이 통제로 따로 막아야 한다.
4.2.7 승률 차이가 실재하는가 — 표본과 신뢰구간
스왑까지 적용해 $X$ 의 승률 62.5%를 얻었다 치자. 그런데 이 숫자를 믿고 $X$ 를 채택해도 되나? 여기서 초보가 가장 흔히 넘어진다 — 작은 골든셋의 승률 차이 대부분은 실력 차가 아니라 잡음이다. 승/패는 이항 시행이므로, 관측 승률 $\hat p$ 의 표준오차와 신뢰구간을 계산하면 그 차이가 통계적으로 유의한지 바로 나온다.
골든셋 100개 프롬프트에서 $X$ 가 54승, $Y$ 가 46승을 했다고 하자(스왑 후 결정적 판정만 셈). 관측 승률은 $\hat p = 0.54$ 다. 비율의 표준오차는
$$\text{SE} = \sqrt{\frac{\hat p\,(1-\hat p)}{N}} = \sqrt{\frac{0.54 \times 0.46}{100}} = \sqrt{\frac{0.2484}{100}} = \sqrt{0.002484} \approx 0.0498$$
95% 신뢰구간은 $\hat p \pm 1.96\,\text{SE}$ 이므로
$$0.54 \pm 1.96 \times 0.0498 = 0.54 \pm 0.098 = [0.442,\ 0.638]$$
구간이 $0.5$ 를 충분히 포함한다. 즉 "$X$ 가 진짜로 더 낫다"($p>0.5$)와 "$X$ 가 진짜로 더 못하다"($p<0.5$)를 이 데이터로는 구별할 수 없다. 54% 대 46%는 100개 표본에서는 단순히 잡음이다. 이것이 4.1에서 리더보드 상위권의 소수점 차이가 대개 무의미하다고 한 것과 같은 논리다 — 표본이 작으면 차이가 아무리 그럴듯해도 통계가 뒷받침하지 못한다.
그럼 이 4%p 우위를 실제로 가르려면 표본이 몇 개나 필요한가? 신뢰구간의 절반너비가 $0.5$ 로부터의 거리 $0.04$ 보다 작아야 하니
$$1.96\sqrt{\frac{0.2484}{N}} < 0.04 \;\Rightarrow\; \frac{0.2484}{N} < \left(\frac{0.04}{1.96}\right)^2 = 0.000417 \;\Rightarrow\; N > 596$$
약 600개는 있어야 4%p 우위를 유의하게 주장할 수 있다. 반대로 실제 격차가 크면 표본은 적어도 된다 — 55% 대 45%(10%p) 우위라면 같은 계산으로 $N$ 이 약 380이면 충분하고, 60% 대 40%면 100개면 된다. 요점은 승률 하나만 제시하지 말고 항상 신뢰구간과 함께 읽는 것이다. 실무에서는 부트스트랩(관측 쌍을 복원추출로 다시 뽑아 승률을 여러 번 재계산)으로 구간을 내는 것이 흔한데, 무승부·가중 집계·판정자 잡음이 섞인 실제 분포에 이론 근사보다 잘 맞기 때문이다. 어느 쪽이든 결론은 같다 — 접전(near-tie)일수록 판정자 잡음이 격차보다 크므로, 그 구간에서는 판정자만으로 결론짓지 말아야 한다.
4.2.8 보정 — 인간 일치도로 판정자를 검증
판정자는 대리지표이므로, "이 대리가 궁극 기준(인간)과 얼마나 일치하나"를 재서 신뢰 여부를 정해야 한다. 이것을 보정(calibration)이라 부른다 — 판정자를 학습 대상이 아니라 믿을 수 있는지 검증하는 대상으로 다루는 것이다. 방법은 작지만 정성껏 라벨한 골든셋(사람이 신중히 매긴 정답·선호)을 만들고 판정자를 그 위에 실행해 얼마나 겹치는지 재는 것이다.
가장 순진한 지표는 원시 일치율(raw agreement) — 판정자와 사람이 같은 답을 한 비율이다. 직관적이지만 우연 일치를 보정하지 않는다는 치명적 결함이 있다. A/B 이지선다에서 두 라벨러가 아무 무작위로 골라도 절반은 우연히 겹치고, 둘 다 한쪽으로 치우쳐 있으면 겹침이 더 커진다. 그래서 우연 일치를 뺀 코헨 카파(Cohen's $\kappa$)를 쓴다.
$$\kappa = \frac{p_o - p_e}{1 - p_e}$$
$p_o$ 는 관측 일치율, $p_e$ 는 두 평가자가 각자의 비율대로 독립적으로 찍었을 때 기대되는 우연 일치율이다. 실제로 계산해 보자. 판정자와 사람이 100개 쌍에서 "$X$ 가 낫다 / $Y$ 가 낫다"를 판정했고, 교차표가 아래와 같다고 하자.
| 사람 \ 판정자 | 판정자: X | 판정자: Y | 사람 합계 |
|---|---|---|---|
| 사람: X | 45 | 15 | 60 |
| 사람: Y | 10 | 30 | 40 |
| 판정자 합계 | 55 | 45 | 100 |
관측 일치는 대각선이니 $p_o = (45+30)/100 = 0.75$ 다. 겉보기엔 75% 일치라 꽤 좋아 보인다. 그런데 우연 일치를 보자. 사람은 60%를 $X$, 40%를 $Y$ 라 했고, 판정자는 55%를 $X$, 45%를 $Y$ 라 했다. 둘이 독립적으로 각자 비율대로 찍었다면 우연히 겹칠 확률은
$$p_e = \underbrace{0.60 \times 0.55}_{\text{둘 다 X}} + \underbrace{0.40 \times 0.45}_{\text{둘 다 Y}} = 0.33 + 0.18 = 0.51$$
즉 아무 실력 없이도 51%는 겹친다. 두 평가자가 모두 $X$ 쪽으로 기울어 있어서 우연 일치가 이미 높은 것이다. 카파는 이 우연분을 빼낸다.
$$\kappa = \frac{0.75 - 0.51}{1 - 0.51} = \frac{0.24}{0.49} \approx 0.49$$
원시 75%가 카파로는 0.49로 주저앉았다 — "상당한 일치"처럼 보이던 것이 우연을 걷어내니 "중간 정도 일치"에 불과했다. 통상 $\kappa\approx0.4$ 이상을 쓸 만한 일치, $0.6$ 이상을 상당한 일치로 보지만(경험칙일 뿐 절대 기준이 아니다), 이 예의 0.49는 정확히 경계선이라 "이 판정자를 중요한 결정에 단독으로 쓰기엔 아직 이르다"는 신호다. 라벨러가 셋 이상이면 크리펜도르프 알파를, 점수화라면 판정자 점수와 사람 점수의 스피어만·켄달 순위 상관을 쓴다 — 절대 점수의 일치보다 순서가 맞느냐가 핵심일 때는 순위 상관이 더 적절하다.
카파를 해석할 때 반드시 기억할 상한이 하나 있다. 사람끼리도 완벽히 일치하지 않는다(인간-인간 일치도, human-human agreement). 판정자의 목표는 100% 일치가 아니라 인간끼리의 일치도에 근접하는 것이다. 인간 상한이 80%인 태스크라면 판정자가 80%면 충분히 좋은 것이고, 인간 상한이 60%인 주관적 태스크에서 판정자에게 90%를 요구하는 것은 무의미하다 — 그것은 사람도 못 하는 일치를 강요하는 것이라, 달성했다면 오히려 판정자가 특정 표면 패턴을 외운 것을 의심해야 한다(3.3에서 라벨러 불일치가 보상 모델 정확도의 상한이라 한 것과 같은 논리다).
"GPT-4급 판정자가 특정 대화 평가 설정에서 사람만큼(80%대) 일치했다"는 보고가 여럿 있지만, 이는 특정 판정자·특정 셋·특정 시점의 결과다. 코드·수학·전문 도메인·미묘한 사실성으로 가면 일치도가 뚝 떨어진다. 자기 태스크·자기 도메인에서 직접 보정하지 않은 일치도 수치를 그대로 옮겨 쓰면 안 된다 — 남의 골든셋에서의 0.8이 우리 골든셋에서 0.4일 수 있다.
4.2.9 언제 판정자를 믿나, 그리고 어떤 판정자를 고르나
같은 판정자라도 어떤 판단은 믿을 만하고 어떤 판단은 못 믿는다. 경계는 대략 이렇다.
| 믿을 만한 조건 | 조심할 조건 |
|---|---|
| 후보 간 품질 격차가 큼(명백한 승자) | 접전 — 판정자 잡음이 격차보다 큼(4.2.7) |
| 상대 비교(pairwise)로 물음 | 절대 점수의 미세한 차(7.8 대 8.1) |
| 판정자가 강한 도메인(일반 대화·요약) | 판정자가 약한 도메인(고난도 수학·전문 법·최신 사실) |
| 참조·검증 가능한 정확성 | 검증 불가능한 주관·창의·톤 |
| 골든셋에서 인간 일치도가 검증됨 | 보정 없이 새 태스크에 바로 투입 |
| 편향 완화(스왑·루브릭·앙상블) 적용 | 단일 순서·전반 인상 판정 |
실무 규칙은 결정이 중요할수록 판정자만으로 결론짓지 않는 것이다. 모델 교체나 릴리스 게이트처럼 되돌리기 비용이 큰 결정은 판정자로 후보를 좁히고 회귀를 조기 경보하는 데까지만 쓰고, 최종 판단은 인간 표본으로 확인한다. 판정자는 정밀한 심판이 아니라 값싼 1차 필터다.
판정자 모델을 고르는 기준도 몇 가지가 정해져 있다. 첫째, 능력 — 판정 대상보다 강하거나 최소한 대등한 모델이라야 한다. 약한 판정자는 강한 후보들의 미묘한 차이를 못 가른다. 둘째, 계열 분리 — 평가 대상과 다른 계열의 판정자를 써서 자기선호를 피한다. 특히 모델 $M$ 의 출력을 같은 $M$ 으로 채점하는 것은 최악인데, 자기선호가 극대화될 뿐 아니라 $M$ 의 사실 오류를 $M$ 이 못 검출하기 때문이다(같은 맹점을 공유한다). 셋째, 재현성 — 온도 0(또는 매우 낮게)에 버전을 고정해 판정을 결정적으로 만들고, 판정자 버전을 반드시 로깅한다. 판정자가 조용히 업데이트되면 과거 점수와의 비교 전체가 붕괴한다(SV-9). 넷째, 비용 — 매 실험마다 수천 판정에 스왑 2배, 앙상블 $N$ 배가 곱해지므로, 강한 판정자로 골든셋 소량을 정밀 채점하고 값싼 판정자로 대량을 스크리닝하는 2단계 구성이 흔한 절충이다.
4.2.10 아레나와 Elo — 사람 쌍대 선호를 랭킹으로
LLM-judge가 "모델로 판정"이라면, 아레나(arena)는 "사람들의 쌍대 선호를 대규모로 모아 랭킹"이다. 대표적으로 Chatbot Arena류 서비스는 사용자에게 같은 질문에 대한 두 익명 모델의 응답을 나란히 보여주고 어느 쪽이 나은지 투표받는다. 모델 이름을 가리므로 브랜드 편향이 줄고, 실제 사용자의 자연 프롬프트 위에서 선호가 모인다. 문제는 이 수많은 쌍대 투표를 하나의 랭킹으로 어떻게 집계하느냐다. 고전적 답이 체스에서 온 Elo다.
Elo는 각 참가자에게 점수 $R$ 을 주고, 두 참가자가 만났을 때의 기대 승률을 점수 차로 정한다. $A$ 가 $B$ 를 만났을 때 $A$ 의 기대 승률은
$$E_A = \frac{1}{1 + 10^{(R_B - R_A)/400}}$$
이 식의 400이라는 상수가 스케일을 정한다 — 점수 차가 400이면 $10^{-1}$ 이 들어가 기대 승률이 $1/(1+0.1)\approx 0.91$, 즉 10:1의 승산이 된다. 숫자를 넣어 보자. $R_A = 1600$, $R_B = 1500$ 이면
$$E_A = \frac{1}{1 + 10^{(1500-1600)/400}} = \frac{1}{1 + 10^{-0.25}} = \frac{1}{1 + 0.562} \approx 0.640$$
100점 앞선 모델의 기대 승률이 약 64%다. 이제 실제 경기 결과 $S_A \in \{1(\text{승}),\,0.5(\text{무}),\,0(\text{패})\}$ 로 점수를 갱신한다.
$$R_A \leftarrow R_A + K\,(S_A - E_A)$$
$K$ 는 갱신 폭이다. $A$ 가 실제로 이겼다면($S_A=1$), $K=32$ 로
$$R_A \leftarrow 1600 + 32\,(1 - 0.640) = 1600 + 32 \times 0.360 = 1611.5$$
기대(64%)보다 잘했으니 11.5점 올랐다. 상대 $B$ 는 정확히 그만큼 잃는다($E_B = 0.360$, $S_B=0$ 이라 $R_B \leftarrow 1500 + 32(0-0.360) = 1488.5$) — Elo는 영합이다. 반대로 만약 앞서던 $A$ 가 졌다면($S_A=0$)
$$R_A \leftarrow 1600 + 32\,(0 - 0.640) = 1600 - 20.5 = 1579.5$$
같은 한 경기인데 이번엔 20.5점이 빠졌다. 이길 것이라 기대한 경기를 졌으니 벌점이 크고, 질 것이라 기대한 경기를 이기면 상점이 큰 것 — Elo의 갱신 폭이 "예상 대비 실제"에 비례한다는 것이 이 두 계산의 대비에 드러난다.
Elo는 온라인·증분이라 새 투표가 올 때마다 즉시 갱신되는 것이 장점이지만, 대규모 아레나에는 두 약점이 걸린다. 하나는 순서 의존 — 투표를 어떤 순서로 투입하느냐에 따라 같은 데이터로도 최종 점수가 달라진다. 다른 하나는 $K$ 민감성 — 갱신 폭 하나가 결과 전체를 교란한다. 그래서 대규모 아레나는 순서에 무관한 원리적 집계로 넘어간다.
4.2.11 Bradley-Terry — 원리적 집계, 3.3과 같은 골격
Bradley-Terry(BT) 모델은 각 모델 $i$ 에 잠재 강도 $\beta_i$ 를 두고, $i$ 가 $j$ 를 이길 확률을 강도 차의 시그모이드로 본다.
$$P(i \succ j) = \frac{e^{\beta_i}}{e^{\beta_i} + e^{\beta_j}} = \sigma(\beta_i - \beta_j)$$
Elo가 투표를 하나씩 순서대로 먹여 점수를 밀고 당기는 것과 달리, BT는 관측된 모든 쌍대 결과에 대해 이 우도를 한 번에 최대화(로지스틱 회귀)해 $\beta$ 전체를 동시에 적합한다. 그래서 순서에 무관하고, 부트스트랩으로 각 모델 강도의 신뢰구간을 낼 수 있어 통계적으로 명료하다 — 앞 절에서 승률에 신뢰구간을 붙였던 것과 같은 정신으로, 아레나 순위에도 "이 두 모델의 순위 차가 유의한가"를 물을 수 있다.
여기서 3.3과의 다리가 놓인다. RLHF의 보상 모델도 정확히 이 Bradley-Terry 선호 우도로 학습된다. 3.3에서 본 보상 모델 손실
$$\mathcal{L}_{\text{RM}} = -\,\mathbb{E}_{(x,y_w,y_l)}\big[\log \sigma\big(r(x,y_w) - r(x,y_l)\big)\big]$$
은 "사람이 응답 $y_w$ 를 $y_l$ 보다 선호"라는 쌍대 데이터에 $P(y_w \succ y_l) = \sigma(r_w - r_l)$ 을 맞추는 것이고, 아레나 랭킹은 "사람이 모델 $i$ 를 $j$ 보다 선호"라는 쌍대 데이터에 $\sigma(\beta_i - \beta_j)$ 를 맞추는 것이다. 같은 확률 모형의 두 응용일 뿐 — 한쪽은 응답에 점수($r$)를, 한쪽은 모델에 점수($\beta$)를 매긴다. 3.3에서 BT가 차이 $r_w-r_l$ 에만 의존해 보상의 원점(offset)을 정하지 못한다고 했는데, 아레나 점수도 똑같이 상대적이다 — 모든 $\beta$ 에 같은 상수를 더해도 승률이 안 변하므로, "1500점"이라는 절대값은 그 자체로 의미가 없고 다른 모델과의 차이로만 읽어야 한다. 이 공통 골격을 알면 정렬 장(3.3)과 평가 장이 하나로 이어진다.
4.2.12 아레나가 재는 것과 못 재는 것
아레나는 정적 벤치마크가 못 가진 미덕이 있다. 실제 사용자의 자연 프롬프트 위에서, 익명 blind 조건으로, 대규모 통계로 선호를 모은다. 정적 벤치마크가 오염·암기에 취약한 것과 달리(4.1), 아레나는 매번 새 프롬프트가 들어와 그 병에 강하다. 그러나 이 미덕들의 이면이 곧 한계다.
| 장점 | 한계 |
|---|---|
| 실제 사용자의 자연 프롬프트 위 선호 | 그 프롬프트 분포가 네 제품 분포와 다를 수 있음 |
| 익명 blind라 브랜드 편향 낮음 | 선호가 정확성이 아님 — 사람도 장황·자신감 있는 답을 선호 |
| 오염·암기에 강함(매번 새 프롬프트) | 종합 순위 하나로는 "어느 태스크에 강한가"를 못 봄 |
| 광범위·대규모 통계 | 느리고 비쌈, 표적 캠페인·분포 오버핏으로 게이밍 가능 |
두 번째 한계가 가장 중요하다. 아레나는 "평균적 인간이 blind로 어느 쪽을 더 좋아하나"를 재는데, 이는 유용성·톤의 좋은 대리이지 정확성·안전·네 도메인 적합성의 보증이 아니다. 사람 자신도 장황함·형식 편향을 가지고 있어서(판정자 편향의 인간판이다), 더 길고 자신감 있게 쓴 틀린 답이 짧고 정확한 답을 이기는 일이 아레나에서도 일어난다. "아레나 1등이니 우리 제품에도 최적"은 비약이다 — 순위는 후보 풀을 좁히는 참고로 쓰고, 최종 선택은 네 골든셋·네 태스크 지표(4.2.13)로 확인해야 한다.
4.2.13 오프라인 평가 설계 — 골든셋·태스크별 지표·회귀 스위트
개별 판정 기법을 넘어, 이것들을 하나의 재현 가능한 스위트로 묶어야 개발 루프에 들어간다. 골격은 셋이다 — 골든셋, 태스크별 지표, 회귀 스위트.
골든셋은 평가의 문제집이다. 잘 만들면 평가 전체가 살고, 편향되면 평가가 거짓 안심을 준다. 대표성이 첫째다 — 실사용 로그(7.6)·유스케이스에서 표집해 실제 트래픽 분포를 반영해야 한다. 쉬운 것만 모으면 만점이 나와도 의미가 없다. 커버리지가 둘째로, 흔한 케이스뿐 아니라 엣지케이스(빈 입력·초장문·모호·다국어·적대적)와 카테고리별 골고루를 넣어야 슬라이스로 봤을 때 어디가 약한지가 드러난다. 셋째는 회귀 케이스 — 과거에 발생한 버그를 재현 케이스로 고정한다("이 프롬프트에서 환각했던 사례"). 이것이 회귀 스위트의 단초다. 넷째는 버전 관리와 분리로, 골든셋을 버전으로 고정해야 시점 비교가 가능하고, 개발셋과 홀드아웃셋을 분리해야 프롬프트를 개발셋에 맞춰 튜닝하는 오버핏을 막는다(4.1의 오염·오버핏과 같은 논리다). 마지막이 크기인데, 4.2.7에서 봤듯 접전을 가르려면 수십 개로는 턱없이 부족하고 수백~수천이 필요하다 — 표본이 작으면 승률 차이가 잡음임을 신뢰구간으로 확인해야 한다.
"품질"을 하나로 재려는 유혹을 버려야 한다. 태스크마다 재는 축이 다르고 재는 도구도 다르며, 특히 결정적으로 검사할 수 있는 것에 판정자를 낭비하면 안 된다.
| 축 | 무엇을 재나 | 어떻게(도구) | 판정자 필요? |
|---|---|---|---|
| 정확성 | 사실·정답 일치 | 정답 있으면 정확 일치·F1·수치 허용오차; 코드는 단위테스트 실행; 참조 있는 개방형은 참조 기반 판정 | 일부만 |
| 형식 준수 | JSON·스키마·필드·길이 제약 | 결정적 검증 — JSON 파싱·스키마 검사·정규식(6.9) | 아니오 |
| 안전 | 유해·정책 위반·부적절 거부 | 안전 분류기·정책 룰(4.3·7.3), 필요 시 판정자 | 대개 분류기 |
| 환각·충실성 | 근거 없는 주장·참조 이탈 | RAG면 근거 대조(제공 문맥에 support되나·인용 정확성, 6.4); NLI·판정자 기반 factual consistency | 자주 |
원칙은 하나다 — 결정적 검사를 먼저, 판정자는 최후에. 형식과 정확성의 상당 부분은 코드로 검출되고, 그것은 판정자보다 빠르고 저렴하고 편향이 없다. 판정자는 코드로 검출할 수 없는 개방형 품질에만 남겨 둔다. 회귀 스위트는 "한 번 고친 건 다시 깨지지 않게" 지키는 고정 테스트 집합으로, 소프트웨어 회귀 테스트와 같은 정신이다 — 과거 실패를 케이스로 고정하고 모든 변경에서 재실행해 기준선 대비 하락을 자동 차단한다. LLM은 비결정적이라(SV-9) 통과·실패를 신뢰구간과 임계로 정의해야 한다("정확도가 기준선보다 통계적으로 유의하게 낮으면 실패"). 이 게이트가 곧 릴리스 관문(8.2)으로 이어진다.
4.2.14 평가 주도 개발
지금까지의 조각을 하나의 작업 방식으로 묶으면 평가 주도 개발(eval-driven development)이 된다 — 프롬프트·모델·RAG를 바꿀 때 추측이 아니라 평가로 회귀를 검출하는 규율이다. 소프트웨어의 테스트 주도 개발·CI와 정확히 같은 정신이다.
몇 가지 습관이 이 루프를 실제로 동작하게 한다. 변경 전에 스위트를 먼저 세운다 — 평가 없이 프롬프트를 고치면 "좋아진 것 같다"는 착각에 빠지므로, 무엇을 개선하려는지를 측정 가능한 목표로 먼저 명시해야 한다. 한 번에 하나씩 바꾼다 — 여러 변경을 뭉치면 무엇이 개선을 냈고 무엇이 회귀를 냈는지 못 가른다. 평가는 귀인(attribution)을 위한 것이다. 슬라이스로 본다 — 종합 점수만 보면 "A 카테고리 +10%, B 카테고리 −15%"가 상쇄돼 안 보이니, 카테고리·난이도·언어별로 분할해 회귀를 국소화한다. 근거 로그를 남긴다 — 판정자의 CoT 근거를 저장하면 왜 졌는지 사람이 열어 볼 수 있고, 그것이 다음 개선의 재료가 된다. 홀드아웃을 아낀다 — 개발셋으로 반복 튜닝하면 그 셋에 오버핏하므로, 최종 신뢰는 손대지 않은 홀드아웃과 인간 표본으로만 적용한다.
내 견해로는, 초기 제품일수록 화려한 평가 인프라보다 작지만 정직한 골든셋에 결정적 검사 몇 개와 스왑 쌍대 판정을 추가한 조합이 투자 대비 효과가 압도적이다. 평가는 완벽할 필요가 없고 어제보다 회귀를 더 잘 검출하면 이미 제 몫을 한다. 앙상블·대규모 인간 보정 같은 정교화는 제품이 커지며 점진적으로 붙이면 된다.
4.2.15 대리지표의 함정 — 게이밍과 굿하트
이 장의 도구는 강력하지만 근본적으로 대리지표라, 그 한계를 흐리면 평가가 개발을 오도한다. 판정자는 자기 오류와 편향을 평가에 전이한다 — 판정자가 특정 사실을 틀리게 알면 그 사실을 맞힌 후보를 틀렸다고 감점하고, 판정자의 장황함 편향은 "장황한 응답을 뽑는" 방향으로 개발을 끌고 간다. 대리지표를 최적화하면 대리지표의 편향까지 함께 최적화되는 것이다.
더 근본적인 병이 굿하트 법칙이다. 고정된 판정자를 목표로 모델·프롬프트를 계속 최적화하면, 결국 판정자의 quirk를 착취하는 방향으로 수렴한다 — 판정자가 좋아하는 형식·어투·길이를 흉내 내되 실질은 안 나아지는 것이다. 이것은 4.1의 벤치마크 오버핏·리더보드 게이밍과 같은 병이고, 3.4의 보상 해킹(reward hacking)과도 같은 근원이다. 셋 다 "고정된 대리 신호를 향한 과최적화"라는 한 문장으로 요약되고, 셋 다 완전히 없앨 수 없다는 것까지 같다. RLHF에서 보상 해킹을 제거가 아니라 "실익을 해치기 전에 멈추기"로 다루듯(3.4), 평가에서도 판정자·골든셋을 주기적으로 교체·확장하고 홀드아웃과 인간 앵커를 최종 심판으로 유지하는 것이 방어다.
아레나·Elo도 대리다 — "평균 인간이 blind로 선호"는 정확성·안전·네 도메인 적합성을 보증하지 않으므로, 순위를 제품 결정의 유일 근거로 삼으면 안 된다. 일치도 수치도 조건부다 — "판정자가 사람만큼 일치"는 특정 셋·특정 태스크·특정 시점의 결과이니, 자기 도메인에서 재보정하지 않은 수치를 사실로 옮기면 안 된다. 이 모든 함정을 관통하는 원칙은 하나로 수렴한다. 반복은 자동으로, 검증과 최종 판단은 인간 표본으로. 이 역할 분담을 지키는 한에서만 자동 평가는 개발을 가속하고, 그 선을 넘어 대리지표를 궁극 기준으로 착각하는 순간 평가는 개발을 잘못된 언덕 위로 높인다.
다음 장(4.3)은 같은 골격을 뒤집어 쓴다. 이 장이 "얼마나 좋은가"를 쟀다면, 안전성 평가·레드팀은 "얼마나 위험한가"를 잰다 — 골든셋·판정자·회귀 스위트는 그대로 쓰되, 이번엔 협조적으로 품질을 재는 대신 적대적으로 시스템을 깨뜨려 본다. 그 뒤 제5부로 넘어가 "좋고 안전한" 모델을 어떻게 저렴하고 빠르게 운용하는가로 이어진다.