Slide 1

Slide 1 text

Game Vertical Session ミクシィ新卒が⼊社半年で Amazon SageMaker を使って 機械学習を対戦型ボードゲームに導⼊してみた 渡辺 莉央 mixi, Inc.

Slide 2

Slide 2 text

⾃⼰紹介 n 渡辺莉央 n XFLAG開発本部 たんぽぽグループ n 2018年新卒 n 学⽣の頃は機械学習を⽤いた応⽤研究

Slide 3

Slide 3 text

ミッション

Slide 4

Slide 4 text

本プロジェクトチームのミッション • 実運⽤プロダクトの改善に機械学習を導⼊する Ø モデルケースを作る Ø ナレッジを蓄える • 低コストで実装・運⽤可能な形を検討する Ø 他サービスの容易な導⼊

Slide 5

Slide 5 text

今⽇の内容 • ゲームバランス調整を⽬的とした、ファイトリーグへの 機械学習導⼊の準備〜導⼊までのお話 Part1: ゲームの紹介及び機械学習導⼊に⾄るまで Part2: 教師あり学習アプローチにおける機械学習の導⼊実例 Part3: 強化学習アプローチにおける機械学習の導⼊実例

Slide 6

Slide 6 text

ゲームの紹介 及び 機械学習導⼊に⾄るまで Part1

Slide 7

Slide 7 text

ファイトリーグとは

Slide 8

Slide 8 text

ファイトリーグとは LEADER HANDS LEADER LEADER HANDS LEADER HANDS

Slide 9

Slide 9 text

ファイトリーグとは リーダーと9体のメンバーで デッキを組む ブランド(=チーム)の中から ファイターを選ぶ 各ファイターはスキルを 持っていることがある S級以上のファイターは リーダー専用の必殺技 【ファイティングバースト】 を所持

Slide 10

Slide 10 text

• 1ピリオド約2週間のシーズン制 • シーズンごとにキャラクターが 追加される ファイトリーグとは

Slide 11

Slide 11 text

カード単体が強⼒すぎた⼀例 現在は与えるダメージを 500 -> 300に下⽅修正 組み合わせによる強⼒なコンボが発⽣した ⼀例 リーダースキルの効果を 永続的 -> ⼀時的に下⽅修正 ファイトリーグの課題 – 新規ファイターにおけるバランス調整の難しさ

Slide 12

Slide 12 text

“強⼒な”ファイターは悪なのか • 環境が⼀極化し始めるとアクティブユーザーが減少 • 強⼒なファイターを実装すると、ガチャの総回数もUP 環境を⼀極化するほどではないが、 ユーザーには強⼒なファイターと認識してもらえる “ギリギリまで強⼒なファイター”の実装が理想

Slide 13

Slide 13 text

“ギリギリまで強⼒なファイター”を実装するには • 環境を適切に把握し、新ファイターに適切なパラメータを設定 する Ø テストプレイなしには困難 Ø 新規ファイター実装の度に何百体といる既存ファイターとの 組み合わせをチェックしなければならない Ø ⼈⼿でやるのはかなりのコスト

Slide 14

Slide 14 text

“ギリギリまで強⼒なファイター”を実装するには • ⼈の動きに近いAI同⼠でバランス調整のテストプレイが 出来るようになれば⼈⼿のコストは下がり、 新ファイターの強さを微調整出来る 機械学習を⽤いて、⼈の動きに近いAIの構築を⽬指す

Slide 15

Slide 15 text

機械学習実装にあたって • 代表的な機械学習アプローチ 教師あり学習 ü 学習データと答え(教師)のセット • 必要なもの • メリット ü 学習が比較的容易 • デメリット ü 教師以上の強さにはならない ü 新スキルへの対応に弱い 強化学習 ü CPU同士での自動対戦環境(&報酬) • 必要なもの • メリット ü 強さの上限がない ü 新スキルにも対応 • デメリット ü 学習にかなりの時間がかかる ü 報酬設計の難しさ

Slide 16

Slide 16 text

