본문 바로가기

컴퓨터 공학/머신러닝

[ML-agents] 학습환경이란?

ML-agents에 관한 모든 포스팅 내용은 https://github.com/Unity-Technologies/ml-agents 에 있는 내용을 바탕으로 만들어졌습니다. 


배경지식

ML-agents 툴킷은 아래 세가지의 High-level 컴포넌트들로 생각할 수 있다.

 

  • Learning Environment - Unity scene을 포함한 모든 게임 캐릭터들

  • Python API - Macine Learning과 관련된 학습과 알고리즘으로 구성된 코드. 혼동하지 말아야 할 점은 Python API는 유니티의 일부가 아니라는 점이다. 파이썬은 외부프로그램이지만 작동하지만 위의 그림처럼 External Communicator를 사용하면 유니티와 함께 작동시킬 수 있다

  • External Communicator - 학습환경과 Python API를 연결해 주는 도구.


Learning Environment (학습 환경)

학습환경은 아래 3개의 세부 컴포넌트들로 구성된다. (컴포넌트는 유니티 C#코드에서 실제로 사용됩니다)

 

ML-Agent toolkit 게임 예시 블록 다이어그램

 

  • Agents -  게임 오브젝트에 부착되는 컴포넌트인데, observation(관찰), action(행동), reward(보상) 을 관리한다. 그리고 중요한 점은 각각의 에이젼트가 자신의 Brain과 연결되어 있다는 점이다.

  • Brains - 어떻게 행동을 내릴지에 대한 정보를 캡술화 한 것이다. 따라서 Brain은 각각의 agent가 어떤 Policy를 적용하여 행동해야하는 가에 대한 정보를 가지고 있다. 더욱 자세하게 설명하면, 에이젼트로부터 관찰(Observation)과 보상(Reward)을 입력받아 action을 리턴해주는 컴포넌트이다.

  • Academy - 학습이 잘 이뤄질 수 있도록 도와주는 컴포넌트이다. 이 컴포넌트를 통해 환경을 얼마나 크게 만들지, 랜더링 품질은 어떻게 할지, 학습속도는 어떻게 지정할지, 외부 통신은 어떻게 할지와 같은 것들을 지정할 수 있다.