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

PythonとUnityで手軽に強化学習をやってみよう!

 PythonとUnityで手軽に強化学習をやってみよう!

UnityとPython(TensorFlow)を連携させることで、シミュレータを利用した強化学習をおこなうことができます。
Unity社が公式に提供している「Unity ML-Agents Toolkit」を利用することで手軽に環境構築が可能です。
この発表を聞くことで強化学習やUnityに対する理解が深まるとともに、「Unity ML-Agents Toolkit」の仕組みや使い方を知ることができます。

YAMADA Shuhei

October 16, 2021
Tweet

More Decks by YAMADA Shuhei

Other Decks in Programming

Transcript

  1. PythonとUnityで
    手軽に強化学習を
    やってみよう!
    PyCon JP 2021 Oct. 16, 2021
    山田 周平

    View Slide

  2. 山田 周平
    沖縄にあるちゅらデータという会社で
    エンジニアをやっています
    以前はUnityでソーシャルゲームを作った
    りしていました
    4年前に東京から沖縄に移住しました

    View Slide

  3. ちゅらデータは、『最高に面白い仕事』を沖縄に創りたい!という想いのも
    と創業しました。沖縄の労働問題をぶち破り、高賃金で、最先端かつやりが
    いのある仕事を、最高の仲間と一緒に創り上げることを目指しています。
    クレイジーな仲間を募集しています
    ちゅらデータは、データ分析の力で顧客のビジネスを進化させることをミッ
    ションにしています。
    自らがワクワクできることを大事にしている人、常識に囚われずに本質的な
    課題解決に取り組める人を募集しています。
    ちゅらデータHPより引用

    View Slide

  4. View Slide

  5. View Slide

  6. 今日はPythonとUnityを使った強化学習につい
    て話します
    • 強化学習について
    • PythonとUnityを使った強化学習のやり方
    • Unity ML-Agents Toolkitについて

    View Slide

  7. 今日の発表を聞くと以下について何となく
    理解できると思います
    • 機械学習の一分野として強化学習がある
    • PythonとUnityを使って強化学習ができる

    View Slide

  8. ここで動画

    View Slide

  9. 強化学習について

    View Slide

  10. 機械学習は大きく3つにわけることができる
    強化学習はその中の1つ
    機械学習
    教師あり
    学習
    教師なし
    学習
    強化学習

    View Slide

  11. 強化学習とは環境内の状態に応じてエージェントが
    行動し報酬が最大化するような推論モデルを生成する
    手法
    エージェント
    環境 行動
    報酬
    状態

    View Slide

  12. 例)車の自動運転AIを強化学習を用いて開発する場合
    エージェント
    自動運転AI
    環境
    教習所
    のコース
    行動
    報酬
    状態
    車の位置
    周囲の状況
    車道を1秒走行するごとに+1
    車道からはみ出たら1秒ごとに−1
    壁にぶつかったら−10で終了
    ハンドル
    アクセル
    ブレーキ

    View Slide

  13. PythonとUnityを使った
    強化学習のやり方

    View Slide

  14. Python
    (PyTorch)
    Unity
    環境をUnity、エージェントをPythonが担当する
    エージェント
    環境 行動
    報酬
    状態

    View Slide

  15. Unity
    • Unity社が提供しているゲーム開発エンジン
    • 多くのモバイルゲームやPCゲームの制作に使われている
    • 3Dモデルの物理演算やシミュレーションを手軽に実施できる

    View Slide

  16. Python
    • 機械学習用のライブラリやフレームワークが豊富にある
    • PyTorch
    • オープンソースの機械学習ライブラリ

    View Slide

  17. Unity ML-Agents Toolkit
    • Unity社から提供されているツール(公式ツール)
    • 含まれているもの
    • PyTorchなどのPython環境
    • Python環境とUnityとをやりとりする仕組み
    • Unityで環境を構築する際に使用するソースコード
    • 公式Exampleプロジェクト多数

    View Slide

  18. Unity ML-Agents Toolkitの仕組み
    • UnityとPythonは別のアプリケーションとして起動しており、
    ネットワーク越しに通信してデータをやりとりする
    行動
    報酬
    状態
    Unity
    Python(コンソール)

    View Slide

  19. Unity ML-Agents Toolkitのインストール
    • Githubの公式ページにインストール方法が書かれている
    • ただし英語
    • 日本語の解説記事がいくつか公開されている
    • 日本語の書籍もあるが情報が古くなってしまっている
    • 「Unity ML-Agents実践ゲームプログラミング」
    • 説明やデモの紹介を日本語で読むことができる数少ない資料なので買っ
    ても損はない

    View Slide

  20. Unity ML-Agents Toolkitで強化学習をする流れ
    1. Unityで環境をつくる
    Unityの知識が必要
    2. 状態と行動と報酬を設定する
    Unityと強化学習の知識が必要
    3. 学習させる
    強化学習の知識が必要
    4. 2と3のくりかえし

    View Slide

  21. 公式Exampleより:3DBall
    • 公式がExampleをたくさん用意して
    くれている
    • 3DBall:箱の上からボールを落と
    さないようにうまく箱を傾けさせる
    ことをAIに学習させる

    View Slide

  22. 1. Unityで環境をつくる
    • Unity上で作業する

    View Slide

  23. 2. 状態と行動と報酬を設定する
    • 状態
    • 箱の角度(2軸)
    • ボールの位置(3次元位置)
    • ボールの速度と移動方向(ベクトル)
    • 行動
    • 箱の角度(2軸)
    • 報酬
    • ボールが落ちていない:+0.1(学習を継続する)
    • ボールが落ちた:-1.0(学習を終了する)
    • ボールが落ちない限り報酬が増え続ける

    View Slide

  24. 3. 学習させる
    • 学習モデルに応じてハイパーパラメータを調節する
    • バッチサイズ、学習率、エポック数など
    • 学習状況を確認することができる
    CumulativeReward:
    累積報酬 高いほどよい
    EpisodeLength:
    エピソード(1回の学習)
    の長さ
    長い方がいいか短い方がい
    いかはタスクによる

    View Slide

  25. 4. 行動と報酬設定と学習のくりかえし
    • 状態、行動、報酬の設定やハ
    イパーパラメータを変更して
    学習をくりかえす
    • 同時並行で多数の学習を同時
    にできる

    View Slide

  26. 状態と行動と報酬の設定が難しい
    • タスクによって全く異なる
    • 例)自動運転、将棋、迷路脱出など
    • 報酬の設定によってはこちらが意図しない行動を学習してしまう
    • 例)自動運転の場合にその場でぐるぐる回るのが最適解になってしまう
    など
    • 状態を与えすぎないようにする
    • 例)自動運転の場合に壁の向こうに人がいることを教えてしまうなど

    View Slide

  27. 公式のExampleがたくさん用意されているのでそれを
    見ることで状態と行動と報酬の設定について学ぶこと
    ができる
    • 今日は2つのExampleを紹介する
    • Crawler
    • 4脚8関節のロボットを歩行させてゴールに向かわせる
    • Soccer Twos
    • 2対2でサッカーをする

    View Slide

  28. Crawler(4脚8関節のロボット)
    • 状態
    • ゴールの方向
    • ロボットの向かっている方向
    • 関節の角度
    • 行動
    • 関節の角度
    • 報酬
    • ロボットの速度と方向がゴールに向いているかどうか:+0〜1(ゴール
    に向いていると1で反対だと0)
    • ロボットのボディが地面に接触した:-1.0で学習終了

    View Slide

  29. Soccer Twos(2対2でサッカー)
    • 状態
    • 自分の前方11方向にある物体と物体までの距離
    • 自分の後方3方向にある物体と物体までの距離

    View Slide

  30. Soccer Twos(2対2でサッカー)
    • 行動
    • 前進、後退
    • 左右移動
    • その場で回転
    • 報酬
    • 相手ゴールにボールを入れた:+0〜1の範囲(経過時間が短いほど高い)
    で学習終了
    • 自分のゴールにボールを入れた:-1.0で学習終了

    View Slide

  31. 事例紹介
    • Source of Madnessというアクションゲーム
    • ML Agetns ToolKitを使って敵のモンスターの動きを決めるAIを
    作成した

    View Slide

  32. 強化学習とUnity ML Agents
    イケてるところとツラいところ
    イケてる
    • UnityとPythonのいいところが合わさっている
    • 他のツールでは実現が難しいことができる
    • 学習の様子が見ていて楽しい
    ツラい
    • 自動運転やロボットなど現実世界のプロダクトに反映させようと
    するとシミュレータをしっかり作り込む必要がある
    • 強化学習を適用できるタスクがそれほど多くない
    • 強化学習ではなくルールベースのAIでも結構いい感じにできる

    View Slide

  33. まとめ
    • 強化学習
    • 環境中でエージェントが行動して学習していく
    • PythonとUnityを使って強化学習ができる
    • Unity ML-Agents Toolkitというツールがある

    View Slide