Save 37% off PRO during our Black Friday Sale! »

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

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

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

D8da26d8c2f31098cb33d5d6087e6668?s=128

YAMADA Shuhei

October 16, 2021
Tweet

Transcript

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

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

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

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

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

  8. ここで動画

  9. 強化学習について

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

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

  12. 例)車の自動運転AIを強化学習を用いて開発する場合 エージェント 自動運転AI 環境 教習所 のコース 行動 報酬 状態 車の位置

    周囲の状況 車道を1秒走行するごとに+1 車道からはみ出たら1秒ごとに−1 壁にぶつかったら−10で終了 ハンドル アクセル ブレーキ
  13. PythonとUnityを使った 強化学習のやり方

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

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

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

  17. Unity ML-Agents Toolkit • Unity社から提供されているツール(公式ツール) • 含まれているもの • PyTorchなどのPython環境 •

    Python環境とUnityとをやりとりする仕組み • Unityで環境を構築する際に使用するソースコード • 公式Exampleプロジェクト多数
  18. Unity ML-Agents Toolkitの仕組み • UnityとPythonは別のアプリケーションとして起動しており、 ネットワーク越しに通信してデータをやりとりする 行動 報酬 状態 Unity

    Python(コンソール)
  19. Unity ML-Agents Toolkitのインストール • Githubの公式ページにインストール方法が書かれている • ただし英語 • 日本語の解説記事がいくつか公開されている •

    日本語の書籍もあるが情報が古くなってしまっている • 「Unity ML-Agents実践ゲームプログラミング」 • 説明やデモの紹介を日本語で読むことができる数少ない資料なので買っ ても損はない
  20. Unity ML-Agents Toolkitで強化学習をする流れ 1. Unityで環境をつくる Unityの知識が必要 2. 状態と行動と報酬を設定する Unityと強化学習の知識が必要 3.

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

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

  23. 2. 状態と行動と報酬を設定する • 状態 • 箱の角度(2軸) • ボールの位置(3次元位置) • ボールの速度と移動方向(ベクトル)

    • 行動 • 箱の角度(2軸) • 報酬 • ボールが落ちていない:+0.1(学習を継続する) • ボールが落ちた:-1.0(学習を終了する) • ボールが落ちない限り報酬が増え続ける
  24. 3. 学習させる • 学習モデルに応じてハイパーパラメータを調節する • バッチサイズ、学習率、エポック数など • 学習状況を確認することができる CumulativeReward: 累積報酬 高いほどよい

    EpisodeLength: エピソード(1回の学習) の長さ 長い方がいいか短い方がい いかはタスクによる
  25. 4. 行動と報酬設定と学習のくりかえし • 状態、行動、報酬の設定やハ イパーパラメータを変更して 学習をくりかえす • 同時並行で多数の学習を同時 にできる

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

    • 状態を与えすぎないようにする • 例)自動運転の場合に壁の向こうに人がいることを教えてしまうなど
  27. 公式のExampleがたくさん用意されているのでそれを 見ることで状態と行動と報酬の設定について学ぶこと ができる • 今日は2つのExampleを紹介する • Crawler • 4脚8関節のロボットを歩行させてゴールに向かわせる •

    Soccer Twos • 2対2でサッカーをする
  28. Crawler(4脚8関節のロボット) • 状態 • ゴールの方向 • ロボットの向かっている方向 • 関節の角度 •

    行動 • 関節の角度 • 報酬 • ロボットの速度と方向がゴールに向いているかどうか:+0〜1(ゴール に向いていると1で反対だと0) • ロボットのボディが地面に接触した:-1.0で学習終了
  29. Soccer Twos(2対2でサッカー) • 状態 • 自分の前方11方向にある物体と物体までの距離 • 自分の後方3方向にある物体と物体までの距離

  30. Soccer Twos(2対2でサッカー) • 行動 • 前進、後退 • 左右移動 • その場で回転

    • 報酬 • 相手ゴールにボールを入れた:+0〜1の範囲(経過時間が短いほど高い) で学習終了 • 自分のゴールにボールを入れた:-1.0で学習終了
  31. 事例紹介 • Source of Madnessというアクションゲーム • ML Agetns ToolKitを使って敵のモンスターの動きを決めるAIを 作成した

  32. 強化学習とUnity ML Agents イケてるところとツラいところ イケてる • UnityとPythonのいいところが合わさっている • 他のツールでは実現が難しいことができる •

    学習の様子が見ていて楽しい ツラい • 自動運転やロボットなど現実世界のプロダクトに反映させようと するとシミュレータをしっかり作り込む必要がある • 強化学習を適用できるタスクがそれほど多くない • 強化学習ではなくルールベースのAIでも結構いい感じにできる
  33. まとめ • 強化学習 • 環境中でエージェントが行動して学習していく • PythonとUnityを使って強化学習ができる • Unity ML-Agents

    Toolkitというツールがある