- 設定の変更をする => メニュー[File => Build Settings]
- [Player Settings]ボタンをクリックし、Inspectorウィンドウで以下を設定する
- Resolution and Presentationの設定項目
- Run in Background : チェックする : バックグラウンド実行の有効
- Display Resolution Dialog : Disabled : Resolutionダイアログを非表示
- Other Settingsの設定項目
- Scripting Runtime Version : Experimental(.NET4.6 Equivalent) : Scripting Runtimeのバージョン指定でこれをしないとML-Agentでエラーがでる
- Scripting Defined Symbols : ENABLE_TENSORFLOW : Tensorflowを利用することを指定
- ML-AgentをUnityのAssets内にコピーする=>容量を軽くしたい場合はExampleを消してもOK
- <名前>Academyを作成=<名前>は自分で決める
- Academy.csファイルを<名前>Academy.csに変更しclass名も<名前>Academyに変更する
- Academy内にBrainを追加しBrainスクリプトを適応する(BrainはAdd Componentから追加できる)
- 強化学習 : ある環境におかれたエージェントが環境に対して行動し得られる報酬が最大化されるような方策を求める手法
- 模倣学習 : 他人が行う行動を模倣して学習する(ml-agentの場合は人間が操作する行動を模倣する)
- カリキュラム学習 : タスクの難易度を徐々に上げていくことで、より効率的な学習を可能にする学習方法
- RNN(Recurrent Neural Network) : 時系列を扱えるニューラルネットワークで過去の環境の状態も行動決定の材料に使用できる
- LSTM(Long Short-Term Memory) : RNNの長期記憶の学習がうまくできないという問題を解決したもの(RNNの拡張は現段階でLSTMのみ)
- ICM(Intrinsic Curiosity Module) : まだ見たていない場面い対する好奇心を報酬として勝手に学習させる学習方法
- Agent : 学習環境内で独立して行動するオブジェクト環境の状態の観測とBrainが決定した行動の実行を行う
- Brain : Agentが観測した状態に応じてAgentの行動を決定するオブジェクトで1つのBrainで複数のAgentのActionを決定可能
- Academy : 学習環境を管理するオブジェクトで、各学習環境には必ず1つ存在する
- Single-Agentシナリオ : 単一のBrainにリンクされた単一のAgentの学習シナリオ
- Simultaneous(同時) Single-Agnet : 単一のBrainにリンクされた独立報酬をもらう複数のAgentの学習シナリオ=>Single-Agentの並列化版
- Adversarial(敵対) Self-Play : 単一のBrainにリンクされた逆報酬をもらう敵対した2つのAgentの学習シナリオ
- Cooperative(協同) Multi-Agent : 単一または複数のBrainにリンクされた共有報酬をもらう複数のAgentの学習シナリオ
- Competitive(競争) Multi-Agent : 単一または複数のBrainにリンクされた逆報酬をもらう複数チームの敵対した複数のAgentの学習シナリオ(チームvsチーム)
- Ecosystem(生態系) : 単一または複数のBrainにリンクされた独立報酬をもらう複数のAgentの学習シナリオ
virtual void InitializeAcademy()
: 環境の初期化時に呼ばれるvirtual void AcademyReset()
: 環境のリセット時に呼ばれるvirtual void AcademyStep()
: ステップ毎に呼ばれる
ResetParameters resetParameters
: リセットパラメータの取得
boolGetIsInference()
: 推論かどうかの取得void SetIsInference(bool isInference)
: 推論かどうかの指定int GetEpisodeCount()
: 現在のエピソード数の取得int GetStepCount()
: 現在のエピソードのステップ数の取得void Done()
: エピソード完了bool IsDone()
: Academyがエピソード完了したかどうかの取得bool IsCommunicatorOn()
: コミュニケータがONかどうかの取得Communicator GetCommunicator()
: コミュニケータの取得
コミュニケータ : Unityの学習環境と学習用Pythonスクリプトの間の通信を管理するオブジェクト
- Max Steps : エピソードの最大ステップ数で最大ステップ数に到達するとAcademyと全Agentのエピソード完了 一定時間後にエピソードが完了しない場合は0を指定(利用しない場合は0)
- Training Configuration : 学習時のレンダリング品質と実行速度
- Width : ウィンドウの幅(ピクセル)
- Height : ウィンドウの高さ(ピクセル)
- Quality Level : 描画のクォリティ(低0 ~ 5高)
- Time Scale : 環境の実行速度(1~100倍)
- Target Frame Rate : フレームレート(-1 : 最大[最も高いフレームレートということ])
- Inference Configuration : 推論時のレンダリング品質と実行速度(基本的に設定はTraining Configurationと同じ)
- Reset Parameters : リセット時に変更可能なリセットパラメータ
- メニュー[Edit => Project Settings => Quality]
- V Sync Count を ** Don't Sync ** に指定
- Every V Blank : 垂直ブランクと同期. フレームレードがディスプレイのリフレッシュレートに依存
- Every Second V Blank : 1つおきに垂直ブランクと同期
- Don't Sync : 同期しない. スクリプトによるフレームレート設定を適用
BrainスクリプトはAddComponetでBrainと検索することで適用できる
- Vector Observation : 数値型の状態情報の設定
- Space Type : データ型
- Space Size : データサイズ(平面のx,y座標のみが環境からの情報ならサイズは2)
- Stacked Vectors : 過去のVector Observationのスタック数
- Visual Observation : 任意のカメラの画像情報の設定
- Size : サイズ(カメラの数 使用しない場合は0)
- Element 0
X : カメラの設定(0Xはカメラの数)- Width : 幅
- Height : 高さ
- Black and White : グレースケール
- Vector Action : 数値型の行動の設定
- Space Type : データ型
- Space Size : サイズ(行動の種類)
- Action Descriptions : 行動の説明
- Size : 行動の説明の数
- Elemnt 0
X : 行動の説明(0Xは行動の説明の数分Elementがあるということ)
- Brain Type : Actionの決定方法
- External : 外部のTensorFlowでActionを決定
- Internal : 推論モデルでActionを決定
- Player : 人間の操作(キー入力など)でActionを決定
- Heuristic : 手書きのプログラムでActionを決定
- Broadcast : PythonスクリプトでAgentの情報を収集するか(チェックをいれると収集する)
- Default Action : キー入力なし時に通知するAction値
- Discrete Player Actions : キー入力時に通知するAction値
- Size : キー設定の数
- Element 0~X : キー設定
- Key : キー
- Value : Action値