[自然言語処理] [大規模モデル] CodeGen: マルチラウンドプログラム合成のためのコード大規模言語モデル

CodeGen: マルチラウンドプログラム合成のためのコードラージ言語モデル
《Code Gen: マルチターンプログラム合成を備えたコード用のオープン大規模言語モデル》

論文アドレス: https://arxiv.org/pdf/2203.13474.pdf?trk=public_post_comment-text

関連ブログ
[自然言語処理] [大規模モデル] CodeGen: マルチラウンド プログラム合成のためのコード大規模言語モデル
[自然言語処理] [大規模モデル] CodeGeeX: コード生成のための多言語事前トレーニング モデル
[自然言語処理 ] 【大規模モデル】LaMDA: 会話型アプリケーション向け言語モデル
【自然言語処理】【大規模モデル】DeepMind の大規模モデル Gopher
【自然言語処理】【大規模モデル】チンチラ: 最適な学習と計算機利用を実現した大規模言語モデル
【自然言語処理】大規模モデル] 大規模言語モデル BLOOM 推論ツール テスト
[自然言語処理] [大規模モデル] GLM-130B: 大型トランスフォーマー用のオープンソースのバイリンガル事前トレーニング済み言語モデル
[自然言語処理] [大規模モデル] 8 ビット マトリックスの概要乗算
[自然言語処理] [大規模モデル] BLOOM: 176B パラメータとオープンアクセスを備えた多言語モデル
[自然言語処理] [大規模モデル] PaLM: Pathways に基づく大規模言語モデル
[自然言語処理] [chatGPT シリーズ] 大型言語モデルは自らを改善できる
[自然言語処理] [ChatGPT シリーズ] FLAN: 言語モデルの微調整はゼロショット学習者である
[自然言語処理] [ChatGPT シリーズ] ChatGPT のインテリジェンスはどこから来るのでしょうか?

1. はじめに

ここに画像の説明を挿入

プログラム合成の目的は、プログラミング プロセスを自動化し、ユーザーの意図を満たすコンピューター プログラムを生成することです。プログラム合成は、(1) 検索スペースが扱いにくい、(2) ユーザーの意図を判断するのが難しいという 2 つの重要な課題に直面しています。探索空間の問題を解決するために、本論文ではプログラム合成タスクを言語モデリングプロセスとして形式化する。つまり、前のトークンに基づいて次のトークンの条件付き確率分布を予測する。

プログラムの合成にはユーザーの意図を理解する必要があります通常、ユーザーは論理式、疑似コード、入出力の例、または自然言語を通じて意図を表現します。論理式疑似コードを使用するには、通常、ユーザーが関連するドメインの知識を持っている必要があり、コストが比較的高くなります。入出力の例は安価ですが、ユーザーの意図を正確に伝えられない可能性があります。したがって、著者らは自然言語がユーザーの意図を表現する最良の形式であると信じています。

本稿では、ユーザが自然言語を介して段階的に合成システムと通信するマルチラウンドプログラム合成手法を提案する。マルチラウンドアプローチを採用する動機は 2 つあります。

  1. 長く複雑なユーザー意図を複数のステップに分解すると、モデルの理解が簡素化され、プログラム合成が強化されます。マルチラウンドアプローチでは、モデルはサブルーチンに関連付けられたインテントに焦点を当てることができ、サブルーチン間の複雑な依存関係の面倒な追跡を回避できます。
  2. 多くの場合、コードには自然言語とプログラミング言語が交差する弱いパターンが含まれます。このパターンは、プログラマがコードにコメントを追加することによって形成されます。言語モデリングの目的関数を使用すると、このインターリーブ パターンは、マルチラウンド プログラム合成用の弱く教師された信号を提供できます。この信号は通常、ノイズが多く弱いため、データの一部のみがこのパターンを持ち、注釈が不正確であるか、有益でない可能性があります。モデルとデータをスケールアップすると、この弱い監視の欠陥を克服できる可能性があります。

本稿では、モデルのマルチラウンドプログラム合成能力を測定するためのマルチラウンドプログラム合成ベンチマークも提案します。このベンチマークの問題については、モデルではプログラムを合成するために複数のステップが必要であり、各ステップでユーザーは自然言語を使用して意図を指定する必要があります。上の図は、電子メール アドレスからユーザー名を抽出する合成プロセスを示しています。

