イベント

2019.11.18

【CEDEC2019】「組織的にGame x AIを推進していくための方法論~『逆転オセロニア』のAIの一歩先へ~」セッションレポート

  • Facebookでシェア
  • Twitterでツイート
  • はてなブックマークでブクマする!
  • LINEで送る
  • follow us in feedly
  • Facebookでシェア
  • Twitterでツイート
  • はてなブックマークでブクマする!
  • LINEで送る
  • follow us in feedly

2019年9月4日~6日の期間、パシフィコ横浜において、ゲーム開発者向けカンファレンス「CEDEC2019」が開催されました。

本記事では、9月4日に行われた「組織的にGame x AIを推進していくための方法論~『逆転オセロニア』 のAIの一歩先へ~」について、ディー・エヌ・エー AI本部 データサイエンティストの田中 一樹とMLエンジニアである岡田 健によるAI開発のあるべき姿や、具体的な設計方法などが語られたセッションの内容を一部抜粋してレポートします。

DeNAにおけるAI開発の歴史

まず序盤では田中 一樹より、DeNAにおけるAIの開発の歴史から、上手くAIを使いこなすための手法が解説されました。

DeNA 田中一樹

DeNAでは、2016年頃から本格的にゲームAI開発に本腰を入れており、重要な分岐点となりました。特に古典的なゲームAIだけでなく、機械学習、ディープラーニングといった最新技術まで視野を広げて新しい領域を切り開いていきたいと田中は語っています。

2016年は「ゲームアプリ運用の課題解決にAIを活用できないか?」と考えた時期でもあり、未知の事象が多く、AIでできることの可能性を模索していたフェーズです。

その後に得られたAIの可能性に関する知見や経験をもとに、2017年に『逆転オセロニア』において強化学習を使ったバランス調整をするため、強いAIをつくることから始めて、最終的に複数のAI機能をリリースすることができました。

そして現在のフェーズは、見えてきた課題の解決を目指して今までの知見や技術をスケールさせ、さらに応用の範囲を拡大するために、組織的に注力しています。

AI利用の模索

続いて、目指している世界に確度高く近づくために、どのようなことを考えて実行しているのか、詳細が説明されました。

2016~2017年に取り組んだのが「AIにおけるゲームアプリ運用の課題解決へのアプローチ」です。

この取り組みの背景にあった課題は「ステージ設計の難易度調整が大きい」ことが挙げられました。具体的には、パラメータを設計し入力した後、意図通りの難易度になっているかをテストプレイする、という作業を繰り返すことで、理想的なステージの難易度調整をしていました。

このフローをAIで実装するために、ユースケースとして「強いAI」を作り、自動でテストプレイをして、その結果をもとにステージの難易度調整を適切、かつ効率的に実行することを目指していました。ちなみにここでの「強いAI」とは、「人間らしくて強いAI」とも呼べると田中は話しています。

手段としては、古典的なMCTS、強化学習、ニューラルネット、遺伝的アルゴリズムなども検証しており、社内ではほとんど研究されていない領域だったとのことです。

振り返りと学んだことに関しては、AIを学習してつくる部分については一定成功し、特定の条件下では強いAIを作成でき、さらにAIのプレイ結果を可視化することで、AIの可能性を垣間見ることができたのは、大きな収穫だったようです。

課題については、最終的に導入するまでに至らず、シミュレータ制作にも苦戦しましたが、さまざまな学びと自信を得たことは事実なようです。良かった点は、2016年の発想からAIが持つ高い可能性を見つけたことで、それはすなわち今後本格的にゲームでAIに取り組むきっかけとなる「テーマを発掘」したことになります。

『逆転オセロニア』へのゲームAI導入

スマートフォン向けゲームアプリ『逆転オセロニア』について、2つのAI機能「オセロニア道場」「オススメ編成」を開発しました。

「オセロニア道場」開発の背景は、手強いAIと戦える気軽な場所がなく、アーキタイプの特性を学ぶ場所もなかったためで、ディープラーニングなどを駆使しています。

所持駒からデッキをレコメンドしてくれる「オススメ編成」については、初心者プレイヤーがデッキの組み方で迷うことが課題であったため開発したもので、技術はアソシエーション分析、レコメンド技術を主に応用していますが、ゲーム特有のドメイン知識も活用しています。

この機能を開発するにあたり、一番の成果は実際にリリースして運用できたことであり、意味のあるAIを作れたこと。事業価値的にもAIのポテンシャルを実証できたことは大きな収穫だったとのことです。

しかし、苦労する点も多く、企画からユースケースへの落とし込み、技術への結び付けなどは試行錯誤を繰り返し、かなりの時間が必要となりました。事業貢献の観点では、AIを使うとプロダクトやプレイヤーにどのような価値を還元できるのか、議論を重ねたとのことです。

振り返りとして、AIはゲームに新たな価値をもたらすことは、この段階から確信に変わり、その確信を効率的に活かすには、組織的にAIの活用をスケールさせることを意識するようになりました。

