AI
논문난이도 보통허깅페이스 화제 논문 · 10월 19일(월) 공개

VerifierBench: AI가 만든 검증기는 맞는 풀이도 알아볼까

AI가 만든 검증기는 틀린 풀이를 거르면서도 맞는 풀이까지 탈락시킬 수 있어, 어떤 성공 사례를 놓치는지 함께 시험해야 합니다.

쉽게 말하면비유하자면 AI에게 채점 기준표를 만들게 했더니, 틀린 답은 잘 걸러 내지만 맞는 답안까지 틀렸다고 채점하는 일이 많았다는 이야기다. 이 연구는 그런 기준표를 숨겨 둔 답안으로 시험했다.

왜 봐야 하나
AI가 만든 채점 프로그램(검증기)으로 결과를 채점하거나 학습 자료를 고른다면 맞는 풀이를 버리는지도 확인해야 한다. 거부를 잘한다고 좋은 검증기가 아니다. 논문이 제안한 자가 시험 개선책의 효과는 아직 실험하지 않았다.

이 논문은 LLM 에이전트가 과제 지시와 환경을 읽고, 후보 풀이의 성공 여부를 판정하는 실행 가능한 검증기를 만들 수 있는지 평가한다. VerifierBench는 6개 기존 벤치마크에서 가져온 222개 과제와 4,993개 숨은 테스트 사례로 구성됐다. 공통 실행 환경에서 시험한 19개 모델 모두 잘못된 풀이를 거르는 비율보다 올바른 풀이를 받아들이는 비율이 낮았다. 별도 보존 기록에서는 모든 사례를 거부하는 검증기가 오탈락의 대부분을 차지했다. 사례 분석은 과제가 요구하지 않은 제한을 코드에 넣고 자기 시험에서도 그 가정을 반복하는 문제가 있음을 보여준다.

알아낸 것

  • 222개 과제와 4,993개 숨은 사례로 실행 가능한 검증기를 평가했으며, 서로 다른 올바른 풀이도 포함했습니다.
  • 공통 실행 환경의 19개 모델 모두 잘못된 풀이를 거르는 비율보다 올바른 풀이를 받아들이는 비율이 낮았습니다.
  • 실패를 살펴본 사례에서는 허용된 파일 수정이나 도구 호출을 임의로 금지하고, 자기 시험에서도 그 잘못된 가정을 반복했습니다.

한계와 주의할 점

  • 유한한 구성 사례와 참조 검증기를 기준으로 평가한 사전공개 연구이며, 모든 실제 업무의 의미적 정답을 보장하지는 않습니다.
  • 모델·실행 도구·추론 설정이 함께 달라지는 비교가 있고, 순위에는 반복 생성이나 유의성 검정이 없습니다.
  • 일부 실패 원인은 표적 선정한 코드와 기록을 읽어 분석했으며, 제안한 개선책의 효과를 별도로 실험하지 않았습니다.

용어 풀이

