SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
わんくま同盟 名古屋勉強会 #47
Unity ML-Agents 入門
2019/02/23(土)
You&I
わんくま同盟 名古屋勉強会 #47
ジコ、ショウカイ。
• H/N: You&I(読み:ユーアンドアイ)
• SNS: @you_and_i
• 出身: 生まれも育ちも名古屋市
• 年齢: 40歳代
• 本職: 商学部出身の職業プログラマ
• 言語: C++, C#他
•所属: プロ生勉強会 名古屋支部
名古屋アジャイル勉強会
わんくま同盟 名古屋勉強会
2
わんくま同盟 名古屋勉強会 #47
AGENDA
1. Unity概要
2. Unity ML-Agents概要
3. Unity ML-Agentsの環境構築
4. デモ
3
わんくま同盟 名古屋勉強会 #47
1. Unity概要
Unity ML-Agents 入門
4
わんくま同盟 名古屋勉強会 #47
1. Unity概要
• Unityとは
– https://unity3d.com/jp/public-relations
– 30億のデバイスで動く!
5
わんくま同盟 名古屋勉強会 #47
1. Unity概要
• Unityとは
– https://unity3d.com/jp
– Unity Technologies社が開発・販売・公開するク
ロスプラットフォームに対応したゲームエンジン及びゲー
ム開発環境。
• アセットストアから無料・有料の3Dモデルや各種コンポーネ
ントをダウンロードして利用可能。
• https://assetstore.unity.com/
6
わんくま同盟 名古屋勉強会 #47
1. Unity概要
• Unityのライセンス
– https://store.unity.com/ja
• Personal - 初心者向け
– 収入または資金(資金調達または自己資金)が年間10万ドル(約
1,100万円)を超えない場合に、無料で使用できます。
• Unity Plus - 個人開発者向け
– 4,200円 / 月
• Unity Pro - 法人・チーム向け
– 15,000円 / 月
• Unity for Enterprise - 21人以上の法人向け
– 要問い合わせ
• Unity 5までは生涯使える買い切りライセンスがありましたが、
Unity 2017以降はサブスクリプション方式のみ。
7
わんくま同盟 名古屋勉強会 #47
1. Unity概要
• Unityの入手
– 最新版
• https://unity3d.com/jp/get-unity/download/ar
chive
– 2017.4.xxf1
– LTS(Long Term Support)版
• https://unity3d.com/jp/unity/qa/lts-releases
– 2017.4.xxf2
8
わんくま同盟 名古屋勉強会 #47
1. Unity概要
• Unityの開発環境
– OS(64bit OS必須)
• Windows OS
• macOS
– 統合開発環境
• Microsoft製品では、Visual Studio 2017及びVisual
Studio for Mac。
• JetBrains製品では、Rider(2018.x以降)。
9
わんくま同盟 名古屋勉強会 #47
1. Unity概要
• Unityの余談
– Microsoftも「Unity」を冠したライブラリを公開してい
ます。
• Microsoft® patterns & practices - Unity
Container
– https://aka.ms/unity
– The Unity Container (Unity) is a lightweight,
extensible dependency injection container with
optional support for instance and type interception.
– Nugetで見つかる「Unity.Wcf」とかはこちらに関連
するパッケージなので注意が必要です。
10
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
Unity ML-Agents 入門
11
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
• Unity Machine Learning Agents Toolkit(Unity ML-
Agents)
– https://github.com/Unity-Technologies/ml-agents
• Unity environment control from Python
• 10+ sample Unity environments
• Support for multiple environment configurations and traini
ng scenarios
• Train memory-enhanced agents using deep reinforcement
learning
• Easily definable Curriculum Learning scenarios
• Broadcasting of agent behavior for supervised learning
• Built-in support for Imitation Learning
• Flexible agent control with On Demand Decision Making
• Visualizing network outputs within the environment
• Simplified set-up with Docker
• Wrap learning environments as a gym
12
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
• Unity ML-Agentsの学習環境
– https://github.com/Unity-Technologies/m
l-agents/blob/master/docs/ML-Agents-Ov
erview.md
13
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
• Unity ML-Agentsが対応する学習法
– 強化学習(PPO : Proximal Policy Optimizatio
n)
– 模倣学習(BC : Behavioral Cloning, 教師あり
学習の1つ)
– カリキュラム学習(徐々に難易度を上げていく学習法)
– RNN : Recurrent Neural Network
– LSTM : Long Short Term Memory
– ICM : Intrinsic Curiosity Module, 好奇心駆
動探索
14
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
• Unity ML-Agentsの便利なところ
– Python側の学習コードは基本変更する必要がなく、
ハイパーパラメータの調整のみでそこそこ使えるように
なっている。あとはUnity側を作り込むだけ。
– v0.5からは、Unity Editor上からでも学習できるよ
うになっており、利便性が向上。
15
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
• Unity ML-Agentsのその他の情報
– Python上の機械学習は、TensorFlow v1.7.1を
利用しています。
• これによりPython 3.6必須です。
– TensorFlowの学習結果をUnity上で利用するに
は、Unity TensorFlow Pluginを利用します。
• これはTensorFlowSharpのUnity ML-Agents向けの
カスタムビルドです。
– PythonとUnity間のネットワーク通信は、gRPC及び
Protocol Buffersを利用しています。
16
わんくま同盟 名古屋勉強会 #47
2. Unity ML-Agents概要
• Unity ML-Agentsのその他の情報
– まだβ版です。なのでバージョンが上がると破壊的なI/
Fの変更があります。
➢実務利用する場合、新機能を使わないのであれば、利用
バージョンを固定する方が良いと思われる。
➢書籍やネット上の状況でUnity ML-Agentsの学習を行
う場合、解説記事と同じバージョンを利用すべきです。
➢バージョンアップによる変更点及び移行方法は、公式のマ
イグレーションガイドを読みましょう。
https://github.com/Unity-Technologies/ml-agents/blo
b/master/docs/Migrating.md
17
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構
築
Unity ML-Agents 入門
18
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• 公式の環境構築ドキュメントがあります
– https://github.com/Unity-Technologies/m
l-agents/blob/master/docs/Installation.m
d
– でもちょっと気になる問題があります・・・。
19
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• 公式の環境構築ドキュメントの気になる点
– Anacondaのインストール
• https://github.com/Unity-Technologies/ml-ag
ents/blob/master/docs/Installation-Windows.
md
– 手順としては、Anaconda入れて仮想環境作って、という流れで
すが、Anacondaで仮想環境を作るとPython実行環境や依存
パッケージ類は全部ダウンロードする必要があるので、仮想環境を
GUIで管理する必要がなければ、Minicondaを使いましょう。
» https://conda.io/en/latest/miniconda.html
20
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• 公式の環境構築ドキュメントの気になる点
– Install Unity 2017.4 or Later
• Unity 2017.4は、.NET Framework 4.6に依存しま
すが、Unity TensorFlow Pluginは .NET framewor
k 4.6.1に依存しており、ビルドエラーになります。Unity 2
018.x以降を利用する必要があります。
– https://github.com/Unity-Technologies/ml-agents/i
ssues/552
21
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• GPGPU環境は現時点(v0.6.0)で不要
– https://github.com/Unity-Technologies/m
l-agents/blob/master/docs/Installation-Wi
ndows.md
• (Optional) Step 4: GPU Training using The ML
-Agents Toolkit
– GPU is not required for the ML-Agents toolkit and w
on't speed up the PPO algorithm a lot during trainin
g(but something in the future will benefit from GPU).
22
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• 環境構築の流れ
– C#開発環境のインストール
– Unityのインストール
– Python開発環境のインストール
– Unity ML-Agentsプロジェクトの作成
– Python mlagentsパッケージのインストール
– Unity TensorFlow Pluginのインストール
23
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• 環境構築の注意点
– Unity ML-Agentsの便利な点として、Pythonの
学習コードを書く必要がないとしましたが、Python -
Unity間の通信フォーマットを変更する場合は、
Python及びUnity上でgRPC/Protocol Buffers
の開発環境を構築する必要があります。
– そしてUnity ML-Agentsが利用しているgRPCラン
タイムも特に情報がなく、本家版そのままではなくカス
タムビルドされている可能性があるので注意が必要で
す。
24
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• 環境構築の注意点
– Pythonのmlagentsコマンド実行時のコードは、
Unity ML-Agentsのプロジェクトフォルダではなく、
Anaconda/Minicondaの実行環境にコピーされた
コードが実行されているので注意が必要です。
– Unity ML-Agentsのプロジェクト作成は、githubで
公開されているリリースバージョンの書庫を解凍し、
ルートフォルダをリネームすることで完了します。Unity
Editor上ではプロジェクト名は全て「Unity SDK」に
なってしまうので、パスをみて判断する必要があります。
25
わんくま同盟 名古屋勉強会 #47
3. Unity ML-Agentsの環境構築
• Unity ML-Agentsのフォルダ構成
26
フォルダ名 説明
config ハイパーパラメータ、カリキュラム学習設定
docs doxygen生成ドキュメント
gym-unity OpenAI Gym実行環境
ml-agents Python機械学習環境インストーラー
notebooks Jupyter Notebook実行環境
protobuf-definitions Protocol Buffers通信データ定義
UnitySDK Unityプロジェクトフォルダ
unity-volume Dockerフォルダ
わんくま同盟 名古屋勉強会 #47
4. デモ
Unity ML-Agents 入門
27
わんくま同盟 名古屋勉強会 #47
4. デモ
• Unity ML-Agents Examples
1. 3DBall
2. BananaCollectors
3. Soccer
4. Tennis
5. WallJump
6. Pyramids
28