また、PoCではなく「使えるAI」を企画から開発まで作りきり、リリースできたこと、プレイヤーから定性意見やKPIなどへのフィードバックを受けることができたことは、現在のDeNAのゲームにおけるAI開発に大きな影響を与えています。

どうすればもっと上手くAIを使いこなせるのか?

DeNAのゲーム開発におけるAI活用をどうすれば加速させられるかを考えたときに、今まで得た経験を無駄にせずスケールさせていくことが最も重要だと、田中は語っています。

『逆転オセロニア』だけでなく、さまざまなゲームタイトルでAIをうまく活用することができれば、DeNAはより強い組織に成長することができると考えているようです。

ここでのキーワードは、現場レベルで課題を探索する取り組み「Bottom Up」とAIを計画的にスケールさせる取り組み「Top Down」の2つになります。

「Bottom Up」は、まだ誰も気付いていない、埋もれているユースケースを探索する意味を持ち、「Top Down」はできそうなことがある程度分かっていて、価値も大きそうなユースケースを計画的に推進していく意味を持ちます。

「Bottom Up(AIでできることの探索)」

「Bottom Up」の目的は、ゲーム領域で目の前にある事業課題を、データおよびAIの力で解決することであり、サービス・データに触れている各メンバーが双方向で協力して、目的達成のために動くことが重要です。

特定のゲームタイトルだけでなく、マーケティングやCS(カスタマーサポート)など広範囲の事業と連携すること、新技術やユースケースの発掘の中で潰れてしまう取り組みも一定許容するなど、重要なことも多数明かされました。

また、明確な戦略もなく、課題や案件の探索を行うと、それぞれのメンバーの責任分界点が非常に不明瞭になり、案件を進めづらくなるため、しっかりとあるべき姿や適切な役割分担を定義して、関係者の認識を揃えることで、効率化を図ります。

成功や失敗にこだわらず、しっかり振り返って次に繋げることができる体制をつくるために、AIや機械学習、データサイエンスの案件を、円滑にすすめるための推進フローも社内で策定しています。

これにより、取り組む価値が不明確であったり、明らかにAIでは不可能な無理難題な案件が進んでしまうことを、回避できるようになっています。このような地道な地盤作りを行うことで、簡単ではないAI開発を持続可能な状態にすることが可能になりました。

この取り組みを進める中で得られた価値として、今まで見えてこなかった課題を幅広く発見することができ、組織としてAIの活用の幅を広げることができたことが挙げられます。

また、さまざまな関係者を巻き込んで議論を重ねたため、組織レベルでリテラシーが向上し、タイトル側から「こういうことを実現したい」と相談がきた場合にも、必要十分なAIリテラシーがあるため議論もしやすくスムーズに開発が進みます。

共通の推進フローを整備したため、導入プロセスが確立し、スムーズな導入の実現が可能になってきたとのことです。

「Top Down(計画的にAIを推進)」

ここからはMLエンジニア岡田 健にバトンタッチし、「Top Down(計画的にAIを推進)」についての発表がなされました。

DeNA 岡田健

「Top Down(計画的にAIを推進)」とは、前述された「Bottom Up(AIでできることの探索)」とは対照的に、事業インパクトが出せそうな領域で計画的にAI活用をスケールさせる動きのことです。

組織的な動きをするために、DeNAではAI推進チームを発足しました。ゲームの分野でAIの応用を加速させていくチームになります。

計画的にスケールさせるためには、まず過去の歴史を学ぶことが重要です。推進チームでは社内外問わず、CEDECやGDCなどの過去の事例を蓄積しています。ユースケースは課題に対して何らかの技術をもって結果に導くものであり、他社が抱える課題やその解法などを調べた上で、組織に還元する動きを大事にしています。

課題を抱える各プロジェクトの開発現場にヒアリングし、過去の事例をどうやって適用するか、工夫するか、などの提案をして、その後適切な専門家とつなぎます。

また、DeNAにはAIシステム部というAI専門家集団を擁しており、Kagglerやコンピュータビジョンの専門家なども所属しています。自動化を推進している部署ではさまざまな専門家と、ゲームの開発をつなぐ架け橋となることを意識しています。

過去の『逆転オセロニア』チームには、タイトル側と専門家しか存在しませんでしたが、現在はAI推進チームが橋渡しの役割を担い、Kagglerが問題を解決しやすいようにセッティングしたり、シミュレータを制作してサポートします。

このチームでは、機械学習の勘所、ゲームのドメイン知識やゲームの開発経験だけでなく、エンジニアリング力も必要となります。

具体的には、最も重要なのはゲーム事業を把握して、力を蓄積して何ができるかを判断することです。

Simulator

続いては、「Top Down」の動きの中でも、技術的に中心となる「Simulator(シミュレータ)」について語られました。

ゲームに機械学習を応用させる中でSimulatorはひとつの大きな役割を担っています。AIを絡めた取り組みで必要なのは「課題とユースケースの設定」で、Simulatorはそれを解決する手段であり、技術となります。

