함수 기반 프로세스 보상 모델로 코드 생성 성능 극대화

함수 기반 프로세스 보상 모델로 코드 생성 성능 극대화
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

FunPRM은 코드 생성을 함수 단위로 분해하고, 각 함수를 PRM(프로세스 보상 모델)의 단계로 활용한다. 또한 최종 코드에 대한 단위 테스트 결과를 깨끗한 보상으로 사용해, Monte‑Carlo 방식으로 얻은 부분 코드 보상의 노이즈를 메타‑러닝으로 정제한다. LiveCodeBench와 BigCodeBench에서 5가지 베이스 LLM에 대해 Best‑of‑N 선택을 적용했을 때 기존 테스트‑타임 스케일링 기법들을 지속적으로 앞서며, O4‑mini(High)와 결합했을 때 80.9 % pass@1이라는 최고 기록을 달성한다. 생성된 코드는 가독성과 재사용성이 향상돼 개발자에게도 유리하다.

상세 분석

FunPRM은 두 가지 핵심 문제를 해결한다. 첫째, 기존 PRM이 코드에 적용되기 어려운 이유는 코드가 자연스럽게 “단계”로 분리되지 않는다는 점이다. 수학 문제에서는 CoT 프롬프트가 명시적 단계 구성을 유도하지만, 코드에서는 라인 단위가 지나치게 세분화돼 연산 비용이 급증한다. FunPRM은 “Chain‑of‑Function” 프롬프트를 도입해 LLM이 함수 단위로 모듈화된 코드를 생성하도록 유도한다. 메인 함수가 고수준 전략을 제시하고, 보조 함수가 세부 로직을 구현하도록 설계함으로써 각 함수가 의미 있는 추론 단계가 된다. 이 단계 정의는 PRM이 각 함수 앞뒤의 상태를 입력받아 부분 솔루션의 성공 가능성을 점수화할 수 있게 만든다.

둘째, 부분 솔루션에 대한 정확한 보상 라벨을 얻는 것이 어렵다. 기존 연구는 인간 라벨링 혹은 Monte‑Carlo 샘플링을 이용했지만, 전자는 비용이 높고 후자는 노이즈가 심해 PRM 학습에 제한을 만든다. FunPRM은 최종 코드에 대한 단위 테스트 결과를 “깨끗한” 보상으로 활용한다. 구체적으로, 먼저 Monte‑Carlo 방식으로 얻은 부분 솔루션 보상 r′ₜ를 사용해 PRM을 한 번 업데이트한다. 그 후, 업데이트된 PRM을 최종 솔루션 s_T에 적용해 손실을 계산하고, 이 손실에 대한 메타‑그래디언트를 r′ₜ에 역전파한다. 즉, 최종 보상이 부분 보상의 품질을 교정하는 역할을 하며, 메타‑러닝 루프를 통해 노이즈가 감소된 보상 rₜ*를 얻는다. 이 과정은 라벨 정제와 PRM 학습을 동시에 수행하므로, 별도의 라벨링 비용 없이 고품질의 학습 신호를 확보한다.

실험에서는 LiveCodeBench와 BigCodeBench 두 대규모 벤치마크에 대해 Best‑of‑N(보통 N=16) 선택을 적용했다. FunPRM은 기존 PRM 기반 MiPS, Skywork‑PRM, LLM‑as‑Judge 등과 비교해 모든 베이스 모델(OpenAI O4‑mini, Gemini‑2.5‑Pro, DeepSeek‑R1 등)에서 pass@1을 크게 끌어올렸다. 특히 O4‑mini(High)와 결합했을 때 80.9 %라는 최고 점수를 기록했다. 인간 평가에서도 함수 기반 모듈화가 코드 가독성과 재사용성을 향상시킨다는 긍정적인 결과가 나왔다.

이러한 설계는 코드 생성에서 “단계”라는 개념을 함수라는 실용적인 단위로 재정의하고, 최종 테스트 결과를 활용한 메타‑라벨 정제로 부분 보상의 신뢰성을 높인 점이 혁신적이다. 앞으로 함수 외에도 클래스, 모듈 등 더 큰 구조를 단계로 확장하거나, 실행 피드백을 부분 단계에 직접 연결하는 연구가 이어질 여지가 있다.


댓글 및 학술 토론

Loading comments...

의견 남기기