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

    周囲の状況 車道を1秒走行するごとに+1 車道からはみ出たら1秒ごとに−1 壁にぶつかったら−10で終了 ハンドル アクセル ブレーキ
  2. Unity ML-Agents Toolkit • Unity社から提供されているツール(公式ツール) • 含まれているもの • PyTorchなどのPython環境 •

    Python環境とUnityとをやりとりする仕組み • Unityで環境を構築する際に使用するソースコード • 公式Exampleプロジェクト多数
  3. Unity ML-Agents Toolkitのインストール • Githubの公式ページにインストール方法が書かれている • ただし英語 • 日本語の解説記事がいくつか公開されている •

    日本語の書籍もあるが情報が古くなってしまっている • 「Unity ML-Agents実践ゲームプログラミング」 • 説明やデモの紹介を日本語で読むことができる数少ない資料なので買っ ても損はない
  4. 2. 状態と行動と報酬を設定する • 状態 • 箱の角度(2軸) • ボールの位置(3次元位置) • ボールの速度と移動方向(ベクトル)

    • 行動 • 箱の角度(2軸) • 報酬 • ボールが落ちていない:+0.1(学習を継続する) • ボールが落ちた:-1.0(学習を終了する) • ボールが落ちない限り報酬が増え続ける
  5. Crawler(4脚8関節のロボット) • 状態 • ゴールの方向 • ロボットの向かっている方向 • 関節の角度 •

    行動 • 関節の角度 • 報酬 • ロボットの速度と方向がゴールに向いているかどうか:+0〜1(ゴール に向いていると1で反対だと0) • ロボットのボディが地面に接触した:-1.0で学習終了
  6. Soccer Twos(2対2でサッカー) • 行動 • 前進、後退 • 左右移動 • その場で回転

    • 報酬 • 相手ゴールにボールを入れた:+0〜1の範囲(経過時間が短いほど高い) で学習終了 • 自分のゴールにボールを入れた:-1.0で学習終了
  7. 強化学習とUnity ML Agents イケてるところとツラいところ イケてる • UnityとPythonのいいところが合わさっている • 他のツールでは実現が難しいことができる •

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