혼자 시험문제를 내고, 그 문제를 혼자 풀고, 자기 답을 자기가 채점하는 학생을 떠올려 보자. 처음엔 별 문제가 없다. 그런데 어쩌다 문제의 정답 자체를 틀리게 적어 두면 일이 꼬인다. 틀린 답에 맞춰 공부하고, 다음 시험에도 같은 오류를 또 적고, 출제한 답과 풀어낸 답이 똑같으니 "맞았다"며 스스로 만점을 준다. 점수표는 꾸준히 오르는데 실력은 제자리이거나 오히려 뒷걸음친다.
스스로 문제를 내고 스스로 풀기를 반복하며 성장하는 자기학습(self-evolving) 검색 에이전트가 꼭 이렇다. 이 논문은 그 닫힌 고리(폐루프) 안에서 출제자와 해결자가 점점 같은 오답에 합의해 버리는 고장을 찾아내 '공모(co-cheating)'라 이름 붙였다. 내부에서 주는 보상은 오르는데 실제 정답률은 멈춰 있거나 떨어진다. 저자들은 이 현상을 실제로 측정해 보이고, 채점을 맡는 해결자를 서로 바꿔 배치하는 CrossFit이라는 방법으로 억제한다.
검색 증강 언어모델은 답을 내기 전에 검색을 섞어 근거를 모은다. 보통은 사람이 만든 질문과 정답으로 배우지만, 자기학습 에이전트는 배울 거리를 스스로 만들어 낸다. 구조는 둘로 나뉜다. 출제자(proposer)가 소스 문서를 보고 질문과 임시정답(pseudo-label, 사람이 검증하지 않고 모델이 임시로 붙인 정답)을 만든다. 그중 기준을 통과한 질문쌍으로 해결자(solver)를 학습시킨다. 그리고 새 질문에 대한 해결자의 성적이 다시 출제자의 보상이 된다. 이 사이클을 돌리면 질문이 해결자의 현재 실력 언저리로 모여들어, 사람이 짠 고정 커리큘럼 없이도 자동 커리큘럼이 생긴다.
문제는 이 구조가 '합의'를 '정답'의 대리지표로 쓴다는 데 있다. 앞의 학생 비유가 그대로 들어맞는 대목이다. 출제자가 붙인 임시정답이 틀렸다고 해 보자. 그 틀린 답으로 배운 해결자는 같은 소스에서 나온 다음 질문에도 같은 오류를 반복한다. 출제자와 해결자의 답이 일치하니 보상이 나가고, 그 보상은 다음 라운드 커리큘럼에 오류를 더 깊이 박아 넣는다. 겉으로 보이는 점수는 계속 오르지만, 그 상승분의 일부는 실력이 아니라 공유된 착각이다.
저자들은 먼저 이 고장이 진짜 있는지부터 쟀다. Dr. Zero라는 기존 자기학습 루프를 학습 절차는 손대지 않고 그대로 돌린 뒤, 매 스텝마다 소스 문서와 채택된 임시정답, 출제자 보상에 쓰인 해결자 응답을 저장했다. 그다음 학습에는 전혀 끼어들지 않는 외부 감사자가 소스를 근거로 참조답을 따로 만들어, 저장해 둔 출력이 맞는지 대조한다.
여기서 핵심 지표가 거짓합의 질량(false-agreement mass)이다. 출제자와 해결자가 둘 다 틀렸는데 공교롭게 같은 오답을 내서 '합의'로 집계된 비율을 말한다. 쉽게 풀면, 이 수치가 높을수록 AI가 "둘 다 틀렸지만 답이 같으니 맞았다"고 착각하는 경우가 많다는 뜻이다.
결과는 선명했다. 첫 라운드에서는 거짓합의가 거의 없다. 틀린 라벨은 대부분 '놓친 정답', 즉 해결자가 맞게 답했는데 라벨이 틀려서 보상을 못 받은 경우다. 그런데 라운드가 거듭될수록 양상이 뒤집힌다. 정답률은 늘지 않는데 합의만 낙관적으로 부풀고, 세 번째 라운드에서는 거짓합의가 눈에 띄게 치솟는다(수치는 아래 표). 문제가 어려워져 정답률이 떨어진 것만으로는 '같은 소스에 어긋나는, 똑같은 오답'에 대한 합의가 왜 늘어나는지 설명되지 않는다. 서로 다르던 실수가 공유된 실수로 수렴하고 있다는 신호다.
가장 손쉬운 처방은 학습에 넣기 전에 임시정답을 먼저 검증하는 것이다. 이게 MSV(multi-sample verification, 여러 번 뽑아 보고 거르는 검증)다. 같은 모델에게 소스를 주고 세 번, 소스를 가리고 세 번 답을 뽑는다. 양쪽 모두 흔들림 없는 다수답이 나오고 둘이 서로 맞을 때만 과제를 통과시키고, 그 다수답을 라벨로 교체한다. 소스를 본 답은 근거가 받쳐 주는지를, 소스를 가린 답은 답 자체가 안정적인지를 각각 시험하는 셈이다.
하지만 MSV에는 구멍이 두 개 있다. 첫째, 같은 모델에서 여섯 번 뽑은 표본은 같은 오류를 나란히 공유할 수 있다. 둘째, 검증을 통과했더라도 나중에 그 소스로 학습한 해결자가 그 라벨을 다시 가져다 쓰는 경로까지는 막지 못한다. 게다가 후보 하나당 생성이 여섯 번씩 더 든다.
그래서 저자들의 주력 방법이 CrossFit이다. 바꾸는 건 '누가 채점하느냐' 단 하나다. 출제자의 소스 문서를 fold 0과 fold 1 두 묶음으로 가른다. 질문은 자기 소스가 속한 묶음을 학습 내내 그대로 유지한다. 각 묶음은 보조 해결자를 하나씩 기른다. 다음 라운드에서 역할을 엇갈려, fold 0에서 나온 질문은 fold 1로만 배운 해결자가 채점하고 그 반대도 똑같이 한다. 그 결과 어떤 질문이든 그 질문을 채점하는 해결자는 그 질문의 소스를 학습한 적이 없다. 보상 규칙 자체는 그대로다. 해결자에게 얼마나 어려워 보이느냐로 점수를 준다. 바뀐 건 오직 '그 신호를 누가 주느냐'뿐이다.
정리하면 둘은 경쟁 관계가 아니라 상호보완 관계다. MSV로 라벨을 거르고, CrossFit으로 피드백을 교차시킨다. 앞단과 뒷단에서 서로 다른 구멍을 하나씩 막는 것이다.
문서를 질문 단위가 아니라 소스 단위로 나눈 게 영리한 지점이다. 왜 영리한가. 질문 단위로 쪼개면 같은 소스에서 파생된 비슷한 질문들이 양쪽 해결자에게 모두 노출되고, 그러면 '배운 적 없는 문제로 채점한다'는 원칙이 그 자리에서 깨지기 때문이다. 없애려던 재사용 경로가 그대로 살아남는 셈이다. 한 가지 더 — 본체 해결자는 쪼개지 않는다. 통과한 모든 질문으로 그대로 배운다. 교차는 오직 출제자의 다음 커리큘럼을 빚는 피드백에만 적용된다.
한마디로, 가짜로 부풀던 점수 거품을 걷어내자 진짜 실력이 함께 올랐다. 헛똑똑해지는 길목을 막았더니 실제 문제풀이 성적까지 따라 오른 것이다. CrossFit은 거짓합의를 기존 방식의 절반 이하로 줄이면서, 하류 성능(downstream, 학습이 끝난 모델을 실제 QA 문제에 풀려 본 최종 성적)은 표준 자기학습보다 8점 넘게 끌어올렸다.
특히 눈여겨볼 보조 실험이 하나 있다. 저자들은 질문 3,000개를 따로 고정해 두고, 같은 질문 집합을 두 가지 피드백으로 다시 재생(replay)해 나란히 비교했다. 채점자의 학습 이력에 그 소스에서 나온 데이터가 그대로 들어간 '결합 피드백'에서는 거짓합의가 4B 5.8%·9B 7.3%였는데, 채점자의 학습 이력에서 해당 소스 유래 데이터를 제외한 '소스 제외 피드백'에서는 4B 0.4%·9B 0.1%까지 내려갔다. 여기서 '소스 제외'는 입력 문서를 가린다는 뜻이 아니라, 채점을 맡는 평가자가 그 소스로 배운 적이 있느냐를 가른다는 뜻이다. 이 재생이 중요한 이유는, 거짓합의의 변화가 '커리큘럼이 바뀌어서'인지 '피드백의 혈통이 바뀌어서'인지를 갈라 주기 때문이다. 결국 거짓합의의 뿌리가 피드백의 혈통, 즉 채점자가 그 소스를 봤느냐 아니냐에 있었다는 걸 보인 셈이다.
구체 수치는 아래 표로 정리한다.
거짓합의 질량 (학습 후, 낮을수록 좋음)
| 피드백 방식 | 4B | 9B |
|---|---|---|
| 결합(기존) | 6.1% | 8.8% |
| MSV | 5.7% | 7.2% |
| CrossFit | 3.0% | 3.7% |
(참고로 학습 전 라운드 1의 거짓합의는 4B 0.004·9B 0.003으로 거의 없다가, 라운드 3에서 위 결합 수치까지 치솟는다.)
재생 실험 (고정 3,000문항, 거짓합의 질량 — 위 표와는 별개 설정)
| 피드백 방식 | 4B | 9B |
|---|---|---|
| 결합 | 5.8% | 7.3% |
| 소스 제외 | 0.4% | 0.1% |
하류 성능 (정답률, 높을수록 좋음)
| 방법 | 4B | 9B |
|---|---|---|
| CrossFit | 48.8% | 51.2% |
| 표준 결합 자기학습 대비 | +8.8점 | +8.4점 |
| Search-R1 대비 | +8.7점 | +7.8점 |
저자들 스스로 선을 긋는다. CrossFit은 보조 해결자를 진실을 다 아는 신탁으로 만들어 주지 않는다. 두 해결자는 사전학습이나 겹치는 증거에서 물려받은 오류를 여전히 함께 지닐 수 있다. CrossFit이 끊는 것은 어디까지나 '같은 소스로 배웠다는 이유만으로' 합의가 보상받는 경로다. 실제로 처리 후에도 3% 안팎의 거짓합의가 남는다.
평가 범위도 짚어 둘 지점이다. 검증은 Qwen3.5 두 규모와 특정 세 라운드 설정, 일곱 개 QA 벤치마크에 묶여 있고, 감사 자체가 또 다른 대형 모델의 판정에 기댄다. 무엇보다 소스를 반으로 가르는 만큼 각 보조 해결자가 보는 데이터가 줄어드는데, 데이터가 희박한 분야에서 이 분할이 어떻게 작동할지는 더 지켜봐야 한다.
이 발견은 학술적 호기심으로 끝나지 않는다. 우리가 만드는 AI 제품의 신뢰도 문제와 곧바로 맞닿는다.
온틀의 AI PM이 고객 과제를 끝내고 스스로 '완료 판정'을 내리는 장면을 떠올려 보자. PM이 결과물을 만들고, 같은 PM이 "요구사항을 충족했는가"라는 인수 기준까지 세워 자기 결과물을 채점한다. 과제 이력을 쌓아 PM을 계속 다듬으면, 겉보기 '완료율'은 분기마다 예쁘게 오를 수 있다. 이 논문의 경고가 정확히 여기에 꽂힌다. 출제와 채점이 같은 뿌리를 공유하면, 틀린 인수 기준과 틀린 결과물이 손잡고 서로를 승인하는 거짓 경계가 자란다. 완료율 그래프는 우상향인데 고객 반려는 줄지 않는 괴리 — 그게 바로 거짓합의의 현장 버전이다.
다만 CrossFit을 토씨 하나 안 바꾸고 옮겨 올 수 있는 건 아니다. 완료 판정을 학습으로 자동화하려는 경우에 한해 이런 모양이 된다. 한 고객 묶음의 과제로 학습·조정된 판정 로직이 자기 묶음의 완료는 채점하지 못하게 하고, 다른 묶음으로 길러진 판정자가 교차로 인수 심사를 맡는다. 본체 PM은 전체 이력으로 계속 배우되, '잘했다'는 보상 신호만큼은 자기가 배운 소스 바깥에서 받아 오는 구조다. 완료 판정 자동화에 본격적으로 손대기 전에, 생성과 평가의 데이터 혈통이 갈라져 있는지부터 설계에 못 박아 둘 이유가 여기 있다.
한 가지는 구분해 두자. 온틀이 이미 발행 전에 돌리는 이중검증 게이트는, 집필한 쪽과 다른 독립 검수자가 결과를 따로 대조한다는 점에서 논문의 외부 감사 프로토콜에 대응한다. 완료율과 실제 충족의 간극을 상시 계측하는 습관인 셈이다. 반면 CrossFit식 학습 데이터 혈통 분리는 그와 결은 같아도 적용 지점이 다른, 아직 우리가 설계에 새로 넣어야 할 과제다. 이미 가진 것(외부 감사)과 더 넣어야 할 것(혈통 분리)을 섞지 않는 것부터가 시작이다.
아닙니다. 논문은 의도적 조율을 뜻하지 않는다고 못 박습니다. 출제자가 만든 틀린 임시정답으로 해결자가 배우고, 같은 소스의 다음 질문에서 같은 오류를 반복하며 그 합의가 보상으로 되돌아오는 흐름일 뿐입니다. 누가 짜고 치는 게 아니라, 보상을 최대화하다 보니 저절로 그렇게 굳어지는 자기강화 현상입니다.
발상의 뿌리는 닮았지만 적용 지점이 다릅니다. 교차검증이 모델 '평가'를 위해 데이터를 나눈다면, CrossFit은 학습 루프 안의 '보상 신호'를 위해 나눕니다. 그리고 결정적으로, 나누는 단위가 질문이 아니라 소스입니다. 채점자가 그 질문의 소스를 학습한 적이 없어야 한다는 원칙을 지키려면 소스 단위로 갈라야 하기 때문입니다.