Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ミクシィ新卒が入社半年で Amazon SageMaker を使って機械学習を対戦型ボードゲームに導入してみた / Machine Learning in Fight League

ミクシィ新卒が入社半年で Amazon SageMaker を使って機械学習を対戦型ボードゲームに導入してみた / Machine Learning in Fight League

AWS Summit Tokyo 2019 登壇資料
2019年6月14日(金)16:00-16:40
ミクシィ新卒が入社半年で Amazon SageMaker を使って機械学習を対戦型ボードゲームに導入してみた

B16717ef4b7aab0b253d933c3934f280?s=128

mixi_engineers

June 14, 2019
Tweet

Transcript

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

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

  3. ミッション

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

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

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

  7. ファイトリーグとは

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

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

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

  11. カード単体が強⼒すぎた⼀例 現在は与えるダメージを 500 -> 300に下⽅修正 組み合わせによる強⼒なコンボが発⽣した ⼀例 リーダースキルの効果を 永続的 ->

    ⼀時的に下⽅修正 ファイトリーグの課題 – 新規ファイターにおけるバランス調整の難しさ
  12. “強⼒な”ファイターは悪なのか • 環境が⼀極化し始めるとアクティブユーザーが減少 • 強⼒なファイターを実装すると、ガチャの総回数もUP 環境を⼀極化するほどではないが、 ユーザーには強⼒なファイターと認識してもらえる “ギリギリまで強⼒なファイター”の実装が理想

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

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

  15. 機械学習実装にあたって • 代表的な機械学習アプローチ 教師あり学習 ü 学習データと答え(教師)のセット • 必要なもの • メリット

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

    • 必要なもの • メリット ü 学習が比較的容易 • デメリット ü 教師以上の強さにはならない ü 新スキルへの対応に弱い 強化学習 ü CPU同士での自動対戦環境(&報酬) • 必要なもの • メリット ü 強さの上限がない ü 新スキルにも対応 • デメリット ü 学習にかなりの時間がかかる ü 報酬設計の難しさ
  17. 教師あり学習アプローチにおける 機械学習の導⼊実例 Part2

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

  19. プレイログの記録 • Fluentdを使って⼿番毎の盤⾯状態、周辺情報、配置情報を S3に記録 Amazon S3 Bucket Client AWS Server

    配置情報 左から2枚⽬ を5番 ターン数 ⼿札 FB発動 可否 周辺情報 ・ ・ ・ 盤⾯情報 各マスの 情報 Game Logic (Elixir) Fluentd
  20. 盤⾯情報のCNN ネットワーク構成 スキル情報の ベクトル化 周辺情報の DNN 選択可能⾏動の確率

  21. ネットワーク構成 • 盤⾯の特徴抽出には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
  22. “スキル”をどのように扱うか • ファイトリーグでは、キャラクターのスキルが試合を⼤きく左右する • ⼈は⾔葉でスキルを理解しているが、機械は数値でしかスキルを理解 できない • 単純にIDだけを使って学習させようとすると、モデルは数値の差を距離 として認識してしまう •

    新スキルの追加にもある程度対応できるようにしないといけない Ø 『ID:100, 地雷を置く』『ID:200 地雷を2個置く』 は100の差
  23. “スキル”をどのように扱うか 1 2 3 スキルIDをEmbeddingしてベクトル化 スキルテキストをEmbeddingしてベクトル化 スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化 • 3つのアプローチを検証

  24. 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] 類似度
  25. 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
  26. 3. スキルテキストをEmbeddingしてベクトル化 • ヒトはテキストからスキル効果を推定している • スキルテキストはカードゲーム特有の⽂法になっており表記揺れが少ない • ⽂章から固有表現を獲得するDoc2Vecを⽤い スキルのテキスト⾃体をEmbeddingしたらどうなるだろうか Ø

    テキストが近いものの類似を⾼精度に取得できたことを確認 Ø モデルの学習には最適化されていないため精度⾃体は若⼲低下 攻撃範囲内のすべて の味⽅メンバーの 攻撃⼒100アップ [0.7, 0.8, 0,2, 0.5, 0.1] Embed ID Doc2Vec Skill Text
  27. 3. スキルテキストをEmbeddingしてベクトル化 • ⼀般的なスキル

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

  29. スキルEmbedding検証結果 • 3つのアプローチを検証 1. スキルIDをEmbeddingしてベクトル化 Ø 似たような置き⽅をされるキャラクター同⼠が類似 2. スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化 Ø

    スキルの粒度が細かくなり、新スキルでもある程度の対応が可能に 3. スキルテキストをEmbeddingしてベクトル化 Ø 新スキル含め全てのスキルを表現できるが、精度が課題 今回のモデルでは(教師あり、強化学習双⽅とも)2番を採⽤
  30. Training Data (tfrecord) 学習済みモデル Ohio Region Tokyo Region 学習済みモデル コピー

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

    アーキテクチャ Notebook Instance 推論 API (p3 Instance) Game Logic (Elixir) CPU思考処理で推論APIに リクエストを投げる deploy 推論結果を 選択確率で返す Training Instance (p3 Instance) ローカルマシン
  32. 教師ありモデル検証結果 • 教師データに対する正解率は約58% Ø 1ターン⽬や、相⼿リーダーを攻撃すれば勝ちといった場⾯の配置は好みの差が出る • 現状最強のルールベースAIに平均勝率6割を達成 Ø ルールベースAIは全ての盤⾯状態をスコアリングし最も⾼いスコアの指し⼿を⾏う •

    学習データが増えるほど強さが上がっていった Ø 特徴量数が多く、不確定要素が多い環境ではデータ量がより重要 • テストプレイで、ルールベースAIではしないような配置も⾒られた Ø こちらにリーサルが無い時、攻めずに⾃分の盤⾯を固めて相⼿の邪魔をする
  33. ¥ ツール化

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

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

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

  37. 独⾃環境の構築 state, reward, done = / env.step(action) state, reward, done

    GameLogic (Elixir) http • ゲームロジックは全てサーバー側 Ø クライアントを通さずゲーム進⾏が可能 • モデルとサーバーの橋渡しを⾏うFightLeagueEnvを構築 Ø 強化学習の共通インタフェースを提供しているOpenAI Gym を利⽤ actionに従ってゲームを進⾏ action 強化学習ロジック FightLeagueEnv TensorFlow OpenAI Gym
  38. OpenAI Gym のState進⾏ 先⼿ 後⼿ 相⼿のターンが終わらないと 次の⾃分の状態がわからない ⾃分のターン 相⼿のターン 次の⾃分のターン

  39. OpenAI Gym 環境側の構成 • ⽚⽅のプレイヤーのAIは固定 Ø 固定するAIはルールベースAI or 学習済みモデル •

    学習するAIをシングルに • 固定したAIの強さを学習の経過によって変えていく Ø カリキュラム学習
  40. アプローチ • 次の2軸で検証 1 2 強化学習単体でどこまで学習できるか 教師あり学習モデル転⽤後の学習効果

  41. 1. 強化学習単体でどこまで学習できるか • 独⾃にRLロジックを最⼩限の構成で実装し、検証 項⽬ 構成 アルゴリズム Deep Q Network

    ネットワーク構成 教師ありモデルとほぼ同じ 報酬 勝ちに1、負け or 選択できないマ スを選択した場合-1 対戦相⼿ ランダム デッキの数 数種類 出⼒数 49 (本来は637)
  42. 結果と課題 • 勝率は9.5割程で学習成功 • 多数の強化学習アルゴリズムの実装に時間をかけるのは⾼コスト Ø 各アルゴリズムの検証スピードをできる限り上げたい Ø パラメータの調整や、現環境に合わせた学習の⼯夫部分に注⼒したい Ø

    ミッションともそぐわない 結果 課題
  43. SageMaker RLを採⽤ • AWSさんからSageMaker RL Betaテストのお話を頂いた Ø SageMaker RLの構成に乗っかることで、アルゴリズムの実装部分を切り離す

  44. 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
  45. Sagemaker RL 構成 • 下記の構成で検証 項⽬ 構成 アルゴリズム Rainbow/Ape-X ネットワーク構成

    教師ありモデルとほぼ同じ 報酬 勝ちに1、負け or 選択できない マスを選択した場合-1 対戦相⼿ ランダム -> 攻撃特化-> 1⼿番最適 デッキの数 数種類 出⼒数 637
  46. 検証結果 ステップ毎の平均報酬獲得量 ステップ数 平 均 獲 得 報 酬

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

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

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

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

  51. 2.教師あり学習モデル転⽤後の学習効果 • 下記の構成で検証 項⽬ 構成 アルゴリズム Rainbow/Ape-X ネットワーク構成 Output層前までの 教師ありネットワーク

    + Dense 報酬 勝ちに1、負け or 選択できない マスを選択した場合-1 対戦相⼿ 1⼿番最適 デッキの数 数種類 出⼒数 637
  52. 検証結果 ステップ毎の平均報酬獲得量(vs 1⼿番最適) カリキュラム学習における vs 1⼿番最適 • 平均報酬は0.2に到達し、カリキュラム学習を⼤きく上回る Ø 勝率は約6~6.5割

    現在の教師ありモデルの勝率に近いレベル ステップ数 平 均 獲 得 報 酬
  53. 強化学習モデル検証結果 強化学習単体 • ファイトリーグの様なゲーム環境であっても、⼯夫次第により 強化学習単体で学習が可能 • ⼀⽅、学習にかなりの時間がかかる点も 教師あり転⽤ • 教師ありで学習した重みを再利⽤することによって

    学習が促進されることを確認 • 同じ問題設定で教師ありと強化学習が可能であれば、重みの転⽤が可能
  54. フレームワーク採⽤にあたって • フレームワークの制約を受けることが度々あった Ø フレームワークにはない機能を実装するためのコストが⼤きい Ø 打ったら違反となる⼿をフィルタリングする処理 Ø 教師あり学習で学習したモデルをフレームワークで読み込む処理 •

    最新のアルゴリズムや並列化の仕組みは⼤きなメリット Ø 各プロダクトに機械学習エンジニアの配置が必要ない
  55. まとめ

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

    重みを持ってくることで、学習が促進されることが確認
  57. 課題 • 新ファイター導⼊における環境の変化への対応 Ø 新規ファイターの配置傾向の学習 Ø 既存ファイターの配置傾向の変化の学習 強化学習が実⽤レベルになるために、検証を続けていく必要性

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

  59. 対戦型ゲームに機械学習導⼊を経験して • 「常にルールが変わりうる環境」を考慮する必要性 • 稼働中のゲームにおける機械学習活⽤の実例はまだまだ少なく試⾏錯誤が 必要 • データ量が精度に多⼤な影響を与えた Ø 学習データ

    300万 -> 1000万 Ø 最強のルールベースAIとの勝率 3.5割 -> 6割 Ø 知らない盤⾯に出くわすより(多少精度が下がっても)学習データがあった⽅が 精度の向上につながっていた • 教師が⽤意出来るならば、まず教師ありで検証してから強化学習に
  60. We Are Hiring!! 新卒も!中途も!積極採用中! ミクシィ 採用 検索

  61. Thank you !!