Simulatorについて「初期段階からちゃんとつくる」「ビューとロジックを分離した作りにする」ことは当たり前で、ユースケースありきで考えると「ゲーム本体とAIの境界」「要件定義が大事」と考えられます。

そこで「Simulator=境界」とは何なのか、『逆転オセロニア』で運用中のオセロニア道場では、インバトルで強いAIを教師あり学習で作ることが目的でした。

具体的なユースケースは、強いAIと自由に対戦可能な環境を作るために、プレイヤーの棋譜ログを使用して教師あり学習で強いAIを作ることです。

『逆転オセロニア』では、キャラクターやスキルが定期的に追加されます。これに対して常にAIの最新化をしたいとき、その設定で境界には何が必要になるでしょうか?

まず「内部構造」について。オセロニア道場はGCPを利用して作られており、ゲームの端末から棋譜を推論APIへ、そこから特徴量抽出APIで特徴量に変換し、AIモデルにより推論して出た打ち手の結果をクライアントに返送します。

そのフローの中で「推論API」「特徴量抽出API」はゲームとAIの境界となります。『逆転オセロニア』では、特徴量抽出は今の盤面を再現して、そこから情報を抜き出します。

情報には「どのマスに黒い駒が置かれているか」「手札にどんなキャラクターがいるのか」を数字の配列で表し、それをもとにディープラーニングの行列計算をします。

棋譜には盤面やデッキの情報などが記載されており、特に重要なのが「各ターンに何が起こったか」という事象です。1ターン目にどの駒を置いたのか、どれくらいのダメージが出たのか、などバトル開始時から順を追って、現在の盤面の状態を復元します。

この仕組みはPythonで開発していますが、もし仮に最初から作り直すとした場合、棋譜ログをあるべき設定にすること、バトルロジックの二重管理をやめることを実現したいと岡田は話しました。

このような課題をハンドリングするためのキーワードは「リプレイ可能であること」。課題解決のため、棋譜はバイナリ形式で、特徴量抽出はゲームのバトルロジックをリプレイ可能にしておき、それを使って棋譜をビューなしでバトルリプレイして特徴量を抽出します。

バトルロジックは入力を出力に変換する機械と呼べるもので、直接のインタラクトはしません。

『逆転オセロニア』を例にすると、まずプレイヤーからの「どこに何の駒を置いたのか」という入力コマンド情報をバトルロジックが現在の盤面に置き、ダメージ計算をして内部状態を変化させます。

その結果、どういった描画をするのかを「描画ロジック」に指示します。シミュレータ側では入力コマンドは棋譜ログとして保存、学習段階では棋譜ログをバトルロジックに流し込み、同じコマンドを入力して特徴量を抽出します。

バトルロジックをリプレイ可能な仕組みに作っておけば、同じ入力なら内部状態や後段の出力も同じになるはずで、これが「リプレイ可能」な機能が必要で、重要な理由になります。

作業フローに関して重要なのはAIの学習だけではないということ。AIモデルに対してもAIの専門家が品質保証をしなければなりません。

まずAIの学習については、バトルロジックをwrap(ラップ)した「特徴量抽出リプレイヤー」を使用します。ここでは複数のマシンを並べての高速化が可能です。ここでのアウトプットは「学習したAIモデル」になります。

勝率評価に関しては、AIの学習でアウトプットされたAIモデルを、NPCや既存の他のモデルと対戦させるという「ふるい」にかけ、この時点で弱いモデルは捨てられます。ここでの境界は「対戦サーバー」になります。

勝率評価で得た対戦ログは打ち手の評価に使用されます。打ち手の評価とは、AIが打った手を人間が実際に目で見て確認し評価することです。その段階でなぜ勝率が上がらないのか、どんな状況のときにどんなパターンで負けるのか、などを分析します。

このイテレーションをできるだけ短く実行するために、ゲームデバッグ機能のひとつとしてバトルのリプレイ&観戦機能が必要です。ここまで勝ち残ったモデルは、試し打ち(人間 vs AI)を経て、AIコンテンツにデプロイします。

以上のように、ひとつのユースケースにおいても、ゲームとAIの境界は多数存在します。それらをすべて機能させる必要があり、そのために(シミュレータで)重要なのがリプレイ可能であることです。

最後に岡田は「AI-native」なゲーム開発は面白いが、ゲーム開発者の設計や実装による協力が不可欠であり、密に連携して開発を続けていきたいとの言葉で、セッションを締めました。

取材・文・撮影:細谷亮介

GeNOM(ゲノム)とは

DeNAのゲームクリエイターを様々な切り口で紹介するメディア(運営:株式会社ディー・エヌ・エー)です。ゲーム開発の現場で生まれる様々なエピソードや、クリエイター紹介、イベント紹介などを通して、DeNAで働くメンバーの”ありのまま”をお伝えしていきます。

GeNOMの最新情報は、公式Twitterアカウントにて確認いただけます。ぜひフォローをお願いします!