[논문 리뷰] Synchromesh: Reliable code generation from pre-trained language models
Synchromesh는 의미적으로 관련된 few-shot 예시를 선택하기 위해 Target Similarity Tuning (TST)를 도입하고, 코드 생성을 하는 동안 언어별 제약을 강제하기 위한 Constrained Semantic Decoding (CSD)을 도입하여 GPT-3 및 Codex와 같은 LLM의 신뢰성을 SQL, Vega-Lite, SMCalFlow 전반에 걸쳐 미세조정 없이 개선한다.
Large pre-trained language models have been used to generate code,providing a flexible interface for synthesizing programs from natural language specifications. However, they often violate syntactic and semantic rules of their output language, limiting their practical usability. In this paper, we propose Synchromesh: a framework for substantially improving the reliability of pre-trained models for code generation. Synchromesh comprises two components. First, it retrieves few-shot examples from a training bank using Target Similarity Tuning (TST), a novel method for semantic example selection. TST learns to recognize utterances that describe similar target programs despite differences in surface natural language features. Then, Synchromesh feeds the examples to a pre-trained language model and samples programs using Constrained Semantic Decoding (CSD): a general framework for constraining the output to a set of valid programs in the target language. CSD leverages constraints on partial outputs to sample complete correct programs, and needs neither re-training nor fine-tuning of the language model. We evaluate our methods by synthesizing code from natural language descriptions using GPT-3 and Codex in three real-world languages: SQL queries, Vega-Lite visualizations and SMCalFlow programs. These domains showcase rich constraints that CSD is able to enforce, including syntax, scope, typing rules, and contextual logic. We observe substantial complementary gains from CSD and TST in prediction accuracy and in effectively preventing run-time errors.
연구 동기 및 목표
- 자연어 설명으로부터 구문적으로 및 의미적으로 유효한 코드를 생성하는 데 있어 대형 언어 모델의 실패를 동기부여하고 해결한다.
- 의도된 프로그램 구조와 정렬되는 의미적으로 관련된 few-shot 예시를 선택하기 위해 Target Similarity Tuning (TST)을 제안한다.
- 모델을 재훈련하지 않고 디코딩 중에 풍부한 언어 특화 제약을 강제하기 위해 Constrained Semantic Decoding (CSD)을 제안한다.
- 실세계 언어(SQL, Vega-Lite, SMCalFlow)에 프레임워크를 시연하여 정확도와 타당성이 향상됨을 보여준다.
제안 방법
- Target Similarity Tuning (TST) 개발: 설명으로부터 대상 프로그램 간의 유사성을 예측하기 위해 유사성 모델을 미세 조정하고, 프로그램 구조 유사성(AST 트리 편집 거리 기준)을 최적화한다.
- Completion Engines (CEs)을 도입하여 대상 언어에 대한 구문적 및 의미론적 제약을 인코딩하고 유효한 다음 토큰 완성을 도출하는 추상화로 사용한다.
- Constrained Semantic Decoding (CSD)를 형식화한다: 부분 프로그램이 언어의 완료 집합 내에 유지되도록 하는 토큰 집합에서 다음 토큰을 샘플링하고, Brzozowski 도함수를 사용해 부분 프로그램의 접두사-폐쇠 여부를 결정한다.
- 문법으로부터 완성을 도출한다: ANTLR 유래 파서 상태를 사용해 허용된 다음 토큰을 열거하고 CE 내에서 문맥 자유 및 문맥 의존 제약 계층을 구축한다.
- 디코딩 절차를 제공한다: 언어의 접두사 폐쇄 L^c에 대한 의사 결정 절차를 구성한 다음 LLM의 토큰 샘플링을 V_M(s) = {t | st ∈ L^c}로 제약하여 생성된 프로그램이 제약을 만족하도록 한다.
실험 결과
연구 질문
- RQ1동적이고 의미 인식이 반영된 few-shot 예시 선택(TST)가 사용자 발화와 대상 프로그램 간의 의미적 정렬을 개선할 수 있는가?
- RQ2제약 주도 디코딩 프레임워크(CSD)가 재훈련 없이 구문, 범위, 타입 지정 및 도메인 특유의 의미를 강제하여 런타임 및 의미 오류를 줄일 수 있는가?
- RQ3GPT-3 및 Codex를 사용할 때 TST와 CSD가 여러 실세계 대상 언어(SQL, Vega-Lite, SMCalFlow)에서 상호 보완적 이점을 제공하는가?
- RQ4제약 디코딩이 generate-then-test 접근법에 비해 언어에서 코드로의 생성의 신뢰성과 정확도를 얼마나 향상시키는가?
주요 결과
- TST는 표면 언어 유사성가 아닌 대상 프로그램 유사성에 기반한 의미적으로 관련된 예시를 검색함으로써 GPT-3 및 Codex의 성능을 크게 향상시킨다.
- CSD는 디코딩 중 제약을 강제하여 세 도메인(SQL, Vega-Lite, SMCalFlow) 전반에서 출력 타당성을 크게 높이고 런타임 오류를 줄인다.
- TST와 CSD를 결합하면 최상의 결과를 얻으며 상호 보완적 이점이 있다: TST는 구조적으로 유사한 대상으로 유도하고, CSD는 제약 충족 완성을 보장한다.
- CSD는 샘플링 중 약 8% 정도의 가벼운 오버헤드를 추가하지만, 타당성과 실행 성공률을 크게 높이며 특히 더 긴 프로그램에 대해 두드러진 이점을 보인다.
- 모델과 도메인 전반에 걸쳐 시스템 보강 결과가 지도학습 베이스라인에 근접하고 generate-then-test 방법보다 향상된다.
- 더 긴 프로그램일수록 시스템의 혜택이 가장 크게 나타나며 정확도 감소가 느려지고 타당성이 기준선 대비 높게 유지된다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.