실행 가능한 검증기(executable verifier)
후보 풀이를 입력받아 PASS 또는 FAIL을 반환하는 프로그램. 이 연구에서는 에이전트가 과제 지시문과 환경만으로 이 검증기를 생성해야 한다. 올바른 검증기는 모든 유효한 풀이를 PASS, 모든 잘못된 풀이를 FAIL로 판정해야 한다.
BAnorm (정규화된 균형 정확도)
TPR + TNR − 100으로 계산되는 주 평가 지표. 과제별로 양성·음성 클래스를 동일하게 가중하고, 과제 간에도 동일하게 가중한다. 항상 PASS/FAIL을 반환하면 0점, 완벽한 일치는 100점이다. 전체 정확도와 다르므로 해석에 주의해야 한다.
TPR / TNR
TPR(True Positive Rate)은 양성 사례 중 PASS를 받은 비율, TNR(True Negative Rate)은 음성 사례 중 FAIL을 받은 비율이다. 이 연구에서는 과제별로 계산한 뒤 과제 간 평균을 낸다. 모든 모델에서 TPR이 TNR보다 낮아 유효한 풀이를 거부하는 경향이 강하다.
전부 거부(all-reject) 검증기
해당 과제의 모든 테스트 사례에 유효한 FAIL을 반환하는 검증기. TPR 0, TNR 100으로 정규화 점수는 0이다. 별도로 분석한 보존 기록에서는 오탈락이 이런 검증기에 집중됐으며, 이것이 모든 생성 검증기의 실패 원인을 뜻하지는 않는다.
Verifier4Verifier (V4V)
테스트 사례와 소스 검증기의 신뢰성을 검증하는 6단계 감사 절차. 재생, 반복성, 출처, 입력-라벨 일관성, 사소한 기준선, 변이 테스트로 구성된다. 이 감사를 통과한 소스 검증기만 참조 검증기로 사용된다.
확증적 자가 시험(confirmatory self-testing)
검증기가 이미 허용하는 풀이만 사용하여 자가 시험하는 패턴. 검증기의 잘못된 제한 조건을 공유하는 풀이만 시험하므로 그 제한이 과제 요구사항에서 비롯된 것인지 검증하지 못한다. 예를 들어 기본 인자를 항상 명시적으로 제공하면 생략 시 오류를 발견할 수 없다.
공격(attack) 테스트 사례
검증의 빈틈을 악용하거나 성공 신호를 조작하거나 검증을 방해하는 음성 사례. 총 798개로, 검증기가 단순한 실수만 잡아내는 것이 아니라 의도적 우회에도 저항하는지 평가한다.

더 깊이 읽기 읽는 데 약 11분

배경과 문제

LLM 에이전트가 작업을 수행할 때 자신의 출력을 신뢰성 있게 검증하는 것은 매우 중요하다. 특히 데이터 중심의 재귀적 자기 개선(RSI)에서는 에이전트가 자신의 학습 데이터를 만들고, 강화학습 보상으로 사용할 검증 함수를 함께 생성하기도 한다. 검증기가 잘못되면 위반 사례에 계속 보상을 주거나 유효한 풀이를 버릴 수 있어 학습 과정 전체가 오염될 수 있다. 이 논문은 '검증기 생성(verifier generation)' 문제를 다룬다. 즉, 과제를 푸는 에이전트가 받는 것과 동일한 지시문과 환경만을 받고, 어떤 후보 풀이에 대해서도 PASS 또는 FAIL을 반환하는 실행 가능한 검증기를 작성해야 한다.

일반적인 풀이 생성기(solver)는 하나의 유효한 풀이만 찾으면 되지만, 검증기는 모든 유효한 풀이를 받아들이고 모든 잘못된 풀이를 거부해야 한다. 따라서 과제의 필수 요구사항과 풀이마다 달라질 수 있는 선택적 요소를 구분해야 한다. 예를 들어, 신용카드 유지 과제에서 읽기 전용 조회 도구가 허용되는데, 검증기가 이 도구를 허용 목록에서 빠뜨리면 그 도구를 사용한 올바른 풀이를 거부하게 된다. 기존 연구는 테스트 단언, 단위 테스트, 이슈 재현 테스트 등을 평가했지만, 도구 호출·환경 상태·코드 변경에 따라 정답이 달라지는 에이전트 과제 완료 검증은 다루지 않았다.

기존 접근의 한계

기존의 실행 가능한 검증기 생성 연구는 주로 정적 분석 검사기, 테스트 단언, 단위 테스트 생성에 초점을 맞췄다. 예를 들어 nl2postcond는 자연어 의도를 형식적 사후 조건으로 변환하고, CodeSpecBench는 실행 가능한 행동 명세를 생성하며, CheckerBench는 정적 분석 검사기를 다룬다. 그러나 이들은 에이전트가 실제로 도구를 호출하고 환경 상태를 변화시키며 코드를 수정하는 과제 완료 상황을 평가하지 않는다. 이런 상황에서는 검증기가 도구 상호작용, 결과 환경 상태, 코드 변경을 모두 고려해야 하므로 훨씬 더 어렵다.

