自己紹介

梅津寛子氏(以下、梅津):では「マイクロソフトのエンジニアが考えるQAの未来〜AI and Gaming Research Summitから〜」ということで、セッションを始めたいと思います。よろしくお願いします。

下田純也氏(以下、下田):よろしくお願いします。

梅津:まずちょっと自己紹介からしたいと思います。私は日本マイクロソフト株式会社でゲーム&エンターテイメント営業本部という、ゲーム会社向けの営業本部の中でAccount Technology Strategistという、ちょっとよくわからない名前ですが、要は技術営業をしています、梅津寛子です。

下田:マイクロソフトでテクニカル技術のスペシャリスト、特にゲームの技術スペシャリストで、Global Black Beltという組織に所属している下田です。よろしくお願いします。

梅津:まずちょっと前提として、今日お話する「AI and Gaming Research Summit」に関して説明したいと思います。こちらは2021年の2月23日と24日に開催されたイベントです。

Microsoft Researchという、マイクロソフトが持っている研究機関が主催しています。AIに関するゲームに向けた研究の発表会ということで、Microsoft Researchの研究者だけではなく、それ以外のアカデミックな学校の先生などが研究をされている部分に関して発表をしてもらいました。

YouTubeでも見れるようになっていますが、ちょっと英語で発表されているところもあって。なかなかみなさんに届けるのが難しかったり、英語でわかりづらい部分があったりもあるので、今日はその中から、我々がいくつかピックアップして紹介したいと思っています。

Microsoft Researchについて

まず前提として、Microsoft Researchとは何かを説明したいと思います。先ほどお話したとおり、Microsoft Researchはマイクロソフトが持っている研究機関で、さまざまな研究をやっています。

例えば、人の言葉の音声認識だったり、機械翻訳の精度をより高くするであったり。人間が話した言葉を学習させることで、機械がしゃべっているものをより人間に近いようなかたちでしゃべらせるであったり。先ほど画像の認識の話もありましたが、その部分をより精度を高く解析するであったり、全世界にある研究施設を使って、いろいろな分野を研究しています。

これに関してはゲームに関係するところだけではなく、ヘルスケアや経済学的なところであったりと、いろいろな分野に関して研究をしています。その中でも、やはりマイクロソフトはXboxを持っていることもあり、ゲームの分野に非常に役立てている部分があるので、そちらもちょっと紹介できればと思います。

(スライドの)左上にある図は、麻雀の『天鳳』をベースにした研究です。麻雀の『天鳳』のAIということで、麻雀するためのAIを作っています。Suphxという名前でリリースされていて、『天鳳』のゲームの中でもSuphxと戦えるイベントをやったりしています。

麻雀もけっこう人間の感情だったり、AIで実装するのがなかなか難しいと言われていた部分でしたが、うまくAIとして実装できた大きな事例として紹介されています。

(スライドの)その下が「AirSim」です。こちらはどちらかというとQAに近いというか、QAとして使ってもらえるものになっています。ドローンであったり、車の自動運転をベースにしたのQAを行えます。

ゲームエンジンとして、Unreal EngineとUnityにも対応するかたちでGitHubでも展開しているので、もし興味のある方がいたら、ぜひ使ってもらえればと思います。このあたり、下田さんから何か補足があればお願いします。

下田:そうですね。かなりリッチな環境で自動運転などをするものになっているので、ぜひ見てもらえればと思います。GitHubでソースコードも含めて公開されているので、ぜひ中身を見てもらって、ゲームエンジンに組み込むとか、動かしてみてもらえればと思います。

梅津:ありがとうございます。最後、(スライドの)右上にあるのが、2020年かな? 公開されました。「Project Paidia」というもので、こちらもQAに使ってもらえるところもあるので、また後ほどのスライドで詳しく説明できればと思います。

「AI and Gaming Research Summit」のセッション

では、ちょっと実際のセッションの話に移りたいと思います。AIエージェントの「AI and Gaming Research Summit」のセッションから紹介したいと思います。

下田:最初にUniversity of California、バークレー校のAncaさん。「ロボットが人を助けたり、人と協力して仕事をしたりする」研究をしている方です。レストランの厨房でチームメンバーと協力しながら料理を作って出す、『Overcooked』というゲームがあり、それを題材にコンピュータに協力プレイをさせる研究成果を発表してもらいました。その内容がかなり興味深かったので、ここで紹介できればと思います。

梅津:これもすごくおもしろいゲームで、料理を作っていくところで、例えばお皿を鍋に入れてしまわないようにするようなところも、きちんと学習させることを、ロジカルにいろいろと行っているセッションでした。

下田:そうですね。協力プレイってなかなかAIの中でも難しいもので。単体のAIがすごく強くなっていく囲碁や、今出ている『StarCraft』『Dota』『Quake』などで、スーパープレイヤーを作るのは意外と簡単です。

「DeepMind」や「Alpha Go」もこの系統ですが、複数のプレイヤーが協力することを学ばせるのがなかなかチャレンジングで。

AIの研究で使われるセオリーとして、人から学ぶ場合や対戦ゲームをしている場合、相手や人は、なるべく最適な手を打っていると仮定して、それに基づいて学習させていくことが普通の流れだと思います。

