본문 바로가기

유니티 ML Agents/ML Agents 개념

11. ML Agents 기본 예제 - Ball3DBrain 분석

Ball3DBrain


Ball3DBrain 객체에서 중요한 부분은 역시 Brain 컴포넌트 설정 부분이다.


Vector Observation 속성 중 Space Size는 몇 개의 변수를 수집할 지 지정하는 부분이다. 여기에서 지정된 숫자와 Ball3DAgent 클래스의 CollectObservations 함수에서 브레인으로 전달하기 위한 관찰 값을 저장하고 있는 AgentInfo(AddVectorObs 함수에 인자로 들어가는 값은 내부적으로 AgentInfo 구조체에 저장)에 들어가는 변수의 개수가 일치해야 한다.


Stacked Vectors는 브레인으로 전달하기 위한 변수 세트 크기를 지정한다. 이 값이 2이 지정되어 있다면 2세트 모두 16(8x2)의 변수가 브레인으로 한번에 전달된다는 의미이다.


Visual Observation 부분은 이미지로 전달되는 크기를 지정하는 속성이다. 현재 이미지를 사용하지 않기 때문에 0으로 설정되어 있다.

Vector Action 속성은 브레인에서 에이전트로 으로 전달되는 변수의 형태를 지정하는 부분이다. 에이전트를 브레인으로 관찰 값을 벡터(Vector Observation) 형태로 전달하고 브레인으로부터 행동 판단에 필요한 값을 역시 벡터(Vector Action) 형태로 전달 받는다.

변수 유형을 결정하는 Space Type에는 Discrete Continuous가 있는데 Discrete는 이산형의 정수 형태이고 Continuous는 연속형인 실수 형태이다. Space Size는 전달되는 변수의 개수를 지정하는 속성이다.


Action Descriptions은 전달되는 변수에 대한 설명을 적는 부분이다. 필수 요소는 아니지만 주석의 역할을 하기 때문에 프로그램 이해를 돕기 위해 사용하면 좋다.


BrainType은 모두 4가지가 있다. Player로 지정하면 사용자가 직접 에이전트를 조작하게 된다. Heuristic으로 지정하면 아래에 지정된 Decision 클래스가 에이전트의 행동을 결정하게 된다. External로 지정되면 외부에 있는 파이썬 모듈과 통신하면서 학습을 진행하고 학습 결과를 에이전트로 전달해서 행동을 결정하게 된다. 일반적으로 강화학습에 가장 많이 사용되는 브레인 유형이다. Internal로 지정되면 이미 학습된 모델을 사용해서 행동을 결정하게 된다. External로 학습하고 Internal로 학습된 결과를 사용한다고 보면 된다.