AIが得意とするところを把握するのは、AIを理解する上で最も難しいことの1つ。それを判断できるようにするため、OpenAIは1セットのゲームを開発した。機械学習エージェントが、本当に基本的なスキルを学べているのか、あるいは、ありがちなことだが、単に自分の都合のいいようにシステムを操作する方法を把握しただけなのか、研究者が判断するのに役立つもの。
AI研究ではよくあることで、ぬか喜びしがちなのだが、研究者が求めていることなら、何でもうまくできると見せかけようとして、エージェントがルールを曲解したり、無視したりすることがある。ズルをすることは、既成概念を打ち破るものであるかもしれないが、常に受け入れられるとは限らない。本当の能力を確認するには、ちょっとだけルールを変えて、そのシステムが機能しなくなるかどうか見てみればいい。
実際にエージェントが学んだことは、新たな状況に置かれたときにも、その「スキル」が適用できるかどうかを調べることによって評価できる。状況が変われば、獲得した知識の一部しか適合しなくなるからだ。
たとえば、AIがマリオのようなゲームの遊び方を学んだかどうか判断したいとしよう。右方向に移動しながら障害物を飛び越えるタイプのゲームだ。その場合、左に移動しなければならないようにしたり、障害物の順番を変えたりと、いろいろ状況を変更してみればいい。あるいは、ゲームの中身も変更して、右に進むとモンスターが登場して、AIが攻撃しなければならないようにしてもいいだろう。
もしエージェントが、このようなゲームの遊び方を本当に学んだとすれば、まったく新しいものよりもずっと速く、変更後のゲームの遊び方を習得できるはず。これは「汎化」と呼ばれ、既存の知識を新たな異なる状況に適用するもの。人間なら常にやっていることだ。
OpenAIの研究者は、研究の過程で、こうした状況に何度も遭遇した。そこで、汎化可能なAIの知識を基本レベルでテストできるよう、一種のAIアーケードを設計した。エージェントは、少しずつオーバーラップしつつも、それぞれ異なるゲームのコンセプトを学習したことを証明しなければならない。
彼らが設計した16種類のゲームは、パックマン、スーパーマリオブラザーズ、アステロイドなど、私たちにも馴染みのあるゲームに似ている。違うのは、AIがプレイすることを意識して、最初から作り直されていること。そのため、操作、得点、グラフィックはシンプルなものとなっている。
それぞれが、AIの能力にとって異なるタイプの負担を課す。たとえば、あるゲームでは、数秒間じっと止まってゲーム環境を観察していても、特に支障はないかもしれないが、別のゲームでは、そんなことをしていてはエージェントを危険にさらすことになるかもしれない。またあるゲームでは、AIは周辺まで探検しなければならないが、別のゲームでは、1つの大きなボスの宇宙船に集中すべきかもしれない。しかし、そうした違いは、それぞれ明らかに異なるゲームとして作り込まれている。もちろん多少の違いはあるものの、アタリのゲーム機やファミコン用のゲームと似たところもある。
下のGIFで確認できる16種類のゲームは、左上から右下に向かって順に挙げると、以下のようなもの。
- Ninja:爆弾を避けたり、手裏剣を投げて迎撃しながら忍者をタワーに登らせる。
- Coinrun:トラップやモンスターを避けながら進んで、面の右端でコインを獲得する。
- Plunder:画面の下部から砲弾を発射し、味方の船に当たらないよう敵の船を攻撃する。
- Caveflyer:アステロイドと同じようにコントロールして洞窟内を移動し、障害物を避けながら敵を撃つ。
- Jumper:ダブルジャンプするウサギと、ゴールの方向を示すコンパスがあるオープンワールドタイプのプラットフォーム型ゲーム。
- Miner:土を掘ってダイヤモンドと岩を手に入れる。アタリ製ゲームのような重力が働いている。
- Maze:さまざまなサイズの、ランダムに生成された迷路をナビゲートする。
- Bigfish:自分より大きな魚に食べられないよう注意しながら、小さな魚を食べて自分が大きくなる。
- Chaser:パックマンのようにドットを食べ、戦略的にパワーアップのペレットを取って敵を食べる。
- Starpilot:敵の弾を避けながら素早く敵の宇宙船を破壊するグラディウスのような撃ち合いゲーム。
- Bossfight:再生可能なシールドを備え、ランダムに攻撃してくるボス宇宙船と1対1で戦う。
- Heist:錠と同じ色の鍵を取ることで迷路をナビゲートする。
- Fruitbot:他のモノを取らないように注意しながら果物だけを集めて、次のレベルに進む。
- Dodgeball:壁に触れないように部屋を動き回り、他の人の投げたボールに当たらないようにしながら、他の人にボールをぶつける。
- Climber:星を集めながらモンスターを避けつつ、上のステージに登っていく。
- Leaper:車や丸太などを避けながら道路を横断するフロッガータイプのゲーム。
AIは、Heist、Maze、Chaserなどのようなグリッドベースのもの得意としても、Jumper、Coinrun、あるいやBossfightのようなものは苦手だと想像できる。そうした傾向は人間と同様かもしれない。それぞれのゲームが、異なるスキルを要求するからだ。ただし、共通するものもある。相手の動きの特徴を把握したり、動いているオブジェクトには意味があることや、画面の特定の領域には入ることができない、といったことを理解する能力だ。即座に汎化して適応できるAIは、汎化がうまくできないAIに比べて、どんなタイプのゲームでも、短時間でマスターする方法を学習できるはずだ。
このようなゲームの1セットと、それに対するエージェントのパフォーマンスを観察して評価する手法は、ProcGenベンチマークと呼ばれている。というのも、ゲームの環境や敵キャラの配置が手続き的に生成される(Procedurally Generated)からだ。このプロジェクトのGitHubページを開けば、より詳しい情報と、自分用のAIテスト環境のビルド方法が解説されている。
[原文へ]
(翻訳:Fumihiko Shibata)