清華大学の博士研究員が、AlphaCode の背後にある技術的原理を 10 分かけて説明しました。プログラマーはそう簡単に置き換えられるものではないことがわかりました。

清華大学の博士研究員が、AlphaCode の背後にある技術的原理を 10 分かけて説明しました。プログラマーはそう簡単に置き換えられるものではないことがわかりました。

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式サイトにアクセスして許可を申請してください。

少し前、DeepMindチームは、競技レベルのコードを自動生成できる人工知能システム「AlphaCode」をリリースしました。「普通のプログラマーに匹敵する」と主張しており、リリースされるやいなや、国内外のAI界で大きな話題を呼びました。

- 論文アドレス: https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

- データセット: https://github.com/deepmind/code_contests

DeepMind のブログによると、AlphaCode は「世界で最も強力なアルゴリズム プラットフォーム」である Codeforces で 5,000 人のユーザーが解決した 10 の課題でテストされました。 AlphaCode は、これら 10 の課題に人間とまったく同じ形式でコードを自動的に入力し、多数の可能な回答を生成し、コードを実行して人間のプログラマーのようにチェックすることで実行可能な回答を選別し、最終的に人間のプログラマーの中で上位 54% という優れたスコアを達成しました。

言い換えれば、AlphaCode のコーディング能力は、Codeforces でテストを受けたプログラマーのほぼ半数 (2,300 人) の能力に匹敵します。ジュニアプログラマーの月収が2万元という計算によれば、AlphaCodeは世界中の人材資本家の人件費を毎年5億5200万元節約し、プログラマーの半数を失業させることになると予想されます...

しかし、DeepMind チームは当時、AlphaCode は現時点では競技プログラミング コンテストにのみ適していることも明らかにしていました。

これは、DeepMind が Alpha Go、AlphaZero、AlphaFold をリリースした後の新たな研究のブレークスルーであり、Alpha シリーズの伝説的色を大きく高めていることは否定できません。しかし、シリーズの他の作品(AlphaGoが世界囲碁チャンピオンを破ったなど)と比較すると、AlphaCodeのパフォーマンスは目立ったものではないようです。

現在、清華大学で朱軍教授のもとで博士研究員として働いているティー・ピアース氏は、AlphaCodeの技術原理に非常に興味を持っています。彼女はDeepMindの31ページの論文を注意深く読んだ後、短いビデオを作成してYouTubeに公開し、システムの概要、テスト段階、データセットの事前トレーニングと微調整、Transformerモデルのトレーニングプロセス、Transformerアーキテクチャの側面からAlphaCodeの詳細を詳しく説明しました。

ビデオリンク: https://www.youtube.com/watch?v=YjsoN5aJChA

OpenAIが開発したGPT-3と同様に、AlphaCodeもTransformerモデルに基づいていますが、前者は音声生成に重点を置いているのに対し、後者は連続したテキスト(コードなど)の解析を重視しています。

次の AI テクノロジー レビューでは、この短いビデオを簡単に要約しています。

1 AlphaCode コードの問題

現在、AlphaCode は特定の種類の競技に重点を置いたコーディング問題を対象としており、参加者は Codeforces などのサイトでコーディング チャレンジに参加します。これらのチャレンジには問題の簡単な説明とテスト ケースの例が含まれており、挑戦者には正しい期待出力に一致する入力が提供されます。

簡単に言うと、これらのチャレンジの目標は、サンプルのテスト ケースや一連の非表示のテスト ケースに対して期待される出力を提供するコードを記述することです。コードがすべてのテストに合格すれば、問題は解決したことになります。

DeepMind によると、AlphaCode は Codeforces ウェブサイトで開催されたコーディング チャレンジで一般ユーザーと同等の成功率を達成しました。

2 AlphaCodeシステムの概要

それで、AlphaCode はどのように機能するのでしょうか?

DeepMind チームが発表した論文「AlphaCode による競争レベルのコード生成」では、概要が説明されています (以下を参照)。図に示すように、AlphaCode のコアコンポーネントは依然として Transformer 言語モデルであり、残りの個々のコンポーネントも古いものです。

図1: AlphaCodeシステム図

3使用されるプロトコル

まず、テスト中に AlphaCode がどのように動作するかを見てみましょう。

最初に知っておくべきことは、AlphaCode はコード記述の問題を解決するときに非常に特殊なプロトコルを使用し、このプロトコルによってシステムの配管が決定されるということです。論文によれば、DeepMind チームには、問題に含まれるのと同じ数のサンプルテストケースへのアクセスが与えられたという。

ただし、テストは送信された非表示のテスト送信ケース 10 件に制限されました。

4テスト段階のAlphaCode

AlphaCode のテスト時間は 3 つの個別のフェーズに分かれています。

彼らはまず、テスト問題の説明例と問題に関するメタデータを入力として大規模な Transformer モデルを使用し、モデルからサンプリングして多数の潜在的なソリューションを生成しました。最初に多数の潜在的な解決策を生成する理由は、ほとんどのスクリプトが一部の人々、あるいはコンパイラによってさえもコンパイルできないためです。