この論文では、プログラム合成のための言語モデルの基本的な考え方を採用します。さらに、次の 4 つの貢献があります。

  • スケーリング則に基づく自己回帰モデルのマルチラウンドプログラム合成の出現を研究。
  • この機能を利用すると、マルチラウンド プログラム合成パラダイムが導入されます。
  • 新しいマルチラウンド プログラミング ベンチマークを使用して、その特性を定量的に研究します。
  • モデルのチェックポイントとカスタム トレーニング ライブラリJAXFORMERをオープンソースにします。

プログラム合成に関しては、Codex と競合できるオープンソースの大規模モデルはありません。これが進歩を妨げており、これらのモデルのトレーニングに必要な高価なコンピューティング リソースを考慮すると、それらのモデルにアクセスできる機関はごく少数です。この論文のオープンソースへの貢献により、幅広い研究者がこれらのモデルを学習して改善できるようになり、研究の進歩が大きく促進されます。

2. モデルのトレーニング

モデルは標準のトランスフォーマーベースの自己回帰言語モデルを使用し、モデルパラメータの数とトレーニングコーパス内のトークンの数のみを変更します。

1. データセット

CodeGen モデル ファミリは、 THEPILEBIGQUERYBIGPYTHON3 つのデータセットで順次トレーニングされます。

THEPILE は、言語モデリング用の 825.18 GB の英語データセットです。データセットは 22 の高品質のサブセットに基づいて構築されており、そのうちの 1 つは GitHub から収集されたプログラミング言語データであり、データセット全体の 7.6% を占めます。このデータセットでトレーニングされたモデルは、Natural Language CodeGen モデル ( CodeGen-NL ) と呼ばれます。

多言語データセットBIGQUERY は、複数のプログラミング言語で構成される Google の公開データセット BigQuery のサブセットです。多言語トレーニングには、C、C++、Go、Java、JavaScript、Python の 6 つのプログラミング言語から選択します。BIGQUERY でトレーニングされたモデルは、多言語 CodeGen モデル ( CodeGen-Multi ) と呼ばれます。

単一言語データセットBIGPYTHON には、大量の Python データが含まれています。このデータセットには、2021 年 10 月までの公開され、アクセス可能で、非個人的な Python コードが含まれています。BIGPYTHON でトレーニングされたモデルは、単一言語 CodeGen モデル ( CodeGen-Mono ) と呼ばれます。

データの前処理: (1) フィルタリング、(2) 重複排除、(3) トークン化、(4) シャッフル、(5) スプライシング。

2.モデル

CodeGen は、自然言語およびプログラミング言語のデータセットのトレーニングに自己回帰形式のトランスフォーマーを使用しますモデル サイズには、350M、2.7B、6.1B、16.1B があります。最初の 3 つのサイズでは、オープンソースの大規模言語モデル、GPT-NEO (350M、2.7B) および GPT-J (6B) と直接比較できます。

CodeGen はデータセット上で順次トレーニングされます。CodeGen-NL は THEPILE で最初にトレーニングされました。CodeGen-Multi は CodeGen-NL で初期化され、BIGQUERY でトレーニングされました。CodeGen-Mono は CodeGen-Multi で初期化され、BIGPYTHON でトレーニングされました。

自然言語記述条件に基づくプログラム合成機能の出現は、モデルとデータのサイズ、トレーニング目的関数、およびトレーニング データ自体から発生する可能性があります。これは、「注釈とコードのペア」データでトレーニングされていないため、「緊急」と呼ばれます。同様の現象は自然言語タスクでも観察されており、大規模な教師なし言語モデルは、目に見えないタスクをゼロショットで解決できます。

3. 1 回の評価

既存のプログラム合成ベンチマーク HumanEval には、164 個の手書きの Python プログラミング問題が含まれています。各質問には、関数のシグネチャとサンプル テスト ケースとともに自然言語プロンプトが表示されます。モデルはプロンプトに従って関数を完了する必要があり、関数はすべてのテスト ケースに合格する必要があります。ユーザーの意図は単一のプロンプト内で指定され、一度にモデルに提供されるため、HumanEval は後続の複数ラウンドの評価と区別するために単一の引数の評価として扱われます。

1. HumanEval の効果はモデル サイズとデータ サイズの関数です

ここに画像の説明を挿入

HumanEval で SOTA スキームを比較します。さらに、オープンソースの大規模言語モデル GPT-NEO と GPT-J も比較されます。これらの大規模なモデルはすべて THEPILE でトレーニングされるため、CodeGen-NL モデルに似ています。