기대 풀이 하나만 통과하는지 확인해서는 검증기의 품질을 충분히 알 수 없다. 한 정답은 통과시키면서 다른 유효한 풀이는 거부할 수 있고, 일반적인 실수는 잡으면서도 검증의 빈틈을 악용하는 공격은 받아들일 수 있기 때문이다. VerifierBench는 과제마다 여러 유효 변형과 오류·공격 사례를 넣어, 정답 수용과 오답 거부를 함께 시험한다.

연구방법을 단계별로

VerifierBench는 6개 오픈소스 에이전트 벤치마크(BFCL v4, ACEBench, τ²-bench, AppWorld, AgentDojo, SWE-bench Verified)에서 222개 과제를 추출했다. 각 과제는 도구 호출(95개), 상태 기반(80개), 코드 검증(47개) 중 하나로 분류된다. 각 과제에 대해 지시문과 환경만 제공하고, 참조 검증기와 숨은 테스트 사례는 생성자에게 주지 않는다. 테스트 사례는 네 그룹으로 구성된다: 참조 풀이 222개(양성), 유효 변형 1,344개(양성), 일반 오류 2,629개(음성), 공격 798개(음성). 유효 변형은 표현만 바꾸거나 다른 구현·실행 경로를 사용하지만 과제 요구사항을 모두 만족하는 풀이다.

테스트 사례의 라벨이 신뢰할 수 있어야 하므로 Verifier4Verifier(V4V)라는 6단계 감사를 수행한다. ① 재생(Replay): 소스 검증기를 모든 테스트 사례에 실행해 구성 라벨과 비교, ② 반복성(Repeatability): 같은 초기 조건에서 결정이 안정적인지 확인, ③ 출처(Provenance): 모든 결정을 테스트 사례 내용과 검증기 버전에 연결, ④ 입력-라벨 일관성: 동일한 정보를 받는 사례가 반대 라벨을 갖지 않는지 확인, ⑤ 사소한 기준선: 항상 수용·항상 거부·참조만 수용하는 검증기가 드러나는지 확인, ⑥ 변이 테스트(Mutation testing): 소스 검증기의 검사 하나를 변경했을 때 테스트 스위트가 그 변화를 감지하는지 확인. 이 감사에서 확인된 결함으로 45개 과제가 제외되었고, 남은 222개 과제의 소스 검증기가 참조 검증기가 된다.

평가 지표는 과제별로 양성 사례 중 PASS를 받은 비율(TPR)과 음성 사례 중 FAIL을 받은 비율(TNR)을 계산한 뒤, 과제 간 평균을 내고 두 클래스를 동일하게 가중한다. 주 지표는 정규화된 균형 정확도 BAnorm = TPR + TNR − 100이다. 항상 PASS 또는 FAIL을 반환하면 0점, 완벽한 일치는 100점이 된다. 무응답이나 충돌도 분모에 남고 점수를 받지 못한다. 19개 모델을 공통 하네스 Pi에서 평가하고, 하네스 효과를 보기 위해 17개 추가 구성(네이티브 하네스 등)을 실험했다. 생성 예산은 과제당 5,400초, 응답당 출력 토큰 32,768개, 상태·코드 과제의 환경 실행(run_public)은 생성 중 과제당 20회로 제한된다. 이 예산은 탐색과 자기 시험이 공유하며 숨은 평가의 실행 예산과는 별개다.

결과와 숫자의 의미

공통 Pi 하네스에서 19개 모델의 BAnorm은 10.6에서 62.1까지 분포한다. 최고는 GPT-6-astra(62.1)이고, Claude Opus 4.8(54.0), Kimi K3(53.4)가 뒤를 잇는다. 모든 모델이 TPR(21.1~70.2%)이 TNR(79.2~96.3%)보다 낮다. 즉, 유효한 풀이를 받아들이는 것이 공통적인 약점이다. 통과하지 못한 양성 사례 중 57.1~100%가 무응답이 아닌 명시적 FAIL이었다. 유효한 풀이를 적극적으로 거부하는 문제가 큰 비중을 차지한다. 과제 유형별로 보면 도구 호출 과제의 평균 TPR은 79.2%로 비교적 높지만, 상태 과제는 27.7%, 코드 과제는 40.2%로 크게 떨어진다.

