人工知能(AI)がコンピューターのプログラムの誤りを自動修正したり、人の意図を読み取って適切なプログラムを自動生成したりする。そうした未来を実現するために米IBMが公開しているAI開発基盤が「CodeNet」だ。IBMは2021年12月に開催されたAI分野の国際学会「NeurIPS 2021」でCodeNetの詳細を発表した。
近年、AIが注目されるようになったきっかけは、高い精度を持つ画像認識技術の登場だ。その基盤になったのが、「ImageNet」をはじめとする大量の教師ラベル付き画像のデータセットである。また、世界中のWebサイトにある大量の文章を学習データとして、AIによる自然言語処理も発展した。
これに対し、「AIに学習させるためのプログラムコードのデータセットは世の中にはほとんどなかった」とIBM東京基礎研究所の立花隆輝AI担当シニア・マネージャーは指摘する。そこで、プログラムを対象としたAIのための大規模なデータセットとしてIBMが整備したのがCodeNetだ。
単に大量のコードのデータが欲しいだけなら、オープンソースとして公開されているソースコードがある。ただそれらは、いわば教師ラベルがついてない画像データのようなもので、AIの学習には使いにくい。
そこでIBMが注目したのが、競技プログラミングの参加者が提出するコードだ。これらは「どの問題を解くためのプログラムか」という目的がはっきりしている。また、正しいコードだけでなく、うまく動かないコードや間違った答えを出すコードもある。「実行に時間がかかりすぎる」「メモリーを大量に消費する」といった問題を抱えるコードも含まれる。どのプログラミング言語で書かれているかも明示されている。
こうした情報をアノテーション(注釈)としてコードに付与したデータセットを構築した。要するに、人間が競技プログラミングで技能を向上させようとする活動を、AIを賢くするために流用できるようにしたのだ。
具体的には、競技プログラミングサイトの「AtCoder」と競技プログラミングの練習ができるオンライン採点サイト「Aizu Online Judge(AOJ)」が公開しているデータを利用した。提出されるコードの量が多い点やサービスの質が高い点を評価したという。立花氏は「CodeNetの開発には日本IBMはかかわっておらず、日本の2つのサービスが選ばれたのはたまたまで、私たちも驚いた」と語る。