경쟁 프로그래밍을 위한 에이전트형 검증기: 차별적 테스트 입력 자동 생성

경쟁 프로그래밍을 위한 에이전트형 검증기: 차별적 테스트 입력 자동 생성
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 대형 언어 모델(LLM) 기반 코드 생성에서 후보 솔루션을 선택하기 위한 실행 기반 검증 방식을 개선한다. 무작위 입력 대신 다중 턴 상호작용을 통해 프로그램 행동을 분석하고, 후보 간 차이를 극대화하는 차별적 테스트 입력을 자동으로 생성하는 ‘Agentic Verifier’를 제안한다. 대규모 데이터 합성, 거절 파인튜닝, 에이전트 강화학습을 결합한 학습 파이프라인을 구축했으며, 다섯 개 경쟁 프로그래밍 벤치마크에서 기존 방법 대비 Best@K 정확도가 10‑15%p 상승함을 실험적으로 입증한다.

상세 분석

본 연구는 경쟁 프로그래밍 문제 해결에 있어 LLM이 단일 시도만으로 정답을 도출하기 어려운 현황을 정확히 짚고, 테스트 기반 재랭킹을 확장 가능한 테스트‑타임 스케일링 전략으로 제시한다. 기존의 입력‑전용 검증 방식은 무작위 입력 생성에 의존해 ‘구별력(discriminative power)’이 낮은 테스트 케이스만을 제공한다는 근본적인 한계가 있다. 저자들은 이 문제를 “입력 공간이 방대하지만 구별 가능한 입력은 극히 일부”라는 관찰을 통해 정의하고, 차별적 입력을 능동적으로 탐색하는 에이전트형 검증기를 설계하였다.

Agentic Verifier는 (문제 Q, 후보 솔루션 쌍 (Cₐ, C_b))를 입력으로 받아, 코드 실행 환경과 다중 턴(tool call) 상호작용을 수행한다. 각 턴에서 후보 솔루션을 제안된 입력에 실행하고, 실행 결과(정상 종료, 오류, 타임아웃)와 중간 상태를 관찰한다. 이러한 피드백을 바탕으로 검증기는 입력 제너레이터 G를 점진적으로 수정하고, 최종적으로 G를 출력한다. G를 실행하면 하나의 구체적 테스트 입력 x가 생성되며, x가 두 솔루션에 대해 서로 다른 출력을 유도하면 구별 성공으로 간주한다.

학습 파이프라인은 크게 세 단계로 구성된다. 첫째, 대규모 데이터 합성을 통해 문제‑솔루션‑테스트 케이스 쌍을 자동 생성한다. 여기서는 여러 레퍼런스 솔루션에 대해 합의 기반 다수결을 적용해 신뢰도 높은 테스트 입력을 확보하고, 정답·오답 솔루션을 구분할 수 있는 ‘hard negative’ 쌍을 만든다. 둘째, 거절 파인튜닝(rejection fine‑tuning) 단계에서는 강력한 교사 모델(Qwen3‑235B‑A22B‑Thinking‑2507)로부터 성공적인 다중 턴 트랙터지를 수집하고, 성공률이 낮은 트랙터지는 거절한다. 이렇게 추출된 약 60 K 고품질 트랙터지를 사용해 기본 모델(Qwen3‑30B‑A3B)을 지도학습한다. 셋째, 에이전트 강화학습(agentic RL)에서는 희소 보상(입력 유효성·구별 성공 여부) 기반으로 정책을 미세조정한다. 보상 설계는 “유효하고 구별적인 입력을 최소 1개라도 생성하면 +1, 그렇지 않으면 0” 형태이며, PPO와 같은 정책 최적화 알고리즘을 적용한다.

실험은 USACO, LiveCodeBench, OJBench 등 서로 다른 난이도와 출처를 가진 다섯 개 벤치마크에서 수행되었다. 후보 솔루션은 Qwen3‑30B‑A3B‑Thinking‑2507을 사용해 64개를 샘플링했으며, 검증기는 8개의 입력 제너레이터를 8번씩 실행해 총 64개의 테스트 입력을 만든다. 결과는 세 가지 입력 소스(무작위, 베이스라인 테스트 케이스, 검증기 생성 입력)를 비교한 Best@K 그래프에서 명확히 드러난다. 무작위 입력은 베이스라인 대비 5‑10%p 정도 향상에 그쳤지만, 검증기 생성 입력은 무작위 대비 15‑20%p, 심지어 USACO에서는 베이스라인 테스트 케이스를 능가하는 성능을 보였다. 또한 입력 수를 늘릴수록(4→64) 성능이 꾸준히 상승하는 ‘테스트‑타임 스케일링’ 특성이 확인되었다.

추가 분석에서는 기존 베이스라인 테스트 스위트가 전체 입력 공간을 충분히 커버하지 못해 ‘false‑positive’ 솔루션을 허용한다는 점을 지적한다. Agentic Verifier는 이러한 숨겨진 오류를 드러내는 맞춤형 코너 케이스를 자동 생성함으로써 검증기의 보조적 역할도 수행한다. 즉, 단순 후보 재랭킹을 넘어 코드 정확성 검증 도구로서의 확장 가능성을 시사한다.

한계점으로는 (1) 현재는 Python·C++ 두 언어에만 최적화돼 있어 다른 언어에 대한 일반화가 필요하고, (2) 검증기의 다중 턴 상호작용 비용이 실시간 서비스에 적용하기엔 아직 부담이 될 수 있다. 향후 연구에서는 경량화된 툴 호출 전략, 언어‑다중 모델 통합, 그리고 인간‑인증된 코너 케이스와의 혼합 학습 등을 통해 효율성을 높이고 적용 범위를 확대할 수 있을 것이다.


댓글 및 학술 토론

Loading comments...

의견 남기기