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 を使って機械学習を対戦型ボードゲームに導入してみた

MIXI ENGINEERS
PRO

June 14, 2019
Tweet

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. ミッション

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. ファイトリーグとは

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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



    盤⾯情報
    各マスの
    情報
    Game Logic
    (Elixir)
    Fluentd

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  23. “スキル”をどのように扱うか


    3
    スキルIDをEmbeddingしてベクトル化
    スキルテキストをEmbeddingしてベクトル化
    スキルに紐づく⽊構造上のIDをEmbeddingしてベクトル化
    • 3つのアプローチを検証

    View Slide

  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]
    類似度

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide


  33. ツール化

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. アプローチ
    • 次の2軸で検証


    強化学習単体でどこまで学習できるか
    教師あり学習モデル転⽤後の学習効果

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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






    View Slide

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






    View Slide

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






    View Slide

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






    View Slide

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

    View Slide

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

    View Slide

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






    View Slide

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

    View Slide

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

    View Slide

  55. まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  61. Thank you !!

    View Slide