ゲーム自体がゲームを学習する
桑野範久氏(以下、桑野):三宅さん、なにか他にスライドとかありますか?
三宅陽一郎氏(以下、三宅):はい。PCGRL(Procedural Content Generation via Reinforcement Learning)の実例を見せます。Julian Togelusさんというニューヨーク大学の僕の友だちの資料なんですが。今アカデミックですごく流行っているんです。
(スライドを示して)後々修正しますけど、これは人間がもともと作ったんですが、今はAIで作っていて。このダンジョンを作るAIをひたすら鍛える。そういうのをPCGRLでやります。
ちょっと原理は面倒くさいので飛ばします。とにかくなにかを作ったらすぐに評価します。
例えばダンジョンはつながっていないところはダメなので、要するに僕の言葉では「ResNet」と。ゲームを管理しているAIを作って、評価して、作って。簡単に言うと、ゲーム開発者を鍛える、ゲームデザイナーを鍛える。
これはいろいろなやり方があるんですが、作って、やって……。二次元だから本当に少しの時間を与えればできます。要するに、シミュレーションみたいなものがあれば強化学習を動かせるんですね。ビッグデータで一般的にやるみたいな、教師ありデータ学習のものだとよくやる(ことです)。だけど(これは)ノーデータで。強化学習はデータがいらないんです。むしろ作り続けるから。
それで作ったそばからチェックするんだけれど、チェックするだけじゃなくて、そのチェックを速くする。このマップは40点、このマップは10点と。AIは100点を取りたいからずっと良いAIを作る方向に学習していく。
そうすると、開発と一緒にAIも成長しているわけですね。これは別に対応の結果なので、開発者のしもべとして、彼が「帰るから明日までに違うマップを作っておけ」と言ったら、(AIが)開発者の僕(しもべ)として違うマップを作る。この中から良いのを選んで、さらにブラッシュアップしていく感じ。そういうことができます。
今日は僕のAIの例でいうと、MCS-AI動的連携モデルというのをゲームで作っています。これはどういうモデルかというと、「AI」と言ってもいっぱいあるんです。
キャラクターAI、キャラ開発ですね。これはわかりやすい。1つはスパーシャルAI、スパーシャルAIというのはナビゲーションAI。ナビゲーションAIというとナビゲーションだけというイメージがあるので、名前を変えたんですけれど。特に空間解析AI、空間解析をしないとキャラクターは動けないので。
メタAIはゲーム全体を変えるAIですね。これもAIです。このメタAIがやはりポイントで、このメタAIはもともと細部までAIがゲームの中に入っているんですが、ゲームの外のユーザーのデータが使われる。
メタAIで有名な例としては動的ペーシングといって、ユーザーの血圧とか、緊張度が低い時にキャラクターの生成を適用する。メタAIがゲームのクオリティを監視すればいい。つまりゲーム全体を支配する。
例えばゲーム内の敵を増やしたり減らしたり難易度を下げたりしてくれます。これを開発の最初に導入できないかまだ研究中なんですが(笑)。ただ、メタAIをうまく使ってGANみたいに、人間が作ったみたいなかたちができないかなと。
例えばエージェントの学習は人間が管理していますが、これはメタAIにやらせればいいかなと。メタAIはひたすらゲームの中で生成して、その上をエージェントが動いて、その学習結果をAIが管理しているみたいな。
そういうゲームそのものの知能を使って、エージェント学習なり、レベル管理なりをしていく。今日紹介した今までのデータは、いわゆるこのフレームの中でできること。ゲーム自体がゲームを学習しているみたいな。そういう話です。
ゆくゆくはゲームエンジンそのものがオートQAを持つことになる
三宅:そうなると未来のゲームをどんどん大きくしていくわけだから。「これで効率化されてできるなら今の10倍作っちゃえ」みたいな。ゲーム開発者はそういう人たちだから。
「えー、今までのレベルだったら完璧にできるわけないだろ。じゃあもっと作れよ」っていう話だから。そこの最後の砦としてやはりどうしてもQAプロセスには必要になってくるものです。
要するに、QAと開発の鬼ごっこ。「そこまでできるんだったら、QAでできないものを作ってやれよ」みたいな。開発は限界を超えようとするものなのでQAがたいへん(笑)。学習したAIを用いた自動QAをゲームの中で全部済ませちゃいなよと。ゲームのデバッグを自分のゲームの中で済ませちゃうような。そこを使いたい。そういうことを今はやっていたりします。けっこうメタ的な話。
ゆくゆくは今のゲームエンジンそのものがオートQAを持つことになります。ゲームエンジンのベースって、僕もさんざんやってきましたけど(笑)。2015年ぐらいのゲームエンジンからここ10年でオートQAはぜんぜんはいってこなかったんですね。
ゲームエンジンの中に当然オートQAがあるというのが本来のゲームエンジンの完成された姿なんですけど、作ることがまだできてない。ゲームエンジンが安定していないというのが尾をひいてるのかなと。
だからこそQAの仕事が残っているのもあると思うんですけれど。セルフチェック機能みたいなのを入れれば基本的なQAができる。ゲームが立ち上がったらオートでテストが走る。シークエスレベルのQAは別にバグじゃないと(笑)。これってでも誰が判定するのとか。できるとか、できないとか、あるいは判定基準を作るのも我々なのかなと。
AIでQAを作る時は設計を考えるのは人間がやります。もっというと、キャラクターはメタAIが管理してメタAIの設計は人間がやります。そういうふうにどんどん上のほうの仕事をあげていくというのは、これからのQAとAIの未来の時代かなと。
桑野:三宅さんありがとうございます。
序盤にAIを導入しておくことで、後半の伸びを確保してくれる
桑野:いったんここまでを受けて、なにかありますかね? 大丈夫ですか?
松木晋祐氏(以下、松木):ただの同意のコメントとかしかないけど(笑)。ゲーム作りのAIが変わるって、それをすごく効率化すると(なると)ゲームのQAも効率化をさせなきゃいけなくて、そこがラスボスというのはメチャクチャおもしろいなと思います。ゲーム以外のAI製品のテストもAI目標になるのですが、AIモデルのテストって、実はテスト自体を鍛えているのか、モデルを鍛えているのかよくわからなくなるんですね。
テストをしているのか、作っているのかどうかわからなくなってくる。なので、やはり個人的に将来的にはQAと開発は融合していくんだろうなとは思うんですが、「もしかしたら最初にそれが起きるのはゲームの分野かもしれない」とワクワクしました。何気に一番先進的な開発計画なのかもしれない気がします。
下田純也氏(以下、下田):先ほどのステージを作っていくAIであったり、あとはメタAIがレベルを監視して作っていくというところは、将来的にすごくおもしろいなと思いました。やはりゲームの制作現場って、新人の方が入ってくるじゃないですか。でもその人たちに熟練の技を継承できなくなってきた時に、熟練の技をちゃんと学習したものが熟練工みたいな支援をしてくれる。
「こうやったほうがいいんじゃないの?」みたいなものをやってくれるようになると、新人さんたちも良いゲームが作れるんじゃないのかなとは思ったので。それがうまくいけば、その熟練工が作ったところはバグも少ないかもしれないし、負担も起きにくいみたいな感じ(になること)で、意外と若い子たちにもおもしろいものが作れるチャンスがくる、未来が見えてくるのかなと思ってワクワクしていました。
桑野:ありがとうございます。森川さんはいかがですか?
森川幸人氏(以下、森川):1人ぐらい反対意見を言わないとダメだよなぁ。
(一同笑)
森川:別にひねくれて言うわけじゃないですが、自分がいつも問われていることなので良い機会だから三宅さんに質問をしようと思います。今言ったアカデミア世界での実験っておもしろいじゃないですか。一方、弊社だと具体的なクライアントさんがいるわけですけれど、クライアントさんが仕事で必要とされる精度とは、わりと大きな溝があるんですよね。
最後の最後、本番の数パーセントの精度を上げないと「実用に足りませんよね」という話になっちゃう。そこもわりと苦しんでいるところではあるので、なにか良いアイデアはないですかね?
三宅:それはクライアントさんがゲームの精度を上げるために再度の詰めは、かなりしんどいというか、無理がありますね。
森川:アカデミアの世界のクリーンな環境の中で行われる、研究と、クライアント仕事のダーティな環境はわりと大きな溝があったりするので。そこをどうクライアントを説得するとか、あるいはジャンプして乗り切る具体的な方法ってなにかあるのかなと。
三宅:やはり最後の詰めを最後になってから上げるのは不可能に近いかなと。パラメーターが何千もあって、「うっかり書いたら逆に下がるんじゃないかみたい」になると、いろいろなところが触れなくなっていって、最後に結局「この10個の中でなんとかしてください」となって「ムチャ言うなよ」みたいな(ことになる)。だからそこは逆にその最後の0.1を詰めるために、開発の序盤から作戦を立てないといけないと思いますね。
森川:なるほど。要するに、開発の初期の段階から組み込む。病気と一緒ですよね。毎月検診してもらう方が……。
三宅:建築と一緒ですね。最後に曲がっているのを気づいてから「真っ直ぐにできないの?」って思ったら「根元が曲がっているじゃん」みたいな。
森川:なるほどね。そうですね。
三宅:最終のところで間違っていると……。森川さんとかといろいろ話していましたが、人工知能開発って最初はと思われてしまうことが多い。だって最初はゲームのステージは1個しかないから。「そんな人工知能なんか入れるなよ。スクリプトで書くから」みたいになることが多い。2つに増えても「2つだからいいよ、3つでもいいよ」と。「5個目はみんな慣れてきたからスクリプトを書け」と。
(一同笑)
でもそれでやると最後に100面やらないとといけない時に「なんかちょっと曲がっているんだけど」となって「100面のどれだよ」となるんですね。序盤でAIを入れておけば、AI技術は後半に人間の手が回らないところを自動的にうまく埋めてくれるはずなんですね。
最後になればなるほどAIは逆に相乗的に効果を発揮してくれます。例えばパス検索。だから僕は2004年にゲーム業界に入った当時は日本では経路のポイントをデザイナーが置くのが普通だったって点を置かないと、このとおりにキャラクターが移動できない。「いやパス検索でやりましょう」となると、(でも)パス検索ってどう動くかわからないじゃないですか。「いやー」みたいな。
でもパス検索でやっておけば、マップがいくら増えても経路をちゃんと見つけてくれるから、後半にどんどん効果的になる。
キャラクターAIもそうで、技術的ないろいろな判断、人間の手が届かないところを埋めてくれる。最後のすごいボリュームを確保するのがAIの仕事だと思うんです。
だから、最後まで鍛えていくら時間をかけるよりも、最初に「入れさせてください」といって入れておけば、最後の伸びをAIが確保してくれるということなんです。僕も20年業界にいるので、最後の伸びを担保するには、言葉を選ばずに言うと人間よりAI(がいい)かもしれない。最後の追い上げ。人間がどんなにがんばっても伸びないところをAIがうまいことアシストをしてくれるみたいな。
その力を発揮する際には、最初に入れておかないと、最後の伸びがないから。QAの話はそういう感じかな。だから「埋められない穴を最後に人力でやってください」と言われても無理ゲーというか。
(一同笑)
三宅:原理的に無理みたいな。問題が出てQAって難しいよねと言うよりも、問題そのものが消失しないとダメなんじゃないかなと。
森川:なるほど。それはすばらしい。
三宅:一般的な話ですが、「なんでAIを入れるの?」と言われるんですよ。「誰が入れたいの?」と言われる。
森川:本当にね。
三宅:「お前がやりたいんじゃないの?」と言われるんです。そうなんですけどね。
(一同笑)
三宅:「でもあとから良いことがありますから」と言って(入れる)。やはり1回体験してもらうと、そのチームが(良さを)わかってくれるから、2回目に出すんですよ。本当にそれぐらいの感じで、最初が難しい。最初に開発の現場の特にベテランの方を説得するのが非常に難しい。
森川:そういう啓蒙活動が必要になるんですかね。
松木:でも三宅さんがお話しされているように、そういう組織もしっかり持たれている。もちろんMS(Microsoft)さんとか、大きなゲーム会社さんでそういう動きがあるのかなと思うんですけど。
先ほど三宅さんがお話しされていたような、ゲームエンジンによってものづくりが速くなるというところで。なんでもそうなんですが、テストのための仕掛けを初期で入れさせておいてくれると、本当にメチャクチャ楽になるんですよね。
これはゲーム会社だけじゃないです。なのでそこはやはりお話しされているとおり、啓蒙していかないといけないんだろうなと思います。
桑野:ありがとうございます。
(次回に続く)