そのため、第 2 段階と第 3 段階では、主にこれらの 100 万の潜在的なコード スクリプトに対して「減算」を実行し、特定のプロトコルの前提の下で有用であると思われる 10 のソリューションを選択しました。彼らのアプローチはシンプルでした。サンプル テスト ケース内の 100 万のコード スクリプトをテストし、テストに失敗したスクリプトの約 99% を削除して、スクリプトの数を数千に減らしました。

しかし、合意では、ソリューションを 10 個に削減し続けることが求められています。そこで彼らは非常に賢いアプローチをとりました。

彼らは、問題の説明を入力として受け取る 2 番目の Transformer モデルを使用しましたが、問題を解決するためのコードを生成しようとする代わりに、Transformer を使用してテスト ケースの入力を生成し、問題ごとに 50 個のテスト ケースの入力をサンプリングしました。今では、入力と出力のペアを生成しようとするのではなく、問題に関連する現実的な入力を生成しようとしています。したがって、AlphaCode は、問題に応じて、文字列、バイナリ、数値のリストなどを生成する必要がある場合があります。

図1: Tim PearceがAlphaCodeテストの3つのフェーズを説明する

なぜこれが良いアイデアなのでしょうか?なぜなら、生成された 50 個のテストすべてに対して 2 つのスクリプトが同じ回答を返す場合、おそらく同じアルゴリズムを使用しているため、両方のスクリプトを試して 2 つの送信を無駄にしたくないと考えるからです。

そこで、生成された 50 個の入力に対して約 1000 個のスクリプトをコンパイルして実行しました。次に、これら 50 個の架空の入力に対する出力に基づいてスクリプトをクラスター化しました。次に、各クラスターからサンプル スクリプトを選択しました。 10 個のスクリプトのいずれかがすべての隠しテストに合格した場合、それらのスクリプトは最終的な 10 個のスクリプトとなり、エンコードの問題は正常に解決されます。それ以外の場合は、不合格となります。これは、テスト時に AlphaCode が動作する方法です。

これには、以下に示す Transformer モデルのトレーニングが含まれます。

5.データセットの事前トレーニングと微調整

AlphaCode は、今日のディープラーニングではかなり標準的な事前トレーニングの微調整プロセスを使用します。

ここには 2 つのデータセットがあります。最初のデータセットは、さまざまなプログラミング言語で構成されたパブリック Github リポジトリで、715 GB の膨大なコードが含まれています。これは、コード構造や構文などの非常に一般的な知識を Transformer が学習できるようにすることを目的として、事前トレーニング段階に使用されます。

2 番目のデータセットははるかに小さく、AlphaCode の目的のみに使用され、微調整に使用されます。このデータセットは、Codeforces を含むいくつかのコーディング チャレンジ Web サイトから収集されました。その後、問題の説明テストケースと手動で記述されたソリューションで構成されるデータセットでテストします。これらがデータセットです。さて、私たちは彼らをどうするのでしょうか?

6 Transformerモデルのトレーニングプロセス

まず、事前トレーニングの段階についてお話しましょう。

彼らはいくつかの github コードをスクレイピングし、いわゆるピボット ポイントをランダムに選択しました。

ピボット ポイントより前のすべての内容がエンコーダーに入力され、デコーダーはピボット ポイントより下のコード再構築を目指します。

エンコーダーはコードのベクトル表現を出力するだけであり、これはデコード プロセス全体で使用できます。

デコーダーは自己回帰方式で動作し、まずコードの最初のトークンを予測します。損失関数は、予測されたソフトマックス出力と実際のトークン間のクロスエントロピーになります。最初の実際のトークンはデコーダーへの入力となり、デコーダーは 2 番目のトークンを予測します。デコーダーが予期しないコード トークンの終了を予測するように要求されると、このプロセスはコードの最後まで繰り返されます。

現在、これらの損失はデコーダーとエンコーダーを通じて逆伝播されますが、エンコーダーのみに 2 番目の損失を追加することが重要であることが判明しています。

これはマスク言語と呼ばれ、損失を効率的にモデル化するために使用できます。エンコーダーに入力されたトークンの一部をクリアします。補助的なタスクとして、エンコーダーはどのトークンがマスクされるかを予測しようとします。事前トレーニングタスクが完了したら、微調整タスクに進みます。

ここでは、問題の説明と入力例のメタデータをエンコーダーに入力し、デコーダーを使用して人間が書いたコードを生成しようとします。この時点で、これはエンコーダー/デコーダー アーキテクチャによって強制される構造に非常に自然に適合し、損失は事前トレーニング タスクとまったく同じであることがわかります。

テスト入力を生成するTransformerもあります。これも、同じ github 事前トレーニング タスクから初期化されますが、コードを生成するのではなく、テスト入力を生成するように微調整されています。

7トランスフォーマーアーキテクチャ

