본문 바로가기
유니티/mlAgents

유니티 머신러닝 개발 ML Agents 4편, 강화 학습시켜보고, 결과를 이용해 보기

by NGVI 2021. 4. 5.

유니티 머신러닝 개발 ML Agents 4편, 강화 학습시켜보고, 결과를 이용해 보기

4편입니다.

 

이번 시간에는 실제로 강화 학습을 시켜보고, 해당 학습 데이터를 이용하는 걸 해보도록 하겠습니다.

 

우리가 이전에 생성시켰던, 유니티 프로젝트를 다시 오픈합니다.

1편 내용입니다.

 

학습장소를 활성화 시켜봅시다.

Area만 구동시켜 보는 테스트까지 했어죠.

 

Area만 실제 학습된 자료로 플레이 하고,

나머지 Area는 학습을 하는 장소라고 말씀드렸습니다.

 

이번 시간에는 나머지 Area를 활성화시키고, 구동시켜 강화 학습을 진행해보려 합니다.

 

그럼 비활성화된 1~31까지를 활성화시키도록 합시다.

 

활성화 시킨 상태

우리는 지금 PushBlock 예제를 이용해 보고 있죠.

우리가 받음 ml-agents-release_8 에 PushBlock를 학습시킬 수 있는 파이선 프로그램이 포함되어 있습니다.

 

pushBlock.yaml

해당 파일이 학습 프로그램입니다.

해당 프로그램을 아나콘다에서 돌려야 합니다.

 

아나콘다 프롬프트를 켜고 

ml-agents-release_8 이동합니다.

 

다음 화면을 참고합시다.

 

요렇게

가상환경 활성화, 해당 폴더로 이동

 

다음 코드를 통해 교육 프로그램을 구동시킬 수 있습니다.

 

mlagents-learn config/ppo/PushBlock.yaml --run-id=myPushBlockTraining

위에서 설명한 것과 같이 해당 프로그램을 돌리며 

myPushBlockTraining 라는 id로 추적할 계획입니다. 뒤에 사용됩니다. 돌려봅시다.

 

강화학습 구동

아래를 보면 유니티에서 플레이해라 라고 시킵니다.

 

유니티에서 플레이해봅니다.

 

먼가 애덜이 꼬물꼬물 거리면서 돌아갑니다.

유니티에서 플레이합니다.

 

그럼 아나콘다에서도 뭔가 변화가 생깁니다.

연결이 제대로 된다면 말입니다.

돼야 되어요...

 

한동안 학습을 하게 둬야겠죠

 

컴퓨터 성능에 따라 다르지만 어느 정도 시간이 지나면 몇 스탭이 지나갔고, 시간은 얼마가 흘렸고, 보상 수치는 어떻게 훈련되고 있다고 뜹니다.

 

아래와 같은 화면입니다.

 

중간중간 뭐 메시지가 많습니다. GPU를 이용하면 빠를 거 같은데, 이게 보니까 Release 15에서는 뭔가 추가로 안 설정해도 되는 거 같은데, 느리지만 되긴 됩니다...

 

 

훈령 매시 지를 보시도 유니티에서 플레이를 마칩니다.

그럼 훈련은 종료되게 됩니다.

 

여러분은 블록을 미는 강화 학습을 시켜보셨습니다.

 

이 강화학습을 결과는 어디에 있을까요?

 

넵 이어갑니다.

 

우리가 프로그램을 돌린 폴더에

results 란 폴더 아래

우리가 추적하려 했던 아이디의 폴더가 존재합니다.

 

내부에. nn 파일이 생성됩니다.

해당 파일이 우리가 강화 학습을 시킨 데이터입니다.

 

ml-agents-release_8\results\myPushBlockTraining

 

요놈이 강화학습을 시킨 결과

그럼 이 결과를 돌려봐야 되겠죠

 

해당 파일을 이름을 

PushBlock.nn에서 myPushBlock.nn 으로 교체합니다.

이미 유니티에서는 PushBlock.nn 파일이 존재해서입니다.

 

아래 폴더로 복사시킵시다.

복사시키기

이제 우리는 학습된 데이터로 플레이를 해봐야겠죠

 

다시 Area1~31은 학습시키는 장소니까 비활성화해줍니다.

 

참고자료

Hierarchy에서 Area의 Agent 찾고, 인스펙터 창을 봅니다.

인스팩터 창에 model 항목을 우리가 교육시킨 파일로 교체

 

플레이해봅니다.

 

아이의 상태가 먼가 이상합니다.

교육이 덜된 우리 아이...

 

여기까지 하시면 

mlagent의 설치와 예제를 플레이해보셨다고 말씀드릴 수 있습니다.

 

이걸 기반으로 수정해나가시며 자신만의 프로그램을 만드는 시작을 해볼 수 있겠죠!

댓글