Unity MLトレーニング学習環境構築(初級編)part3

0.はじめに

本記事では、「ml-agents-release_3(2020年6月10日発売)」のリリースを使って、Unityで "ボール(Agent)" が "ボックス(Target)" を追いかけるトレーニング環境を、全3回に渡って構築していきます。
第3回は、トレーニングと推論です。

1.Trainer Config YAML

トレーニング用のハイパーパラメータは、"mlagents-learn"プログラムに渡す構成ファイルで指定されている。その設定を以下のように行う。
(1)rollerball_config.yamlの設定
①メモ帳(その他テキストエディタ)を開く
②次のコードを入力し、「UnityRollerBall → ml-agents-release-3 → config」内に『rollerball_config.yaml』と名前を付けて保存する。

behaviors:
 RollerBall:
   trainer_type: ppo
   hyperparameters:
     batch_size: 10
     buffer_size: 100
     learning_rate: 3.0e-4
     beta: 5.0e-4
     epsilon: 0.2
     lambd: 0.99
     num_epoch: 3
     learning_rate_schedule: linear
   network_settings:
     normalize: false
     hidden_units: 128
     num_layers: 2
   reward_signals:
     extrinsic:
       gamma: 0.99
       strength: 1.0
   max_steps: 500000
   time_horizon: 64
   summary_freq: 10000


3.Pythonを使用したトレーニング

(1)"Anaconda Prompt"を開く
(1.5)Anaconda内のライブラリを更新し、最新のバージョンと対応できるようにする。以下のコマンドを入力し、更新を行う。

conda update --all

(2)環境をアクティブ化する

conda activate rollerball

(3)「ml-agents-release-3」ディレクトリに移動する

cd UnityRollerBall/ml-agents-

(4)次のコマンドを入力して、学習を始める準備をする

mlagents-learn config/rollerball_config.yaml --run-id=RollerBall

コマンド解説:
・mlagents-learn
 トレーニングを実行するPythonプログラム
・config/rollerball_config.yaml
 構成ファイルへの相対パス
・--run-id=RollerBall
 このラウンドのトレーニングに付けるために選択した任意の名前

(5)Unityを実行する
プロンプトが下図のようになったら、スタートの合図です。Unityに戻って実行ボタンを押すと学習が開始されます。

画像1

実行したては、ボールが"Floor"の外に向かっているのが分かると思います。

画像2

20000ステップ後です。ボールが落ちることなくボックスに向かっているのが分かると思います。

画像3

(6)学習を終了する
プロンプトの方で「Ctrl + C」、またはUnityの方で、実行ボタンを押して止めます
終了するとプロンプトが次の図のようになり、赤枠で囲まれた部分が『推論モデル』の保存先+データ名となる。
保存先:results → RollerBall
保存名:RollerBall.nn (←nn形式が推論モデル)

画像4


4.『推論モデル』を使って実行

【3.Pythonを使用したトレーニング】でトレーニングしたニューラルネットワークを使用してボール(Agent)自身が決定を下して動きます。また、これにより、Pythonによる操作も必要なくなります。

(1)『推論モデル』をUnityにコピー
①プロジェクトウィンドウの「Assets」内に、「result → RollerBall」の中にある、『RollerBall.nn』をドラッグしてコピーする。

画像5

(2)プレハブに組み込む
①インスペクタウィンドウの"RollerAgent"を選択し、インスペクタウィンドウ内の「Behavior Parameters(Script) → Model」に先ほど保存した『RollerBall.nn』をドラッグして追加する。

画像6

(3)実行
実行すると、ボール(Agent)がボックス(Target)を追いかけていくようになります。もちろん、落ちたらボールが中央に戻り、再び追いかけます。

画像7




この記事が気に入ったらサポートをしてみませんか?