競技プログラミングで実力、DeepMindのコード生成AI「AlphaCode」に見る可能性
今回は「競技プログラミングで実力、DeepMindのコード生成AI「AlphaCode」に見る可能性」についてご紹介します。
関連ワード (ソフトウェア等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
開発者にとって、これから学習するプログラミング言語の選択は、時間という多大な投資がからむだけに大きな決断となる。しかし、人工知能(AI)モデルが問題内容の理解から解決策のコード化に至るまでを実行することで、開発者の作業の大半を肩代わりしてくれるような世界が実現されれば、そもそもこうした選択に悩む意味はなくなるはずだ。
GoogleのAI部門であるDeepMindのリサーチャーらによると、同社の「AlphaCode」システムは、初級者レベルのプログラマーを対象とした競技プログラミングの問題に対する解決策をコードで表現し、平均的なスコアを獲得できるという。こうした競技プログラミングでは、自然言語で記述された問題を理解した上で、効率的なアルゴリズムをコード化する必要がある。
DeepMindのリサーチャーらは、査読を控えている論文の中で、Codeforcesによって開催された競技プログラミングコンテストで出題された問題に挑戦した結果について記している。5000人を超える人々が参加した過去10回にわたるコンテストの問題をAlphaCodeに解かせたところ、平均ランキングで上位54.3%の位置に付ける成績を残したという。
DeepMindはAlphaCodeについて、人間の開発者向けの競技プログラミングコンテストで互角に戦えるだけの実力を備えた初のAIコード生成システムだと述べている。この研究によって、プログラマーの生産性向上や、コーディング方法を知らない非プログラマーが解決策を表現する上での支援がもたらされる可能性もある。
競技プログラミングにおいて人間、そしてAlphaCodeは課題やパズルの詳細を分析し、解決に向けたプログラムを迅速に記述する必要がある。これは、単純なコーディングの課題を解決するために、GitHubで公開されているデータを用いてモデルを訓練するよりも難度が高い作業だ。
AlphaCodeは人間と同様に、自然言語で記述された、複数段落からなる問題の詳細や、その背景にある状況、望ましい解決策の説明について、入力と出力という観点から理解する必要がある。
競技参加者は問題を解決するにあたり、アルゴリズムを考え出し、それを効率的に実装する必要がある。またこうした制約を乗り越えるために、例えばPythonではなくC++といった、より高速なプログラミング言語を選択する必要に迫られるかもしれない。
AlphaCodeの事前訓練データセットには、GitHubのリポジトリーから取得された、C++やC#、Go、Java、JavaScript/TypeScript、Lua、Python、PHP、Ruby、Rust、Scalaで記述されたファイルが含まれており、その容量は715GBに及んでいる。またDeepMindのチームは、Codeforcesが開催した競技プログラミングコンテストの問題や類似のデータセットを用いてモデルを洗練させた。