[論文レビュー] Synchromesh: Reliable code generation from pre-trained language models
Synchromeshは、意味的に関連する少数ショットの例を選択する 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) をDevelop: 説明からターゲットプログラムの類似性を予測する類似度モデルを微調整し、プログラム構造の類似性(AST 木編集距離に基づく)を最適化する。
- Completion Engines (CEs) を導入し、ターゲット言語の構文的・意味的制約をエンコードして有効な次トークンの補完を導出する抽象化として扱う。
- Constrained Semantic Decoding (CSD) を形式化: 部分プログラムを言語の完成集合内に保持するトークンの集合から次トークンをサンプリングし、Brzozowski derivative を用いて部分プログラムの prefix-closure メンバーシップを判定する。
- 文法から補完を導出: ANTLR由来のパーサ状態を用いて許可された次トークンを列挙し、CE 内に文脈自由および文脈依存の制約レイヤーを構築する。
- デコード手続きを提供: 言語の prefix-closure L^c の決定処理を構築し、LLM のトークンサンプリングを V_M(s) = {t | st ∈ L^c} に制約し、生成されたプログラムが制約を満たすことを保証する。
実験結果
リサーチクエスチョン
- RQ1ダイナミックで意味論的に意識した few-shot の選択(TST)は、ユーザーの発話とターゲットプログラム間の意味的整合性を改善できるか。
- RQ2制約駆動のデコードフレームワーク(CSD)は、再訓練を行わずに構文・スコープ・型付け・領域特有の意味論を強制して実行時および意味論的エラーを減らせるか。
- RQ3TST と CSD は、GPT-3 および Codex を用いた複数の実世界のターゲット言語(SQL、Vega-Lite、SMCalFlow)で補完的な成果をもたらすか。
- RQ4制約付きデコードは、生成-テスト方式と比較して言語→コード生成の信頼性と正確性を改善するか。
主な発見
- TST は、表層言語の類似性ではなく、ターゲットプログラムの意味的な類似性に基づいて semantic に関連する例を取得することで、GPT-3 および Codex の性能を大幅に向上させる。
- CSD はデコード時に制約を課し、3つのドメインすべて(SQL、Vega-Lite、SMCalFlow)で出力の妥当性を劇的に向上させ、実行時エラーを低減する。
- TST と CSD を組み合わせると最高の結果が得られ、TST は構造的に類似したターゲットへ導き、CSD は制約を満たす補完を保証する。
- CSD はサンプリング時に控えめなオーバーヘッド(約8%)を追加するが、特に長いプログラムで妥当性と実行成功率を大幅に高める。
- モデルとドメインを横断して、システム補完型の結果は指導ありのベースラインに近づき、生成-テスト法より改善される。
- 長いプログラムほどシステムの恩恵を受けやすく、精度の低下が緩やかで妥当性はベースラインより高いままである。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。