DeepMind チームはさまざまなサイズのモデルを試しました。実験的には、モデルが大きいほどパフォーマンスが向上する傾向があります。エンコーダーとデコーダー自体はマルチヘッド アテンション レイヤーで構成されており、これらのレイヤーは非常に標準的です。

8その他のヒント

この論文は多くの進歩を遂げている。ここですべてを説明するつもりはありませんが、私が本当に素晴らしいと思う点の 1 つ、つまりラベルと評価の強化、および質問の説明について取り上げたいと思います。

メタデータは常に Transformer への入力として渡されます。これには、質問のプログラミング言語の難易度レベルが含まれます。トレーニング中に、いくつかの問題のラベルと解決策は正しいですか?彼らは明らかにそれらのフィールドの値が何であるかを知っていますが、テスト時に彼らが知らないのは、実際にテスト時にそれらのフィールドに異なるものを入力して、生成されたコードに影響を与えることができるということです。たとえば、システムが生成するプログラミング言語を制御し、このソリューションに影響を与えることもできます。

動的プログラミングアプローチを試すか、徹底的な検索を行うかなどの回答を生成しようとします。テストの際に役立つとわかったのは、最初の 100 万のソリューションのプールをサンプリングしたときに、多くのフィールドをランダム化したことでした。この初期プールの多様性を高めることで、コード スクリプトの 1 つが正しい可能性が高くなります。

9結論

上記は、Tea Pearce による AlphaCode の仕組みの説明です。 AlphaCode の作業から始めて、彼は自身の考えを語りました。なぜ DeepMind チームがこれらのコーディング問題で達成したパフォーマンス レベルは、囲碁 (AlphaGo) や StarCraft (AlphaZero) のゲームの超人的なレベルのシステムよりもはるかに低いのでしょうか?ティー・ピアース氏の分析によれば、自然言語による記述からコードを書くことは、ゲームをプレイすることよりも本質的に難しいが、これはゲーム内で利用できるデータがはるかに少ないためでもある可能性がある。必要なだけ多くのデータをシミュレートでき、エンコードの問題の数は制限されます。最後に、Tea Pearce 氏は、「AI がコードを書くのが難しい理由は何だろうか?」という疑問を提起しました。将来、AI のコーディング レベルはどのようにして人間の最適レベルを超えることができるのでしょうか?

<<:  北京冬季オリンピックと人工知能が出会うと、どんな火花が散るのでしょうか?

>>:  3Dの名の下、「インテリジェント製造」の包囲はAIビジョンユニコーンの新たな戦場です

ブログ    
ブログ    
ブログ    

推薦する

3行のコードで損失なく40%高速化、You YangチームのAIトレーニングアクセラレータがICLR口頭発表論文に選出

プルーニングを使用すると、AI トレーニングを高速化し、ロスレス操作を実現できます。わずか 3 行の...

携帯電話のビデオの最大の問題は揺れですが、AIだけがそれを救えます

携帯電話でビデオを撮影するときの最大の問題は何ですか?振る……ビデオのジッターは緊急に解決する必要が...

王の英雄を見極める – PM の機械学習初心者の旅

[[204836]]基本概念先月、私は機械学習を原理レベルから理解し始め、オンライン電子書籍「ニュー...

...

大好きです!初心者に適した 7 つの高品質 AI プロジェクト

人工知能が本格的に普及しつつあります。AIの知識を学ばなければ、自分が新時代の後継者だと言えるでしょ...

テキスト認識と表認識、このライブラリは直接呼び出します

PaddleOCR は、PaddlePaddle ディープラーニング フレームワークに基づいて開発さ...

12ページの線形代数ノートがGitHubのホットリストに掲載され、ギルバート・ストラングからの手書きの署名も受け取っている。

すでに誰かが線形代数の要点を描くのを手伝ってくれています。全12ページ、半分がイラストなので初心者で...

孤独を研究していますか? Reddit のホットな話題: AI のゴッドファーザー、ヤン・ルカンが提案した「エネルギー モデル」とは一体何でしょうか?

「エネルギー自己教師学習っていったい何?」と多くのRedditネットユーザーがコメントした。ちょう...

...

人工知能翻訳は、障害なく外国人と恋に落ちるのに役立ちます

AI 音声翻訳の分野では、ノイズは対処しなければならない主要な課題の 1 つです。この装置は研究室や...

スマートサーマルイメージングカメラは屋外セキュリティソリューションの第一選択肢となる

スマートサーマルイメージングカメラは、屋外の資産を保護するための侵入者検知ソリューションとして急速に...

プレミアリーグファンに朗報:AIはチームの勝率とゴール時間を予測できるのか?

[[423663]] 2021-22シーズンのイングランド・プレミアリーグが開幕し、初日にアーセナ...

マイクロソフトとグーグルのAIジレンマ:お金を稼ぐにはもっとお金を使う必要がある

7月26日のニュースによると、将来、人工知能はマイクロソフトやアルファベットなどのテクノロジー大手に...

...

...