人間の言語をコンピュータの言語に翻訳する
私たち人間は、日本語や英語といった「自然言語」でコミュニケーションをとっています。
例えば誰かに「今朝の予定は?」と尋ねるなら、すぐに返答が得られるでしょう。
しかしコンピュータが相手だと、そう簡単にはいきません。
人間の自然言語を理解できないため、「今朝」とか「予定」という単語の意味から教えなければいけないでしょう。
しかもコンピュータは、人間の脳のように融通がききません。
「今朝」を「だいたい朝の時間帯」と教えても理解できないため、「午前6時~9時」などと定義づけしなければいけないのです。

ここで活躍するのがプログラマーです。
彼らは自然言語で書かれた指示書を、コンピュータが理解できるプログラミング言語に翻訳する役目を担っています。
膨大なコードを書くことで、コンピュータを意図通りに動作させていますが、この作業には、言語、論理的思考、問題解決における高い能力が求められます。
さてDeepMind社は、こうしたプログラミングを自動で行ってしまうAIを開発しました。
ハイレベルな自動プログラミングAIがコンテストで中位を獲得
DeepMind社が開発した自動プログラミングAI「AlphaCode」は、人間のプログラマーのように働きます。
自然言語で指示が与えられると、それを理解し、コンピュータを動作させるためのコードを自動で書いてくれるのです。
もちろん、これまでにも自動プログラミングAIは開発されてきました。
しかしDeepMind社は、問題解決能力の点で、AlphaCodeが既存のAIより優秀であると主張しています。
彼らによると、「これまでのAIは、既存のコードを検索して、そのままコピーするだけであり、新しい問題を解決する能力をもっていない」とのこと。

対してAlphaCodeは、「競技プログラミング」レベルの問題を解決できます。
通常、競技プログラミングのコンテストでは、言語・論理・問題解決能力を必要とする新しい問題が出題されます。
当然ながら、人間のプログラミング能力を試すためのものであり、何十万人ものプログラマーが参加します。
ところがAlphaCodeは、このコンテストにチャレンジし、参加者の中で「上位54%以内」という中位ランクを獲得しました。
AlphaCodeは人間に匹敵することを証明してしまったのです。
次項では、AlphaCodeが実際にどのようなコードを書けるのか紹介します。
AlphaCodeが実際に書いたプログラム
AlphaCodeが実際にプログラミングした問題を見てみましょう。
下記の画像はAlphaCodeに解かせた「D. Backspace」という問題。

これはその名のとおり、バックスペースキーに関する問題です。
1つ目の文字列のどこかの文字をバックスペースキーに置き換えると、2つ目の文字列になるかどうかをコンピュータに判断させる、というもの。
例えば「ababa」という文字列は、「①aキー、②bキー、③aキー、④bキー、⑤aキー」の順番でキーボードのキーを押したときに表示されるものです。
そして①④のキーをバックスペースキーに置き換えると、「①バックスペースキー、②bキー、③aキー、④バックスペースキー、⑤aキー」になります。
バックスペースキーには後ろの文字を消す効果があるので、この順番にキーを押すと「ba」という文字列になるはずです。
つまり「ababa」のどこかのキーをバックスペースキーに置き換えると、「ba」になる、と言えます。
どこのキーをバックスペースキーに置き換えるかは関係ありません。
とにかく2つ目の文字列が1つ目の文字列のどこかをバックスペースキーで置き換えたものになっていれば「YES」を、そうでなければ「NO」と答えさせるのです。
ですから、下記の文字列を入力した場合、
- 「ababa」「ba」
- 「ababa」「bb」
- 「aaa」「aaaa」
- 「aababa」「ababa」
それぞれ次の結果が出ると良いわけです。
- YES
- NO
- NO
- YES
コンピュータにこの問題を解答させるには、何行かのプログラミングコードが必要になります。
AlphaCodeはこの問題にチャレンジし、見事にコードを書くことができました。

とはいえ、現段階ではAlphaCodeがプログラマーの代わりになるわけではありません。
DeepMind社は、プログラマーがAlphaCodeを活用することで、生産性を向上させられると考えています。
今後の改良によっては、AIがプログラマーたちをサポートし、素人でも簡単なプログラミングが組めるようになるのかもしれません。




















