// 파이토치와 유니티 ML-Agents로 배우는 강화학습 책에 대한 공부 요약 글입니다.
개요
ML-agents의 구성 요소를 간단하게 살펴보고, 그 중 Behavior Parameter 컴포넌트의 구성요소에 대해 알아본다.
ML-Agents 의 구성 요소
ML-Agents 예제 3D Ball의 3DBall의 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 : 벡터 관측 이외에 관측할 속성을 추가로 넣는 파라미터.
'Studies > ML-Agents' 카테고리의 다른 글
[ML-Agents] 유니티에 ML-Agents 적용하기 (0) | 2024.08.22 |
---|---|
[ML-Agents] ML-Agents 구성 요소 알아보기 - Agent Script (0) | 2024.08.14 |
댓글