분석한 기록에서 오탈락은 '전부 거부(all-reject)' 검증기에 특히 집중됐다. 전부 거부 검증기는 해당 과제의 모든 테스트 사례(양성·음성 모두)에 유효한 FAIL을 반환한다. 9개 모델의 보존 기록을 분석한 결과, 전부 거부 검증기가 각 모델의 양성 FAIL 결정의 87.9~96.0%를 차지했다. 별도의 Astra 추적 배치(4가지 조건)에서도 68~75개의 검증기가 전부 거부였고, 오탈락의 93.3~95.5%를 기여했다. 이는 거부 비율만 높게 만들면 좋은 검증기가 된다는 생각의 한계를 보여준다. 다만 모든 FAIL이 의미적으로 지나친 조건 때문이라고 확인한 것은 아니다.

하네스 효과는 방향이 일정하지 않다. Claude Opus 4.8은 Pi에서 54.0이지만 Claude Code에서는 66.2로 12.2점 상승해 전체 36개 구성 중 최고가 되었다. 반면 GPT-6-astra는 Pi 62.1에서 Codex 58.0으로 4.1점 하락했다. Gemini 3.5 Flash는 Gemini CLI에서 15.0점 상승했지만, Gemini 2.5 Pro는 9.2점 하락했다. Codex는 실행한 5개 모델 모두의 점수를 낮췄다. 하네스는 프롬프트, 도구, 추론 설정이 다르므로 이 차이는 모델 능력 단독의 인과 효과가 아니라 구성(configuration) 간 비교로 해석해야 한다. 추론 노력(HIGH vs LOW)은 Astra 배치에서 Pi 기준 BAnorm +0.5, Claude Code 기준 −1.3으로 거의 변화가 없었지만, 과제 유형별로는 코드 과제는 개선되고 상태 과제는 악화되는 상반된 효과가 있었다.

구체적인 예시

논문은 12개 과제, 16개 검증기 사례에서 119개의 양성 FAIL(90개 서로 다른 사례)을 분석했다. 이들은 모두 '과제가 요구하지 않는 검사(unjustified check)' 때문이었다. 예를 들어, τ²-bench 은행 과제 044에서 검증기가 도구 허용 목록을 만들면서 허용된 읽기 전용 조회 도구 get_user_dispute_history_7291을 빠뜨렸다. 이 검증기는 합법적인 조회를 '지원되지 않는 변형'으로 간주해 9개 양성 사례를 모두 환경 실행 전에 거부했다. 자가 시험에서도 같은 도구를 빠뜨려서 문제를 발견하지 못했다.

또 다른 예로, retail/34 과제에서 사무용품 3개(기계식 키보드, 헤드폰, 사무용 의자)를 제거해야 하는데, 검증기가 사무용품 목록에 'Headphones'를 빠뜨려 2개만 인식했다. 그 결과 9개 양성 사례 모두 FAIL을 받았다. 코드 과제에서는 Django-11734에서 검증기가 __init__.py 파일 수정을 금지했는데, 참조 수정과 표현 변형으로 된 양성 사례 4개 모두 그 파일을 수정했다. 서로 독립적인 수정 전략 4개라는 뜻은 아니다. 자가 시험은 query.py만 수정해서 이 제한을 시험하지 못했다.

자가 시험의 실패 패턴은 두 가지로 나뉜다. 첫째, '확증적 자가 시험(confirmatory self-testing)'은 검증기가 이미 허용하는 풀이만 시험하는 것이다. 예를 들어 DNA 분석 과제에서 mutation_type 인자가 기본값 insertion을 갖는데, 검증기가 인자를 생략하면 빈 문자열로 처리했다. 자가 시험은 항상 인자를 명시적으로 제공해서 이 오류를 놓쳤다. 둘째, '수용을 확인하지 못하는 자가 시험'은 의도한 양성 풀이조차 완전한 PASS를 받지 못하는 경우다. 은행·소매 과제 8개 검증기에서 에이전트가 양성 자가 시험을 시도했지만 예산 소진 등으로 완전한 PASS를 얻지 못했고, 최종 응답에서 이를 인정했다. 이들은 평가에서 72개 양성 판정을 모두 환경 실행 없이 거부했다.