機械学習実装にあたって • 双⽅の⼿法を検証 • 効果と限界が確認できた段階で、組み合わせを検証 Ø 教師ありモデル学習を強化学習の事前学習とし、重みを転⽤ 教師あり学習 ü 学習データと答え(教師)のセット • 必要なもの • メリット ü 学習が比較的容易 • デメリット ü 教師以上の強さにはならない ü 新スキルへの対応に弱い 強化学習 ü CPU同士での自動対戦環境(&報酬) • 必要なもの • メリット ü 強さの上限がない ü 新スキルにも対応 • デメリット ü 学習にかなりの時間がかかる ü 報酬設計の難しさ

Slide 17

Slide 17 text

教師あり学習アプローチにおける 機械学習の導⼊実例 Part2

Slide 18

Slide 18 text

事前準備 • 教師あり学習には学習データと答えが必要 Ø 最上位レートに属するプレイヤーの、⼿番毎における盤⾯状態と 配置した場所(プレイログ)を記録する機能の実装

Slide 19

Slide 19 text

プレイログの記録 • Fluentdを使って⼿番毎の盤⾯状態、周辺情報、配置情報を S3に記録 Amazon S3 Bucket Client AWS Server 配置情報 左から2枚⽬ を5番 ターン数 ⼿札 FB発動 可否 周辺情報 ・ ・ ・ 盤⾯情報 各マスの 情報 Game Logic (Elixir) Fluentd

Slide 20

Slide 20 text

盤⾯情報のCNN ネットワーク構成 スキル情報の ベクトル化 周辺情報の DNN 選択可能⾏動の確率

Slide 21

Slide 21 text

ネットワーク構成 • 盤⾯の特徴抽出には2次元の特徴抽出が⾏えるCNNを採⽤ • 周辺情報にはDNNを採⽤、盤⾯情報とConcatして再度NN • Output層でSoftmaxを通し、各要素の選択確率を出⼒ ターン数 ⼿札 FB発動 可否 周辺情報 ・ ・ ・ 盤⾯情報 各マスの 情報 配置情報 左から2枚⽬ を5番 ・ ・ ・ CNN DNN field character Embedding hands character Embedding Multiple Dense Layers 左から 2枚⽬を5番 左から 2枚⽬を1番 Compute Loss

Slide 22

Slide 22 text

“スキル”をどのように扱うか • ファイトリーグでは、キャラクターのスキルが試合を⼤きく左右する • ⼈は⾔葉でスキルを理解しているが、機械は数値でしかスキルを理解 できない • 単純にIDだけを使って学習させようとすると、モデルは数値の差を距離 として認識してしまう • 新スキルの追加にもある程度対応できるようにしないといけない Ø 『ID:100, 地雷を置く』『ID:200 地雷を2個置く』 は100の差

Slide 23

Slide 23 text

“スキル”をどのように扱うか 1 2 3 スキルIDをEmbeddingしてベクトル化 スキルテキストをEmbeddingしてベクトル化 スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化 • 3つのアプローチを検証

Slide 24

Slide 24 text

1. スキルIDをEmbeddingしてベクトル化 • ネットワークにEmbedding layerを組み込み、スキルIDを渡す Ø (乱数で⽣成された)固定次元のベクトルに変換 • ベクトルは、モデルが教師との損失を計算していく結果で最適化 Ø (配置予測を学習させているため)ある盤⾯において似たような置き⽅をされるキャ ラクター同⼠が類似 ID [0.3, 0.5, 0.2 0.9, 0.4] Embed ID 417 232 [0.2, 0.8, 0.6 0.1, 0.2] 類似度

Slide 25

Slide 25 text

2. スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化 • スキルID⾃体は抽象的な表現 • 実際の細かいスキルデータは⽊構造 Ø 効果範囲、対象ファイター、ダメージ量等は固有のIDを所持 • これらスキルデータを個々にEmbedding Ø 新スキルでも全く新しいスキルでない限り対応できるように [0.1, 0.6] Embed ID [0.3, 0.2, 0.5 0.4,] [0.7, 0.7, 0.2] ID 532 range : 7 (攻撃範囲内の) target : 13 (全ての味⽅メンバーの) value : 28 (攻撃⼒100UP) id : 532

