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

OSS強化学習向けゲーム環境の動向

gree_tech
January 23, 2019

 OSS強化学習向けゲーム環境の動向

グリー開発本部 Meetup #2 ゲーム x 強化学習エンジニアリングで発表された資料です。
https://gree.connpass.com/event/112599/
#GDMeetup

gree_tech

January 23, 2019
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. • 自社ゲームを強化学習向け環境へ変換する場合 • 可能ならマルコフ決定過程として定義する • OSSサーベイにより、追加を検討した方が良い機能をリスト したので、そちらを参照して頂く • 変換する際のインタフェース •

    環境側のサーベイ結果を見ても、事実上の標準はGym • それで要件が足りるかはエージェント/フレームワーク次第 • 次の発表を参照のこと OSS強化学習向けゲーム環境の動向 本発表のサマリ
  2. • 強化学習における環境とは(2min) • OSS強化学習向けゲーム環境の歴史 (1min) • 各OSSの紹介 (18min) • ALE

    / Project Malmo / ViZDoom / DeepMind Lab / UnrealCV / OpenAI Gym / SC2LE / Unity ML-Agents Toolkit • 各OSSから得られた知見まとめ(1min) • もう一度サマリ (1min) OSS強化学習向けゲーム環境の動向 目次
  3. Copyright © GREE, Inc. All Rights Reserved. Confidential ゲームを強化学習向け環境に変換する場合 •

    できればマルコフ決定過程(MDP)として定義したい ◦ 状態遷移確率P(s’|s,a)が成り立ってほしい ◦ 報酬関数r(s, a, s’)を忘れずに定義する ◦ 具体例はこの後、ALEの項目で話します • 部分観測マルコフ決定過程として取り扱う事もできるが ◦ エージェント側の検討事項が(多分)複雑になる
  4. • 強化学習における環境とは(2min) • OSS強化学習向けゲーム環境の歴史 (1min) • 各OSSの紹介 (18min) • ALE

    / Project Malmo / ViZDoom / DeepMind Lab / UnrealCV / OpenAI Gym / SC2LE / Unity ML-Agents Toolkit • 各OSSから得られた知見まとめ(1min) • もう一度サマリ (1min) OSS強化学習向けゲーム環境の動向 目次
  5. Copyright © GREE, Inc. All Rights Reserved. Confidential OSS強化学習向けゲーム環境の歴史 プロジェクト開始年と、当初の開発主体

    • Arcade Learning Environment(2012) ◦ The Alberta Machine Intelligence Institute(カナダ) • Project Malmo(2015) ◦ Microsoft • ViZDoom(2016) ◦ Ponzan University of Technology(ポーランド) • DeepMind Lab(2016) ◦ DeepMind
  6. Copyright © GREE, Inc. All Rights Reserved. Confidential OSS強化学習向けゲーム環境の歴史 プロジェクト開始年と、当初の開発主体

    • UnrialCV(2016) ◦ Johns Hopkins University(アメリカ) • OpenAI Gym(2016) ◦ OpenAI • SC2LE(2017) ◦ DeepMind / Blizzard • Unity ML-Agents Toolkit(2018) ◦ Unity Technologies
  7. • 強化学習における環境とは(2min) • OSS強化学習向けゲーム環境の歴史 (1min) • 各OSSの紹介 (18min) • ALE

    / Project Malmo / ViZDoom / DeepMind Lab / UnrealCV / OpenAI Gym / SC2LE / Unity ML-Agents Toolkit • 各OSSから得られた知見まとめ(1min) • もう一度サマリ (1min) OSS強化学習向けゲーム環境の動向 目次
  8. Copyright © GREE, Inc. All Rights Reserved. Confidential ALE:概要 •

    general, domain-independentなAIの研究開発の推進を目 的としてリリース • Atari 2600エミュレータのStellaを利用している。数百の ゲームが利用可能 • deep Q-network(DQN)の開発に利用されたことで、広く 知られるようになった • 老舗だが今でも研究に使われる、重要な存在
  9. Copyright © GREE, Inc. All Rights Reserved. Confidential ALE:行動と状態の定義 •

    ALEはエージェントからjoystic motionに類する行動を受 け取り、スクリーンとRAM(1024bit)の情報を返し、エミ ュレーションを実行する • スクリーン情報(raw pixel)はMDPを満たさない。RAM情 報によってMDPを満たすことができる ◦ 厳密にはMDPを満たすためにレジスターやタイマーの情報も必要だが、 些細な影響である ◦ 同じ理由で、ランダムシード固定機能がある
  10. Copyright © GREE, Inc. All Rights Reserved. Confidential ALE:DQNでの利用 •

    DQNはpixel basedな手法なので、状態のMDPについて言 及されている • スクリーンバッファを状態とみなすとMDPは成り立たな いが、スクリーンバッファと行動のシーケンス{x1, a1, x2, a2 ,,,}はMDPである、という主張 ◦ Experience Replayのメリットの1つ ◦ 実際には近似関数φでシーケンスを写像してる
  11. Copyright © GREE, Inc. All Rights Reserved. Confidential ALE:強化学習問題への形式化 •

    ALE内のgame-handling layerが各ゲームを強化学習に適 した形式に変換する ◦ 累積スコアの定義 ◦ ゲーム終了状態の定義 • →これらを定義すれば、一般的なゲームは強化学習に適した形式になる
  12. Copyright © GREE, Inc. All Rights Reserved. Confidential ALE:フォワードモデルとしての機能 •

    game-handling layerはエミュレータの状態をsaveし、 restoreできる ◦ RAM、レジスタ、アドレスカウンタなど • この特徴により、(MCTSなどの)プラニング手法が利用 できる ◦ →ある種のアルゴリズムには、1つ先の状態をシミュレートできるフォ ワードモデルが必要
  13. Copyright © GREE, Inc. All Rights Reserved. Confidential ALE:エージェントから見た使い方 from

    ale_python_interface import ALEInterface ale = ALEInterface(); ale.loadROM(rom_file) agent = MyAgent() total_reward = 0; sc = np.empty(); ram = np.empty() while not ale.game_over(): total_reward += ale.act(agent.act(sc, ram)) sc = ale.getScreenRGB() ram = ale.getRAM()
  14. Copyright © GREE, Inc. All Rights Reserved. Confidential Gym:概要 •

    OpenAIがホストするプロジェクト • ラッパーとして、「環境」の統一的なインタフェースを 提供する ◦ Gymプロジェクトが公式にラップしてる環境も沢山 • 今回並列してリストしているが立ち位置が少し違う
  15. Copyright © GREE, Inc. All Rights Reserved. Confidential Gym:概要 •

    事実上の標準インタフェース • ラッパーが作りやすい ◦ gym.Envクラスを継承すればよい • ALEも(このあと紹介する)MalmoもML-Agentsも ViZDoomも、gymラッパーがある
  16. Copyright © GREE, Inc. All Rights Reserved. Confidential Gym:ラッパーの作り方 •

    Envクラスを継承する ◦ step : observation, reward, done, infoを返す ◦ reset : 最初のobservationを返す ◦ render : 画面のレンダリング等を行う ◦ close : 環境を終了させる ◦ seed : ランダムシードのセット • といったメソッドを必要に応じて実装する
  17. Copyright © GREE, Inc. All Rights Reserved. Confidential Gym :

    色々なラッパー • Gym Retro ◦ Librerto APIを利用したゲームエミュレータのラッパー ◦ https://github.com/openai/retro • Dolphn emulatorのラッパー ◦ ゲームキューブとWiiのエミュレーター ◦ https://arxiv.org/abs/1702.06230 で利用 ◦ https://github.com/vladfi1/gym-dolphin • XFLAGさんの社内利用事例 ◦ https://speakerdeck.com/hidetakakojo/ji-jie-xue-xi-woshi- tutagemufalseyun-yong-sapototosagemakerrl
  18. Copyright © GREE, Inc. All Rights Reserved. Confidential Gym:エージェントからみた使い方 import

    gym env = gym.make(‘CartPole-v0’) agent = MyAgent() ob = env.reset(); reward = 0; done = False while True: env.render() ob, reward, done, _ = env.step(agent.act(ob, reward, done) if done: break env.close()
  19. Copyright © GREE, Inc. All Rights Reserved. Confidential ML-Agents:概要 •

    Unityによる公式プロジェクトで、Unityのプラグイン • 推論モデルの、ビルド後のゲーム内での利用もユースケ ースとなっている • MLフレームワークが利用するPython APIや、そのgymラ ッパーがある • Dockerfileが用意されてる
  20. Copyright © GREE, Inc. All Rights Reserved. Confidential UnrealCV:概要 •

    UEのゲームを環境へ拡張する類のOSSは見つけられなか ったので、似ているものをピックアップ • UNREAL ENGINE 4で作られたコンテンツから、コンピ ュータビジョン研究用画像セットを動的に生成するため のUE4のプラグイン(とそれを利用するクライアントコ ード)
  21. Copyright © GREE, Inc. All Rights Reserved. Confidential UnrealCV:CV研究のための機能 •

    画面キャプチャの他に、ground truthとしての深度情報 やオブジェクトセグメンテーション等を出力する
  22. Copyright © GREE, Inc. All Rights Reserved. Confidential ViZDoom:概要 •

    Ponzan University of Technologyの研究者によるプロジ ェクト • 初代Doom(ZDoom)をラップしている • 一人称視点で3Dな環境からvisual inputを受け取るための 環境
  23. Copyright © GREE, Inc. All Rights Reserved. Confidential ViZDoom:状態と行動 •

    状態 ◦ ViZDoom環境はスクリーンバッファといくつかのゲー ムステータス(player’s health等)を出力する ◦ スクリーンバッファとして深度情報も出力する ▪ 人間のプレイヤーには必要ないが、エージェント には有用 • 行動 ◦ キーボードやマウスに対応する入力を受け取る
  24. Copyright © GREE, Inc. All Rights Reserved. Confidential ViZDoom:コントロールモード •

    synchronous/asynchronousモード ◦ syncモードはエージェント側の入力をwaitする ▪ 実験の再現性を担保したり、デバッグするための モード • player/spectatorモード ◦ spectatorモードは人間がプレイし、エージェントが それを観察するためのモード
  25. Copyright © GREE, Inc. All Rights Reserved. Confidential ViZDoom:計算負荷削減 •

    Off-Screen Rendering ◦ リモートサーバでの実行が容易になる • Frame Skipping ◦ フレームを飛ばす • いずれも負荷軽減のためによく検討される機能
  26. Copyright © GREE, Inc. All Rights Reserved. Confidential DeepMind Lab:概要

    • DeepMindがホストするプロジェクトで、DeepMindがよ く使ってる(使っていた?) • Quake 3 Arena(ioquake3)をラップしている • ViSDoomと同じく、一人称視点の3Dゲーム環境
  27. Copyright © GREE, Inc. All Rights Reserved. Confidential DeepMind Lab:特徴

    • lock-stepped interaction ◦ ViSDoomでいうシンクモード ◦ 各ステップにおいて、エージェントからアクションが 送信されてくるまでゲームを停止させる • 速度情報の観測 ◦ ゲームエンジンでレンダリングしたピクセル情報 (RGB or RGBD)の他に、必要であれば速度&各速度情 報を送信する ◦ MDPとするため?
  28. Copyright © GREE, Inc. All Rights Reserved. Confidential SC2LE:概要 •

    DeepMindとBlizzardが共同でホスティングしているプロ ジェクト • StarCraft 2をラップしてる
  29. Copyright © GREE, Inc. All Rights Reserved. Confidential SC2LE:状態の出力 •

    状態はRGB pixelではなく、feature layersとなる
  30. Copyright © GREE, Inc. All Rights Reserved. Confidential SC2LE:行動の取り扱い •

    atomic compound function ◦ 連続操作で成り立つアクションを1つに纏める ◦ 300 function と 13の引数タイプ • エージェントのaction per minuteは人間プレイヤー と同じくらいに設定 ◦ 人間のプレイログからの学習がシンプルになる
  31. Copyright © GREE, Inc. All Rights Reserved. Confidential SC2LE:その他の工夫 ミニゲーム

    • エージェント性能に対するunit testの位置付け その他 • シンクロモードの導入 • ランダムシードの固定 • 警告音をfeatureとして出力 • 独自の可視化ツールを用意 • ユーザのプレイログを提供
  32. Copyright © GREE, Inc. All Rights Reserved. Confidential Malmo:概要 •

    マイクロソフトによるプロジェクトで、マインクラフト をAI研究のプラットフォームにするためのラッパー • マインクラフトのMOD(拡張)とクライアントのためのAPI からなる • 最近はMalmoを更にラップするMarLoというOpenAI Gymのextentionを用いてコンテストを開催したりしてる
  33. • 強化学習における環境とは(2min) • OSS強化学習向けゲーム環境の歴史 (1min) • 各OSSの紹介 (18min) • ALE

    / Project Malmo / ViZDoom / DeepMind Lab / UnrealCV / OpenAI Gym / SC2LE / Unity ML-Agents Toolkit • 各OSSから得られた知見まとめ(1min) • もう一度サマリ (1min) OSS強化学習向けゲーム環境の動向 目次
  34. Copyright © GREE, Inc. All Rights Reserved. Confidential 自社ゲームを強化学習向け環境に変換する 必須

    • 報酬とゲーム終了状態の定義 • できればMDPを満たすために、何を状態とするか決めて、それを出力する 検討 • ランダムシード固定機能 • 結合アクションの定義 • レンダリング(ビデオキャプチャ)機能 • シンクロモードの実装 • フレームスキッピング含めた高速化 • 学習の為のユーザプレイログの取得方法 • テストとしてのミニゲーム • フォワードモデルのためのsave/restore機能 • headless build等の高速化
  35. • 強化学習における環境とは(2min) • OSS強化学習向けゲーム環境の歴史 (1min) • 各OSSの紹介 (18min) • ALE

    / Project Malmo / ViZDoom / DeepMind Lab / UnrealCV / OpenAI Gym / SC2LE / Unity ML-Agents Toolkit • 各OSSから得られた知見まとめ(1min) • もう一度サマリ (1min) OSS強化学習向けゲーム環境の動向 目次
  36. • 自社ゲームを強化学習向け環境へ変換する場合 • 可能ならマルコフ決定過程として定義する • OSSサーベイにより、追加を検討した方が良い機能をリスト したので、そちらを参照して頂く • 変換する際のインタフェース •

    環境側のサーベイ結果を見ても、事実上の標準はGym • それで要件が足りるかはエージェント/フレームワーク次第 • 次の発表を参照のこと OSS強化学習向けゲーム環境の動向 本発表のサマリ
  37. Copyright © GREE, Inc. All Rights Reserved. Confidential refs •

    ALE ◦ https://jair.org/index.php/jair/article/view/10819 • Gym ◦ https://arxiv.org/abs/1606.01540 • ML-Agents ◦ https://arxiv.org/abs/1809.02627 • UnrealCV ◦ https://arxiv.org/abs/1609.01326 • ViZDoom ◦ https://arxiv.org/abs/1605.02097 • DeepMind Lab ◦ https://deepmind.com/documents/29/DeepMindLab.pdf • SC2LE ◦ https://arxiv.org/abs/1708.04782 • Malmo ◦ https://www.ijcai.org/Proceedings/16/Papers/643.pdf