Weitere ähnliche Inhalte

Ähnlich wie Unity ML-Agents 入門

Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Taiji Tsuchiya
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCodingTaiji Tsuchiya
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴Yuya Unno
 
業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイドYou&I
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 
メルペイの与信モデリングで安全・安心のために実践していること
メルペイの与信モデリングで安全・安心のために実践していることメルペイの与信モデリングで安全・安心のために実践していること
メルペイの与信モデリングで安全・安心のために実践していることYuhi Kawakami
 
要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのことcodecampJP
 
W&B Seminar #5(to share).pdf
W&B Seminar #5(to share).pdfW&B Seminar #5(to share).pdf
W&B Seminar #5(to share).pdfAkira Shibata
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...Rakuten Group, Inc.
 
ApiPortで.NETアプリの依存関係を調べよう
ApiPortで.NETアプリの依存関係を調べようApiPortで.NETアプリの依存関係を調べよう
ApiPortで.NETアプリの依存関係を調べようYou&I
 
顧客のニーズを捉えて、システム統合していますか?
顧客のニーズを捉えて、システム統合していますか?顧客のニーズを捉えて、システム統合していますか?
顧客のニーズを捉えて、システム統合していますか?You&I
 
システム設計の原則
システム設計の原則システム設計の原則
システム設計の原則You&I
 
