[レポート] GAM303 – コール・オブ・デューティは機械学習をどのように使ってプレイヤーとの繋がりを個別最適化していったのか #GAM303 #reinvent

2019.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

GAM303 - How Call of Duty uses ML to personalize player engagement

コール・オブ・デューティは機械学習をどのように使ってプレイヤーとの繋がりを個別最適化していったのか

スピーカー

Chris Finch - Senior SA Game Tech Evangelist, Amazon Web Services Diego Toledo - Associate Software Architect, Activision Publishing Gina Hope - Senior Director, Consumer Technology, Activision Mike Bleske - Sr. Manager, Consumer Tech, Activision

セッション概要

Join Activision Blizzard to learn how Call of Duty, one of the world’s most famous first-person-shooter game franchises, continues to engage millions of players each day by running real-time analytics and machine learning pipelines with the help of AWS Cloud services. In this technical deep dive, Senior Manager of Consumer Technology Mike Bleske and Associate Solutions Architect Diego Toledo show you how Activision Blizzard nurtures millions of players every day and personalizes their experiences to increase engagement and spending through reinforcement machine learning pipelines built with Amazon Neptune, AWS Lambda, Amazon Kinesis, and Amazon Simple Queue Service (Amazon SQS).

Activision Blizzardのセッションに参加して、世界で最も有名なファーストパーソンシューティングゲームフランチャイズの1つである"Call of Duty"が、AWSクラウドサービスの助けを借りてリアルタイム分析と機械学習のパイプラインを実行することで、毎日何百万人ものプレイヤーを引き付けている方法を学びましょう。 このテクニカルディープダイブでは、コンシューマーテクノロジーのシニアマネージャーであるMike BleskeとアソシエイトソリューションアーキテクトのDiego Toledoが、Activision Blizzardが毎日何百万人ものプレーヤーを育成し、Amazon Neptune、Lambda、Amazon Kinesis、およびAmazon Simple Queue Service(Amazon SQS)のようなAWSで構築された強化機械学習パイプラインを通じてエンゲージメントと支出を増やすために体験を個別最適化する方法を紹介します。

レポート

予約は満席で、それでも参加する機会を求めて多くの人たちが通路に並ぶセッションでした

