Code Repair with LLMs gives an Exploration-Exploitation Tradeoff

要約

大規模言語モデル (LLM) を使用してソース コードを繰り返し改善および修復することは、リファインメントとして知られており、一度で構築するには複雑すぎるプログラムを生成する一般的な方法として浮上しています。
一連のテスト ケースと候補プログラムが与えられると、LLM は失敗したテスト ケースの通知を受けることでそのプログラムを改善できます。
しかし、これまでの研究では単純な貪欲戦略または幅優先戦略が採用されており、コードを反復的に最適化する方法は依然として未解決の問題です。
ここでは、改良によって探求と悪用のトレードオフが明らかになることを示します。つまり、最も多くのテスト ケースに合格するプログラムを改良して悪用するか、あまり考慮されていないプログラムを改良して探求します。
私たちはこれを腕を獲得する盗賊の問題として組み立て、トンプソン サンプリングを使用して解決します。
結果として得られる LLM ベースのプログラム合成アルゴリズムは、広く適用可能です。ループ不変合成、視覚的推論パズル、および競技プログラミングの問題にわたって、私たちの新しい方法は、より少ない言語モデル呼び出しを使用して、より多くの問題を解決できることがわかりました。

要約(オリジナル)

Iteratively improving and repairing source code with large language models (LLMs), known as refinement, has emerged as a popular way of generating programs that would be too complex to construct in one shot. Given a bank of test cases, together with a candidate program, an LLM can improve that program by being prompted with failed test cases. But it remains an open question how to best iteratively refine code, with prior work employing simple greedy or breadth-first strategies. We show here that refinement exposes an explore-exploit tradeoff: exploit by refining the program that passes the most test cases, or explore by refining a lesser considered program. We frame this as an arm-acquiring bandit problem, which we solve with Thompson Sampling. The resulting LLM-based program synthesis algorithm is broadly applicable: Across loop invariant synthesis, visual reasoning puzzles, and competition programming problems, we find that our new method can solve more problems using fewer language model calls.

arxiv情報

著者 Hao Tang,Keya Hu,Jin Peng Zhou,Sicheng Zhong,Wei-Long Zheng,Xujie Si,Kevin Ellis
発行日 2024-05-30 15:20:19+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

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