상·하한 채점
정답지에 없는 것을 만났을 때, 오답으로 셀지 정답으로 셀지 양쪽 다 세어보는 방법.
무엇이 문제인가
골든셋은 보통 어떤 검색기가 뽑아온 후보만 사람이 읽어서 만든다. 전 문서를 다 읽을 수는 없기 때문이다.
질문 → 검색기 A가 후보 40개 뽑음 → 사람이 그중에서 정답 고르기
└──── 이 풀 밖의 청크는 라벨이 아예 없다 ────┘
그 다음 검색기 B를 평가하면 문제가 생긴다. B가 풀 밖에서 진짜 정답을 찾아와도 라벨이 없어서 오답으로 세어진다.
B가 잘할수록 손해를 본다. 정답지가 A에 맞춰져 있기 때문이다.
다루는 법 — 세 가지 가정으로 세 번 채점한다
| 이름 | 라벨 없는 청크를 | 누구에게 유리 |
|---|---|---|
| 하한 (비관) | 오답으로 센다 | A. 흔히 쓰는 기본 채점이 이것 |
| 응축 | 순위에서 빼고 센다 (판정된 것끼리만 겨룸) | 중립 |
| 상한 (낙관) | 정답으로 센다 | B |
하한 ≤ 응축 ≤ 상한이 항상 성립한다. 진짜 값은 이 구간 어딘가에 있다.
어떻게 판정하나
하한에서도 B가 이긴다 → 라벨링 없이 채택 확정
상한에서도 B가 진다 → 라벨링 없이 기각 확정 (라벨을 더 붙여도 못 이긴다)
구간이 걸친다 → 이때만 추가 라벨링
전부 라벨링하지 않아도 되는 게 핵심이다. 판정이 갈리는 경우에만, 그것도 판정을 뒤집을 수 있는 청크(B가 상위에 올렸는데 아무도 본 적 없는 것)만 읽으면 된다.
우리 프로젝트에서
정답지가 e5-small(M0)이 뽑은 후보로 만들어져 있어, 2차 실험의 새 임베딩에 구조적으로 불리했다.
| 조합 | 리랭킹 상위 10개 중 미판정 비율 |
|---|---|
| e5 + R1 (현행) | 0.7% |
| bge-m3 + R1 | 26.0% |
| KURE + R1 | 32.0% |
그리고 상·하한 폭 자체가 그 편향을 그대로 보여줬다 — M0는 0.0018, 새 모델은 0.05 안팎.
구간이 걸쳐서 결국 라벨링으로 풀었고, 그 뒤 미판정률이 전 조합 **0.0%**가 되며 상한 = 응축 = 하한으로 구간이 한 점에 붕괴했다. 전 과정 → 검색 실험 결과 §8
상한은 "있을 수 있는 최댓값"이지 예상값이 아니다
라벨링해보니 미판정 청크 2,105개 중 **진짜 정답은 2.0%**뿐이었고, 실제 상승분도 상한이 시사한 폭(+0.056)의 절반가량인 +0.0297이었다. 상한이 높다고 “잘하면 이만큼 오른다”로 읽으면 안 된다. 그건 판정을 유보할 근거일 뿐이다.
그렇다고 정답률이 낮다 = 영향이 없다로 읽어도 안 된다
관련
골든셋 · paired bootstrap · MRR · 검색 실험 결과 §8