Search Unity

여러분들이 전달해주신 피드백을 반영하여 Unity ML-Agents 툴킷 v0.6에 새로운 2가지 개선 사항이 추가되었습니다! 브레인을 MonoBehaviors에서 ScriptableObjects로 전환하여 사용성을 높였습니다. 그리고, 전문가의 데모 영상을 녹화하고 이를 오프라인 훈련에 활용할 수 있는 기능을 추가하여 모방 학습을 위한 사용자 워크플로를 개선했습니다.

스크립터블 오브젝트 브레인

초기 버전의 ML-Agents 툴킷에서 브레인은 아카데미 게임 오브젝트에 자식으로 연결된 게임 오브젝트였습니다. 이로 인해 동일한 프로젝트 내의 여러 Unity 씬에 브레인을 재사용하기가 쉽지 않았습니다. 이를 해결하기 위해 이번에 공개한 최신 v0.6 릴리스에서는 브레인을 스크립터블 오브젝트로 전환하여 표준 Unity 에셋으로 관리할 수 있도록 만들었습니다. 그 결과, 브레인을 여러 씬에서 사용하고 브레인이 사전 연결된 상태로 에이전트의 프리팹을 생성하기가 쉬워졌습니다. 뿐만 아니라 기존의 내부 및 외부 브레인을 대체하는 새로운 학습 브레인 스크립터블 오브젝트가 도입되었습니다. 완벽을 기하기 위해 플레이어 및 휴리스틱(Heuristic) 브레인 스크립터블 오브젝트도 도입하여 기존의 플레이어 및 휴리스틱 브레인 유형을 대체했습니다.

다음은 3DBall 환경에서 브레인을 구현하기 전과 후를 보여줍니다.

왼쪽은 ML-Agents v0.5 브레인 게임 오브젝트. 오른쪽은 ML-Agents v0.6의 새로운 스크립터블 오브젝트 브레인

0.6 버전에서는 더 이상 Brain Type 드롭다운을 사용하여 브레인 유형을 변경할 수 없습니다. 플레이어와 학습에 대해 각각 다른 브레인을 생성해야 합니다. 하지만 한 브레인에 설정된 브레인 파라미터를 다른 브레인으로 쉽게 복사할 수 있습니다. Brain 인스펙터에서 “Copy Brain Parameters from” 선택 상자를 사용하면 됩니다. 다른 브레인도 모두 이 필드에 드래그 앤 드롭하여 해당하는 브레인 파라미터를 새 브레인에 복사할 수 있습니다.

또한, 브레인이 더 이상 씬의 일부가 아니기 때문에 Assets 메뉴에서 브레인을 생성할 수도 있습니다.

Asset 메뉴에서 브레인 생성

마지막으로, 훈련 중인 브레인을 추적하기 쉬워졌습니다. 아카데미 컴포넌트에서 Broadcast Hub를 사용하면 됩니다. 이제 브레인 에셋을 이 컴포넌트로 드래그하여 브레인을 외부 훈련 프로세스에 노출할 수 있습니다.

Control 체크박스

브레인에 대해 Control 체크박스를 선택하는 것은 이전 버전의 ML-Agents 툴킷에서 외부 브레인 유형을 사용하는 것과 같습니다. 기본적으로, Control이 선택되어 있는 브레인은 훈련이 되고 있음을 뜻합니다. 훈련하지 않으려면 Broadcast Hub에서 모든 브레인에 대해 Control 체크박스를 선택 해제합니다.

아래의 동영상에서 스크립터블 오브젝트 브레인을 생성하는 방법을 확인하실 수 있습니다.

자세한 내용은 Github의 기술 자료를 참조하시기 바랍니다.

데모 레코더

이제 게임을 플레이할 때 에이전트의 액션 및 관찰 결과를 녹화할 수 있으며, 이 기록을 사용하여 나중에 모방 학습을 통해 에이전트를 훈련시키거나 데이터를 분석할 수 있습니다. 이렇게 하면 학습 데이터를 매번 캡처할 필요 없이 여러 학습 세션에 재사용할 수 있습니다. 에이전트를 녹화하려면 에이전트에 Demonstration Recorder 컴포넌트를 추가하고, Record를 선택하고, 데모에 이름을 지정합니다.

Demonstration Recorder 컴포넌트

이제 플레이 모드로 전환한 후 원하는 에이전트 액션을 수행해 보세요. 녹화가 완료되면 플레이 모드를 중지합니다. 그러면 Demonstration 에셋이 Demonstrations 폴더에 생성됩니다.

데모 에셋

이 기록을 사용하여 에이전트를 훈련시키려면 훈련 구성에서 하이퍼파라미터를 수정합니다.

자세한 내용은 Github에서 관련 기술 자료를 참조하시기 바랍니다.

 

다음 단계

사용자의 의견이 매우 중요합니다. Unity ML-Agents 툴킷에 대한 여러분의 의견과 아이디어로 유니티는 지속적으로 성장하고, 개선할 수 있습니다. 잠깐 시간을 내어 설문 조사에 참여하여 의견을 공유해주시기 바랍니다.

ML-Agents 툴킷과 관련하여 피드백이나 질문이 있는 경우 유니티의 ML-Agents GitHub 이슈 페이지(영문)를 방문하거나 이메일(ml-agents@unity3d.com)로 유니티에 직접 문의해 주시기 바랍니다.

Unity 머신러닝에 참여하고 싶으신가요? 그렇다면 여기에서 관련 채용 공고를 확인하시기 바랍니다.

 

2 코멘트

코멘트 구독

댓글 남기기

사용할 수 있는 HTML 태그 및 속성: <a href=""> <b> <code> <pre>

  1. Great, thank you! Please implement RND ( https://github.com/openai/random-network-distillation ) from OpenAI for ML Agents next! It’s an extension or improvement on PPO which uses two extra networks for curiousity, but it makes such a HUGE positive difference, especially in sparse reward scenarios which are quite common in unity! I tried it on a number of gym environments (atari, nes) and it works really well, much better than PPO, PPO2 or AC3 ever could! Implementing that for unity would open so much possibilities!

  2. ML-Agents is my favourite thing about Unity Engine. it is simple and elegant. I wish we could train our agents without leaving Unity environment but still, I love it. Thanks a lot for this awesome project.