プランニングポーカーで学ぶ相対見積
プランニングポーカーで学ぶ相対見積プランニングポーカーで学ぶ相対見積
プランニングポーカーで学ぶ相対見積You&I
 
BeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzBeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzHideki Takase
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回Project Samurai
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCampschoowebcampus
 
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜Ryo Sasaki
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱Koichi ITO
 
ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術Shohei Hido
 

Ähnlich wie Unity ML-Agents 入門 (20)

Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴
 
業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
メルペイの与信モデリングで安全・安心のために実践していること
メルペイの与信モデリングで安全・安心のために実践していることメルペイの与信モデリングで安全・安心のために実践していること
メルペイの与信モデリングで安全・安心のために実践していること
 
要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと
 
W&B Seminar #5(to share).pdf
W&B Seminar #5(to share).pdfW&B Seminar #5(to share).pdf
W&B Seminar #5(to share).pdf
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
 
ApiPortで.NETアプリの依存関係を調べよう
ApiPortで.NETアプリの依存関係を調べようApiPortで.NETアプリの依存関係を調べよう
ApiPortで.NETアプリの依存関係を調べよう
 
顧客のニーズを捉えて、システム統合していますか?
顧客のニーズを捉えて、システム統合していますか?顧客のニーズを捉えて、システム統合していますか?
顧客のニーズを捉えて、システム統合していますか?
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
システム設計の原則
システム設計の原則システム設計の原則
システム設計の原則
 
プランニングポーカーで学ぶ相対見積
プランニングポーカーで学ぶ相対見積プランニングポーカーで学ぶ相対見積
プランニングポーカーで学ぶ相対見積
 
BeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzBeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorz
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
 
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術ディープラーニングの産業応用とそれを支える技術
ディープラーニングの産業応用とそれを支える技術
 