はじめに

  • 本日はコール・オブ・デューティがどうやって機械学習をつかいこなしているかお話しします
  • 当時、「もっとローテクプレイヤーをどうやって上手にするか」ということについて話し合っていました
  • 敵をゾンビにしてみるということなど意見がでてきましたが、「プレイヤーはどの視点で見ているかということに注意をしてみよう」という話になりました
  • パーソナライゼーション、つまり、個別最適化ということを考えたときに、ゾンビが良いのかというと、そういう訳ではありませんでした
  • まず、我々が持っている技術としてはお客様と4つの接点(WEBサイト・ゲーム機本体・モバイル・Alexa)があることに着目しました
  • 最終的に我々のゴールを設定しました

  • それが、

  1. 個々のプレイヤーに合ったメッセージを提供する
  2. 先に進むための応援をする
  3. フィードバックをしながらリアルタイム性の維持をする
  • ということでした

  • 個別最適化へ現在のアプローチから大きく変化するためにすべきことは何かということを話し合いました

  • このときに挙がった意見としては
  1. メッセージの割り当てに対する人間の介入が少ないこと
  2. アイテムオプションがバラエティに富んでいる
  • ということです

  • 次に、我々の機械学習を使ったソフトウェアによる解決策を使って、次はどんなベストメッセージを届けようかと思いました

  • ベストメッセージがあれば長期のエンゲージメント、すなわち、プレイヤーとの結びつきは強くなると考えたのです
  • このとき、いつが提案をするベストタイミングかということを考えました

  • 画像のように高いエンゲージメントは、早い段階で訪れて徐々に下がっていくことが分かりました
  • さらに、このグラフがそれぞれの人によって異なることが分かりました
  • このとき、どんなメッセージを与えると、このグラフがどう変化するかを調べました

  • この調査は古典的な強化学習の手法で模索をしました

  • グラフにおけるSはステート:状態を表しますが、プレイヤーの状態が、s1>s2>s3と、どう変化するかを見ました
  • エンゲージメントが早く下がる、すなわち興味を失いやすいプレイヤーには高い報酬を与えるようにしました
  • さらに過去の経験、データからも学ぶようにモデルを構築しました
  • s3(状態3)にたどり着くようにメッセージを作り出すことをしました

  • 我々の問題は、ここで終わらず、もっと複雑でした

  • いくつかのパターンを作ってシミュレーションをしました
  • 円をマッピングして、色とサイズを使ってプレイヤーの動向を視覚化したりしました
  • モンテカルロ・ツリー・サーチを用いました
  • そうするとモデルを作る必要がありません、サンプルがあれば良いのです
  • 大きな探索空間を設計しました(AlphaGoを見てください)
  • ノイズがあるので、上手に取り除きました

  • Selection(選択) - Expansion(探索) - Simulation(シミュレーション) - Backpropagation(誤差逆伝播法)を何回も繰り返すのです

  • 計算式を示します

  • wi/ni + c √ (ln Ni/ni)

  • これが高い値となるように計数を設定し、最後に十分な時間を与えてやると結果が上下しながら収束していくのです

  • 私たちのアクションには決定的な結果はありません
  • 異なるアクションは、異なる状態に対して異なる効果を持つことができます
  • 探索木を構築するためにAmazon Kinesisを使いました
  • メッセージテーブルとイベントテーブルを使ってKinesisデータ・アナリティクスをするのです
  • トンプソン・サンプリングをします

  • 異なる多くのマシンは異なる結果を得ます
  • これを繰り返しながら、どうやったらステートを変更できるかを模索しました
  • これだけでなくABテストも行いました
  • Confidence evolution:

  • 多くのカーブがありますが、緑色のものが良い結果を得ています

  • Our system solution : An automated deployment

  • Architecuture:アーキテクチャ

  • AWS Data Pipeline -> Data Pipeline readers - >3つに分かれる

  • もちろんこの構成図に表したものだけがサポートしているすべてのアプリケーションではありません
  • Docker + Amazon ECS = Raptorという構成も取っています

  • Deployment pipeline
  1. Engineer commits and pushes branch
  2. Commit hook triggers build job
  3. Docker image pushed to ECR
  4. Engineer triggers deploy job
  5. Raptor generates incrementing version and adds tags to ECR and Git repo
  6. Raptor generates AWS CloudFormation template and submits to AWS CLI
  • ラプター・クラスター・コンフィギュレーション・ファイル
  • クラスター・アイソレーション
  • スポット対オンデマンド・インスタンス
  • オートマティック・タグ
  • これらによって、それぞれのアプリケーションが個別最適化を実現するのです
  • この中では特にオートマティック・リソース・タグです

  • ラプター・クラスター・コンフィギュレーション・ファイル

  • カスタム・アラーム
  • 1つあるいは、もっと多くのコンテナ
  • 環境変数

  • 数字で見るラプターを紹介します

  • 35以上の独立したアプリケーション
  • 80以上のECSクラスター
  • 5つの「主要な」環境: dev, stage, qa, preprod, prod
  • 200以上のスポットインスタンス
  • 50弱のオンデマンド/リザーブド・インスタンス

  • 結果と鍵となる学びについて、何がプレイヤーにインパクトを与えたか

  • ユーザーごとにどのようにプレイ時間が増えたか
  • 機械学習モデルによりプレイ時間の長さは向上しました

ー 我々のプレイヤーからの学び 1 ゲームの知識と履歴に焦点を当てたメッセージを作成する 2 好みとされないゲームモードでもすべてのプレーヤーに宣伝する 3 プレイヤーの好みに合わないメッセージは興味を失わせる 4 多様なメッセージを提供する

  • 自分自身(話者)がカジュアルプレイヤーだったし、ここにいるみなさんとは、別のプレイヤーでしたがコール・オブ・デューティは色々なタイプのプレイヤーに好まれるようなゲームになりました

まとめ

ー 埋もれたデータを掘り起こすことは非常に大事であるというメッセージがあり印象的でした - 機械学習は理論だけでなく社会実装されてきています - そこをAmazon SageMakerは支援するツールですし、クラスメソッドも一緒に支援します