Teaching Large Language Models to Self-Debug

要約

大規模言語モデル (LLM) は、コード生成において優れたパフォーマンスを達成しました。
ただし、複雑なプログラミング タスクの場合、正しいソリューションを一度に生成するのは困難になるため、これまでの研究では、コード生成のパフォーマンスを向上させるためにプログラム修復アプローチを設計しました。
この研究では、数ショットのデモンストレーションを通じて、予測されたプログラムをデバッグするように大規模な言語モデルを教えるセルフ デバッグを提案します。
特に、セルフデバッグが大規模な言語モデルにラバーダックデバッグを実行するよう教えることができることを実証します。
つまり、コードの正確性やエラー メッセージについて人間によるフィードバックがなくても、モデルは実行結果を調査し、生成されたコードを自然言語で説明することで間違いを特定できます。
セルフ デバッグは、テキストから SQL への生成のための Spider データセット、C++ から Python への変換のための TransCoder、テキストから Python への生成のための MBPP など、いくつかのコード生成ベンチマークで最先端のパフォーマンスを実現します。
Spider ベンチマークでは、予測の正しさを検証するための単体テストがありませんが、コードの説明を伴うセルフデバッグにより、ベースラインが一貫して 2 ~ 3% 向上し、最も難しいレベルの問題の予測精度が 9% 向上しました。
単体テストが利用できる TransCoder および MBPP では、セルフデバッグによりベースラインの精度が最大 12% 向上します。
一方、フィードバック メッセージを活用し、失敗した予測を再利用することで、セルフ デバッグはサンプル効率を著しく向上させ、10 倍を超える候補プログラムを生成するベースライン モデルと同等またはそれを上回るパフォーマンスを実現できます。

要約(オリジナル)

Large language models (LLMs) have achieved impressive performance on code generation. However, for complex programming tasks, generating the correct solution in one go becomes challenging, thus some prior works have designed program repair approaches to improve code generation performance. In this work, we propose Self-Debugging, which teaches a large language model to debug its predicted program via few-shot demonstrations. In particular, we demonstrate that Self-Debugging can teach the large language model to perform rubber duck debugging; i.e., without any human feedback on the code correctness or error messages, the model is able to identify its mistakes by investigating the execution results and explaining the generated code in natural language. Self-Debugging achieves the state-of-the-art performance on several code generation benchmarks, including the Spider dataset for text-to-SQL generation, TransCoder for C++-to-Python translation, and MBPP for text-to-Python generation. On the Spider benchmark where there are no unit tests to verify the correctness of predictions, Self-Debugging with code explanation consistently improves the baseline by 2-3%, and improves the prediction accuracy on problems of the hardest level by 9%. On TransCoder and MBPP where unit tests are available, Self-Debugging improves the baseline accuracy by up to 12%. Meanwhile, by leveraging feedback messages and reusing failed predictions, Self-Debugging notably improves sample efficiency, and can match or outperform baseline models that generate more than 10x candidate programs.

arxiv情報

著者 Xinyun Chen,Maxwell Lin,Nathanael Schärli,Denny Zhou
発行日 2023-10-05 09:12:07+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.CL パーマリンク