실험 설계(4강)가 끝나면 모델을 채점할 "정답지"가 필요하다. 이 강의는 그 정답지, 즉 gold를 만드는 절차와 그 품질을 숫자로 증명하는 도구인 Cohen's κ를 다룬다.
gold(gold standard, 정답 데이터)는 평가의 기준이 되는 "참값으로 합의된 라벨"이다. 예를 들어 "한국어 초성 줄임말을 LLM이 이해하는가"를 4지선다로 평가한다면, 각 문항의 정답 보기가 gold다. 모델 점수는 결국 모델 출력과 gold의 일치율이므로, gold가 틀리면 그 위에서 계산한 모든 숫자가 함께 틀린다. 모델 성능은 gold 품질을 넘을 수 없다.
여기서 중요한 관점 전환이 있다. gold는 "수집하는 것"이 아니라 "만드는 것"이다. 웹에서 긁어온 초성 줄임말 목록은 아직 gold가 아니다. 누군가 "ㅇㅈ의 뜻은 '인정'이다"라고 판정하고, 그 판정이 믿을 만하다는 근거를 갖춘 뒤에야 gold가 된다. 이 판정 작업을 주석(annotation)이라 하고, 판정하는 사람을 주석자(annotator)라 한다.
주석은 주석자의 감이 아니라 문서화된 규칙을 따라야 한다. 이 규칙 문서가 주석 가이드라인(annotation guideline)이다. 가이드라인에는 최소한 다음이 들어간다.
| 구성 요소 | 내용 | 초성 줄임말 예시 |
|---|---|---|
| 라벨 정의 | 각 라벨이 정확히 무엇을 뜻하는가 | "정답"은 해당 초성이 실제 커뮤니티에서 그 뜻으로 통용됨을 의미 |
| 판정 기준 | 어떤 근거로 라벨을 정하는가 | 용례 출처 2곳 이상에서 같은 뜻으로 쓰임 |
| 경계 사례 | 애매한 입력을 어떻게 처리하는가 | "ㅈㄱㄴ"처럼 뜻이 둘 이상이면 별도 라벨 "다의" 부여 |
| 제외 규칙 | 무엇을 데이터에서 빼는가 | 특정 커뮤니티에서만 쓰이는 은어는 제외 |
가이드라인 없이 주석을 시작하면, 주석자마다 머릿속 기준이 달라 라벨이 사람의 취향을 측정하게 된다. 그리고 가이드라인은 결과를 보기 전에 고정해야 한다. 결과를 본 뒤 기준을 바꾸는 것이 왜 위험한지는 14강(사전 등록)에서 다룬다.
한 명이 주석하면 두 가지 문제를 구별할 수 없다.
두 명이 독립적으로(서로의 라벨을 보지 않고) 같은 데이터를 주석하면, 두 라벨이 갈리는 지점이 곧 실수와 모호함이 드러나는 지점이다. 즉 이중 주석은 비용을 두 배로 쓰는 낭비가 아니라, gold의 오류를 검출할 수 있는 유일한 장치다.
두 사람의 라벨이 얼마나 일치하는지를 주석자 간 일치도(inter-annotator agreement, IAA)라 한다. 일치도가 높으면 "이 라벨은 누가 달아도 비슷하게 나온다", 즉 gold가 개인의 주관이 아니라 재현 가능한 기준의 산물임을 보일 수 있다. 논문 심사자가 "이 정답은 누가 정했나?"라고 물을 때, 일치도 수치가 그 답이 된다.
가장 먼저 떠오르는 지표는 단순 일치율(두 사람이 같은 라벨을 단 문항의 비율)이다. 그러나 단순 일치율은 우연히 일치할 확률을 보정하지 않는다. 라벨이 두 개뿐이라면 두 사람이 동전을 던져도 기대값 기준 50%는 일치한다. 라벨 분포가 한쪽으로 쏠려 있으면 우연 일치는 더 커진다.
Cohen's κ(Cohen's kappa, 코헨의 카파)는 관찰된 일치율에서 우연에 의한 기대 일치율을 빼서 보정한 지표다.
κ = 1이면 완전 일치, κ = 0이면 우연 수준, κ < 0이면 우연보다도 못한 일치다. 분모 는 "우연을 넘어서 일치할 수 있었던 최대 여지"이고, 분자는 "실제로 우연을 넘어 일치한 양"이므로, κ는 우연을 초과한 일치가 최대 가능치의 몇 %인가로 읽으면 된다.
두 주석자가 초성 줄임말 100개에 대해 "뜻이 통용됨 / 통용 안 됨"을 판정했다고 하자.
| B: 통용 | B: 안 됨 | A 합계 | |
|---|---|---|---|
| A: 통용 | 60 | 10 | 70 |
| A: 안 됨 | 10 | 20 | 30 |
| B 합계 | 70 | 30 | 100 |
단순 일치율 80%가 우연 보정 후에는 0.52로 내려온다. 이것이 κ를 쓰는 이유다.
Landis와 Koch가 제안한 관례적 구간이 널리 인용된다.
| κ 범위 | 관례적 해석 |
|---|---|
| 0.81 ~ 1.00 | 거의 완전한 일치 (almost perfect) |
| 0.61 ~ 0.80 | 상당한 일치 (substantial) |
| 0.41 ~ 0.60 | 중간 수준 (moderate) |
| 0.21 ~ 0.40 | 약한 일치 (fair) |
| ≤ 0.20 | 미미하거나 없음 |
주의: 이 구간은 통계적으로 유도된 것이 아니라 관례다. 분야와 과제 난이도에 따라 요구 수준이 다르며, 감정 분류처럼 본질적으로 주관적인 과제는 사실 판정 과제보다 낮은 κ가 정상이다. "우리 분야의 유사 연구는 κ를 얼마로 보고했는가"를 함께 확인하는 것이 안전하다(선행 연구 조사 절차는 3강 참고).
라벨 분포가 쏠리면 일치율 90%에서도 κ가 0 근처로 떨어질 수 있다. 100문항 중 두 사람 모두 "적절" 90건, 서로 엇갈림 10건, 둘 다 "부적절"은 0건이라 하자. 이지만 두 사람 모두 "적절"을 95% 확률로 고르므로 가 되어 κ는 오히려 음수가 된다. 희귀 라벨에서 한 번도 합의하지 못했다면, 그 희귀 라벨에 관한 한 두 사람의 판정은 우연만도 못하다는 뜻이고 κ는 그것을 정직하게 드러낸다. 이런 분포 쏠림 문제(prevalence problem)는 κ의 결함이 아니라 경고 신호다.
κ가 낮은 가장 흔한 원인은 사람이 아니라 가이드라인이다. 라벨 정의가 애매하거나 경계 사례 규칙이 없으면 성실한 주석자 둘도 계속 엇갈린다. κ가 낮게 나오면 주석자를 교체하기 전에 불일치 문항을 모아 놓고 어떤 유형에서 갈렸는지부터 분석해야 한다. 대개 특정 유형(예: 다의어 초성)에 불일치가 몰려 있고, 그 유형의 규칙을 가이드라인에 추가하면 해결된다.
불일치 문항은 조정(adjudication) 절차로 해소한다. 두 주석자가 (또는 제3의 조정자가) 불일치 문항을 함께 보며 가이드라인에 근거해 최종 라벨을 합의하고, 합의 근거를 기록한다. 어느 쪽으로도 판정할 수 없는 문항은 억지로 라벨을 달지 말고 데이터에서 제외하며, 제외 사실과 개수를 논문에 보고한다. 조용히 버리면 데이터 구성이 결과에 유리한 방향으로 왜곡될 수 있기 때문이다(측정을 부풀리는 방식들은 7강에서 다룬다).
Cohen's κ는 주석자 2명, 명목형 라벨을 가정한다. 주석자가 3명 이상이면 Fleiss' κ나 Krippendorff's α, 라벨이 순서형이면 가중 κ(weighted kappa)를 쓴다. 이 강의에서는 이름만 알아 두면 된다. 핵심 아이디어(우연 보정)는 모두 같다.
널리 쓰이는 머신러닝 벤치마크들의 테스트셋 라벨 오류를 체계적으로 조사한 연구가 있다. 연구진은 ImageNet을 포함한 여러 대표 벤치마크의 테스트셋에서 사람 검증을 거쳐 상당량의 라벨 오류를 확인했고, 더 심각한 발견은 그 다음이었다. 오류를 교정한 라벨로 다시 채점하자 모델들의 순위가 일부 뒤집혔다. 즉 잘못된 gold 위에서는 "어느 모델이 더 나은가"라는 비교 결론 자체가 흔들린다. 수백만 장 규모의 데이터를 주석 검증 없이 크라우드소싱으로만 구축하면 이런 오류가 축적된다는 것, 그리고 그 위에서 수천 편의 논문이 순위 경쟁을 했다는 것이 이 사례의 교훈이다.
자연어 추론(NLI) 분야에서도 유사한 논란이 잘 알려져 있다. 대표 NLI 데이터셋들을 여러 명이 재주석해 보니 상당 비율의 문항에서 사람들 사이에 진성 불일치(genuine disagreement)가 존재했고, 단일 gold 라벨을 강제하는 것이 과연 타당한가라는 문제 제기로 이어졌다. gold는 "존재하는 정답을 받아 적는 것"이 아니라 "합의를 설계하는 것"임을 보여 주는 사례다.
초성 줄임말 4지선다 평가를 예로 들면 절차는 다음과 같다.
전체를 이중 주석할 여력이 없으면? 전수 이중 주석이 이상적이지만, 예산이 부족하면 무작위 표본(관례적으로 전체의 10~20% 수준)만 이중 주석해 κ를 산출하고 나머지는 단독 주석하는 절충이 흔히 쓰인다. 이때 이중 주석 표본은 반드시 무작위로 뽑아야 한다. 쉬운 문항만 골라 이중 주석하면 κ가 전체 데이터의 품질을 대표하지 못한다.
주석자 대신 LLM을 쓰면 안 되나? LLM으로 라벨 초안을 만들고 사람이 검수하는 방식은 비용을 크게 줄여 주지만, LLM이 만든 라벨을 다시 LLM 평가의 gold로 쓰면 평가가 순환에 빠질 위험이 있다. 특히 평가 대상 모델과 같은 계열의 모델로 gold를 만들면 그 모델의 오류 패턴이 정답에 스며든다. LLM-judge의 순환성 문제는 17강에서 본격적으로 다룬다. LLM을 쓰더라도 사람 이중 주석 표본으로 LLM 라벨과 사람 라벨 간 일치도를 별도로 보고하는 것이 최소한의 안전장치다.
κ를 계산하는 코드는? 직접 구현할 필요 없이 scikit-learn의 cohen_kappa_score처럼 검증된 라이브러리 함수를 쓴다. 손계산은 개념 이해용이고, 보고용 수치는 라이브러리로 산출해 계산 실수를 배제한다.
4지선다 특유의 작업이 하나 더 있다. 정답만이 아니라 오답 보기(distractor)도 설계 대상이다. 오답이 너무 쉽거나, 정답만 문장이 길거나, 정답이 특정 위치에 몰리면 모델이 지식 없이도 맞힐 수 있다. 이런 형식 편향은 7강(측정의 함정)과 19강(프롬프트 공정성)에서 다룬다. 완성된 gold를 train/val/test로 나누는 방법과, test를 만들 때 이미 인터넷에 공개된 줄임말 목록을 그대로 쓰면 생기는 오염 문제는 각각 6강과 18강의 주제다.