Unity ML-Agents 入門

  • 1. わんくま同盟 名古屋勉強会 #47 Unity ML-Agents 入門 2019/02/23(土) You&I
  • 2. わんくま同盟 名古屋勉強会 #47 ジコ、ショウカイ。 • H/N: You&I(読み:ユーアンドアイ) • SNS: @you_and_i • 出身: 生まれも育ちも名古屋市 • 年齢: 40歳代 • 本職: 商学部出身の職業プログラマ • 言語: C++, C#他 •所属: プロ生勉強会 名古屋支部 名古屋アジャイル勉強会 わんくま同盟 名古屋勉強会 2
  • 3. わんくま同盟 名古屋勉強会 #47 AGENDA 1. Unity概要 2. Unity ML-Agents概要 3. Unity ML-Agentsの環境構築 4. デモ 3
  • 4. わんくま同盟 名古屋勉強会 #47 1. Unity概要 Unity ML-Agents 入門 4
  • 5. わんくま同盟 名古屋勉強会 #47 1. Unity概要 • Unityとは – https://unity3d.com/jp/public-relations – 30億のデバイスで動く! 5
  • 6. わんくま同盟 名古屋勉強会 #47 1. Unity概要 • Unityとは – https://unity3d.com/jp – Unity Technologies社が開発・販売・公開するク ロスプラットフォームに対応したゲームエンジン及びゲー ム開発環境。 • アセットストアから無料・有料の3Dモデルや各種コンポーネ ントをダウンロードして利用可能。 • https://assetstore.unity.com/ 6
  • 7. わんくま同盟 名古屋勉強会 #47 1. Unity概要 • Unityのライセンス – https://store.unity.com/ja • Personal - 初心者向け – 収入または資金(資金調達または自己資金)が年間10万ドル(約 1,100万円)を超えない場合に、無料で使用できます。 • Unity Plus - 個人開発者向け – 4,200円 / 月 • Unity Pro - 法人・チーム向け – 15,000円 / 月 • Unity for Enterprise - 21人以上の法人向け – 要問い合わせ • Unity 5までは生涯使える買い切りライセンスがありましたが、 Unity 2017以降はサブスクリプション方式のみ。 7
  • 8. わんくま同盟 名古屋勉強会 #47 1. Unity概要 • Unityの入手 – 最新版 • https://unity3d.com/jp/get-unity/download/ar chive – 2017.4.xxf1 – LTS(Long Term Support)版 • https://unity3d.com/jp/unity/qa/lts-releases – 2017.4.xxf2 8
  • 9. わんくま同盟 名古屋勉強会 #47 1. Unity概要 • Unityの開発環境 – OS(64bit OS必須) • Windows OS • macOS – 統合開発環境 • Microsoft製品では、Visual Studio 2017及びVisual Studio for Mac。 • JetBrains製品では、Rider(2018.x以降)。 9
  • 10. わんくま同盟 名古屋勉強会 #47 1. Unity概要 • Unityの余談 – Microsoftも「Unity」を冠したライブラリを公開してい ます。 • Microsoft® patterns & practices - Unity Container – https://aka.ms/unity – The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. – Nugetで見つかる「Unity.Wcf」とかはこちらに関連 するパッケージなので注意が必要です。 10
  • 11. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 Unity ML-Agents 入門 11
  • 12. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 • Unity Machine Learning Agents Toolkit(Unity ML- Agents) – https://github.com/Unity-Technologies/ml-agents • Unity environment control from Python • 10+ sample Unity environments • Support for multiple environment configurations and traini ng scenarios • Train memory-enhanced agents using deep reinforcement learning • Easily definable Curriculum Learning scenarios • Broadcasting of agent behavior for supervised learning • Built-in support for Imitation Learning • Flexible agent control with On Demand Decision Making • Visualizing network outputs within the environment • Simplified set-up with Docker • Wrap learning environments as a gym 12
  • 13. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 • Unity ML-Agentsの学習環境 – https://github.com/Unity-Technologies/m l-agents/blob/master/docs/ML-Agents-Ov erview.md 13
  • 14. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 • Unity ML-Agentsが対応する学習法 – 強化学習(PPO : Proximal Policy Optimizatio n) – 模倣学習(BC : Behavioral Cloning, 教師あり 学習の1つ) – カリキュラム学習(徐々に難易度を上げていく学習法) – RNN : Recurrent Neural Network – LSTM : Long Short Term Memory – ICM : Intrinsic Curiosity Module, 好奇心駆 動探索 14
  • 15. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 • Unity ML-Agentsの便利なところ – Python側の学習コードは基本変更する必要がなく、 ハイパーパラメータの調整のみでそこそこ使えるように なっている。あとはUnity側を作り込むだけ。 – v0.5からは、Unity Editor上からでも学習できるよ うになっており、利便性が向上。 15
  • 16. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 • Unity ML-Agentsのその他の情報 – Python上の機械学習は、TensorFlow v1.7.1を 利用しています。 • これによりPython 3.6必須です。 – TensorFlowの学習結果をUnity上で利用するに は、Unity TensorFlow Pluginを利用します。 • これはTensorFlowSharpのUnity ML-Agents向けの カスタムビルドです。 – PythonとUnity間のネットワーク通信は、gRPC及び Protocol Buffersを利用しています。 16
  • 17. わんくま同盟 名古屋勉強会 #47 2. Unity ML-Agents概要 • Unity ML-Agentsのその他の情報 – まだβ版です。なのでバージョンが上がると破壊的なI/ Fの変更があります。 ➢実務利用する場合、新機能を使わないのであれば、利用 バージョンを固定する方が良いと思われる。 ➢書籍やネット上の状況でUnity ML-Agentsの学習を行 う場合、解説記事と同じバージョンを利用すべきです。 ➢バージョンアップによる変更点及び移行方法は、公式のマ イグレーションガイドを読みましょう。 https://github.com/Unity-Technologies/ml-agents/blo b/master/docs/Migrating.md 17
  • 18. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構 築 Unity ML-Agents 入門 18
  • 19. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • 公式の環境構築ドキュメントがあります – https://github.com/Unity-Technologies/m l-agents/blob/master/docs/Installation.m d – でもちょっと気になる問題があります・・・。 19
  • 20. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • 公式の環境構築ドキュメントの気になる点 – Anacondaのインストール • https://github.com/Unity-Technologies/ml-ag ents/blob/master/docs/Installation-Windows. md – 手順としては、Anaconda入れて仮想環境作って、という流れで すが、Anacondaで仮想環境を作るとPython実行環境や依存 パッケージ類は全部ダウンロードする必要があるので、仮想環境を GUIで管理する必要がなければ、Minicondaを使いましょう。 » https://conda.io/en/latest/miniconda.html 20
  • 21. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • 公式の環境構築ドキュメントの気になる点 – Install Unity 2017.4 or Later • Unity 2017.4は、.NET Framework 4.6に依存しま すが、Unity TensorFlow Pluginは .NET framewor k 4.6.1に依存しており、ビルドエラーになります。Unity 2 018.x以降を利用する必要があります。 – https://github.com/Unity-Technologies/ml-agents/i ssues/552 21
  • 22. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • GPGPU環境は現時点(v0.6.0)で不要 – https://github.com/Unity-Technologies/m l-agents/blob/master/docs/Installation-Wi ndows.md • (Optional) Step 4: GPU Training using The ML -Agents Toolkit – GPU is not required for the ML-Agents toolkit and w on't speed up the PPO algorithm a lot during trainin g(but something in the future will benefit from GPU). 22
  • 23. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • 環境構築の流れ – C#開発環境のインストール – Unityのインストール – Python開発環境のインストール – Unity ML-Agentsプロジェクトの作成 – Python mlagentsパッケージのインストール – Unity TensorFlow Pluginのインストール 23
  • 24. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • 環境構築の注意点 – Unity ML-Agentsの便利な点として、Pythonの 学習コードを書く必要がないとしましたが、Python - Unity間の通信フォーマットを変更する場合は、 Python及びUnity上でgRPC/Protocol Buffers の開発環境を構築する必要があります。 – そしてUnity ML-Agentsが利用しているgRPCラン タイムも特に情報がなく、本家版そのままではなくカス タムビルドされている可能性があるので注意が必要で す。 24
  • 25. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • 環境構築の注意点 – Pythonのmlagentsコマンド実行時のコードは、 Unity ML-Agentsのプロジェクトフォルダではなく、 Anaconda/Minicondaの実行環境にコピーされた コードが実行されているので注意が必要です。 – Unity ML-Agentsのプロジェクト作成は、githubで 公開されているリリースバージョンの書庫を解凍し、 ルートフォルダをリネームすることで完了します。Unity Editor上ではプロジェクト名は全て「Unity SDK」に なってしまうので、パスをみて判断する必要があります。 25
  • 26. わんくま同盟 名古屋勉強会 #47 3. Unity ML-Agentsの環境構築 • Unity ML-Agentsのフォルダ構成 26 フォルダ名 説明 config ハイパーパラメータ、カリキュラム学習設定 docs doxygen生成ドキュメント gym-unity OpenAI Gym実行環境 ml-agents Python機械学習環境インストーラー notebooks Jupyter Notebook実行環境 protobuf-definitions Protocol Buffers通信データ定義 UnitySDK Unityプロジェクトフォルダ unity-volume Dockerフォルダ
  • 27. わんくま同盟 名古屋勉強会 #47 4. デモ Unity ML-Agents 入門 27
  • 28. わんくま同盟 名古屋勉強会 #47 4. デモ • Unity ML-Agents Examples 1. 3DBall 2. BananaCollectors 3. Soccer 4. Tennis 5. WallJump 6. Pyramids 28