[レポート] GAM301 – どうやってRovioは機械学習を利用してAngry Birdsに雲の中での飛び方を教えるのか #GAM301 #reinvent
GAM301 - How Rovio teaches Angry Birds to fly in the cloud using ML
どうやってRovioは機械学習を利用してAngry Birdsに雲の中での飛び方を教えるのか
※ 本セッションのタイトルはクラウドビジネスと機械学習の関連性と、アングリーバードが雲の中を飛ぶという2つの意味を狙って付けたタイトルと思われるので意図的に後者で訳しました
スピーカー
- Griffin Parry - Head, EMEA BD, AWS Game Tech, Amazon Web Services
- David Mason - SVP Technology, Rovio Entertainment
- Asko Relas - Senior Data Engineer, Rovio Entertainment
セッション概要
On Angry Birds’s tenth birthday, join Rovio Entertainment to learn how one of the world’s most recognizable game franchises came to life with the help of AWS Cloud services and continues to entertain millions of gamers using machine learning. In this session, David Mason (SVP of technology) and Asko Relas (senior data engineer) show how Rovio supports millions of players worldwide and serves thousands of requests per second. Discover how, with four billion analytic events captured per day, Rovio uses machine learning to predict and deliver the perfect level of fun for players.
Angry Birdsの10歳の誕生日に、Rovio Entertainmentセッションに参加して、AWSクラウドサービスの助けを借りて、世界で最も有名なゲームフランチャイズの1つがどのように生まれ、機械学習を利用して何百万人ものゲーマーを楽しませ続けてきたかを学びます。 このセッションでは、David Mason(技術担当上級副社長)とAsko Relas(上級データエンジニア)が、Rovioが世界中の何百万人ものプレーヤーをサポートし、1秒あたり何千ものリクエストを処理する方法を示します。 1日あたり40億件の分析イベントを取り込むことで、Rovioは機械学習を利用して、プレーヤーに最適なレベルの楽しみを予測し、提供する方法を見つけ出します。
レポート
はじめに
昨年re:Invent 2018ではRovioからはVesaさんというシニアエンジニアの方が登壇されていましたが、今年は別の視点からとなります.
参考:re:Invent 2018
[レポート] How Rovio Uses ML to Acquire, Retain, and Monetize Users #reinvent #GAM304
まずはAWSのGriffinさんからのご紹介
- AWSのGriffinです
- 冒頭ですがRovioについてコンテクストを紹介します
- RovioはAngry Birdsで有名な会社ですが、機械学習を使っていることでも有名です
- ゲーム産業では非常に技術的に進んでおり、今日はDavidとAskoの二人を紹介できることが楽しみです
アジェンダ
David Mason - SVP Technology, Rovio Entertainment
- Happy birdday!:ハッピーバードデイ
- Beacon:Our cloud services:ビーコン:我々のクラウドサービス
- Our machine learning(ML)story:我々の機械学習物語
- Use case: Reinforcement learnig (RL) for level difficulty prediction:レベル難易度予知のための強化学習
- Takeaways:持ち帰り
Happy Birdday!:ハッピーバードデイ
- 今年アングリーバードは10周年を迎える
- RAGE RIDERという、マイクに向かって怒りの声を吹き込むとスピードに変更されるキックボードビデオの紹介があった
- RovioはGAMES FIRST ENTERTAINMENT COMPANYということを標榜している
- 現在はカジュアルプレイヤー向けからコアプレイヤー向けまで異なるジャンルのゲームを開発している
- Angry Birds Dream Blast のデモをごらんください
Beacon: Our cloud services:ビーコン:我々のクラウドサービス
- どうやってゲームエンジンを作っているか
- 何年か前に始めたクラウドの話をする
- ビーコンというコンソールである
- どうやってプレイヤーの体験を最大化することが出来るかを考えた
- AWSはRovio好みのクラウドプロバイダーである
- 非常に作りやすい、使いやすい機能が多くとりそろえられている
- ビーコンの操作画面
- 分析結果だけでなく多くの機能を備えている
- マネージドサービスだが ABテストや、仕様に関連するブログの投稿などが一目瞭然となっている
- 機械学習のモデルも、このビーコンから見ることが出来る
- LiveOpsカレンダーもあり、いつプレイヤーのためのイベントがあるか視覚的に表示されるようになっていいる
- 統計データを見ることもできる
- Game server infrastructure: Reusable templates
- コストも下げることが出来ます
- コンテナを使い、オートスケールする方法などは大体どこも同じですよね
- Game server microservices: Chirp
Our machine learning (ML) story:我々の機械学習物語
ゲームにおける機械学習・AI
- ゲームアイデア > ゲーム開発 > 配信(流通) > マーケティング > 運用 > 収益化
Rovioの目指すところ:あなたのためにゲームを作り込む
- Rovioは2011年からアングリーバードのデータを収集し始めたが、開始当時は広く押さえることに必死だった
- 今は全体の焦点を絞りながら、徐々に個別最適化になってきた
- 年々その精度は増している
RL for level difficulty predictionレベル難易度予想のための強化学習
- 昨年は、Rovioの同僚がライブオペレーションなどについてお話をしました
- 今回は我々がどうやって強化学習をしてきたかを話します
プロジェクトの概要
- パズルゲームのレベルを絞り込む設計は、バランスを取るための行為である
- 難易度が高すぎると、報酬を高く獲得することができるが、プレイヤーは離脱する
- 簡単すぎるレベルはゲームが退屈で離脱する
- 新ステージを作るときに、そのレベルのバランスを取るには、レベル設計者による繰り返しのテストが必要である
- 未リリースのレベルの難しさを予測できること
- 最も先進的なプレーヤーのための一貫した経験
- 手動テストに費やす時間を短縮
エンドユーザーの視点
- これらについてもBeconで見ることが出来る
ソリューション・アーキテクチャ
(ぼけた画像しかなくてすみません)
- slackと連携してBEACONダッシュボードにデータが届くようになっている
探索を異なるボットを使って行う
- 4種類の探索方法については、それぞれメリットとデメリットがある
- 表のMCTSはモンテカルロ法を意味する
- ヒューリスティック
- 探索木
- 模倣学習
- 強化学習
強化学習:Reinformcent learning (RL)
Agent > Action > Environment> Rewardを繰り返す
- 画面の右側を見てもらうと分かるが、ヒートマップによって、次にプレイヤーが触りそうなところを色で表示している
- こうやってプレイヤーがタッチするところを機械学習で予測していく
Rovioの強化学習
- RovioはさらにディープQラーニングをしている:
- 生のグラフィックスの代わりに、機能的に設計されたゲーム状態を作り出す
- 深い畳み込みネットではなく、先送りされたニューラルネットを提供
- ダブルQラーニングによる共闘
データ収集
- Level 1から始まり、データを取り続ける
- 通過率などを設定しつつデータを取る
データ収集2
- データセットの収集には時間がかかる
- 最も正確な統計情報を得るには、ボットが最初にレベルを設定してから、1,000回再生する必要がある
- 1回のゲームラウンドでは、高速化された物理演算でも5〜10秒かかってしまう
- レベルを順番に再生してデータセットを収集するには、1年以上かかってしまう
- 解決策
- ゲームバイナリとボットPythonソースコードをDockerコンテナにバンドルする
- AWS Batchを使用してレベルごとに独自のコンテナーを実行する → データの整理には、任意の数のレベルで2日間かかる
- 1つのコンテナ内でゲームのマルチプル並列インスタンスから学習する → データ収集には、任意のレベル数で4時間かかる
並行処理された機械学習
- 単一のc5.2xlargeを使っており8倍の並列性
- エージェントの数を増やすと、学習者がボトルネックになる
- さらに拡張可能:
- GPUを使用する(例: p3.8xlarge tiwh 32 vCPU
- 複数マシンを使ったスケールアウト
回帰モデリング
- ボットから収集された統計情報
- 通過率
- 左へ移動した数
- レベル目標をクリアした数
- さらなる動き
- 機械学習ツールキットとしてScikit-learn
- XGBoostによる最高の予測精度
- ツリーベースのアルゴリズムは説明できない → 不可能/合格というレベル間の追加の分類が必要
予測の精度
- 黄色とピンクの線がある
- ピンクが予測で黄色が結果
- ほとんどそれに近い形を実現できた
ここから難易度と攪拌度合いと売り上げの関連性を予測する
難易度と攪拌度合いの関連性
- 攪拌度レートの表示Level 300と、Level 800では異なることが分かる
- Revenueレートで見るとレベルが高い方がお金を使っていることがわかる ※ ピントが合った写真が撮れなかったため割愛するが、縦軸に難易度、横軸に通過率を取った上記画像のような反比例図
事例の概要 * AWS Batchは、例えばボットが1,000レベルを同時に処理する並列ワークロードに最適である * 並列化は、十分な速度での強化学習をビジネスで利用する局面に実装するための鍵となる * 次のステップ:手続き型コンテンツの作成?
Takeaways:持ち帰り
アンフェアな優位性を作らない
- 大切なのはプレーヤー
- 分析は基本
- ビジョン、実験、学習、製品化を実現しましょう
- 機械学習はゲームの世界を変えます
顧客体験
- さらには他のプレイヤーをベンチマークにして、もっとゲームをよくしていく必要がある
まとめ
- 機械学習を使いこなすことで得られる利点が多く気付かされるセッションでした
- 機械学習という理論を社会実装するのは難しくて、それでもソフトウェアの世界では実現できているというのが感銘を受ける点でした
- 技術が先か、アイデアが先か分かりませんが、やってみて得られる知見を求めるRovioはすごい