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

ミクシィ新卒が入社半年で Amazon SageMaker を使って機械学習を対戦型ボードゲー...

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

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

MIXI ENGINEERS

June 14, 2019
Tweet

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

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

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

    • 必要なもの • メリット ü 学習が比較的容易 • デメリット ü 教師以上の強さにはならない ü 新スキルへの対応に弱い 強化学習 ü CPU同士での自動対戦環境(&報酬) • 必要なもの • メリット ü 強さの上限がない ü 新スキルにも対応 • デメリット ü 学習にかなりの時間がかかる ü 報酬設計の難しさ
  3. プレイログの記録 • Fluentdを使って⼿番毎の盤⾯状態、周辺情報、配置情報を S3に記録 Amazon S3 Bucket Client AWS Server

    配置情報 左から2枚⽬ を5番 ターン数 ⼿札 FB発動 可否 周辺情報 ・ ・ ・ 盤⾯情報 各マスの 情報 Game Logic (Elixir) Fluentd
  4. ネットワーク構成 • 盤⾯の特徴抽出には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
  5. 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] 類似度
  6. 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
  7. 3. スキルテキストをEmbeddingしてベクトル化 • ヒトはテキストからスキル効果を推定している • スキルテキストはカードゲーム特有の⽂法になっており表記揺れが少ない • ⽂章から固有表現を獲得するDoc2Vecを⽤い スキルのテキスト⾃体をEmbeddingしたらどうなるだろうか Ø

    テキストが近いものの類似を⾼精度に取得できたことを確認 Ø モデルの学習には最適化されていないため精度⾃体は若⼲低下 攻撃範囲内のすべて の味⽅メンバーの 攻撃⼒100アップ [0.7, 0.8, 0,2, 0.5, 0.1] Embed ID Doc2Vec Skill Text
  8. スキルEmbedding検証結果 • 3つのアプローチを検証 1. スキルIDをEmbeddingしてベクトル化 Ø 似たような置き⽅をされるキャラクター同⼠が類似 2. スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化 Ø

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

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

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

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

    GameLogic (Elixir) http • ゲームロジックは全てサーバー側 Ø クライアントを通さずゲーム進⾏が可能 • モデルとサーバーの橋渡しを⾏うFightLeagueEnvを構築 Ø 強化学習の共通インタフェースを提供しているOpenAI Gym を利⽤ actionに従ってゲームを進⾏ action 強化学習ロジック FightLeagueEnv TensorFlow OpenAI Gym
  13. OpenAI Gym 環境側の構成 • ⽚⽅のプレイヤーのAIは固定 Ø 固定するAIはルールベースAI or 学習済みモデル •

    学習するAIをシングルに • 固定したAIの強さを学習の経過によって変えていく Ø カリキュラム学習
  14. 1. 強化学習単体でどこまで学習できるか • 独⾃にRLロジックを最⼩限の構成で実装し、検証 項⽬ 構成 アルゴリズム Deep Q Network

    ネットワーク構成 教師ありモデルとほぼ同じ 報酬 勝ちに1、負け or 選択できないマ スを選択した場合-1 対戦相⼿ ランダム デッキの数 数種類 出⼒数 49 (本来は637)
  15. 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
  16. Sagemaker RL 構成 • 下記の構成で検証 項⽬ 構成 アルゴリズム Rainbow/Ape-X ネットワーク構成

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

    + Dense 報酬 勝ちに1、負け or 選択できない マスを選択した場合-1 対戦相⼿ 1⼿番最適 デッキの数 数種類 出⼒数 637
  18. 対戦型ゲームに機械学習導⼊を経験して • 「常にルールが変わりうる環境」を考慮する必要性 • 稼働中のゲームにおける機械学習活⽤の実例はまだまだ少なく試⾏錯誤が 必要 • データ量が精度に多⼤な影響を与えた Ø 学習データ

    300万 -> 1000万 Ø 最強のルールベースAIとの勝率 3.5割 -> 6割 Ø 知らない盤⾯に出くわすより(多少精度が下がっても)学習データがあった⽅が 精度の向上につながっていた • 教師が⽤意出来るならば、まず教師ありで検証してから強化学習に