[論文レビュー] Self-planning Code Generation with Large Language Models
この論文は、コード生成前に計画を分解する二段階の自己計画アプローチを導入し、直接生成と比較してPass@1で最大25.4%の改善、Code CoTより最大11.9%の改善をコードベンチマーク全体で達成します。さらにコード品質と多言語対応の改善を実証します。
Although large language models (LLMs) have demonstrated impressive ability in code generation, they are still struggling to address the complicated intent provided by humans. It is widely acknowledged that humans typically employ planning to decompose complex problems and schedule solution steps prior to implementation. To this end, we introduce planning into code generation to help the model understand complex intent and reduce the difficulty of problem-solving. This paper proposes a self-planning code generation approach with large language models, which consists of two phases, namely planning phase and implementation phase. Specifically, in the planning phase, LLM outlines concise and formatted planning steps from the intent. Subsequently, in the implementation phase, the model generates code step by step, guided by the preceding planning steps. We conduct extensive experiments on various code-generation benchmarks across multiple programming languages. Experimental results show that self-planning code generation achieves a relative improvement of up to 25.4% in Pass@1 compared to direct code generation, and up to 11.9% compared to Chain-of-Thought code generation. Moreover, our self-planning approach also enhances the quality of the generated code with respect to correctness, readability, and robustness, as assessed by humans.
研究の動機と目的
- コード生成における複雑なプログラミング意図を扱うための計画の動機付け。
- まず計画を立て、計画に従って実装する二段階のフレームワークを提案。
- 計画が問題分解とコード合成の指示を改善することを示す。
- 人間の判断によるコード品質評価を伴う、多言語・マルチ言語ベンチマーク上で手法を評価する。
提案手法
- 二段階推論:計画フェーズは少数ショットプロンプトを用いて意図から簡潔な計画を生成する。
- 実装フェーズは計画を意図に付加して計画に従って段階的にコードを生成する。
- 計画と実装の分離を含む形式化には、P(z|x,C) ∝ P(z|y,x) および P(y|x,C) が含まれる。
- 作成された少数ショットの計画プロンプトは、手順を実行可能かつ高レベルに保ち、条件分岐やループ構造をオプションとして含む。
- ベースライン(Direct、Few-shot、Code CoT)との比較と、真の計画上界を含む。
- Python、Java、Go、JavaScriptのベンチマークを Pass@k、AvgPassRatio、CodeBLEU を用いて評価。
実験結果
リサーチクエスチョン
- RQ1RQ1: 自己計画はベースラインのコード生成手法とどのように比較されるか?
- RQ2RQ2: 異なるLLMに対して自己計画はどのように機能するか?
- RQ3RQ3: 自己計画アプローチの最適な設計は何か(段階、ショット、手順)?
- RQ4RQ4: 複数言語のコード生成における自己計画の性能は?
- RQ5RQ5: 問題の複雑さは自己計画の利点にどう影響するか?
主な発見
- 自己計画は直接生成および Code CoT を上回り、評価ベンチマークで Direct に対して最大25.4%、Code CoT に対して最大11.9%の改善を達成。
- 真の計画(ground-truth planning)は、HumanEvalで50%以上、MBPP-ETで30%以上など実質的な上限の利益を生み出す;実際の計画アプローチはこれらの利得に近づく。
- 自己計画は大規模モデルで出現的な挙動を示し、計画の利点は複数のベースLLMに跨って拡張され、特に175Bスケールで顕著。
- ワンフェーズ対ツーフェーズ設計:計画的なプロンプトを用いた二段階は頑健に機能する。一方、マルチターン計画はLLMの切り捨て問題によりしばしば困難になる。簡潔な計画は高い効果を発揮し得る。
- 計画は可読性と堅牢性の点でコード品質を改善し、人間の判断による品質評価は単純な正確性を超えた利得を示す。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。