ホームページ  >  記事  >  テクノロジー周辺機器  >  トラフィック エンジニアリングによりコード生成の精度が 19% から 44% に倍増

トラフィック エンジニアリングによりコード生成の精度が 19% から 44% に倍増

WBOY
WBOY転載
2024-02-05 09:15:09725ブラウズ

新しい論文の著者は、コード生成を「強化する」方法を提案しています。

トラフィック エンジニアリングによりコード生成の精度が 19% から 44% に倍増

#コード生成は、人工知能におけるますます重要な機能です。機械学習モデルをトレーニングすることにより、自然言語記述に基づいてコンピューター コードを自動的に生成します。このテクノロジーには幅広い応用の可能性があり、ソフトウェア仕様を使用可能なコードに変換し、バックエンド開発を自動化し、人間のプログラマーを支援して作業効率を向上させることができます。

ただし、翻訳や要約などの言語タスクと比較すると、AI システムにとって高品質のコードを生成することは依然として困難です。コードはターゲット プログラミング言語の構文に正確に準拠し、エッジ ケースや予期しない入力を適切に処理し、問題の説明の多くの細かい詳細を正確に処理する必要があります。他の領域では無害に見える小さなエラーでも、プログラムの機能が完全に中断され、コンパイルまたは実行に失敗する可能性があります。

最近、CodiumAI の研究者は、GPT-4 などの大規模言語モデルのコード生成機能を大幅に向上できる新しい手法である AlphaCodium を提案しました。彼らのポイントは、プロンプトの文言を単に微調整するだけでは、複雑なコーディング問題を解決するには本質的な限界があるということです。代わりに、テスト ケースに対してコードを繰り返し生成、実行、デバッグすることに重点を置いた多段階プロセスを設計し、モデルが実践から学習できるようにしました。

プロンプト エンジニアリングの制限

自然言語タスクでは、プロンプト エンジニアリングとは、モデルを誘導するためにプロンプ​​トの文言と構造を慎重に調整することを指します。必要な出力を生成します。たとえば、入力テキストの前に「Write a concise summary:」という語句を追加すると、モデルはより正確な概要を生成できます。

プロンプト エンジニアリングは、大規模な言語モデルの動作をガイドするテキスト生成を行う場合に非常に効果的であることが証明されています。しかし、コーディングの問題に関しては、タイムリーに大規模な調整を行ったとしても、わずかな改善しか達成できないことが研究者らによってわかっています。この発見は考えさせられるものです。したがって、高品質のコードを生成するには、依然として他の解決策が必要です。

  • # ターゲット プログラミング言語の構文と完全に一致する
  • ハンドルコーナーケースと予期せぬ入力をエレガントに実行します。
  • 問題文に記載されているすべての詳細と要件に対処します。
  • すべてのコードが正しくコンパイルされることを確認します。有効な入力と実行

これらの構造要件はテキスト生成の範囲を超えており、プロンプトにハードコードすることはできません。プロンプト自体には、モデル学習に必要なコーディング スキルや具体的なフィードバックが不足していました。

AlphaCodium 反復プロセス

これらの課題に対処するために、研究者はコード生成問題の構造に合わせて特別に調整された反復プロセスを開発しました。重要な革新は、生成されたコードの実行結果を学習信号として使用し、直接フィードバックを提供することです。

AlphaCodium のプロセスには 2 つの主要な段階があります:

前処理

  • モデルは問題の説明を箇条書きとして解釈します。重要な詳細を抽出します。
  • 各入力/出力例の背後にある意図されたロジックを説明します。
  • 自然言語ソリューションを 2 つまたは 3 つ提供します。
  • コード カバレッジ用に追加のさまざまなテスト ケースを生成します。

コードの反復

  • モデルは初期のコード ソリューションを生成します。
  • このコードを公開テスト ケースに対して繰り返して、発生したエラーを修正します。
  • モデルによって生成されたテスト ケースに対しても同じことを実行します。
  • リグレッションを防ぐために、成長を続ける「テスト アンカー」スイートに追加のテスト ケースが追加されています。

