見出し画像

Unity ML-Agents 0.14.0 のエージェントのコンポーネント

「Unity ML-Agent」の「エージェント」で利用するコンポーネントをまとめました。

1.  Behavior Parameters

エージェントには、必ず「Behavior Parameters」を追加します。

画像1

・Behavior Name : ビヘイビア名。訓練設定ファイルのセクションとして利用。
・Vector Observation
 ・Space Size : Vector Observationのサイズ。
 ・Stacked Vectors : 過去の状態をスタックし観察対象に含める。
・Vector Action
 ・Space Type : 行動種別(Continuous / Discrete)。
  ・Continuous
   ・Space Size : 行動のサイズ。
  ・Discrete
   ・Batches Size : バッチのサイズ。
   ・Batche X Size : バッチXのサイズ。
・Model : 推論に利用するモデルの参照。
 ・Inference Device : 推論デバイス(CPU/ GPU)
・Behavior Type : 振る舞い種別(Default / Heuristic Only / Inference Only)
・Team Id : セルフプレイのチームID。
・Use Child Sensors : のエージェントの子ゲームオブジェクトのセンサーの利用。

2. Decision

[観察 → 決定 → 行動 → 報酬]のサイクルは、エージェントが「決定」(Decision)を要求するたびに実行されます。「決定」の要求方法は次の2つです。

・Decision Requestr : 定期的に決定を要求
・RequestDecision() : 任意のタイミングで決定を要求

◎ Decision Requestr
エージェントに「Decision Requestr」を追加すると、定期的に「決定」が実行されるようになります。

画像2

・ Decision Period : 何ステップ毎に「決定」を実行するかを指定。
・ Repeat Action : 「決定」が要求されないステップでAgentAction()が呼ばれるかどうか。
・ Offset Step : エージェントの「決定」をランダムなオフセットで開始するかどうか。

◎ RequestDecision()
エージェントのRequestDecision()を呼ぶことで、任意のタイミングで「決定」を実行することができます。ターン制ゲームなど、「決定」が定期的でない学習環境で役立ちます。

3. Visual Observationのセンサー

「Visual Observation」を使うときは、以下のセンサーを使います。

・Camera Sensor Component : Cameraの映像を観察として利用
・Render Texture Sensor Component : RenderTextureの映像を観察として利用

◎ Camera Sensor Component
Cameraの映像を観察として利用するには、「Camera Sensor Component」を追加します。

画像3

・Camera : カメラの参照。
・Sensor Name : センサー名。
・Width : 画像の幅(ピクセル)。
・Height : 画像の高さ(ピクセル)。
・Grayscale : グレースケールかどうか
・Compression : 圧縮(PNG / None

◎ Render Texture Sensor Component
RenderTextureの映像を観察として利用するには、「Render Texture Sensor Component」を追加します。

画像4

・Render Texture : レンダーテクスチャの参照。
・Sensor Name : センサー名。
・Grayscale : グレースケールかどうか
・Compression : 圧縮(PNG / None

4. Raycast Observationのセンサー

「Raycast Observation」を使うときは、以下のセンサーを使います。

・Ray Perception Sensor Component 3D : 3Dのレイキャスト観察。
・Ray Perception Sensor Component 2D : 2Dのレイキャスト観察。

◎ RayPerceptionSensorComponent3D
3Dのレイキャスト観察を行うには、「Ray Perception Sensor Component 3D」を使います。

画像5

・Sensor Name : センサー名。
・Detectable Tags : 検出可能タグ。
・Rays Per Direction : 中心から左右のレイの数。
・Max Ray Degrees : 最外のレイの正面からの角度。
・Sphere Cast Radius : レイとして飛ばす球の半径。ラインのみ衝突反転は0に指定。
・Ray Length : レイの長さ。
・Ray Layer Mask : レイが衝突するレイヤーの制限。
・Observation Stacks : 過去の状態をスタックし観察対象に含める。

【Debug Gizmos】
・Ray Hit Color : レイの衝突時の色。
・Ray Miss Color : レイの未衝突時の色。
・Use World Positions : レイキャスト時にワールド空間で描画するかどうか。

【3D Properties】
・Start Vertical Offset : レイの始点の上下オフセット。
・End Vertical Offset : レイの終点の上下オフセット。

◎ RayPerceptionSensorComponent2D
2Dのレイキャスト観察を行うには、「Ray Perception Sensor Component 2D」を使います。

画像6

・Sensor Name : センサー名。
・Detectable Tags : 検出可能タグ。
・Rays Per Direction : 中心から左右のレイの数。
・Max Ray Degrees : 最外のレイの正面からの角度。
・Sphere Cast Radius : レイとして飛ばす球の半径。ラインのみ衝突反転は0に指定。
・Ray Length : レイの長さ。
・Ray Layer Mask : レイが衝突するレイヤーの制限。
・Observation Stacks : 過去の状態も観察対象とするか。

【Debug Gizmos】
・Ray Hit Color : レイの衝突時の色。
・Ray Miss Color : レイの未衝突時の色。
・Use World Positions : レイキャスト時にワールド空間で描画するかどうか。


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