본문 바로가기

유니티 ML Agents/ML Agents 개념

7. ML Agents 기본 예제 - 학습

브레인 타입 변경


3DBall 게임을 강화학습을 통해 훈련하는 방법에 대해 알아보자. 학습하기 위해 많은 작업이 선행되어야 하지만 이미 유니티에서 준비를 다 해놨기 때문에 브레인 타입만 변경해서 학습을 하도록 하겠다. 먼저 앞에서 설정한 브레인 타입을 External로 변경하자.


ML 에이전트 실행


강화학습을 진행하기 위해서는 먼저 ML 에이전트를 띄워야 한다. 앞에서 설치한 아나콘다에서 ml-agents 실행 환경을 활성화 시키고 ML 에이전트 관련 파일이 저장된 C:\ml-agents-master 디렉토리로 이동한다실제로 디렉토리를 이동하지 않고 학습과 관련된 메타 정보를 가지고 있는 trainer_config.yaml 파일의 경로만 잘 지정하면 되지만 ML 에이전트와 관련된 모든 작업을 하나의 디렉토리에서 하기 위함이다. 마지막으로 ML 에이전트를 실행하면 된다.


mlagents-learn ML 에이전트를 실행하는 명령어이다. 뒤에 몇가지 옵션이 따라오는데 맨 앞에는 환경 파일 경로를 지정해 준다. 다음으로 run-id가 오는데 여러 개를 동시에 학습시킬 때 구분하기 위한 구분자의 역할을 한다. 마지막으로 –train ML 에이전트에게 학습을 진행한다는 것을 알려준다.


이제 ML 에이전트 실행관련 로그를 화면에서 볼 수 있다. 마지막에 INFO:mlagents.envs:Start training by pressing the Play button in the Unity Editor. 메시지가 나오면 유니티에서 플레이 버튼을 눌러주면 된다. 일정시간 안에 유니티가 실행되지 않으면 ML 에이전트는 자동으로 종료된다.


ML 에이전트 학습 진행


학습이 진행되면 ML 에이전트 실행화면에 관련된 로그가 나온다. (1) 맨 처음에 나오는 것이 유니티에서 설정된 아카데미(Ball3DAcademy) 정보이다. (2) 다음에 브레인(Ball3DBrain) 정보가 나오는데 유니티 인스펙터 뷰에서도 관련 내용을 확인할 수 있다. (3) 세 번째는 강화학습에 사용하는 PPO 알고리즘에 대한 설정 값을 볼 수 있다. (4) 마지막으로 학습 상황을 볼 수 있는데 1000번 학습 할 때 마다 로그를 찍고 있다


ML 에이전트 학습 종료


학습이 진행되는 도중에 유니티에서 플레이 버튼을 한번 더 누르면 학습이 종료되고 학습된 모델은 ./models/first-run-0 폴더에 저장된다.