*??표시되어있는 부분은 아직 확실하게 이해하지 못한 부분입니다.

차후에 관련서적을 참고하고 업데이트 할 것 같아요!


저번에 설치한 환경설정을 한 5번 정도 시행착오를 거쳐서 이제 완벽하게 설치 가능합니다. 

관련 정보는 mlagent설치하기 포스팅에서 확인해주세요!


이제 설치한 환경 중 3d ball 환경을 하나하나 분석해보았는데요.

관련하여 정리를 하다보니 기반 지식이 많이 부족하여 생각보다 시간이 많이 걸리더군요... (부동소수점, 이산의 개념...)

그리고 생각보다 새로나온 기능이라 그런지 설명을 찾기 힘든 부분도 있었고요(ex... PPO Algorithm. 공식 사이트인 openAI설명이 전부인데 별로 똑똑하지 않은 사람이라 잘 이해가 안됐다... 어디서부터 공부를 시작해야 될지. 우선은 마구잡이로 쑤셔넣고 있습니다.)


단일 환경에 대한 이해 (3d ball 예제로)

3D Balance Ball 장면을 후에 가장 먼저 알아야 점은 하나가 아닌 여러 플랫폼이 포함되어 있다는 것입니다

장면의 플랫폼은 독립적 에이전트이지만 모두 동일한 두뇌를 공유합니다

3D Balance Ball 모든 12 명의 agent 동시에 교육에 기여하기 때문에 교육 속도를 높이기 위해이 작업을 수행합니다.




Academy

아카데미 구성 요소에는 환경 작동 방식을 제어하는 여러가지 속성이 있다.

예를들어 Training Inference Configuration 속성은 Unity 응용프로그램의 그래픽과 시간 속성을 설정한다.

아카데미는 교육을 하는 동안에는 Training Configuration 사용하고 교육을 하지 않을 때는 Inference Configuration 사용한다일반적으로 Training Configuration에는 낮은 그래픽 품질과 높은 time scale 설정하고, Inference Configuration 높은 그래픽 품질과 time scale 1.0으로 설정한다


??참고: 교육중에 환경을 관찰하려면 Inference Configuration 설정을 화면과 time scale 1:1 가깝도록 조정한다. 실질적으로 트레이닝을 때는 파라미터를 초기값으로 되돌린다. 그렇지 않으면 훈련의 시간이 너무 길어질 것이다. 

(inference Configuration의 timeScale을 training configuration과 같은 스케일로 조정했는데 의미있는 발견을 얻지 못했다.)


??Academy 구현

기본 아카데미 클래스는 추상 클래스이기 때문에 항상 하위 클래스를 정의해야 한다. 모두 선택적이지만 구현할 있는 가지 기능이 있다.

  • Academy.InitializeAcademy () - 환경이 시작될 호출됩니다.
  • Academy.AcademyStep () - agent.AgentAction () 전에 모든 시뮬레이션 단계에서 호출됩니다.
  • Academy.AcademyReset () - 아카데미가 시뮬레이션을 시작하거나 다시 시작할 호출됩니다 (처음 포함).



3d ball예제에서는 환경에서 이러한 기능을 사용하지 않는다. (사용하지 않는다길래 분석하지 않았다...나중에 사용하는 곳이 있으면 다루겠습니다. ) 필요할 때마다 에이전트가 재설정되지만 많은 환경에서는이 기능을 사용하여 에이전트 주변 환경을 제어합니다.


Brain

모든 brain객체는 Academy 자식 개체여야 한다. brain agent 대한 정보를 저장하지 않고 상담원이 수집한 관찰 내용을 의사 결정 과정으로 정하고 선택한 작업을 agent에게 명령합니다. 따라서 모든 agent 동일한 두뇌를 공유하지만 독립적으로 행동할 있다.


Brain 유형

External - agent 훈련할

Internal - 숙련된 모델을 사용할

Heuristic - Decision 클래스를 확장하여 agent 논리를 직접 코딩함

Player - 키보드 명령을 작업에 맵핑할 있으므로 agent 환경을 테스트 유용


*만약, 어떠한 brain 사용자가 필요로 하지 않을 경우, 사용자는 자신만의 CoreBrain 생성할 있다.



??벡터 관측 공간