結果を上記の表1に示す。CodeGen-NL モデルは、GPT-NEO および GPT-J モデルよりも優れているか、同等です。GodeGen-Multi は GPT-NEO、GPT-J、CodeGen-NL を大幅に上回ります。純粋な Python データセット上の微調整モデル CodeGen-Mono では、プログラム合成能力が大幅に向上しました。

2. ユーザーの意図をよりよく理解すると、より優れた合成プログラムが得られます

ここに画像の説明を挿入

プログラム合成システムが成功するかどうかは、ユーザーの意図をよく理解することシステムは言語モデルに基づいているため、プロンプトの複雑さをシステムがユーザーの意図を理解するための代用として使用できます。ユーザーの意図がモデルの下で複雑性が低い場合、ユーザーによって記述された意図は、モデルの事前トレーニング データから学習した知識と互換性があります。

具体的には、すべての問題を合格不合格に分けます。合格問題とは、200 個のサンプルのうち少なくとも 1 つがすべてのテスト ケースに合格することを意味し、不合格とは、200 個のサンプルのどれもすべてのテスト ケースに合格できないことを意味します。CodeGen-Mono モデルに基づいて、すべての合格問題の平均難問と不合格問題の難問が計算されます。上記の表 2 に示すように、合格問題は不合格問題よりも困惑度が低くなります。これは、ユーザーの意図がモデルによってよりよく理解されると、プログラム合成の効果がより高まることを意味します。

4段階の評価

このサブセクションでは、マルチラウンド プログラム合成パラダイムを提案し、調査します。プログラム合成は複数のステップに分解され、合成システムは各ステップでサブプログラムの合成を完了します。このパラダイムをテストするために、新しいベンチマークであるマルチターン プログラミング ベンチマーク ( MTPB )が開発されましたMTPB には 115 の質問が含まれており、各質問には複数ステップの自然言語の説明が含まれています。

1. ベースライン構造

この論文の著者 4 人は 115 の質問を定義しました。これらの問題には、各クラス図の問題がほぼバランスがとれるように、数学、配列操作、文字列操作、アルゴリズム、データ サイエンスなどのさまざまなプログラミング知識が必要です。各質問は、以下を含む 3 つの要素を構成します。 プロンプトPPの複数ラウンドP、テストケースの入力III、テストケースの出力OOO._ _ プロンプトPPを複数ラウンド設計するP は2 つの制約に従う必要があります: (1) 問題は少なくとも 3 つのラウンドに分解される; (2) 問題は 1 つのラウンドでは解決できない。各質問の作成者は、5 つのテスト ケースのIII和输出 O O

HumanEval では部分的に定義された関数を完了する必要がありますが、MTPB はプロンプトのみを渡すため、モデルはソリューションを最初から生成する必要があります。この自由形式の生成により、より多くの潜在的なソリューションが可能になりますが、モデルがテスト ケース入力のエントリ ポイントを生成できる必要があります。たとえば、プロンプト: 「値 {var} を持つ 's' という名前の文字列を定義する」の場合、テスト ケース入力は「var = 'Hello'値 'Hello' を持つ 's' という名前の文字列を定義する」として形式化されます。

2. マルチステッププログラミング機能はモデルサイズとデータサイズに応じて拡張可能

ここに画像の説明を挿入

4. マルチラウンド分解によるユーザー意図の理解の向上

ここに画像の説明を挿入

この論文では、マルチラウンド分解によりユーザーの意図を理解するモデルの能力が強化され、プログラム合成機能の向上につながる可能性があるという仮説を立てています。この仮説を検証するために、複数ラウンドの命令を連結して単一ラウンドに形式化します。ユーザーの意図を理解するための代用として、プロンプトの当惑を依然として使用しています。したがって、シングルラウンドとマルチラウンドのプロンプトにおける 4 つの CodeGen-Mono モデルの複雑さが比較されます。

上の表 4 は、シングルラウンド プロンプトとマルチラウンド プロンプトの困惑度 (左) と合格率 (右) を示しています。シングルラウンドの複雑さはすべてマルチラウンドよりも高く、マルチラウンドのアプローチの方がユーザーの意図をよりよく理解できることを意味します。マルチラウンド方式の合格率は、シングルラウンド方式よりも平均して 10% 高くなります

おすすめ

転載: blog.csdn.net/bqw18744018044/article/details/130590531
おすすめ