한계와 오해하기 쉬운 점

이 연구의 점수는 유한하게 구성된 테스트 스위트에서 참조 검증기와의 일치도를 측정한 것이다. V4V가 45개 과제를 제외했지만, 구성 라벨과 참조 결정의 일치가 모든 라벨이 의미적으로 정확함을 보장하지는 않는다. 또한 36개 구성은 하네스 프롬프트, 도구, 추론 설정이 다르므로 교차 하네스 차이는 구성을 설명할 뿐 단일 하네스 구성 요소의 효과를 분리하지 못한다. 순위는 반복 생성이나 유의성 검정이 없는 점 추정치다.

오탈락 집중 분석은 9개 모델의 과거 보존 기록과 1개 모델(GPT-6-astra)의 Astra 추적 배치를 사용했다. 전체 19개 모델의 최종 과제별 기록을 직접 계산한 것이 아니다. 따라서 '전체 19개 모델에서 전부 거부 검증기가 오탈락의 87.9~96.0%를 차지한다'고 일반화하면 안 된다. 사례 분석은 실패를 설명하기 위해 선별된 검증기(주로 GPT-6-astra)를 대상으로 하며, 코드 읽기로 원인을 귀속하고 개입 실험이나 각 자가 시험 시점의 버전 복원을 하지 않았다. 따라서 메커니즘의 유병률(prevalence)을 추정하지 않는다.

숫자 해석에서도 주의가 필요하다. BAnorm 62.1은 전체 정확도 62.1%가 아니다. 과제별 TPR과 TNR을 각각 평균해 더한 뒤 100을 뺀 값이다. 또한 표의 반올림은 독립적으로 이루어져 합계가 0.1점 차이날 수 있다. 공격 허용률(FPRh)이 낮다고 해서 신뢰할 수 있는 검증기라는 뜻은 아니다. 예를 들어 상태 과제에서 GPT-5.6-sol은 FPRh 0.0%이지만 양성의 23.0%만 받아들여 BAnorm이 16.1에 불과하다. 코드 과제에서는 17개 모델이 FPRh 0.0%인데도 BAnorm이 −25.9에서 76.9까지 넓게 퍼져 있다.

실제로 어떻게 활용할까

이 연구의 실용적 시사점은 검증기 생성 시 자가 시험을 어떻게 설계해야 하는가에 있다. 자가 시험은 두 가지 목표를 가져야 한다. 첫째, 선택한 풀이를 검증기가 받아들이는지 확인하는 것, 둘째, 과제가 허용하는 다른 풀이를 거부하지 않는지 확인하는 것이다. 두 번째 목표를 위해서는 모든 수용 조건을 지시문, 도구 정의, 환경 규칙으로 추적하고, 그 요구사항에서 파생된 사례로 시험해야 한다. 예를 들어, 허용된 속성을 바꾸면서 과제는 여전히 만족하는 사례(다른 파일 수정, 기본 인자 생략, 인가된 사용자 측 호출 등)를 시험하고, 반대로 하나의 필수 조건을 위반하는 사례도 시험해야 한다.

논문은 '좋은 풀이 하나와 다른 허용 풀이를 모두 검사하고, 각 거부 조건을 지시와 대조하라'는 방향을 제안한다. 그러나 이 개선책의 실제 효과나 새로운 RL 학습 성능은 이 논문에서 시험하지 않았다. 또한 생성 중 탐색과 자가 시험이 실행 예산을 공유하므로, 최종 검증기를 시험할 예산을 따로 확보하고 실행 실패와 요구사항 실패를 구분해야 한다. 예를 들어 차단된 테스트는 검사를 미해결로 남기며, 실행을 고친다고 해서 테스트가 다루지 않은 검사가 검증되지는 않는다. 데이터 중심 RSI에서 생성된 검증기가 훈련 데이터를 선별한다면, 이런 과도한 제한이 합법적인 풀이 전략을 반복적으로 배제할 수 있다는 점을 인지해야 한다.