しかし、協力プレイなど、人のいろいろな絡み方は最適解ではないことをやっている場合がかなり多く、そこからちゃんと学習するのが、なかなか難しいという話をしていました。

梅津:そうですね。“人が動くところをどう表現していくか”は、なかなか難しいというお話でした。

下田:実際、リアルなアイススケートであったり、複数人のプレイであったりも、人同士がかなりうまく一緒に練習しないと、いい関係はできないじゃないですか。パートナーが変わってしまうと、タイミングがずれてしまったり。普通の人間でも起こるので、やはりAIにも起こってしまいます。

(スライドを見て)ここにも書かれていますが、『Overcooked』風のモデルでも、機械エージェント同士が協力プレイするのは、すごくうまく学習をさせれば連携できるようになってはいくものの、そこに他者が入ってくる。1人はエージェントのままで人間が追加されるとかをすると、まったく協調性が取れないAIができあがっているようなものがあって、それに対してどうやっていたか、という話をしていました。

恐らく今後QA、テストでもマルチプレイはどんどん増えてくると思います。マルチプレイゲームを作りたい会社も増えていると思うので、そういったところに役に立ってくるかと思っています。

梅津:そこに1つヒントとして出てくるのが、先ほどちょっと冒頭でも話した『Project Paidia』です。こちらは下田さんから説明をお願いしてもいいですか?

下田:はい。このProject Paidiaは複数人対複数人、チーム対チームの対戦ゲームです。

ある場所を守りながら敵のところに攻めにいかなければいけないので、みんなでどこかに攻めに行ってしまうと、裏からまわられて、全部取られてしまいます。「俺はあっち行くからお前はこっちを守ってろ」のような、意思疎通が阿吽の呼吸でできないと、いい結果が出ないので、いかにAIで仲間プレイヤーを作るかが、すごくチャレンジングだったとのお話でした。

梅津:例えば、キャラクターたちがうまく宝箱を開けて先に進むための鍵を先に取っておくとか、ドアを開けるような行動とか。「この人だったら、こういう行動を取ってもらったらうれしいだろうな」みたいなことを、AIが先回りしてちゃんとやってくれるところ。が実装できるプロジェクトになっています。これが、Ninja Theoryの『Bleeding Edge』で実際に使われた話になっています。

下田:やはり機械学習をやる場合の、最初の手順としてよくあるのが、3Dのゲームをそのまま最初からやるのではなく、その世界を2D空間、上から見下ろした空間に落として、実際にプロトタイプでどう動くかの学習などができる下地を作って学習させつつ、いい結果、いい動きをしたときに、報酬のシグナルを与えるようなことをしたり。これのプロトタイプとして、キャラクターの性格づけが大きく違うようなもので、ちゃんと学習させる。

例えば、足が遅いけど強力なタンク役と、足の速いアサシンの組み合わせみたいなもので、ちゃんとうまくコラボレーションできるように学習させる。下地をどんどん作っていった、という話がありました。

本番のゲームに移行するにあたり、実際にはそのゲームのコードからさまざまなステートやプレイヤーデータを得たり、『キャプチャー・ザ・フラッグ』のようなことをやるので、フラッグの場所を得たり、チームメイトの場所を得たりをしていましたが、ただコンピュータにしかわからない、深い情報はあまり得ないようにしていたと。

例えば、敵の位置はコンピュータ内の絶対座標ですぐに見れると思いますが、それは人間の感覚とはちょっと違っています。実際のプレイヤーは、自分から見た相対的な位置で「あそこに何がある」「仲間がどこにいる」「敵がどこにいる」を見ているわけで。

実際のプレイヤーが得られているものに近い情報の獲得の仕方をして、かつ「あそこに奥行きがあるものがありそうだ」「手前に何かがある」というプレイヤーの視野情報や進路情報を得て、それを元に学習させるようなことをやっていたそうです。

あとはコントローラーの情報や、何から進む、バックする、ターンするようなことを行い、それらの中ではある程度協調プレイがうまくできるようになったそうです。ApeX-DQNなどを使って、かなりうまく動くようにはなりましたが、やはりさっきのAncaさんの話と同じように、人間プレイヤーが参加すると、うまく動かない問題が起こったそうです。

梅津:人間が入ってくることによって、AIが合わせて動かないといけない部分に関しては、なかなか難しい問題です。

下田:そうですね。実際、マルチプレイの仲間プレイヤーをAIで作るシチュエーションでもそうだと思うし、マルチプレイのテスト環境を作るところにおいても、いろいろな学習成果を得たもの同士を混ぜ合わせると、なかなかうまく協調しない問題が起こり得るので。そこをどうやって解決するかが、今回メインのトピックとしてエージェントで話されていました。

太文字で書いていますが、機械学習したエージェント同士でも、学習環境Aと学習環境Bで学習してきたものを組み合わせると、実はうまく動かなかったそうです。機械学習同士であればうまく動くのではないかと思いますが、環境が違うところで学習させたものは、なかなかうまくいかないことも起こったそうです。こういう話を聞くとすごくおもしろかったですね。

梅津:同じものが学習として得られるわけではないところに関しては、本当になかなか見れないので、おもしろいですね。

(次回につづく)