DeepMindのAlphaCodeは何が革新的なのか?そして競技用プログラミングとは何か?
DeepMindが何か発表するたびに、「革新が起きる」と言っても言い過ぎでないほど色々やってくれる会社だ。アタリゲーム、チェス、将棋、スタークラフトなどで人間以上のプレイをし、何年も先と思われていたタンパク質の構造予想、つい最近では「核融合を制御できるAI」なんてのもある。
そんなDeepMindが競技用プログラミングのコードが書けるAIを開発した。
しかし、そもそも競技用プログラミングとは何か。実は、コードフォース(Codeforces)というサイトで開催されるプログラミング競技のことだ。データ構造とアルゴリズムのクイズを思い浮かべればよい。プログラマーがインタビューでやらされるやつだ。それを競技にしたもので、普段は人間同士が競い合う。
そこへDeepMindがAlphaCodeを投入した。といっても、実際に競技に参加したわけではなく、コードフォースの許可を得て直近の10のコンペに参加するシュミレーションを行ったのだが。
結果としては50パーセンタイルを少し超える中位の成績だった。しかし、これは人間にとっても簡単なことではない。まして、機械学習による成果としてはかなり驚くべきものだ。数年もしないうちにもっとすごくなると期待してしまう。
仕組みとしてはトランスフォーマーを元にしたモデルをGitHubからのコードで訓練(pre-training)し、さらに競技用プログラミングのデータセットでファインチューニングしたとのこと。
より詳しく知りたい人のために、デモサイトが用意されている。
BERTやGPTと同様に事前学習とファインチューニングによる学習方法だ。最近は、この方法が様々に適応されている。詳しくは解説されていないが、事前学習では自己教師あり学習が使われていると思われる。
人間の子供のように最初は目的もなく観察して推測するようになり、やがて自分の目的に従って知識を応用できるようになる。「自己教師あり学習」と「ファインチューニング」はそんなイメージを与える。
DeepMindは、このような技術によって人間のプログラマーの生産性が向上されるし、コーディングが出来ない人にも役に立つとしている。というか、これが進歩したらプログラマーがいらなくなるでしょ、やがては。
プログラマーを助けるという意味では、OpenAIのCodexのライバルとなる。その応用でGithubが提供するCopilotは、僕もVisual Studio Codeに統合されたものを使っているが、すでになくてはならないものになっている。将来有料版になってもおそらく喜んで払うことになるだろう。そんな「なくてはならない」という意味では英語文章の添削AIであるGrammarlyとちょっと似ている。
ただし、DeepMindによるとAlphaCodeは、これまでのコードを提案するだけのAIと違ってより複雑で見た事がない問題でも解けるように性能がより上がっているそうだ。きっとすぐにOpenAIからの反撃が来る事でしょう(性能の面で)。
2022年もいろいろと面白くなりそうだ。そうこうしているうちに置いてけぼりにされるのは人間プログラマーか。