Slide 26

Slide 26 text

3. スキルテキストをEmbeddingしてベクトル化 • ヒトはテキストからスキル効果を推定している • スキルテキストはカードゲーム特有の⽂法になっており表記揺れが少ない • ⽂章から固有表現を獲得するDoc2Vecを⽤い スキルのテキスト⾃体をEmbeddingしたらどうなるだろうか Ø テキストが近いものの類似を⾼精度に取得できたことを確認 Ø モデルの学習には最適化されていないため精度⾃体は若⼲低下 攻撃範囲内のすべて の味⽅メンバーの 攻撃⼒100アップ [0.7, 0.8, 0,2, 0.5, 0.1] Embed ID Doc2Vec Skill Text

Slide 27

Slide 27 text

3. スキルテキストをEmbeddingしてベクトル化 • ⼀般的なスキル

Slide 28

Slide 28 text

3. スキルテキストをEmbeddingしてベクトル化 • 個性的なスキル

Slide 29

Slide 29 text

スキルEmbedding検証結果 • 3つのアプローチを検証 1. スキルIDをEmbeddingしてベクトル化 Ø 似たような置き⽅をされるキャラクター同⼠が類似 2. スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化 Ø スキルの粒度が細かくなり、新スキルでもある程度の対応が可能に 3. スキルテキストをEmbeddingしてベクトル化 Ø 新スキル含め全てのスキルを表現できるが、精度が課題 今回のモデルでは(教師あり、強化学習双⽅とも)2番を採⽤

Slide 30

Slide 30 text

Training Data (tfrecord) 学習済みモデル Ohio Region Tokyo Region 学習済みモデル コピー アーキテクチャ Notebook Instance Training Instance (p3 Instance) ローカルマシン

Slide 31

Slide 31 text

Training Data (tfrecord) 学習済みモデル Ohio Region Tokyo Region 学習済みモデル コピー アーキテクチャ Notebook Instance 推論 API (p3 Instance) Game Logic (Elixir) CPU思考処理で推論APIに リクエストを投げる deploy 推論結果を 選択確率で返す Training Instance (p3 Instance) ローカルマシン

Slide 32

Slide 32 text

教師ありモデル検証結果 • 教師データに対する正解率は約58% Ø 1ターン⽬や、相⼿リーダーを攻撃すれば勝ちといった場⾯の配置は好みの差が出る • 現状最強のルールベースAIに平均勝率6割を達成 Ø ルールベースAIは全ての盤⾯状態をスコアリングし最も⾼いスコアの指し⼿を⾏う • 学習データが増えるほど強さが上がっていった Ø 特徴量数が多く、不確定要素が多い環境ではデータ量がより重要 • テストプレイで、ルールベースAIではしないような配置も⾒られた Ø こちらにリーサルが無い時、攻めずに⾃分の盤⾯を固めて相⼿の邪魔をする

Slide 33

Slide 33 text

¥ ツール化

Slide 34

Slide 34 text

導⼊効果 • 教師あり学習のモデルを⽤いた⾃動対戦によって、 より⼈間に近いAI同⼠を⽤いて現在の対戦環境の バランスを把握できるように Ø 現状の対戦環境を適切に把握する⼿助けに Ø 新スキルへの対応もEmbeddingの⼯夫によってある程度対応可能

Slide 35

Slide 35 text

強化学習アプローチにおける 機械学習の導⼊実例 Part3

Slide 36

Slide 36 text

事前準備 • 強化学習には(⾃分で学習データを作るため)CPU同⼠の⾃動 対戦環境が必要 Ø ゲームロジックをサーバー側に積んでいる利点を⽣かし、独⾃環境 (FightLeagueEnv)を構築

Slide 37

Slide 37 text

独⾃環境の構築 state, reward, done = / env.step(action) state, reward, done GameLogic (Elixir) http • ゲームロジックは全てサーバー側 Ø クライアントを通さずゲーム進⾏が可能 • モデルとサーバーの橋渡しを⾏うFightLeagueEnvを構築 Ø 強化学習の共通インタフェースを提供しているOpenAI Gym を利⽤ actionに従ってゲームを進⾏ action 強化学習ロジック FightLeagueEnv TensorFlow OpenAI Gym

