IBMが整備したCodeNetとは、AI学習用データセットのポテンシャル
米IBMは2021年5月、「Project CodeNet」を公開しました。同年12月にはAIの国際学会「NeurIPS 2021」で、その詳細な内容を発表しています。CodeNetはAI学習用のデータセットですが、業界で話題になっている背景に、現代のコンピュータシステムが抱える困難な課題を解決できるかもしれないという期待があります。
ここでは、CodeNetの概要と目的、特徴、ほかのデータセットとの相違点について解説します。違う特徴とは何か、どのような利用シーンが想定されているのかなどを解説し、これからCodeNetがどのように発展していくのかを占います。
CodeNetとは
CodeNetは、コンピュータのプログラムとそれが問題を解いた時の情報を、“教師データ”として一緒に付けてあるデータのセットです。IBMがAIを開発する際の基盤となるべく開発したものです。
その量は膨大なもので、55種類にも及ぶ言語で書かれた約1400万のコードで、その量は5億行にも及ぶということです。
近年のAIの発展には目を見張るものがありますが、これは手間暇かけてタグ付けしたデータセットの恩恵と言えます。AIの分野では画像の判別が進んでいますが、これは無数の画像データに、それが何であるかタグをつけて教え込んできた結果です。
これらの地道な努力によって、画像の判別や自然言語の生成などさまざまなビジネスプロセスが自動化されてきました。しかしながら、プログラミング言語は、画像や自然言語と違い、そのデータの特徴を伝えるアノテーション(注釈)を設定するのが難しく、AIシステムの学習に向いたデータセット作成には課題が残されてきました。
膨大なプログラムの過去の事例を学習させることにより、問題のあるソースの自動的な修正や、COBOLなどのレガシープログラムの移植などに役立てることが期待されています。
CodeNetの目的とは
CodeNetの目的は、「既存のプログラムの近代化」「プログラムの中にある誤りやセキュリティ脆弱性の修正」を実施できるシステムを作成することです。いわば、AIの学習材料ですが、CodeNetで学習したAIには社会的な課題の解決が期待されています。
その課題をまとめると以下のようになります。
- 古くからあり、複雑化し、完成度が高すぎるために、もはや近代化できなくなった「レガシーシステム」をメンテナンスが容易な形に近代化すること
- 開発者のコーディングをサポートし、人為的誤りや、考えつかないコードを補完するような働きをし、プログラム開発の生産性を上げること
- AIそのものが自動的にプログラムを作ること
ソフトウエア技術者の不足は社会的な課題でもあります。特に、60年以上も前に実装された古い言語で書かれたプログラムは、それを理解している技術者が続々と引退する状況になっています。これらのシステムをいかに現代の環境に合わせて改変するかが課題となっています。
レガシーシステムの多くは金融・保険などの大規模なプログラムです。インターネットに接続し、常時稼働するのが当たり前という現代の環境に適応できなければ、その影響は大きなものになります。その代表的な言語がCOBOLです。アメリカでも日本でも、現在も財務処理にCOBOLが幅広く使われているといいます。
またIT企業のMicro Focusの依頼を受け、調査企業Vanson Bourneが実施した調査によると、回答者の半分近くが社内でのCOBOLの利用量が今後1年間に増えると予想しています。回答者の64%は、レガシーシステムの廃棄または刷新ではなく、COBOLベースのアプリケーションのモダナイズを予定していると回答しています。
COBOLは一例に過ぎず、現代の若いプログラマーたちには理解できない「化石」のような言語はほかにもたくさんあり、イメージとは裏腹に多くがなお現役で稼働しているのです。こうした、レガシーシステムを構成するプログラミング言語の「翻訳」は、CodeNetが取り組もうとしている問題の1つです。
また、コードを記述する際に誤りを発見し、書き方を指示するなど開発者を補助する役割も期待されている。これにより熟練の開発者は、より誤りが少なくなり、経験年数の少ない開発者でも質の高いコードを書けるようになって、生産性の向上が期待されます。
そして、これらの機能の行きつく先には『プログラムの自動作成』があります。CodeNetの究極の目的は「コンピュータがコンピュータをプログラムできるようにすること」だと言って良いかもしれません。
Project CodeNetの特徴とは
IBMの発表によると、CodeNetは4503の課題に対する合計13,916,868のコード投稿から構成されているといいます。これらは、プログラムを作成する課題に対しての回答を集めたもので、正解もあれば誤った結果を出すものもあります。内訳は、53.6% (7,460,588)が正しい結果を出力し、29.5%が誤った結果を出力するコード、その他は、ランタイムやメモリの都合など何らかの理由で実行できなかったコードです。
これらのデータは教育的な目的で行われたコンテストなどのイベントによって作られたデータで、単純なものから、応用力が試されるある程度複雑なものまで多岐にわたっている課題です。回答した人も初心者から経験豊富な者までさまざまな人がいます。
使用されている言語は55種類にも上ります。言語の種類別の割合は次のとおりです。
CodeNetに含まれる言語の割合(米IBMの資料より作成)
このように、よく使われる代表的な言語をほぼカバーしており、発表からわずか3カ月で多くの利用者がありました。IBMはソフトウエア開発のプラットフォーム、GitHubにおけるCodeNetのレポジトリーにおいて、1070の「スター」が集まり、135回も「フォーク」されたことに言及しています。
IBMが、コード分類、コード類似性、コード補完についてベースラインとなる実験を行ったところCodeNetから学習されたモデルは、他のデータセットへの般化能力が高いことがわかっています。
どのようなシーンで活躍できるか
CodeNetの用途はプログラムのコーディング支援ですが、その中でも特に次の3つの用途への利用が想定されています。
コード検索
ここでいうコード検索とは、COBOLなどのレガシー言語と他の言語の自動変換を指します。昔の言語をマスターしていなくてもある程度“翻訳”してくれることで、現代の技術者でも、レガシーシステムの新規コーディングが可能になるでしょう。
コードの類似性
異なるコードを比較し、重複している部分や同じような処理をしている部分を特定します。エンジニアはこれらの発見を早くおこなえることにより、プログラムサイズを小さくしたり、処理速度を改善したりするのに役立つでしょう。
コード制約
開発者固有のニーズやパラメータによって、プログラミング上の制約をカスタマイズできます。最初から決まったルールで作業を行えれば、出来上がってからの手直しを最小限に抑えることができるでしょう。
CodeNetには2つの日本のサイトが使われた
このようなCodeNetですが、先に紹介した55種類にも及ぶ言語で書かれた約1400万のコード、5億行というのは、以下の2つの日本のサイトから集められたものです。
AtCoder(アットコーダー)
AtCoderは、「競技プログラミング」サービスです。同名の株式会社が運営しており、サイトのトップページには「AtCoderは、世界最高峰の競技プログラミングサイトです。リアルタイムのオンラインコンテストで競い合うことや、3000以上の過去問にいつでもチャレンジすることができます」とあります。常にランキングが表示されており、このスコアをもとにした人材紹介サービスなども行っています。
AIZU Online Judge(会津オンラインジャッジ)
会津大学が運営するプログラミング問題のオンライン採点システムです。プログラミングの競技大会における解答の正誤を判定するシステムで、2004年に構築されたものです。
高校生の情報オリンピックやパソコン甲子園などで出題された問題が用意されているので、プログラミングの練習によく利用されています。正解数でランキングが表示されており、参加者が多いことが分かります。現在6000人のユーザー登録があります。
この2つの日本のサイトは、課題と解答が用意されたプログラムが無数に集められたもので、まさに機械学習用のデータセットにたまたま最適であったというわけです。このように、目的と正解と十分な数がそろった場所がなければ、プログラムを作成するためのAIの誕生は難しかったのではないでしょうか。
CodeNetの展望
IBMは、現代の開発者が慣れ親しんでいるPythonなどの言語を用い、メインフレーム上で動くCOBOLのプログラムが完璧に作成できることを目指しているといいます。レガシーとやゆされてはいるものの、今なお金融や保険など社会の基幹をなす重要な社会インフラです。
AIシステムは、数え切れないほどの過去の事例から開発したプログラムの改善方法を提示するようになるでしょう。あるいはその上を行くプログラムを自ら作成するようになるかもしれません。IBMのためにのみあるのではなく、世の中のすべての開発者が、今よりもはるかに生産性の高い仕事が行えるようになるためにも、CodeNetによるAI開発の進展は必要です。
そのためには、「もっと多くの人にCodeNetを利用してほしい」とIBMはコメントしています。
誰でも簡単に
「社内外のデータ収集」と
「非構造化データの構造化」で
データを資産化
AirLakeは、データ活用の機会と効果を拡張する
ノーコードクラウドデータプラットフォームです。
SEやビジネスマンとしての30年にわたる経験に最新の知見を組み合わせて、各種Webメディアで執筆活動をしている。