본문 바로가기

프로그래밍/Unity-ML

Unity-ML의 구조

참고한 사이트: https://blogs.unity3d.com/kr/2017/09/19/introducing-unity-machine-learning-agents/https://mindrich.tistory.com/29

 

유니티 머신러닝 에이전트 소개 – Unity Blog

기존에 작성한 두 개의 블로그 게시물에서 게임이 강화 학습 알고리즘 개발을 진전시키는데 수행할 수 있는 역할이 있다고 언급했었습니다. 유니티는 세계에서 가장 널리 사용되는 3D 엔진 개발업체로 머신러닝 및 게임 분야 사이에서 미래를 그려나가고 있습니다. 머신러닝 연구자가 가장 ...

blogs.unity3d.com

 

Unity ML 기초 1. ML 개요 - ML(머신러닝) Unity

★ 머신러닝(ML)이란 ★ -1. 기계학습 또는 머신러닝은 인공지능의 한 분야이다 -2. 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야 -3. 대량의 데이터나 알고리즘을 통해 '학습' 을 시켜 수행..

mindrich.tistory.com

유니티에서 소개 페이지와 해당하는 블로그의 자료가 모두 최신 자료는 아님, 일반적으로 최신자료는 Github의 문서를 통해서 최신화를 하고 있음 하지만 기본적인 구조는 변하지 않고, 기본구조는 Github에서 다루고 있지않아 부득이 하게 블로그 소개에 있는 글 위주로 정리함

 

유니티 ML은 크게 3개가지의 구성으로 나뉨

아카데미

  • 아카데미는 파이썬(텐서플로)과 연동하여 딥러닝 학습이 필요한 경우 텐서플로와 연동함
  • 아카데미는 씬에 포함되며, 브레인을 자식으로 포함.
  • 각 환경은 한개의 아카데미만 포함하며, 아카데미에서는 학습의 환경을 정의한다.

아카데미에서의 학습 환경 설정

◦ 엔진 설정 – 훈련 및 추론 모드 상에서 게임 엔진의 속도와 렌더링 품질을 설정합니다.

◦ 프레임스킵 – 각 에이전트가 새로운 결정을 내릴 때 생략할 엔진 단계의 개수를 나타냅니다.

◦ 글로벌 에피소드 길이 – 에피소드가 지속될 길이를 의미하며, 에피소드가 이 길이에 도달하면 모든 에이전트가 완료 상태로 바뀌게 됩니다.

브레인

  • 연결된 에이전트가 어떤 행동을 취할지 결정함

 

  • 브레인의 종류

- Player - 플레이어의 입력을 통해 행동을 결정

- Heuristic - 직접 코딩한 동작을 기반으로 행동을 결정

- (new)Learning - 강화학습 / nn(학습된 모델) 파일이 있는 경우 학습된 모델을 테스트 할 수 있음

에이전트

  • 에이전트는 고유의 상태 및 환경 관측 값을 가지고 있다.
  • 환경 내에서 고유의 행동을 하며 환경에서 일어나는 이벤트에 따라 고유의 보상을 받는다
  • 각 에이전트의 행동은 에이전트가 연결된 브레인에 의해 결정된다

Unity ML(머신러닝) - 에이전트 훈련 주기

-1. Agent 행동(Action)

-2. Environment (환경) 상태 변경

-3. Agent 에게 보상 제공

 

기타사항

유니티ML의 경우 기본적으로 PPO 학습 알고리즘을 사용함(파이썬) 이를 원한다면 다른 강화학습 알고리즘으로 수정할 수 있다.

 

훈련방법

기본

동시 단일 에이전트 - 하나의 브레인에 연결된 독립적인 보상 함수를 가지고 있는 여러 개의 독립된 에이전트. 전형적인 훈련 시나리오의 병렬화된 버전으로 훈련 과정의 가속 및 안정화를 꾀함 (데모 프로젝트 – “3DBall”)

적대적 자가 플레이 – 서로 대립되는 보상 함수를 갖고 있으며 하나의 브레인에 연결되어 있고 서로 상호작용하는 두 개의 에이전트. 일대일 게임에서 적대적 셀프 플레이를 통해 에이전트가 가장 완벽한 상대인 자기 자신을 대상으로 훈련하여 기술을 더욱 더 연마할 수 있습니다. (데모 프로젝트 – “Tennis”)

협동형 다중 에이전트 –하나 또는 여러 브레인에 연결되어 있으며 보상 함수를 공유하고 서로 상호작용하는 다중 에이전트. 이 시나리오에서는 단독으로 해낼 수 없는 작업을 수행하기 위하여 모든 에이전트가 협동해야 합니다.(Soccer Twos)

