Skip to content

ML Agents 0.9

LEEHYUNHO edited this page Dec 23, 2019 · 3 revisions

ML-Agents v0.8 -> v0.9 버전 업데이트 방법

주요 변경 사항

  • trainer_config.yaml 파일에 호기심을 포함하여 보상 신호들이 새롭게 정의되었습니다..

  • 여러 환경들을 사용할 때, 모든 스텝이 텐서보드에 기록됩니다.

  • 이전에는 콘솔창에 보이는 스텝이 모든 환경에 대한 하나의 스텝과 대응되었었지만 이제는 각 환경 즉, num_envs에 대응됩니다. (i.e., steps).

버전 업데이트 단계

  • 구성 파일에서 다음 매개 변수를 재정의하는 경우 최상위 구성에서 매개 변수를 제거하고 아래 단계를 수행하십시오. :

    • gamma: 새로운 extrinsic 보상을 정의하고 이를 gamma로 설정하십시오.
    • use_curiosity, curiosity_strength, curiosity_enc_size: curiosity 보상을 정의하고 이 보상의 strengthcuriosity_strength에, encoding_sizecuriosity_enc_size에 설정하십시오. 이전의 행동을 따라할 수 있게하기 위해 gamma 값과 동일한 값을 extrinsic 에 설정하십시오. 보상 신호 정의에 대해서 자세히 알고싶으시면 (Reward Signals)를 참조하시기 바랍니다.
  • 여러 환경을 돌릴 때 텐서보드에 기록되는 스텝은 v0.8과 v0.9와 다르기 때문에 비교할 수 없습니다. 두 버전의 정확한 비교를 위해서 v0.8 에서 기록된 스텝 수에 num_envs 를 곱하십시오. 설정의 max_steps 또한 적절히 수정하시기바랍니다.

0.9 수정사항

ML-Agents Beta 0.9.0

새로운 특징

  • 모방학습을 위한 새로운 방법인 Generative Adversarial Imitation Learning (GAIL) 알고리즘이 추가되었습니다. (#2118)

    • 에이전트가 직면할 가능성이 있는 모든 데이터들을 요구하는 Behavioral Cloning 알고리즘과 달리, GAIL은 5-10 정도의 적은 데이터들로부터 모방학습을 진행할 수 있습니다. 이 점은 GAIL이 Behaviroal Cloning보다 더 많은 문제들에 적용할 수 있게 해 주고, 데이터를 녹화하는 작업과 같은 수고를 덜어줍니다.

    • GAIL은 또한 강화학습과 함께 사용하여 에이전트를 데모와 유사하게 행동하도록 가이드 역할을 할 수 있습니다. 보상이 희박한 환경에서 데모를 제공함으로써 몇 배 더 빠르게 학습할 수 있습니다. GAIL 사용 방법에 대해 보다 자세하고 싶으시면 (imitation learning)를 참조하시기 바랍니다. 그리고 예제 환경 중 하나를 선택하여 학습 시간을 비교해보십시오.

  • PPO trainer를 위한 (Pre-training)을 할 수 있게 되었습니다. (#2118)

    • 사전 학습은 인간이 제공한 데모를 이용하여 에이전트를 강화할 수 있고, 학습 중에 올바른 방향으로 탐색할 수 있도록 도와줍니다. 특히 에이전트가 보상을 거의 받기 어렵거나 함정에 빠질 수 있는 특정 환경에서 GAIL과 함께 사용할 수 있습니다. 사전 학습을 어떻게 사용하는지 보다 자세히 알고 싶으시면 (imitation learning)를 참조하시기 바랍니다.
  • 일반화된 강화학습 에이전트를 도입하였습니다. (#2232)

    • 학습 과정에서 동일한 환경에서만 학습한 에이전트는 특정 문제에 대한 해결책은 잘 배울 수 있습니다. 하지만 다양한 환경(예를 들어 지형이나 물리적 요인들이 조금이라도 바뀌는 환경들)을 직면하게 되면 성능이 많이 떨어질 것입니다.

    • 이 릴리즈는 학습 도중 환경을 다양하게 만들어 줄 수 있게 하여, 에이전트가 다양한 환경들에 보다 강건하게 대처할 수 있게 만들어줍니다. 게다가 예시 환경들에 변경 가능한 매개변수들을 추가하여 이러한 일반화된 에이전트를 교육하고 테스트할 수 있는 변경 가능한 매개 변수를 예제 환경에 추가했습니다. 이 특징에 대해 보다 자세히 알고 싶으시면 (Training Generalized Agents)를 참조하시기 바랍니다.

  • 여러 환경들을 실행할 때 각 환경들이 비동기적으로 완료되도록 변경되었습니다. (#2265)

    • 이 전에는 ML-Agents가 여러 병렬 환경들의 스텝이 완료되기를 기다렸습니다. 리셋과 같은 다른 스텝에 비해 훨씬 더 시간이 오래 걸리는 환경의 경우, 스텝 수집 시간이 가장 느려지게 됩니다. 이는 텐서보드에 기록된 스텝의 정의를 변경한다는 점에 유의하시기 바랍니다.
  • 시각적 관측을 사용할 때 Nature 및 ResNet CNN 구조를 사용할 수 있는 옵션을 추가하였습니다. 이렇게 더 큰 구조의 네트워크는 보다 복잡한 시각적 관측에 도움이 될 수 있습니다. (#2289)

  • (기본적인 파이썬 프로파일링)을 추가하였습니다. (#2180).

수정 및 개선

  • Unity Inference Engine을 0.2.4로 업그레이드하여 인퍼런스 중 메모리 사용량을 크게 줄였습니다. (#2308).

  • Curiosity, Extrinsic, and GAIL과 같은 보상들에 대한 통합된 정의를 trainer_config.yaml에 적용하였습니다. (#2144)

  • Gym Wrapper 및 여러 시각적 관측들에 대한 지원이 추가되었습니다. (#2192)

  • 한국어 설명서 및 한글화가 추가되었습니다. (#2219), (#2356))

  • SubprocessEnvManager 를 위한 사용자 재설정 매개변수를 수정하였습니다. (#2242)

  • VisualBanana 예시 환경의 특정 지역에서 모든 바나나가 재생성되는 버그를 해결하였습니다. (#2277)

  • Docker 컨테이너에서 Visual Observations을 사용할 때 생기는 메모리 누수 문제를 해결하였습니다.(#2274)

  • UnityEnvironment를 인스턴트화 하는 동안 Unity에서 실행할 수 있는 명령어 매개변수를 전달하는 기능이 추가되었습니다.(#2243)

  • 기타 사소한 버그 및 문서 수정사항 포함

워크플로우 변경

  • GAIL 뿐만 아니라 호기심 학습은 트레이너 설정 파일인 YAML 파일의 reward_signals 매개변수를 통해 수행할 수 있습니다.

  • 여러 환경들을 사용하여 학습을 진행할 때, 전에는 모든 환경에 대한 전체적인 학습 스텝이 TensorBoard에 기록되었었지만, 이제는 각 환경에 대한 스텝 수가 기록됩니다.

워크플로우 변경에 대한 자세한 내용은 (버전 업데이트)을 참조하시기 바랍니다.

알려진 문제

드문 경우지만, Winodows에서 Ctrl+C 를 통해 종료할 때 모델이 저장되지 않을 수 있습니다. 이 문제가 발생할 경우, mlagents-learn 명령어에 --load 매개변수를 추가하여 모델을 다시 로드하고 다시 저장해 보시기 바랍니다.