LEVER: 실행을 통한 언어-to-코드 생성 검증 학습

코드를 기반으로 훈련된 대규모 언어 모델(Large Language Models, code LLMs)의 등장으로 언어에서 코드로의 생성 분야에서 큰 진전이 이루어졌다. 최신 접근 방식들은 LLM의 디코딩을 테스트 케이스 또는 실행 결과를 기반으로 한 히ュ리스틱을 활용한 샘플 후보의 정제 및 재순위화와 결합하여 성능을 향상시키고 있다. 그러나 실제 언어-코드 응용 사례의 많은 경우에서 테스트 케이스를 확보하는 것은 어렵고, 기존 히ュ리스틱은 실행 결과의 의미적 특성(예: 데이터 타입, 값 범위 등)을 잘 포착하지 못한다. 이러한 특성들은 프로그램의 정확성 여부를 나타내는 중요한 지표이다. 본 연구에서는 생성된 프로그램을 실행 결과와 함께 검증하는 방식을 학습함으로써 언어-코드 생성 성능을 향상시키는 간단한 접근법인 LEVER를 제안한다. 구체적으로, 자연어 입력, 생성된 코드, 그리고 그 실행 결과를 기반으로 LLM에서 샘플링한 프로그램이 올바른지 여부를 판단할 수 있는 검증기(verifier)를 훈련한다. 이후, 검증 점수와 LLM의 생성 확률을 결합하여 샘플링된 프로그램을 재순위화하고, 동일한 실행 결과를 가지는 프로그램들에 대해 근사적으로 평균화한다. 테이블 기반 질의응답(QA), 수학 문제 QA, 그리고 기본적인 파이썬 프로그래밍 등 네 가지 데이터셋에서의 실험 결과, LEVER는 기존의 코드 LLM 기반 모델(코드-다빈치-002 기준 4.6%~10.9% 향상)을 일관되게 개선하였으며, 모든 데이터셋에서 새로운 최고 성능(SOTA)을 달성하였다.