본문 바로가기
Games/ML-Agents

[ML-Agents] ML-Agents 구성 요소 알아보기 - Behavior Parameters

by NCTP 2024. 8. 9.

// 파이토치와 유니티 ML-Agents로 배우는 강화학습 책에 대한 공부 요약 글입니다.

 

개요

  ML-agents의 구성 요소를 간단하게 살펴보고, 그 중 Behavior Parameter 컴포넌트의 구성요소에 대해 알아본다.

 

 

 

 


 

 

ML-Agents 의 구성 요소

  ML-Agents 예제 3D Ball의 3DBall의 Agent를 클릭하면, 인스펙터에서 다음과 같은 컴포넌트들을 찾아볼

수 있다.

3D Ball - Agent의 인스펙터 창

  • Behavior Parameters
  • Ball 3D Agent
  • Decision Requester
  • Model Overrider

 

Behavior Parameters

  Behavior Parameters는 학습에 필요한 여러가지 파라미터들을 관리하는 컴포넌트다. Behavior Parameters는 다음과 같은 구성 요소들로 이루어져 있다.

 

 

  • Behavior Name
  • Vector Observation
  • Actions
  • Model
  • Behavior Type
  • Team ID
  • Use Child Sensors
  • Observable Attribute Handling

 

Behavior Parameters - Behavior Name

  Behavior Parameters의 이름을 적는 공간. 여러 개의 Behavior Parameters를 사용할 때 이들을 구분하기 위해 사용

 

 

Behavior Parameters - Vector Observation

  현재 환경에서 사용할 벡터 관측과 관련된 설정을 한다.

 

  • Space Size: 현재 환경에서 사용할 벡터 관측의 크기를 설정. 총 8개의 값들을 벡터 관측을 통해 관측한다면, Space Size 값을 8로 설정해야 한다.
  • Stacked Vectors : 벡터 관측의 누적 횟수. 이는 시간에 따른 누적으로 해당 누적 횟수만큼 시간 스템에 대해서 벡터 관측을 누적한다. 한 순간의 관측으로는 파악이 어려운 경우 이미지들을 누적하여 관측하는 경우 사용.

 

Behavior Parameters - Actions

  에이전트가 취할 행동에 관한 설정들을 한다. 에이전트의 연속적 행동(Continuous Actions)과 이산적 행동(Discrete Branches)의 수를 설정할 수 있다.

Actions - Continuos Actions

  • 3D Ball의 에이전트는 박스를 XY축의 회전을 통해 제어하고 있다.
  • 3D Balls 환경에서는 2로 설정되어있다. 에이전트의 X,Y축에 대한 회전을 제어하기 위해서다.

Actions - Discrete Branches

  • Branch : 행동에 대한 그룹, Branch를 설정하면 Branch Size를 설정할 수 있다.

 

 

  • Branch 0 Size : 0번째 Branch의 사이즈.

  Branches = 1이고, Branch0 Size = 4인 경우를 다음 예시에서 살펴보자.

 

  하나의 Branch(행동의 그룹) 에는 4개의 이산적인 행동이 포함되어 있다.

 

  • Branch 0 : 위, 아래, 왼쪽, 오른쪽 이동

 

 

  이번에는 Branches = 2, Branch 0 Size = 3, Branch 1 Size = 3로 설정해보자.

 

 

  • Branch 0 : 정지, 위, 아래 이동
  • Branch 1 : 정지, 왼쪽, 오른쪽 이동

  이렇게 Branches를 2로 설정하고, 각 브랜치의 사이즈를 3으로 설정하면, 3x3 으로 총 9가지의 행동을 정의하는 것이 가능해진다.

 

 

Behavior Parameters - Model

  mlagents-learn을 통해서 학습된 모델을 적용할 수 있다. mlagents-learn을 통해 학습된 모델은 nn, onnx라는 확장자를 가진 파일로 저장된다. 해당 파일을 Model에 적용하면 유니티 내에서 해당 모델을 기반으로 에이전트를 제어할 수 있게 된다. 

 

Behavior Parameters - Behavior Type

  Behavior Type은 Default, Inference Only, Heuristic Only로 3가지 설정이 존재한다. 

 

  • Default : Model의 학습 모델이 적용되어 있다면, 해당 모델의 학습 결과대로 에이전드가 행동을 수행하는 Inference를 수행한다. 만약 적용된 모델이 존재하지 않으면, 정해진 규칙대로 행동하거나 Heuristic으로 적용된다.
  • Inference Only : 적용된 모델을 통해서만 에이전드의 행동을 결정.
  • Heuristic Only : 특정 규칙에 따라 에이전트의 행동을 결정하거나, 키보드 입력을 설정해 사람이 직접 에이전트를 제어하도록 설정할 수 있다.

 

Behavior Parameters - Team ID

  Team ID는 에이전트간에 공유하는 정책 index를 의미한다.

 

  • 같은 Team ID를 가진 에이전트들은 정책을 공유하여 학습한다. 더 빠른 학습이 가능해진다.
  • 다른 Team ID를 가진 에이전트들은 다른 Team ID를 가진 에이전트들과 경쟁하며 학습한다.

 

Behavior Parameters - Use Child Sensors, Observable Attribute Handling

  • Use Child Sensors : Use Child Sensors를 활성화할 경우, 에이전트의 하위 오브젝트가 센서를 가지고 있다면, 하위 오브젝트의 센서를 에이전트의 관측에 사용할 수 있다.
  • Observable Attribute Handling : 벡터 관측 이외에 관측할 속성을 추가로 넣는 파라미터. 

댓글