원문에서 확인한 근거 6곳
  • VerifierBench는 6개 에이전트 벤치마크에서 222개 과제와 4,993개의 숨은 테스트 사례를 포함한다.Abstract
  • 19개 모델을 공통 하네스에서 평가한 결과, 정규화된 균형 정확도가 10.6에서 62.1까지 분포하며, 생성된 검증기들이 유효한 풀이를 받아들이는 것보다 잘못된 풀이를 거부하는 것을 더 잘한다.Abstract
  • 모든 모델이 TPR(21.1~70.2%)이 TNR(79.2~96.3%)보다 낮다.Main Results
  • 분석된 기록에서 오탈락의 대부분은 과제의 모든 테스트 사례에 FAIL을 반환하는 전부 거부 검증기에서 나온다.Where False Rejections Concentrate
  • Claude Opus 4.8은 Pi 하네스에서 54.0이지만 Claude Code에서는 66.2로 12.2점 상승하여 전체 36개 구성 중 최고가 되었다.Native harness comparison
  • 12개 과제, 16개 검증기 사례에서 119개의 양성 FAIL(90개 서로 다른 사례)이 과제가 요구하지 않는 검사 때문이었다.Unjustified checks

10월 23일(금) 정리 · AI가 쓰고 원문과 대조

다른 AI 글

전체 보기
물리 연구를 통째로 맡겨 보는 AI 시험 FrontierPhysics물리학자 42명이 자기 연구로 만든 과제 56개를 AI 에이전트에게 통째로 맡겼더니, 가장 잘한 AI도 168번 가운데 46…평가·벤치마크난이도 보통AI가 아는 것과 '안다'는 말의 차이를 잰 벤치마크 FinDendro날짜가 붙은 미국 금융 사실 2,226건으로 AI가 실제로 맞히는 것과 '안다'고 말하는 것을 견줬더니, 대부분의 모델에서…평가·벤치마크난이도 보통에이전트 메모에 근거 기록을 연결하는 기억 기법 WikiTraceAI 에이전트가 쌓아 둔 교훈마다 근거가 된 작업 기록을 연결해 되짚게 했더니, 메모 때문에 틀리는 일이 줄고 평균 점수가…연구 · 프리프린트난이도 보통세포 종류별로 DNA 변이 영향을 예측하는 알파게놈 2DNA 100만 글자와 '어떤 세포인지'를 함께 넣는 모델을 만들어, 변이가 세포 종류마다 유전자 활동을 어떻게 바꾸는지 이…공식 연구 발표난이도 어려움시그널 암호 코드 보안을 AI가 증명한 AlphaProof Code사람이 '무엇을 증명할지'를 정하면 AI 에이전트 팀이 증명을 쓰는 방식으로, 메신저 시그널의 암호 코드가 보안 약속을 지킨…공식 연구 발표난이도 어려움AI 모델 파일에 남은 GPU 지문을 읽는 체크포인트 포렌식공개된 AI 모델 파일에 남은 초기값 흔적으로 첫 값을 만든 GPU 계열을 가려내는 방법을 내놓았다. 중국 4개 회사의 모델…기술 보고서난이도 어려움생활 속 일을 실제로 해내는 AI를 평가하는 LifeVal시간 사용 조사와 이용자 설문으로 생활 과제를 정한 평가이며, 공개된 일부 과제 점수의 의미와 한계를 살펴봅니다.평가난이도 쉬움잡음을 지웠더니 언어 판별이 나빠졌다: SceneMaker의 한국어 방송 실험한국어 방송 6편의 발화 3,115구간에서 잡음 제거가 언어 판별 점수를 낮춘 사례를 살펴보고, 검수 방식과 적용 범위를 구…커뮤니티 해설난이도 보통