의사 결정을하기 전에 에이전트는 자신의 상태를 환경에서 관찰한다벡터 관측은 에이전트가 결정을 내리는 필요한 관련 정보가 들어있는 부동소수점의 벡터입니다. 3d ball예시에서 사용 뇌의 instance 8 state size 갖고 Continuous vector observation space 사용하였다 의미는 agent 관찰을 포함하는 특징 벡터가 8개의 요소를 포함한다는 것이다. (8개의 요소: x z플랫폼의 회전 구성 요소와 x, y z구성 요소를 볼의 상대적 위치와 속도. - 관찰값은 agent collectObservations()기능에서 정의된다.)

(8개의 요소를 갖는다는 의미를 잘 파악할 수 없었다. 왜냐하면 현재 요소는 내가 보기에는 4가지로 보이기 때문...)


*부동소수점이란?

실수를 가수부와 지수부로 나누어서 표현함. 

그렇기 때문에  많은 범위를 표현할  있음하지만항상 10진수로 변환할  오차가 생기게 근사치만 구함.



벡터 작업 공간(space type : Continous/ discrete,  연속/ 이산)

에이전트는 행동 양식으로 두뇌의 지시를받습니다 . ML-Agents 툴킷은 동작을 가지 유형으로 분류합니다

continuous type은 연속적으로 달라질 수있는 숫자의 벡터입니다벡터의 요소는 에이전트 논리에 의해 정의됩니다 (PPO 교육 프로세스는 다른 값을 시도 때받은 보상을 기준으로 특정 상태를 관찰 어떤 값이 나은지를 학습합니다). 예를 들어 요소 Rigidbody 에이전트에 적용된 또는 토크를 나타낼 있습니다 . 

discrete type 동작 벡터 공간은 테이블과의 작업을 정의합니다에이전트에 주어진 작업은 테이블에 대한 인덱스 배열입니다.


*ppo(Proximal Policy Optimization)

open AI에서 출시한 알고리즘. 근위 정책 최적화로 대략적으로 가이드라인(감독) 상태에서 교육을 시키는 알고리즘.

다른 알고리즘에 의하여 적은 매개 변수로 우수한 결과를 얻어낼 있음. 최근에 새로나온 알고리즘. 


(3d ball 예제에서는 연속타입과 이산타입을 둘 다 시뮬레이션 해볼 수 있는데 시도해본 결과 차이는 플레이트의 움직임이 끊기는지 아니면 끊기지 않고 연속적으로 움직이는지 정도의 차이가 있었다. 이산의 개념에 대해서 알아보니 연속되지 않는 것을 의미한다.)



에이전트

에이전트는 환경에서 관찰하고 행동하는 행위자입니다. 3d ball 예제 환경에서 에이전트 구성 요소는 12 개의 Platform GameObjects 배치됩니다기본 Agent 객체에는 동작에 영향을주는 가지 속성이 있습니다.


  • 두뇌 - 모든 요원은 두뇌가 있어야합니다두뇌는 에이전트가 결정을 내리는 방법을 결정합니다. 3D Balance Ball 장면의 모든 에이전트는 동일한 두뇌를 공유합니다.
  • Visual Observations - 에이전트가 환경을 관찰하기 위해 사용하는 Camera 객체를 정의합니다. 3D Balance Ball 카메라 관측을 사용하지 않습니다.
  • Max Step - 에이전트가 완료 결정을 내리기 전에 발생할 수있는 시뮬레이션 단계 수를 정의합니다. 3D Balance Ball에서 에이전트는 5000 단계 후에 다시 시작됩니다.
  • Reset On Done- 에이전트가 완료 다시 시작할지 여부를 정의합니다3D Balance Ball  단계를 설정 하여 최대 단계   도달 하거나 공을 놓은 후에 agent 다시 시작되도록합니다 .



