流れに身を任せることでAIはコーディングの問題をより良く解決できるようになる

Table of Contents

流れに身を任せることでAIはコーディングの問題をより良く解決できるようになる

インタビュー商業的な大規模言語モデルの競技プログラミング問題を解決する能力は、巧妙なプロンプトエンジニアリングを通じてプロセスを慎重にガイドすることで大幅に向上できます。

これを実証するため、イスラエルに拠点を置くCodium AIはAlphaCodiumを構築し、今月GitHubでソフトウェアをリリースしました。AlphaCodiumは、厳密には大規模な言語モデルではありません。CEOのItamar Friedman氏が「フローエンジニアリング」と呼ぶ手法を用いて、GPT-4のような生成AIツールの問題解決能力を向上させる手法です。

まず、プログラミングに関する質問が基盤となる大規模言語モデルに入力され、問題を記述し要約するよう求められます。この情報に基づいて、AlphaCodiumは問題解決に向けてどのように取り組むべきかを決定します。AlphaCodiumは、解決策を導き出す際に、入力と出力がどうあるべきかといった要素を定義します。これらはすべて自然言語で記述されます。

モデルは、記述した仕様に沿ったコードの生成を開始します。仕様に沿ったコーディングを求めるプログラミングコンテストでは、通常、与えられた入力に対してスクリプトがどのような出力を出力するかを示すテストケースが提供されます。AlphaCodiumは、このようなテストケースをさらに生成し、考えられる解決策をすべて実行して、コードが期待どおりに動作するかどうかを確認します。

どのテストでも定義された出力と一致しない場合、モデルはすべてのテストに合格するか失敗するまで、異なるソリューションを生成します。コードがコンパイルされない場合や、単に間違っている場合、エラーが発生する可能性があります。

フローエンジニアリングプロセスの様々なステップは、以下の図で確認できます。このプロセスは、システムが自然言語で問題を分析する前処理フェーズと、公開テストとAI生成テストに対して可能な解決策を実行するコード反復フェーズに大きく分かれています。

アルファコディウム

AlphaCodiumが問題を解決するためのコードを生成するためのすべての大まかな手順

「問題を受け取ってモデルに『最終的な解決策を生成してください』と指示するわけではありません」とフリードマン氏はThe Register紙に語った。「モデルに、この問題を箇条書きで再定義するよう依頼するのです。」問題を単純化し、いくつかの部分に分割することで、モデルは後でアルゴリズムのさまざまな部分のコードを生成しやすくなります。

本質的に、フローエンジニアリングとは、モデルの問題解決プロセスを明確に定義されたステップに分割することで、モデルを導く手順です。「生成されたコードを意味のある名前と機能を持つ小さなサブ関数に分割する」ように促すことで、バグが減り、コードのテストと修正が容易になると説明されています。

「基本的に、私たちはフローエンジニアリングに時間の95%を費やし、プロンプトエンジニアリングにはわずか5%しか費やしませんでした。また、各ステップのプロンプトは変更しませんでした」とフリードマン氏は付け加えた。

Codiumのエンジニアたちは、Google DeepMindが2年前にまとめたCodeForcesデータセットの検証およびテスト部分で使用された数百の問題で、自社モデルの性能をテストしました。彼らは、AlphaCodiumがGoogle DeepMindのAlphaCodeおよびAlphaCode2モデルよりもコーディング問題の解決能力に優れていると主張しています。

arXiv論文[PDF]で報告された結果によると、AlphaCodiumは問題の44%に正答し、AlphaCodeは24%でした。また、107個の検証問題に対して、AlphaCodeが選択した10個の解に対し、AlphaCodiumはわずか5個の解しか生成しませんでした。興味深いことに、165個のテスト問題になると、その差は縮まり、AlphaCodiumの解率は29%、AlphaCodeは28%でした。

  • 開発者にAIを強制するのは悪い考えだ
  • ANZ銀行がGitHub Copilotを試用、AIが役立つことを発見
  • リークされたメモ:マイクロソフトの従業員もコパイロットを使うべきだ
  • AIを使ってコーディングを学ぶ場合でも、自分で考える必要があることを忘れないようにしましょう

AlphaCode は、生成した数万、または数十万のスクリプトの中から最も有望な 10 個のソリューションを選択します。そのため、実行には大量の計算が必要になります。

「テスト全体のフローに、より重点を置きました」とフリードマン氏は述べた。「Googleは、生成に非常に力を入れました。彼らは何百もの選択肢を生成しようとしますが、私たちはほんのわずかな解決策しか生成しません。しかし、コードの改善を導くために、それらを徹底的にテストします。」

AlphaCodiumは、Google DeepMindの最新のAlphaCode2モデルよりもわずかに優れており、AlphaCode2は前身のAlphaCodeよりも1万倍効率的だと同氏は付け加えた。

アルファコディウム_2

AlphaCodiumは、精度と効率の点で他の最先端モデルとどのように比較されるか

フリードマン氏は、AlphaCodiumのパフォーマンスはデータ漏洩によるものではないと確信していると述べた。基盤となるモデルは既に同じ問題で学習・テストされているからだ。AlphaCodiumのGPT-4バージョンは、2021年9月までインターネットから収集されたテキストで学習されたが、システムのテストに使用された問題は、ずっと後にリリースされた前述のCodeForcesデータセットから取得された。

しかし、フローエンジニアリングプロセスを評価するより正確な比較は、AlphaCodiumを適用した場合と適用しない場合のGPT-4の同じ問題解決能力を調べることです。従来のGPT-4は、検証セットとテストセットでそれぞれ19%と12%の問題にしか正しく答えられませんでしたが、AlphaCodiumを適用したバージョンでは44%と29%の正解率を達成しました。

つまり、コードの生成方法をガイドし、テスト プロセスを改善するための追加データを生成する慎重なパイプラインを実装する方が、大規模な言語モデルを最初からトレーニングするよりも効果的であると考えられます。

Codiumは最近、Python開発者を支援する新しいツールをリリースしました。これにより、IDE内でコーディングの問題を直接解決するためにAlphaCodiumを呼び出すことができるようになりました。こちらからお試しいただけます。®

Discover More