Slide 38

Slide 38 text

OpenAI Gym のState進⾏ 先⼿ 後⼿ 相⼿のターンが終わらないと 次の⾃分の状態がわからない ⾃分のターン 相⼿のターン 次の⾃分のターン

Slide 39

Slide 39 text

OpenAI Gym 環境側の構成 • ⽚⽅のプレイヤーのAIは固定 Ø 固定するAIはルールベースAI or 学習済みモデル • 学習するAIをシングルに • 固定したAIの強さを学習の経過によって変えていく Ø カリキュラム学習

Slide 40

Slide 40 text

アプローチ • 次の2軸で検証 1 2 強化学習単体でどこまで学習できるか 教師あり学習モデル転⽤後の学習効果

Slide 41

Slide 41 text

1. 強化学習単体でどこまで学習できるか • 独⾃にRLロジックを最⼩限の構成で実装し、検証 項⽬ 構成 アルゴリズム Deep Q Network ネットワーク構成 教師ありモデルとほぼ同じ 報酬 勝ちに1、負け or 選択できないマ スを選択した場合-1 対戦相⼿ ランダム デッキの数 数種類 出⼒数 49 (本来は637)

Slide 42

Slide 42 text

結果と課題 • 勝率は9.5割程で学習成功 • 多数の強化学習アルゴリズムの実装に時間をかけるのは⾼コスト Ø 各アルゴリズムの検証スピードをできる限り上げたい Ø パラメータの調整や、現環境に合わせた学習の⼯夫部分に注⼒したい Ø ミッションともそぐわない 結果 課題

Slide 43

Slide 43 text

SageMaker RLを採⽤ • AWSさんからSageMaker RL Betaテストのお話を頂いた Ø SageMaker RLの構成に乗っかることで、アルゴリズムの実装部分を切り離す

Slide 44

Slide 44 text

SageMaker RL 構成 • RL Environments Ø OpenAI Gym interface に則った Custom Environment • RL Toolkit(RL フレームワーク) Ø RL-Ray RLLib • Deep Learning Frameworks Ø TensorFlow Amazon SageMaker Reinforcement Learning Robotics Industrial Control HVAC Autonomous Vehicles Operators Finance Games NLP End-to-end examples for classic RL and real-world RL application Amazon Sumerian Amazon RoboMaker AWS Simulation Environment DQN PPO RL-Coach EnergyPlus RoboSchool Open Source Environment PyBullet … Bring Your Own MATLAB& Simulink Commercial Simulators Custom Environments Open AI Gym RL-Ray RLLib HER Rainbow … APEX ES IMPALA A3C … Open AI Baselines TRPO GAIL … … TensorFlow Single Machine / Distributed Training Options Local / Remote simulation CPU/GPU Hardware MXNet PyTorch Chainer RL Toolkits that provide RL agent algorithm implementations SageMaker supported Customer BYO RL Environment to model real-world problems SageMaker Deep Learning Frameworks

Slide 45

Slide 45 text

Sagemaker RL 構成 • 下記の構成で検証 項⽬ 構成 アルゴリズム Rainbow/Ape-X ネットワーク構成 教師ありモデルとほぼ同じ 報酬 勝ちに1、負け or 選択できない マスを選択した場合-1 対戦相⼿ ランダム -> 攻撃特化-> 1⼿番最適 デッキの数 数種類 出⼒数 637

Slide 46

Slide 46 text

検証結果 ステップ毎の平均報酬獲得量 ステップ数 平 均 獲 得 報 酬

Slide 47

Slide 47 text

検証結果 vs ランダム : 数時間で報酬平均が0.95まで到達 Ø 勝率は約9.9割 ほぼ負けることはない ステップ数 平 均 獲 得 報 酬

Slide 48

Slide 48 text

検証結果 vs 攻撃特化(Ape) : 学習は緩やかに進むが時間がかかる Ø 勝率は約4~4.5割 想定より伸び悩む ステップ数 平 均 獲 得 報 酬

Slide 49

