본문 바로가기

유니티 ML Agents/ML Agents 개념

1. ML Agents 개념

○ ML 에이전트 개념


ML 에이전트의 학습 환경(Learning Environment)은 아카데미, 브레인 그리고 에이전트로 구성된다. 학습 환경이란 유니티 씬과 씬을 구성하고 있는 게임 캐릭터를 말한다.


ML 에이전트 개념도


에이전트는 강화학습에 참여하는 게임 캐릭터를 말한다. 에이전트는 브레인 정책에 따라 행동(Action)을 하고 자신의 관점에서 환경을 이해(Observation)하고 그것을 숫자 또는 이미지로 변환해서 관찰 값으로 저장한다. 에이전트는 브레인에게 행동에 따른 보상 값을 계산해서 관찰 값과 같이 전달한다.


브레인은 관찰 값을 기반으로 정책에 따라 에이전트가 최적의 행동을 취할 수 있도록 정책 실행 결과 값을 반환한다. 학습을 통해 최적의 정책을 찾는 것이 강화학습의 목적이다. 최적의 정책이란 누적 보상 값을 가장 크게 만드는 행동 결정 규칙을 말한다.

에이전트는 브레인으로부터 전달 받은 정책 실행 결과 값을 바탕으로 다음 행동을 결정한다. 그리고 행동에 따른 상태 변화에 따라 새로운 보상 값을 계산한다.


아카데미는 에이전트와 브레인이 잘 동작할 수 있도록 관리하는 기능을 제공하며 외부 또는 내부에 있는 브레인과 관찰 값, 보상 값, 정책 실행 결과 값을 주고 받을 수 있는 통신 기능을 담당한다.


○ 유니티와 ML 에이전트


유니트와 ML 에이전트


일반적인 유니티 환경을 다시 한 번 살펴보자. 유니티는 씬에 게임 오브젝트가 추가되는 방식으로 게임이 개발되며 게임 오브젝트는 컴포넌트에 의해 특성이 정의된다. 게임은 이벤트 기반으로 동작하면 게임 오브젝트가 이벤트에 적절하게 동작하기 위해서는 스크립트 컴포넌트를 통해 동작을 구체적으로 정의해야 한다.


여기에 강화학습 기능과 강화학습 결과로 생성된 모델을 사용하기 위한 ML 에이전트를 추가하기 위해서는 먼저 씬에 브레인과 아카데미 객체(씬 뷰에서 시각적으로 보이지는 않고 계층 뷰에서만 확인 가능)를 추가하고 학습할 게임 오브젝트에 에이전트 컴포넌트를 추가한다. 구체적인 동작을 정의하기 위해 객체에 스크립트를 추가하고 프로그래밍한다.


ML 에이전트 또한 유니티에서 사용하는 하나의 게임 오브젝트로 이해하는 것이 좋다. 하나 특이한 점은 유니티 내부의 기능만을 사용하는 것이 아니라 외부에 있는 파이썬과 통신하면서 결과를 만들어 낸다는 점이다.