경쟁형 다중 에이전트 – 서로 대립되는 보상 함수를 갖고 있으며 하나 또는 여러 브레인에 연결되어 있고 서로 상호작용하는 다중 에이전트. 이 시나리오에서 에이전트는 서로 경쟁하여 승리를 취하거나 한정적인 자원을 확보해야 합니다. 모든 팀 스포츠가 이 시나리오에 해당됩니다.(바나나 컬렉터?, Soccer Twos)

생태계 – 독립적인 보상 함수를 갖고 있으며 하나 또는 여러 브레인에 연결되어 있고 서로 상호작용하는 다중 에이전트. 이 시나리오는 얼룩말, 코끼리, 기린이 함께 살고 있는 사바나와 같이 각기 다른 목표를 가진 동물들이 서로 상호작용하는 작은 세계를 만들거나, 도심에서의 자율 주행 시뮬레이션을 구현하는 경우를 예로 들 수 있습니다. 

 

유니티에서 제공하는 기능

에이전트의 의사결정 모니터링 – ML 에이전트의 통신은 양방향으로 이루어지기 때문에, 유니티는 Agent Monitor 클래스를 제공하여 유니티 환경 자체에서 정책 또는 수치 출력값 등 훈련된 에이전트의 양상을 표시합니다. 연구자와 개발자는 실시간으로 제공되는 이러한 정보를 바탕으로 에이전트의 행동에서 버그를 더욱 쉽게 수정할 수 있습니다.

학습 할 때 에이전트의 결정을 눈으로 볼 수 있게 해줌

참고사이트: https://mindrich.tistory.com/38?category=755803

 

Unity ML 기초 5. 유니티 ML 기능 정리, 모범적인 환경 구성, 모니터 로그

★ 개요 ★ 유니티 ML 기능을 정리하기 위함 ★ 유니티 강화학습 ★ -1. 환경을 관찰하고, 적절한 보상을 통해 옳바른 행동을 하도록 강화 학습 한다 -2. 환경 관찰 : Observation 기능 -3. 보상 : 옳바른 결정을..

mindrich.tistory.com

커리큘럼 학습 – 에이전트가 훈련 과정 시작부터 복잡한 작업을 학습하기는 일반적으로 쉽지 않습니다. 커리큘럼 학습은 더 효율적인 학습을 위하여 점진적으로 작업의 난이도를 높이는 방식입니다. ML 에이전트는 환경이 초기화될 때마다 사용자 지정 환경 파라미터를 설정하는 것을 지원합니다. 이 기능을 통해 훈련 과정에 따라 난이도 또는 복잡성에 관련된 환경 요소를 동적으로 조정할 수 있습니다.

아카데미에 보면 각 커리큘럼별 학습 수를 설정 할 수 있고, 아카데미 함수를 통해서 다음 커리큘럼으로 넘어갈 수 있음

 

복잡한 시각적 관측 – 에이전트가 단일 벡터나 이미지만 관측하는 타 플랫폼과 달리 ML 에이전트는 각 에이전트가 여러 개의 카메라를 활용하여 관측할 수 있도록 합니다. 이를 통해 서로 다른 시점을 보여주는 여러 카메라가 필요한 자율 주행 차량을 훈련시키는 상황이나 공중 및 1인칭 시점을 조합해야 하는 내비게이션 에이전트, 원시 이미지와 깊이 지도나 객체로 구분된 이미지를 동시에 입력받는 에이전트 등에서 여러 시각적 정보를 통합할 수 있습니다.

에이전드에 보면 카메라를 추가시킬 수 있음

모방학습 - 0에서 배우는 것 아닌 사람 혹은 다른 AI가 학습한 데이터를 가지고 모방해서 학습하는 것. 블로그에는 아직 안된다고 하지만 이미 되고 있음

참고자료: https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Training-Imitation-Learning.md

 

Unity-Technologies/ml-agents

Unity Machine Learning Agents Toolkit. Contribute to Unity-Technologies/ml-agents development by creating an account on GitHub.

github.com

 

'프로그래밍 > Unity-ML' 카테고리의 다른 글

Unity-ML 카메라 환경  (0) 2019.10.15
Unity-ML 비디오 레코더  (0) 2019.09.26
Unity-ML 강화학습 테스트 및 수정  (0) 2019.09.18
Unity-ML 강화학습 예제 작성  (0) 2019.09.18
UNITY-ML 설치 및 세팅  (1) 2019.09.18