★ 개요 ★

유니티 ML 기능을 정리하기 위함


★ 유니티 강화학습

-1. 환경을 관찰하고, 적절한 보상을 통해 옳바른 행동을 하도록 강화 학습 한다

-2. 환경 관찰 : Observation 기능

-3. 보상 : 옳바른 결정을 하면 높은 보상을, 안좋은 행동을 하면 - 보상을 주어서 보상이 높은 행동을 하게 한다

-4. PPO(Proximal Policy Optimization) : ML-Agent 는 PPO 라는 강화 학습을 사용한다

(PPO 기능은 TensorFlow 에서 정의한 알고리즘을 사용하고, 별도의 Python 프로세스에서 실행된다)



★ 유니티 ML-Agent 프로세스 순서 ★

- ML-Acamemy Loop 순서 -

-1. Academy 초기화 : AcademyReset() 함수 호출

-2. Agent 초기화 : AgentReset() 함수 호출

-3. 환경 관찰 정보 수집 : 각각의 Agent의 CollectObservations() 함수 호출

-4. Brain 다음 행동 결정 : 각각의 Brain 들이 Agent 다음 행동으로 무엇을 할 것인지 결정한다

-5. AcademyStep() 함수 호출

-6. Brain 이 결정한 다음 행동 수행 : AgentAction() 함수 호출

-7. Agent 종료 체크 : AgentOnDone() 함수 호출. 

(1) Agent 가 MaxStep 에 도달한 경우

(2) Agent 함수 내부에서 Done() 함수를 호출 한 경우


-8. Academy Reset : Academy 가 Max Step 에 도달한 경우 다음 episode 를 수행한다




★ ML-Agent 유니티 Scene 구조도 ★

-1. Academy : Scene 에는 오직 하나의 Academy 가 존재해야 한다

-2. Brain : Academy 자식으로 하나 이상의 Brain 이 존재해야 한다

-3. Agent : 작업을 수행하는 Agent 들이 존재한다



★ Academy ★

-1. Agent 의 의사 결정 프로세스를 조정

-2. InitializeAcademy() : Academy 초기화

-3. AcademyReset() : 다음 Training Episode 를 준비

-4. AcademyStep() : 다음 Simulation Step 을 준비



★ Brain ★

-1. Brain 은 Academy 의 자식으로 있어야 한다

-2. 모든 Agent 는 Brain 을 할당받아야 한다

-3. External : 외부 Tool 을 사용해 강화학습 모델을 만든다

-4. Internal : External 로 만든 모델을 사용하여 ML-Agent 를 수행한다



★ Agent ★

-1. 환경 정보를 수집한다

-2. 모든 Agent 는 Brain 을 할당 받아야 한다

-3. CollectObservations() : 환경 정보를 수집

-4. AgentAction() : Brain 이 결정한 행동을 수행한다




★ 모범적인 환경 구성 - 보상 

-1. 옳바른 행동 : 1.0 이상의 보상을 주는것이 좋다

-2. 작은 긍적 행동 보상 : 0.1 정도가 좋다

-3. 빠른 시간에 해결해야하는 문제 : 매 Frame -0.05 의 보상을 주는것이 좋다

-4. 너무 큰 부정적 보상 : 안좋은 행동으로 이어질 수 있다




★ 모범적인 환경 구성 - 벡터 관측 

-1. 최적의 결정을 내리는데 필요한 모든 변수를 포함해야 한다

-2. -1 ~ 1 사이의 값으로 변환하여 관찰해야 한다

-3. AgentAction 의 값들은 -1 ~ 1사이의 값들로 들어온다




★ 실시간 모니터 로그 확인

-1. Academy 에 Monitor 초기화



-2. Log 찍기

- value : -1 ~ 1사이의 값으로, 빨간색 : -값, 초록색 : +값으로 표시된다


-3. 결과




+ Recent posts