Slide 49 text

検証結果 vs 1⼿番最適(Intermediate) : 学習が停滞 Ø 勝率は約2.5~3割 最低限の学習しか進まず厳しい結果 ステップ数 平 均 獲 得 報 酬

Slide 50

Slide 50 text

強化学習単体での結果・考察 強化学習単体での学習を実運⽤するのは厳しいと判断 • 満⾜がいく勝率を得ることができなかった Ø 探索ポリシーや報酬設計など改善できる余地はあり Ø カリキュラムとデッキ環境の問題点もあった • 学習に時間がかかりすぎてしまう

Slide 51

Slide 51 text

2.教師あり学習モデル転⽤後の学習効果 • 下記の構成で検証 項⽬ 構成 アルゴリズム Rainbow/Ape-X ネットワーク構成 Output層前までの 教師ありネットワーク + Dense 報酬 勝ちに1、負け or 選択できない マスを選択した場合-1 対戦相⼿ 1⼿番最適 デッキの数 数種類 出⼒数 637

Slide 52

Slide 52 text

検証結果 ステップ毎の平均報酬獲得量(vs 1⼿番最適) カリキュラム学習における vs 1⼿番最適 • 平均報酬は0.2に到達し、カリキュラム学習を⼤きく上回る Ø 勝率は約6~6.5割 現在の教師ありモデルの勝率に近いレベル ステップ数 平 均 獲 得 報 酬

Slide 53

Slide 53 text

強化学習モデル検証結果 強化学習単体 • ファイトリーグの様なゲーム環境であっても、⼯夫次第により 強化学習単体で学習が可能 • ⼀⽅、学習にかなりの時間がかかる点も 教師あり転⽤ • 教師ありで学習した重みを再利⽤することによって 学習が促進されることを確認 • 同じ問題設定で教師ありと強化学習が可能であれば、重みの転⽤が可能

Slide 54

Slide 54 text

フレームワーク採⽤にあたって • フレームワークの制約を受けることが度々あった Ø フレームワークにはない機能を実装するためのコストが⼤きい Ø 打ったら違反となる⼿をフィルタリングする処理 Ø 教師あり学習で学習したモデルをフレームワークで読み込む処理 • 最新のアルゴリズムや並列化の仕組みは⼤きなメリット Ø 各プロダクトに機械学習エンジニアの配置が必要ない

Slide 55

Slide 55 text

まとめ

Slide 56

Slide 56 text

現状の成果 • Embeddingの⼯夫によって、新スキルへの対応がある程度 可能 • 教師あり学習だけでルールベースAIを上回る強さを確認 Ø よりヒトに近いAI同⼠でのテストプレイが可能に • 強化学習のネットワークに教師あり学習のネットワークの 重みを持ってくることで、学習が促進されることが確認

Slide 57

Slide 57 text

課題 • 新ファイター導⼊における環境の変化への対応 Ø 新規ファイターの配置傾向の学習 Ø 既存ファイターの配置傾向の変化の学習 強化学習が実⽤レベルになるために、検証を続けていく必要性

Slide 58

Slide 58 text

今後に向けて • 強化学習で使⽤するデッキの⾃由度を上げる • 他アルゴリズムの検証 • 対Expert(現時点最強のルールベースAI)に対しての強化学習 の検証 • ツールの改善

Slide 59

Slide 59 text

対戦型ゲームに機械学習導⼊を経験して • 「常にルールが変わりうる環境」を考慮する必要性 • 稼働中のゲームにおける機械学習活⽤の実例はまだまだ少なく試⾏錯誤が 必要 • データ量が精度に多⼤な影響を与えた Ø 学習データ 300万 -> 1000万 Ø 最強のルールベースAIとの勝率 3.5割 -> 6割 Ø 知らない盤⾯に出くわすより(多少精度が下がっても)学習データがあった⽅が 精度の向上につながっていた • 教師が⽤意出来るならば、まず教師ありで検証してから強化学習に

Slide 60

Slide 60 text

We Are Hiring!! 新卒も!中途も!積極採用中! ミクシィ 採用 検索

Slide 61

Slide 61 text

Thank you !!