問題について段階的に推論し、解決策の仮説を立て、テスト カバレッジを拡張し、コードを繰り返し生成してデバッグすることで、モデルは経験を通じて学習します。これにより、高品質のコードが生成されます。必要なスキル。

トラフィック エンジニアリングによりコード生成の精度が 19% から 44% に倍増

#図 1. 構造化された出力を含むプロンプトの例 (考えられる解決フェーズの生成)

# #研究者らは次のことを発見しました。プロセスを明確なインターフェイスと目標を持つモジュールに設計すると、エンドツーエンド モデルと比較してより良い結果が得られます。各フェーズではまず、知識を構築し、下流フェーズに情報を提供する洞察を明らかにするための単純なサブタスクに焦点を当てます。テスト生成などの上流段階では、完全なソリューションは必要なく、基本的な推論のみが必要です。

実験結果

研究者らは、競技プログラミング コンテストの参加者数百人が参加する CodeContests ベンチマークに対して AlphaCodium を評価しました。

トラフィック エンジニアリングによりコード生成の精度が 19% から 44% に倍増

図 2. 問題の説明と考察 - 典型的な CodeContests の質問の例、人工知能に基づく問題の自己考察。最初の説明は長くて複雑ですが、適切に内省することで問題がより明確になり、より一貫性のあるものになり、コード ソリューションの改善につながります。単一のヒントと比較して、AlphaCodium は検証セットでのコード生成精度を 19% から 44% に向上させました。この利点は、さまざまなモデル サイズやテスト セットにわたって当てはまり、個別のヒント プロジェクトよりも大幅に効果的です。

AlphaCodium は、AlphaCode や CodeChain など、以前に公開されたメソッドよりもパフォーマンスが大幅に向上し、使用するコンピューティング リソースも少なくなります。たとえば、不必要なブルート フォース生成を回避することで、精度は AlphaCode に匹敵し、必要なモデル クエリは 10,000 分の 1 になります。

これらの結果は、AI システムを汎用のテキスト ジェネレーターとして扱うのではなく、タスク構造を中心に総合的に設計することの価値を示しています。 AlphaCodium は、反復的なコードの実行とデバッグを組み込むことで、堅牢で実用的なコードを生成するという最終目標に合わせてトレーニング プロセスをより適切に調整します。

より広範な影響

競技プログラミングの問題に対して実証されている一方で、AlphaCodium で使用されている概念は、コード生成を進める AI についての洞察を提供します。該当するエクスペリエンス:

プロンプト プロジェクトだけでは、複雑なコード タスクを処理するには制限があります。具体的な問題解決の経験が重要です。

  • テストベースの開発仕様は、モデル トレーニングの基礎を提供できます。このテストは明示的な適合関数を提供します。
  • 反復コード デバッグでは、実際に発生するエラーに基づいてモデルを改善することに重点を置きます。
  • テスト カバレッジ拡張機能は、ヒントには表示されない一般化のギャップを強調表示します。
  • 二重検証によるソフトな意思決定により、脆弱性と偏見が軽減されます。
  • #AlphaCodium は、ソフトウェア エンジニアリングのベスト プラクティスに基づいた、コード生成のための有望な新しいパラダイムを提供します。一般化可能性と計算オーバーヘッドに関する未解決の研究課題がまだ残っています。しかし、ここで紹介した原則 (経験からの学習、テスト駆動開発、モジュール推論、反復デバッグ) は、AI のコーディング能力を向上させるための強固な基盤を提供するようです。

論文リンク: https://arxiv.org/pdf/2401.08500.pdf。

コードベース: https://github.com/Codium-ai/AlphaCodium。

原題:「フロー エンジニアリング」によりコード生成精度が 2 倍 (19% 対 44%)、著者: Mike Young

リンク: https:// Notes.aimodels.fyi/flow-engineering-intensize-for-code-generation/。

以上がトラフィック エンジニアリングによりコード生成の精度が 19% から 44% に倍増の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。