에이전트의 흥미로운 측면은 에이전트 서브 클래스 구현입니다에이전트를 만들 기본 에이전트 클래스를 확장해야합니다. Ball3DAgent 서브 클래스는 다음 메소드를 정의합니다.


  • agent.AgentReset () - 세션이 시작될 때를 포함하여 에이전트가 재설정 호출됩니다. Ball3DAgent 클래스는 reset 함수를 사용하여 플랫폼과 공을 재설정합니다 기능은 재설정 값을 무작위로 지정하여 교육이 특정 시작 위치 플랫폼 태도 이상으로 일반화되도록합니다.
  • agent.CollectObservations () - 모든 시뮬레이션 단계를 호출합니다. agent 환경 관찰을 수집한다. 에이전트에 할당 Brain 인스턴스는 state size 8 continuous vector observation space 설정되므로, CollectObservations() AddVectorObs 8 호출해야합니다.
  • agent.AgentAction () - 모든 시뮬레이션 단계를 호출합니다두뇌가 선택한 행동을받습니다. Ball3DAgent 예제는 연속 불연속 작업 공간 유형을 모두 처리합니다 환경에서는 상태 유형간에 실제로 많은 차이가 없습니다. 벡터 공간 모두 단계에서 플랫폼 회전의 작은 변화를 가져옵니다.(불연속(이산) 플랫폼의 움직임이 끊어진다.) AgentAction() 함수는 상담원에게 보상을 할당합니다 예에서 에이전트는 플랫폼에서 볼을 유지하는 단계에 대해 작은 긍정적 보상을 받고 공을 떨어 뜨리는 대한 부정적인 보상을받습니다에이전트는 볼을 떨어 트리면 완료로 표시되어 다음 시뮬레이션 단계에서 볼로 리셋됩니다.


external 교육하고 internal 교육 모델 적용하는 것은 mlagent설치 포스팅에 설명해 두었기 때문에 


tensorflowboard 훈련 진행 관찰하는 방법에 대해서만 설명하겠습니다.


교육을 실행한 후에 ml-agents 디렉토리에 summaries디렉토리가 포함됩니다.

교육과정을 자세히 관찰하기 위해 tensorBoard 사용할 있습니다.

terminal tensorboard --logdir=summaries 타이핑 하신 후에 


브라우저에 localhost:6006 주소로 이동합니다.

주소로 이동하면 아래와 같은 분석 차트가 나옵니다. 저는 시뮬레이션을 두 번 저장하여 아래와 같은 비교 그래프가 나옵니다.

시뮬레이션 값을 한 번 저장하면 그래프가 하나만 나옵니다. 


시뮬레이션의 이름을 다르게 저장하는 방법은 

mlagents-learn config/trainer_config.yaml --run-id=firstRun --train


에서 firstRun의 이름을 원하는 이름으로 바꾸는 것입니다. 

저는 제 이름인 dohee로 저장하였기에 dohee라는 데이터 값으로 파란 그래프가 생성된 것입니다.




tensorBoard에서 교육과 관련된 요약 통계 있습니다. (그래프 분석)

  • lesson커리큘럼 교육을 수행 때만 흥미 롭습니다 . 3D Balance Ball 환경에서는 사용되지 않습니다.
  • Cumulative Reward (누적 보상) - 모든 에이전트에 대한 평균 누적 에피소드 보상성공적인 교육 세션 중에 증가해야합니다.
  • Entropy - 모델의 결정이 얼마나 무작위인지를 나타냅니다성공적인 훈련 과정에서 천천히 감소해야합니다너무 빨리 감소하면, beta 하이퍼 매개 변수가 증가해야합니다.(beta...하이퍼 매개변수는 무엇일까...??)
  • Episode Length (에피소드 길이) - 모든 상담원을위한 환경의 에피소드의 평균 길이입니다.
  • Learning Rate - 학습 알고리즘이 최적의 정책을 검색 걸리는 크기시간이 지남에 따라 감소해야합니다.
  • Policy Loss - 정책 기능 업데이트의 평균 손실정책 (작업 결정 프로세스) 변경되는 정도와 관련됩니다 훈련의 규모는 성공적인 훈련 기간 동안 감소해야합니다.
  • Value estimate - 에이전트가 방문한 모든 주에 대한 평균값 추정치성공적인 교육 세션 중에 증가해야합니다.
  • Value Loss - 함수 업데이트의 평균 손실입니다모델이 상태의 가치를 예측할 수있는 정도와 상관 관계가 있습니다성공적인 교육 세션 동안이 값이 감소해야합니다.



reference

https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Getting-Started-with-Balance-Ball.md

<부동소수점에 관하여>

http://tcpschool.com/cpp/cpp_datatype_floatingPointNumber

<PPO>

https://blog.openai.com/openai-baselines-ppo/


'mlAgent' 카테고리의 다른 글

mlagent 기본적인 환경 구축하기  (0) 2018.11.18
ML-Agents Toolkit 개요  (0) 2018.11.11
유니티 mlAgent 설치하기 (version. v0.5 ) - 맥북  (0) 2018.11.08
Posted by 도이(doi)
,