Author : Sehoon Ha*, Peng Xu, Zhenyu Tan, Sergey Levine, and Jie Tan
Paper Link : https://arxiv.org/abs/2002.08550

Video Link: youtu.be/cwyiq6dCgOc

 

0. ABSTRACT

  • 사람의 최소한의 개입만으로 4족 보행로봇의 locomotion을 RL로 학습가능한 on-robot learning 시스템을 개발함
  • Real-world RL은 학습과정에서의 자동화된 데이터 수집과 안전성의 문제가 근본적으로 있음
  • 이를 극복하기 위해 1.multi-task learning/ 2. automatic reset controller/ 3. safety-contrained RL 의 세 가지 방법을 도입함
  • 제안된 방법을 4족보행 로봇에 적용한 결과, 서로 다른 지형에서 사람의 개입없이도 단 몇시간 만에 지형에 특화된locomotion을 학습 하는것이 검증됨

세가지 다른 지형에서의 on-robot learning system

 

 

1. INTRODUCTION

  • 기존의 hand-engineered controller와 달리 RL은 자동화된 학습을 scratch부터 가능하게 만들었으나, 아직 simulation 환경에서만 주로 검증 됨
  • 하지만 simulation으론 로봇이 실제로 마주할 환경을 충분히 구현하기 어렵다는 한계가 있으므로, 이 연구에서는 real world에서 자동적으로 학습이 되는 on-robot RL의 개발을 목적으로 함
  • Real-world RL은 stable, efficient, safe, automated 의 조건을 필요로함
  • 이 중 여기서는 특히 automation과 safety문제를 다루기 위해 robot의 반경을 재한하고, 위험하게 넘어지는 일을 줄이며, episode간 리셋을 자동화 하는 방법을 모색
  • 결과적으로 저자의 지난 논문에선 Soft Actor-Critic을 사용한 로봇 locomotion 학습과정에 있어 수 백번의 수동 리셋을 한 반면, 이번 시스템에서는 단 한번의 리셋을 하지 않음

 

 

2. RELATED WORK

  • 기존의 보행 로봇제어는 다층의 모듈설계로 구현됨 (ex. state estimation, foot-step planning, trajectory optimization, model predictive control)
  • 하지만 로봇 플랫폼 및 task가 복잡할땐 prior knowledge를 알기 어려움
  • 반면 RL기반의 보행 로봇 제어는 end-to-end training system으로 prior knowledge없이도 실제 경험을 통해 자동으로 locomotion을 학습 가능
  • RL을 사용한 로봇제어는 많이 연구되었지만 대부분 simulation 환경에서 이루어짐
  • Simulation에서 학습된 policy를 real-world 로봇으로 transfer하는데엔 두 환경 사이이 불일치(discrepancy)한다는 큰 한계가 있어, on-robot training system을 위한 많은 시도 (ex. system id, domain randomization, meta-learning) 가 현재 진행중이나 여전히 문제로 남아있음
  • RL을 보행로봇에 적용하는데는 다음 두 가지 challenge가 있음
    1. Episode가 끝날때마다 로봇의 적절한 initial state로의 reset
    2. 학습 프로세스에서 로봇의 안전성 보장
  • 특히 2번은 "Safety in RL"로 지칭되는 contrained Markov Decision Process (cMDP) 문제로서 주로 Lagrangian relaxation으로 접근하며, 이 외에도 다양한 방법들이 시도되고 있음 (ex. additional safety layer, safe boundary classifier, progressive safe region identification, alongside reset policy)

 

 

3. OVERVIEW

  • 이 연구의 목적은 real world에서의 locomation을 학습하기위해 사람의 개입을 최소화 하는 자동화된 시스템을 개발하는 것
  • 시스템의 구현에 있어 존재하는 3가지 challenge와 그 해결방법은 다음과 같음
  • 1. 로봇은 training area (workspace) 안에 있어야 함
    $\therefore$  보행 방향을 각각 하나의 task로보고 로봇이 workspace를 벗어나지 않도록 적절한 task를 선택해 학습하는, multi-task learning 활용
  • 2. 로봇의 넘어짐 학습시간을 더디게 하거나 기체를 파손시키므로 그 횟수가 최소화 되어야 함
    $\therefore$  SAC 수식에 로봇의 종축(roll)과 횡축(pitch)에 대한 safety constraint를 추가해 cMDP 문제를 품
  • 3. 넘어짐을 피할 수 없을경우, 자동화된 자세 복구가 되어야 함
    $\therefore$  직접 하드코딩한 stand-up controller를 추가함
  • 이를 요약한 전체 automated on-robot learning system은 다음과 같음

 

 

4. PRELIMINARY: REINFORCEMENT LEARNING

  • RL의 기본 내용이므로 생략

 

 

5. AUTOMATED LEARNING IN THE REAL WORLD

A. Multi-Task Learning

  • multi-task learning을 위해서 보행 방향을 전/후 2가지, 혹은 전/후/좌회전/우회전의 4가지를 task로 설정

  • Task scheduler를 두고, episode 시작 시 workplace의 중앙이 로봇의 방향구획 중 어디에 속하는지에 따라 scheduler가 task를 결정
  • Task vetor는 $\textbf{w}=[\omega_{1}, \omega_{2}, \omega_{3}]^T$으로 정의되며, 이 방향과 일치할 경우 가장 큰 reward를 받도록 task reward $r$을 다음과 같이 정의

  • $\ddot{a}$는 motor 가속도로서 action을 부드럽게 하는 역할 
  • 이러한 multi-task를 사용한 학습 자동화는 policy가 불완전한 초기 상황에서도 해당 task의 방향으로 조금이나마 움직인다는 가정 1 과, 한 task의 방향과 반대 방향의 task가 존재한다는 가정 2를 내포
  • 가정 1의 경우, 중앙으로부터 멀어지려는 task가 없기때문에 가능하며 실제로 약 10~20 roll-out 이후엔 1cm라도 움직이기 시작
  • 다만 task마다 별개의 다른 네트워크로 별도의 학습을 진행하며, shared achitecture에선 성능이 안나옴
  • 이는 task가 discrete하게 설정 된 점과, 각 task간의 경험이 서로의 학습에 이점이 없기 때문으로 추정
  • Task는 episode 처음에 정해지면 episode 동안은 고정되어 있으므로 roll-out이 길어질 경우 원치 않게 boundary를 벗어날 수 있으므로, 이 같은 상황에선 early termization 수행

 

 

B. RL with Safety Constraints

  • MDP문제를 cMDP문제로 만들기위해 기존의 RL objective에 safety constraints $f_{s}$를 추가하면 다음과 같음

  • 여기서는 로봇의 넘어짐을 제한하기 위해 본체의 pitch와 roll에 bound를 주고 이를 다음과 같이 constraint로 정의

  • $p_{t}$와 $r_{t}$는 각각 pitch와 roll의 각도이며, $hat{p}$와 $hat{r}$는 각각의 최대 bound로서, $\pi/12$ 와 $\pi/6$으로 설정함
  • Constrained optimization엔 여러 해법이 있는데, 여기서는 Lagrangian 방법을 사용하여 constrained prior problem을 unconstrained dual problem을 바꿔 gradient descent로 최적화 (Lagrangian은 간단히는 CS287, 자세히는 '모두를 위한 컨벡스 최적화'를 참고)
  • Lagrangian multiplier $\lambda$ 를 도입하여 위 constrained objective를 다시 쓰면 다음과 같음

  • 이 목적함수의 최적화를 위해 policy $\pi$와 Lagrangian multiplier $\lambda$를 번갈아 최적화 하는 dual grdient decent 방법을 사용함
  • 먼저 기본 reward에 대한 Q함수와 safety term에 대한 Q함수를 각각 $\theta$와 $\psi$로 parameterize한 $Q_{\theta}$와 $Q^s_{\psi}$를 학습
  • 여기서는 SAC를 알고리즘으로 사용하므로, SAC논문에서의 actor loss에 safety term을 추가한 다음 식을 actor loss로 설정 (SAC에 대한 내용은 블로그의 정리 포스팅 참고)

  • 그리고 Lagrangian multiplier $\lambda$에 대한 loss는 constrained objective에서 $\lambda$ term만 남아 다음과 같음

  • 위 두 loss에 대해 번갈아 gradient descent를 시행하여 constrained optimization 수행 

 

 

C. Additional System Designs for Autonomous Training

  • Multi-task와 constrained optimization의 방법은 학습과정을 자동화했으나 디테일한 부분에서의 몇가지 보완이 필요함
  • 특히 RL의 근간이 실패를 통해서 배우는 알고리즘이므로 넘어짐을 완전히 없애긴 어려워, manually-engineered된 stand-up controller를 개발해 추가함 
  • 외에도 로봇이 일어날 공간 및 줄꼬임 방지 등의 물리적인 부분을 위한 보조 도구들이 사용 

  • 또한 random exploration으로 인한 너무 급격한 변화로 인해 모터가 마모하는것을 완화하고자 first-order low-pass Butterworth filter를 사용하여 action을 post-processing   

 

 

6. EXPERIMENTS

  • 실험은 flat terrain에서 전후 2가지 task와, 전후회전의 4가지 task에 대해 각각 진행되었으며, challenging terrain에서 전후 2가지 task로 진행됨
  • 실험 결과, 사람의 개입이 전혀 없이도 모든 terrain에서 모든 task를 잘 학습함
  • 사람의 무개입과 효율적인 학습 알고리즘으로 wall clock기준 80분만에 task를 학습함
  • 특히 SAC의 저자의 연구인 지난 state-of-the-art on-robot locomotion learning 실험에선 수백번 직접 reset한 것과 비교하면 매우 현실적인 학습과정이라 볼 수 있음

Flat terrain에서의 전후 2가지 task 학습
Soft mattress와 doormat의 challenging terraing에서의 전후 2가지 task 학습
학습된 전후회전의 4가지 task를 game controller를 사용하여 실행

 

  • Episode 시작 위치와 움직이는 방향을 관측 해 본 결과, task scheduler에 의해 workspace를 벗어나지 않고 중앙으로 향하도록 적절히 학습이 진행된 것을 아래 plot에서 확인 할 수 있음

 

  • 의도한 자동화 시스템 설계 (1.multi-task, 2. safety-constrained SAC) 가 정말로 유의미한 효과가 있는지 확인하고자 ablation 학습을 추가적으로 진행했으며, parameter의 수정이 매우 많이 필요한 점을 고려해 현실적으로 real world가 아닌 Pybullet simulation으로 진행

  • Multi-task learning을 한 경우와 안한 경우, workspace를 벗어나는 빈도의 차이가 확연히 발생함을 위와 같이 확인함

  • Safety-constrained term을 사용한 경우 (위 파란색)엔 안한 경우 (위 주황색) 보다 약간의 성능의 향상됨을 확인했으며, 특히 넘어짐이 확연히 줄어드는것을 확인
  • 단 fine tuning으로 찾은 최적의 Lagrangian muliplier (위 보라색)보단 낮은 성능 및 잦은 넘어짐을 확인
  • 하지만 보통의 경우 성능과 constraint는 상호 반비례 관계를 가지는 경우가 많으며 (위 갈색), 이러한 fine tunning을 real world에서 반복적으로 수행하기란 너무 큰 cost로 인해 사실상 불가능함
  • 따라서 본 연구에서 제안된 시스템이 가장 현실적인 자동화된 on-robot training 방법임
  • 지금까지의 결과를 종합한 영상

 

 

7. CONCLUSION AND FUTURE WORK

  • 어쩔 수 없이 넘어진 경우 manually engineered stan-up controller를 사용하였는데, 이는 로봇의 구조가 간단하여 쉽게 설계 가능
  • 추후 더 복잡한 로봇에선 locomotion을 학습함과 동시에 recovery policy 또한 동시에 RL로 학습하는 시스템 필요
  • Task가 discrete하여 어쩔 수 없이 unshared network architecture를 사용함
  • task 자체를 연속적인 목표 선형속도 및 각속도로 parameterize 한다면 shared architecture도 가능할 것으로 예상됨

 

 

 

개인적인 의견

  • 사람의 개입이 없는 locomotion 학습이라는 점이 아주 재밌다. RL의 구현은 사실상 Agent보다 사람이 더 많이 움직이며 인내심이 학습되는 과정인데, 이 논문을 통해 한 발짝 더 실제 동물과 같은 학습을 향한 로망에 커지는듯 하다.
  • 하나의 shared architecture가 아닌, task 별로 서로 네트워크가 분리되어 완전히 독립적으로 학습되었다.
  • 논문에서도 언급됐다시피 task가 discrete하고 task 사이의 공유되는 학습이점이 없는게 shared architecture에서 multi-task learning이 잘 안된 이유인듯 하다.
  • 개인적으로는 이는 사용된 로봇(Ghost Minitaur)이 전후회전 움직임을 할때 actuator가 다 다르게 움직이는 구조라서 더욱 그런게 아닐까 싶다.
  • 다리를 움직임에 있어 low level에서는 공통적인 feature를 가지는 로봇이라면 어땠을까 궁금하다.
  • 물론 사람의 다리 구조도 앞뒤 걷는 task 둘 사이엔 공통으로 사용되는 근육이 많진 않아보인다.
  • 대신 좌우 방향으로 회전 하는건 어느정도 직진과 움직임에서 공통점이 있는것 같다.
  • 동물과 같은 다리구조의 로봇이라면 이러한 부분을 고려하여 task를 설계한다면 shared architecture의 성능이 잘 나오려나? DeepMind의 Virtual Rodent 논문 (정리 포스팅) 을 보면 서로다른 task를 수행함에 있어 공통된 locomotion feature가 사용되는걸 보면 그럴수도 있겠다 싶다.
  • Spot Buddy 프로젝트에서 실험해보면 좋을 부분이 생겼다.

 

 

Author : Kate Rakelly*, Aurick Zhou*, Deirdre Quillen,  Chelsea Finn, Sergey Levine
Paper Link : https://arxiv.org/abs/1903.08254

Talk in NeurIPS2020 Workshop: slideslive.com/38938215

 

0. Abstract

  • 기존의 meta-RL (meta-Reinforcement Learning)은 on-policy 기반으로 샘플링이 비효율적이거나, task의 불활실성에 대한 구조적인 탐색이 불가능함
  • 이에 policy와 별개로 task inference가 가능한 off-policy 기반의 meta-RL 알고리즘을 제안함
  • 제안된 방법은 gradient step없이 task의 확률이 online으로 도출 가능하며, 기존의 meta-RL 알고리즘 대비 20~100배의 샘플 효율성을 보여줌

1. Introduction

  • 현재 대부분의 meta-RL은 meta-training과 adaptation에서 모두 on-policy data를 필요로 함
  • Adaptation은 새로운 task에대한 빠른 학습을 특징으로 하여 on-policy가 큰 문제는 아니나, meta-training에서의 on-policy training은 매우 낮은 샘플 효율성을 야기하므로 off-policy RL을 meta-training에 적용할 필요가 있음
  • 하지만 meta-training과 meta-test의 adaptation 데이터 구조가 일치해야하는 근본적 제약으로인해 off-policy meta-RL은 근본적으로 어려움
  • 이에 이 연구에서는 meta-RL을 context connoted blackbox 나 bi-level optimization의 adaptation과 policy가 결합된 구조로 보는 기존의 접근과 달리, inference problem으로 해석
  • 즉, meta-training동안 데이터의 posterior를 먼저 inference하도록 probabilistic encoder를 학습하며 이를 토대로 policy가 task를 수행
  • 마찬가지로 Meta-testing에선 학습된 encoder에 의해 새로운 task의 latent variable을 inference한 뒤 이를 바탕으로 policy의 구조적인 탐험 및 빠른 adaptation을 수행
  • 이와같이 task inference가 policy로부터 분리된 구조는 meta-policy의 exploration 및 optimization 과정 없이도 online task inference를 가능하게 함
  • 또한 분리된 학습으로 인해 meta-training의 데이터 구조와 meta-test 데이터 구조가 달라도 돼 off-policy meta-RL을 가능하게 함
  • 즉, policy는 off-policy RL로 효율적으로 최적화 되는 반면, encoder는 on-policy data를 사용해 task inference를 학습하고 수행함으로써 meta-training과 meta-test사이의 불일치성을 최소화
  • 저자 Kate Rakelly는 이 알고리즘을 probabilistic embedding for actor-critic RL (PEARL)이라 명명 
    (github도 이름을 oyster 로 지은걸 보면 재밌는 이름이긴 하나 사실 와닿진 않는듯 하다)

 

2. Related Work

a) Meta-learning:

  • 새로운 task를 빠르게 학습하는것을 목표로 하는 meta-RL은 크게 context-based meta-RL과 gradient-based meta-RL로 나눌 수 있음
  • Context-based 방법은 수집된 데이터로 부터 task의 latent representation을 학습하고 이를 policy의 condition으로 사용하는것으로, 주로 RNN을 사용
  • Gradient-based 방법은 빠른 초기 학습을 학습하는 bi-level optimization으로, on-policy 데이터 기반의 policy gradient를 사용
  • PEARL은 context-based 기법이나 RNN대신 encoder를 사용했으며, gradient-based 기법과 달리 off-policy 데이터를 사용하는 차이가 있음

b) Probabilistic meta-learning:

  • Probabilistic model을 supervised learning혹은 reinforcement learning 에 적용하는 연구는 많이 있어옴
  • PEARL은 특히 task의 uncertainty를 확률분포로 표현하는 probabilistic latent task variable을 활용

c) Posterior sampling:

  • RL에서의 posterior sampling은 측정한 MDPs 데이터에 대한 posterior을 샘플링하고 시간적으로 과거의 경험과 겹치지 않는 최적의 행동을 새롭게 탐색하는것을 의미
  • PEARL은 이 posterior samping을 meta-learning의 관점으로 해석하여, 과거 경험한 task의 uncertainty를 확인하고 새로운 task를 구조적으로 탐색하는데 활용 

d) Partially observed MDPs:

  • Task를 state에 포함된 개념으로 본다면, uncertanty가 높은 task를 기본 배경으로 하는 Meta-RL은 일종의 partially observed MDPs (POMDP)로 볼 수 있음
  • PEARL은 새로운 task에 대한 probabilistic belief inference를 위해, POMDP 문제에 사용되는 variational 접근을 활용.

3. Problem Statement

  • Meta-RL은 기존의 task들로 부터 meta-policy를 학습하는 meta-training과, 학습된 meta-policy로부터 빠르게 새로운 task에 적응하는 adaptation 의 두가지 반복 loop로 구성됨
  • Adaptation의 샘플링 효율은 meta-RL의 본질과 부합하므로 큰 문제 없으나, meta-training에서의 샘플링 효율은 기존의 RNN, policy gradient 방식의 on-policy기반 알고리즘으론 매우 낮음 
  • 이는 Real world에 meta-RL을 적용하는데 있어서도 큰 장애물이 됨 
  • 이에 저자는 off-policy meta-training 알고리즘을 제안함
  • Task의 정의는 다음과 같음

각각 {initial state distribution, transition distribution, reward fuction}

  • 이 3가지 요소 중 어느 하나라도 다르면 다른 task로 간주
  • 실직적으로 task를 바탕으로 수집된 데이터는 그 task를 상징하는 context $c$라는 추상적 개념을 가지고 있다고 보며 명시적으로는 하나의 MDP transition으로서 다음과 같이 표현

n번째 step의 (state, action, reward, next state)

  • 이때, Meta-RL은 transition distribution과 reward function을 모르는 상황에서 training task들을 학습하여 새로운 task를 마주했을때 빠르게 policy를 찾는 문제

 

4. Probabilistic Latent Context

  • task의 최근 context로 task에 대한 latent probabilistic context variable $Z$를 추론 했을때, 이 latent variable을 조건으로한 policy $\pi_{\theta}(a\mid s,z)$ 를 최적화 하면서 얼마나 성능이 좋은지를 바탕으로 $z$가 적절히 추론되었는지를 판단

4.1. Modeling and Leanring Latent Contexts

  • Inference $Z$ 를 학습하기위해 variational auto encoder (VAE)의 구조를 사용
    (VAE는 유재준 박사님의 포스팅이나, 이기창님의 포스팅 참고)
  • Context $c$가 주어졌을 때 poeterior $p(z \mid c)$를 추정하는 inference network $q_{\phi}(z \mid c)$ (encoder)를 학습
  • Decoder의 generative 기능에 따라, $q_{\phi}(z \mid c)$는 $z$로부터 MDP의 복원을 목적으로 최적화할 수 있음
  • 유사한 변형으로서, model-based RL개념의 MDP복원이 아니라 model-free RL의 개념을 차용하여 Q나 Return을 최대화 하도록 $q_{\phi}(z \mid c)$를 최적화 가능
  • VAE의 개념을 가져왔으므로, PEARL의 목적함수 역시 VAE의 목적함수(ELBO)와 유사하며 다음과 같음

  • ELBO의 형태에 따라 첫번째 항은 reconstruction term이며, 두번째 항은 variational prior에 대한 regularization term
  • $R(\tau, z)$는 위에 언급한 대로 model-based 혹은 model-free 접근에 따라 다양한 reconstruction objective를 선택 가능
  • PEARL에서는 $p(z)$를 z에대한 unit Gaussian 형태의 prior로 가정하며, regularization term에 따라 information bottleneck의 역할을 하여 현재 task에 대한 meta-overfitting을 완화함
  • Meta-test에서는 추가적인 gradient step 없이 encoder를 사용한 새로운 task에 대한 latent context의 단순한 online inference만 필요함
  • 만약 task가 fully observed MDP라면 단일 transition만으로도 context를 충분히 내포하고 있으며 따라서 transition sample간의 순서는 관계 없는 permuation invariant 성질을 만족함
  • 이에, posterior는 각각의 단일 transiton을 inference한 posterior의 distribution multiplication으로 modeling됨

  • 실제 구현에서는 encoder의 output으로 mean과 standard deviation을 inference한 후, 이를 파라메터로 갖는 normal distribution을 posterior로서 도출함

  • 지금까지의 inference network 구조를 그림으로 표현하면 다음과 같음

4.2. Posterior Sampling and Exploration via Latent Contexts

  • Posterior sampling, 즉 현재 task에 대한 belief에 따른 optimal acting은 동일한 분포의 랜덤한 행동을 반복해서 하는것이 아니므로 시간적으로 구조화된 탐색을 하는 장점을 가짐
  • 단, 기존의 RL에서의 posterior sampling과 달리 PEARL에서는 VAE를 썼기때문에 MDP/Return/value 등 다양한 최적화를 위한 poterior를 직접inference 가능
  • 새로운 task에 대해서는 prior에서 $z$를 샘플링 한 후 이에 대한 acting을 하며, 그 결과로 얻어진 context에 따라 현재 task의 posterior를 다시금 inference함
  • 이 과정을 반복하면 현재 task 에 대한 belief가 범위가 좁혀지고, 따라서 더 적절한 optimal action을 취할 수 있음
  • 이러한 posterior sampling을 통한 acting 구조는 그림으로 다음과 같이 표현 됨

 

 

5. Off-Policy Meta-Reinforcement Learning

  • 현대 meta-RL에선 adaptation에 사용되는 데이터의 구조가 meta-training과 meta-test 둘 사이에 일치(in distribution) 해야한다고 가정함
  • 때문에 RL의 특성상 meta-test의 adaptation이 on-policy 로 이루어짐에 있어, meta-training도 샘플 효율이 낮은 on-policy를 사용해야하는 제약이 생김
  • 또한 경험을 바탕으로 task distribution을 추론하는 stochastic 탐색을 배우는것은 meta-RL을 더욱 효율적으로 만드는데, 이는 policy가 stochastic distribution을 바탕으로 행동을 조작할 수 있어야 가능함
  • 따라서 이는 단순히 true value function을 근사하는 off-policy RL은 불가능한 반면, policy 자체를 근사하는 on-policy RL은 가능함
  • 이러한 두가지 종합적 이유로, off-policy RL을 meta-RL에 접목하는것은 필요하지만 쉽지 않음
  •  논문의 contribution으로서, PEARL 알고리즘은 위 한계점을 해결하기위해 task distribution inference 구조는 encoder가 하도록 분리하고 poilicy의 학습과 encoder의 학습이 다른 데이터를 사용해도 되도록 설계
  • 이로서 encoder가 on-policy data로 학습을 하여도, policy는 off-policy RL loop의 일부로서 $z$를 다룰 수 있게 됨
  • 또한 탐색을 위해 필요한 stochasticity 역시 encoder $q(z \mid c)$ 로 추가할 수 있음
  • 구체적으로, Actor와 Critic은 replay buffer $B$로부터 off-policy 데이터를 샘플링하여 학습을 진행
  • Encoder는 샘플러 $S_{c}$에 의해 샘플링된 context batch를 학습
  • 이때 $S_{c}$가 전체 버퍼에서 샘플링을 할 경우 off-poicy 가 되어 on-policy meta-test와의 너무 큰 차이가 생김
  • 하지만 encoder를 사용할 경우 strict on-policy를 지키지 않아도 된다는 장점이 있는데, on-policy와 off-policy 중간 정도 되는 접근으로서 최근 수집된 데이터를 통해 inference를 하는것은 on-policy 데이터를 사용하는것과 성능의 차이가 없다는 것을 저자는 확인함
  • 지금까지의 PEARL을 알고리즘으로 정리하면, meta-training 및 meta-test는 각각 다음과 같음

 

5.1. Implementation

  • PEARL은 model-free off-policy RL알고리즘인 soft actor-critic (SAC)기반으로 구현 (SAC의 자세한 설명은 이전 포스팅 Soft Actor-Critic (Haarnoja, 2018) 정리 참고)
  •  SAC는 off-policy 알고리즘으로서 효율적인 데이터 샘플링 및 안정성을 보여주며 poilicy자체가 probabilistic하게 표현돼 probilistic latent context와의 결합이 용이
  • PEARL의 구현에선 inference network $q(z \mid c)$의 파라메터를 actor  $\pi_{theta}(a \mid s, z)$와 critic $Q_{theta}(s,a,z)$의 파라메터와 결합하여 한번에 backprobagation으로 학습하기위해 reparameterization trick을 사용
  • 이는 샘플링을 포함하는 연산그래프에서 랜덤노드를 분리해주는 것으로, 자세한것은 유재준 박사님의 블로그를 참조
  • 이 같은 학습구조로 crtic의 학습으로서 $Q$의 복원값을 Bellman update와 LMS로 학습면서 한번에 gradient가 inference network까지 전달되어 학습 가능 (Chapter4에서 reconstruction은 여러가지가 가능하다고 했으나 MDP 의 복원보다 $Q$의 복원이 더 나은 성능을 보여주는것을 저자는 확인)
  • 따라서 critic의 loss fuction은 다음과 같음

  • Actor의 loss function은 SAC 원 알고리즘과 거의 동일하며 $\overline{z}$만 input에 추가되어 다음과 같음

  • $\overline{V}$은 target value network. $\overline{z}$는 reparameterization trick으로 gradient가 encoder의 파라메터로 전달 되지 않음을 의미
  • 여기서 주의할 점은 critic loss에 사용되는 data와 latent variable를 추론하는 $q_{\phi}(z \mid c)$ context가 다르다는 것
  • Context 샘플러 $S_{c}$는 완화된 on-policy로서 최근 수집된 데이터에서 uniformly 샘플링 하며, meta-training 을 n번 진행할때마다 한번 context를 inference함
  • 한편, actor-critic은 off-policy 샘플링을 위해 전체 replay buffer에서 uniformly 샘플링

 

6. Experiments

 

6.1. Sample Efficiency and Performance

  • 실험은 총 6개의 Mujoco continuous control 환경에서 수행

  • 이 중 5개는 제어 목적이 다른(=reward가 다른) task
    • 각각 전진/후진을 목표로 하는 Half-Cheetah
    • 각각 전진/후진을 목표로 하는 Ant
    • 걷는 방향이 서로 다른 Humanoid
    • 서로 다른 속도를 목표로 하는 Half-Cheetah
    • 목표 도착 지점이 서로 다른 Ant
  • 나머지 1개는 dynamic가 다른 (=transition probability가 다른) task
    • 랜덤하게 dynamics 파라메터가 정해지는 2D-Walker

  • 비교를 위한 meta-RL 알고리즘은 총 3개 수행
  • 이 중 2개는 Policy gradient 기반 (optimization기반)의 알고리즘
  • 나머지 1개는 Recurrent 기반 (black-box 기반)의 알고리즘
  • 실험결과 PEARL이 기존 meta-RL알고리즘보다 20~100배 더 향상된 meta-traning 샘플링 효율을 보여줌
  • 또한 기존 알고리즘 보다 50~100% 향상된 성능을 점근선으로 확인 가능 함

6.2. Posterior Sampling For Exploration

  • Posterior sampling이 얼마나 효과적으로 task 탐색을 진행하는지를 검증하는 실험을 함
  • 이를 위한 환경으로는 reward가 sparse하게 주어지는게 보통 사용되며, 여기서도 마찬가지로 타원을따라 나타나는 파란 원에 도달시에만 reward를 받는 2D navigation 실험을 함
  • 비교 알고리즘으로는 기존의 meta-RL 알고리즘 중 PEARL과 같이 구조적인 탐색이 가능한 MAESN (Gupta et al.m, 2018)을 사용

  • 실험 결과, optimazation 기반 meta-RL알고리즘과 달리 sparse reward 문제도 해결 가능함을 보여줌
  • 또한 같은 구조적 탐색이 가능한 MAESN에 비해 meta-training에서 약 100배 빠른 샘플링 효율성을 보여줌
  • (6.3 Ablations는 알고리즘의 구현에 대한 추가적인 검증으로 생략)

 

8. Limits of Posterior Sampling

  • Posterior sampling으로 sparse reward 환경에서도 구조적인 탐색이 가능하지만, 이게 optimal exploration을 의미하는것은 아님 

  • 실제로 반원을 따라 target이 생긴다면, optimal은 반원을 따라 탐색을 하는것이 가장 효율적인 전략
  • 이는 task에 대한 adaptation과 postrior regularization의 순서에 따라 생기는 문제로, task inference를 통해 $z$를 도출 한 후 Normal distribution prior로 posterior를 regularize하면 task의 latent space가 normal distibution으로 제한 됨

  • 즉, adaptation은 task간에 그 평균에 해당하는 공통점이 존재하는 경우에 한하여 성능이 좋을것을 예상 가능
  • 이러한 문제는 실제로 meta-RL에 대한 벤치마크인 Meta-world (Finn et al., 2019)에서 10개의 task만으로 meta-RL을 진행했을땐 meta-policy의 학습이 실패했으나, 45개의 task를 사용하여 공통점이 충분해 졌을땐 다른 알고리즘 보다 나은 성능을 보여준것에서 확인됨

다양한 task에 대한 meta-test의 성공률

  • 하지만, 전반적으로 meta-RL 알고리즘들의 성능이 나쁨. 이는 탐색이 부족한 문제도 데이터가 부족한 문제도 모델의 capacity가 부족한 문제도 아닌 최적화 기법의 문제인것으로 추측 됨 (스탠포드 Fall19 CS330 lecture10)
  • 즉, 다양한 out of distribution인 task familly들에 대해 더 나은 최적화를 가능하게 하는 meta-RL 알고리즘으로의 여지가 아직 많이 남아 있음 

 

 

 

 

Author : Tuomas Haarnoja*, Aurick Zhou*, Kristian Hartikainen*, George Turker, Sehoon Ha, Jie Tan, Vikash Kumar, Henry Zhu, Abhishek Gupta, Piter Abbeel, Sergey Levine 
Paper Link : https://arxiv.org/abs/1812.05905

0. Abstract

  • Model free deep RL은 샘플링 효율이 매우 낮고, 수렴이 불안정함.
  • 이를 극복하고자 maximum-entropy (MaxEnt) RL 프레임워크에 기반한 Off-poliy actor-critic 알고리즘을 제안함

1. Introduction

  • Real-world 에서의 model free RL의 단점
    1. 샘플링 비효율
    2. Hyperparameter에 민감
  • On-policy는 샘플을 업데이트 할때마다 버리므로 샘플 효율이 높은 off-policy가 좋으나,
  • Q-learning기반 알고리즘의 단점 존재
    1. 고차원 NN 썼을때 불안정하며 수렴이 잘 안됨
    2. Continuous space에서 악화
  • "어떻게 하면 Continuous space에서도 샘플 효율적이고 안정하게 만들까?"
  • MaxEnt를 RL에 적용 (MaxEnt RL) 하면 탐색과 강건성을 향상시키나 여전히 on/off policy문제 존재
  • Soft actor-critic (SAC): off-policy MaxEnt actor-critic 알고리즘 고안
  • 샘플 효율적이면서도 안정하며 Continuous space에서도 잘 동작

2. Related Work

  • Actor-critic (AC)는 actor와 critic모두 수렴 보장이 안되며 동시에 최적화 필요
  • 기존의 AC에도 Entropy (Ent)를 추가한 접근들이 있으나 Ent를 regularizer로 사용 (=Policy의 잘못된 학습 억제)
  • On-policy이므로 샘플 효율에 있어 한계
  • 이에 DDPG (https://arxiv.org/abs/1509.02971) 와 같은 off-policy 등장
  • But! 한계 존재
    1. Deterministic + Q-function은 안정화 어려움
    2. 복잡한 task에선 성능 낮음
  • Off-policy이면서도 stochastic하고 MaxEnt RL프레임을 사용하는 알고리즘 필요
  • 저자의 이전 논문 Soft Q-learning (https://arxiv.org/abs/1702.08165) 에선 MaxEnt RL + Q-function의 soft-Q function을 도입하고 이를 따르는 (아래 그림의 오른쪽), $expQ$를 energy function으로 하여 energy based model 분포를 policy로 사용하는 알고리즘을 제안

  • Entropy의 도입으로 강건하고 안정하나, DDPG의 성능을 넘지 못하며, policy의 수렴이 posterior를 얼마나 잘 근사 했는가에 의존하며, continuous space에서 별도의 샘플링 기법이 필요하다는 한계 존재
  • 제안한 SAC는 policy의 parameterization에 관계없이 policy가 항상 optimal에 수렴하며 성능도 DDPG를 큰 차이로 앞서며 continuous space에서도 쉽게 사용 가능

3. Preliminaries

  • 기존 RL의 목적은 reward expection의 합을 최대화 하는 policy를 찾는 것

  • MaxEnt RL의 목적함수와 policy

Entropy term이 추가. alpha는 기존 RL term과 entropy term간의 조절 위한 temperature parameter

  • MaxEnt RL의 장점
    1. policy의 탐험을 하면서도 동시에 보상을 최대화
    2. 하나의 optimal이 아니라 near optimal을 여러개 배울 수 있어 강건함

4. From Soft Policy Iteration to Soft Actor-Critic

4.1. Soft Policy Iteration (Tabular case)

  • Policy iteration: policy evaluation과 policy improvement를 번갈아 진행하여 Q-function의 수렴과 policy의 수렴을 반복해 학습하는 방법
  • Soft Bellam euation: policy를 evaluation하는 기존의 Bellam equation에 policy entropy의 개념을 추가

  • 행동이 유한하다는 가정하에, 위 soft Bellam backup을 반복하면 soft Q-function으로 수렴

  • 이 step을 통해 어떠한 policy에 대해서도 Soft Q-function을 구할 수 있음
  • policy improvement에선 Energy based model 의 개념을 도입 (Envergy based model에 대해선 Yann Lecun 교수님의 저서 참조, http://yann.lecun.com/exdb/publis/pdf/lecun-06.pdf)
  • KL Divergence를 사용하여 exp(Q)를 parameterized된 policy set에 information projection을 하여 새로운 policy 도출

  • 일반적으로 intractable한 partition function Z는 추후 설명할 SAC의 목적함수에서 KL Divergence를 최소화 하는 gradient descent 과정에서 무시됨
  • 이때, 행동이 유한하다는 가정 하에, 위 최적화를 만족하는 새로운 policy는 이전 policy에 비해 항상 높은 기대보상을 가짐

  • Soft policy iteration: 위 soft policy evaluation과 soft policy improvement의 과정을 parameterized policy set 내의 임의의 policy에 대해 번갈아 진행하면 policy set 내의 optimal MaxEnt policy로 수렴

  • 위 Lemma와 Theorem은 tabular space에서 증명됨
  • continuous space에서 적용하려면 NN과 같은 function approximator가 필요하지만 수렴에 너무 큰 계산량을 요구하는 한계 존재

4.2. Soft Actor-Critic (function approximator)

  • Soft policy iteration는 수렴을 위해 evaluation과 improvement를 반복하는것이 continuous space에선 비현실적
  • 따라서 같은 프레임워크에서, Soft Q-function(evaluation)과 policy(improvement)를 NN으로 근사하고 두 network를 Stochastic gradient descent 하는것으로 대체
  • 첫번째 SAC 논문(https://arxiv.org/abs/1801.01290) 에서는 Soft Value function, Soft Q-function, policy 셋을 모두 parameterize했으나, 이 두번째 SAC 논문에서는 Soft Q-function와 policy만 근사
  • Replay buffer (~D)에 저장된 (state, action) pair 데이터를 가져와 Soft Q-function와 Target soft Q-function 을 계산하고, 이 차이(Bellman residual)를 최소화 하는것이 objective function

  • 이때  은 Target Soft Q-function
  • 위 objective의 Soft value function V 는 Soft Q-function으로 풀어 쓸수 있으며, 최적화로 Stochastic gradient descent(SGD)를 사용하기 위해 objective function의 gradient를 구하면 다음과 같음

SGD를 사용하므로 Expectation은 제거 가능하다

  • 여기서 S,A,R,S'까지는 Replay buffer(D)에서 추출한 값이며, Soft Target에서의 A'는 현재의 policy에 따름
  • policy의 objective function은 위 tabular policy improvement단계에서의 KL divergence 에 Replay buffer (D)에서 추출한 State 와 현재 policy를 사용

  • KL-divergence는 다음과 같이 expectation 꼴로 다시 쓸 수 잇음

출처 https://medium.com/activating-robotic-minds/demystifying-kl-divergence-7ebe4317ee68

  • 이를 다시 policy의 loss function에 적용하면 아래와 같이 쓸 수 있음

log partition function은 상수이므로 생략하고 alpha 추가. Q의 S_t는 오타 -> a_t

  • Expectation은 intractable하므로 보통 이를 위해 Monte Carlo Sampling을 사용 
  • 하지만 gradient와 두번째 Expectation 모두 policy의 파라메터에 의존하므로 Monte Carlo sampling을 하면 연산 그래프가 끊어져 back-propagation이 불가능. 이에 reparameterization trick을 사용

 

Sampling이 NN 파라메터와 무관해져 gradient를 계산 가능

  • 최종적으로 policy objective의 gradient는 다음과 같음

 

 

5. Automating Entropy Adjustment for Maximum Entropy RL

  • Entropy에 대한 temperature를 H.P. 로 두기엔 학습에 따라 바뀌는 reward에 상응하는 적절한 값을 찾기가 어려움
  • 또한 optimal이든 아니든 동일하게 entropy를 최대화 하므로 exploration에도 부적합
  • "temperature alpha를 H.P.가 아닌 dual optimization contraint로 하여 autotunning 되도록 바꾸자"
  • MaxEnt RL을 contrainted optimization 문제로 바꿔쓰면 다음과 같음

H 는 엔트로피의 lower bound. Policy가 deterministic하여 upper bound는 필요 없음

  • 이를 Lagrangian을 사용하여 dual problem으로 나타내면 다음과 같으며, 이때 Lagrangian multiplier인 alpha는 temperature parameter에 해당함

  • 이를 dynamic programing으로 policy가 최적이라 가정하고 alpha를 최적화하는 step과 alpha가 최적이라 가정하고 policy를 최적화 하는 step을 반복할때, alpha의 optimal problem은 step에 관계 없이 항상 다음과 같음

증명: https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html#sac-with-automatically-adjusted-temperature

 

6. Practical Algorithm

  • 알고리즘의 실제 적용에선 TD3에서 value기반 알고리즘들의 policy improvement 단계의 positive bias문제를 해결하기 위해 사용한 것과 같은 맥락으로, 2개의 soft Q-function을 독립적으로 학습하여 더 작은 Q를 사용하며 이는 복잡한 task에서의 성능과 학습속도를 향상시킴
  • Duality 적용한 접근은 convexity를 가정했을때 수렴성을 보여줌 (Boyd & Vandenberghe, 2004)
  • 이 가정은 NN과 같은 비선형 근사함수에는 해당하지 않지만 실질적으론 사용 가능함
  • 이에 alpha의 목적함수는 다음과 같음

  • 지금까지의 SAC 알고리즘의 pseudocode는 다음과 같음
  • SAC는 policy를 바로 gradient로 업데이트 하는 방법이지만, 기존 actor-critic기반 on-policy learning과 달리 replay buffer의 상태 데이터로 학습이 가능하여 off-policy learning에 해당함

 

7. Experiment

  • 실험 결과 거의 모든 continuous action space의 환경에서 기존 off-policy 및 on-policy 알고리즘들보다 빠른 학습속도와 높은 성능을 보임
  • 특히 환경이 복잡할수록, 큰 batch를 사용하는 on-policy 방법에 비해 SAC가 빠른 초기 학습속도를 보여줌

  • SAC 학습의 효율성 덕분에 model-free RL 알고리즘임에도 불구하고 real-world환경 (locomotion & dexterous manipulation) 에서도 바로 학습가능한것을 실험으로 증명함

[22.6.25 수정] 최근 Google Deepmind에서 Mujoco를 인수하여 무료로 배포하였고 몇달이 지난 지금 기대했던대로 python 바인딩을 해주었다. 이에 맞게 포스팅을 업데이트하였다. (이전 설치방법들은 포스팅의 아래쪽에 그대로 있음) 

 

현재 집필중인 meta-learning 도서의 코드 마무리를 위해, 윈도우, 리눅스, 맥 모두에서 알고리즘들이 잘 동작하는지 테스트 하던 중, 몇달 사이 딥마인드에서 mujoco의 python binding을 해두었단 사실을 알게되었다.

항상 mujoco-py 때문에 번거로웠는데 이젠 라이센스조차 필요없이 심플하게 사용가능한 python 패키지가 되었다.

 

 1. OpenAI gym & MuJoCo 설치

pip install gym==0.24.1
pip install mujoco==2.2.0

(윈도우)

윈도우는 다음 패키지를 추가로 설치해준다.

pip install imageio>=2.1.2

 

2. mujoco 패키지 설치 확인

프롬프트에서 python을 입력해 python을 실행 한 후, 아래 코드를 실행시킨다.

import random
from gym.envs.mujoco.half_cheetah_v4 import HalfCheetahEnv
env = HalfCheetahEnv()

for _ in range(100):
	env.render()
	action = [random.randint(0,1) for _ in range(env.action_space.shape[0])]
	_, _, _, _ = env.step(action)

env.close()

 

잘 설치가 되었으면, 랜덤하게 생성된 action에 의해 100step 동안 치타가 꿈틀거리는것을 볼 수 있다.

 

 

 


아래는 예전 포스팅

2년쯤 전에 어떻게 설치해서 사용하던 MuJoCo인데 최근 새로나온 Meta RL 알고리즘을 구현 해보고자 실행하니 사용기한이 만료됐다고 하여 새로 설치를 해야했다. 작년엔 연구실에서 만든 가상환자 gym 환경을 써온터라 잊고 있었는데 mujoco student licence는 1년마다 갱신을 해줘야 한다. 사실 DQN A2C 가 나올 시기만 해도 cartpole이나 간단한 Atari 환경에서 알고리즘 테스트가 주로 이루어졌다면, 불과 1~2년 사이에 RL이 크게 발전해서 이젠 복잡한 3D 환경에서의 알고리즘 검증이 필수가 되고 있다.

 

[21.12.02 수정] 최근 Google Deepmind에서 Mujoco를 인수하여 무료로 배포하였고 이에 맞게 포스팅을 업데이트하였다. (이전 설치방법은 포스팅의 아래쪽에 그대로 있음) 

 

1. 무료 라이센스 발급

https://www.roboti.us/license.html에 접속해서 파란색 Activation key 링크를 눌러 무료 라이센스파일 'mjkey.txt'를 다운 받는다

 

License

Free license DeepMind has granted Roboti LLC license to provide an unlocked activation key for legacy versions of MuJoCo (2.0 and earlier). This key is available to everyone on the terms of the free license below. It expires on October 18, 2031. Activation

www.roboti.us

 

2. MuJoCo 다운로드

이번엔 https://mujoco.org/download 이 링크로 들어가 파란색 Windows 버튼을 눌러 MuJoCo 파일을 다운받는다.

 

MuJoCo — Download

Free, unrestricted, precompiled binaries are available under the Apache 2.0 license. The latest version of MuJoCo is 2.1.0. Binaries for platforms other than x86-64 are not yet available. If you require these, please let us know by filing an issue on GitHu

mujoco.org

 

3. MuJoCo 엔진 설치

받은 파일의 압축을 풀면 mujoco210이란 폴더가 생긴다. 이 폴더를 C:\Users\[본인계정] 에 ".mujoco" 란 새폴더를 만들고 그 안에다 옮긴다. 다운받은 무료라이센스 키 mjkey.txt 를 C:\Users\[본인계정]\.mujoco 에 옮긴다.

 

잘 설치 됐는지, 그리고 라이센스가 정확한지를 확인하기 위해 프롬프트에서 해당폴더로 이동하여

C:\Users\[본인계정]\.mujoco\mujoco210\bin> simulate ../model/humanoid.xml

를 실행해본다. 설치가 잘 됐으면 MuJoCo 실행과 함께 힘없이 쓰러지는 humanoid를 볼 수 있다.

 

4. mujoco-py 설치

MuJoCo를 python에서 실행하려면 OpenAI에서 만든 mujoco-py를 설치해주어야 한다.

우선 프롬프트 창에 SET PATH=C:\Users\[본인계정]\.mujoco\mujoco210\bin;%PATH%; 를 입력해 path를 설정해준다.

프롬프트 창에서 pip install mujoco-py를 입력해 설치한다.

 

4. mujoco-py 동작 확인

프롬프트에서 python을 입력해 python을 실행 한 후, 아래 코드를 한줄 씩 실행시킨다.

import mujoco_py
import os
mj_path = mujoco_py.utils.discover_mujoco()
xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
model = mujoco_py.load_model_from_path(xml_path)
sim = mujoco_py.MjSim(model)

print(sim.data.qpos)
# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

sim.step()
print(sim.data.qpos)
# [-2.09531783e-19  2.72130735e-05  6.14480786e-22 -3.45474715e-06
#   7.42993721e-06 -1.40711141e-04 -3.04253586e-04 -2.07559344e-04
#   8.50646247e-05 -3.45474715e-06  7.42993721e-06 -1.40711141e-04
#  -3.04253586e-04 -2.07559344e-04 -8.50646247e-05  1.11317030e-04
#  -7.03465386e-05 -2.22862221e-05 -1.11317030e-04  7.03465386e-05
#  -2.22862221e-05]

잘 설치가 되었으면, 위와같이 전부 0이던 휴머노이드의 state가 sim.step() 이 후엔 바껴있는것을 확인가능하다. 

 


아래는 더 예전 포스팅

1. 무료 라이센스 발급

https://www.roboti.us/license.html에 접속해서 MuJoCo Personal License:1 year의 파란색 창에 개인 정보를 입력하고 license를 요청한다.

 

MuJoCo

License types:     Trial     Personal     Institutional MuJoCo Trial License: 30 days We invite you to register for a free trial of MuJoCo. Trials are limited to one per user per year. After registration you will receive an email with your activation key a

www.roboti.us

그럼 하루 안에 personal account가 메일로 발급된다.

이를 가지고 다시 위 링크에 접속해 MuJoCo Personal License:1 year의 빨간색 창에 발급된 account number와 computer id를 입력하며 register computer를 클릭해 본인의 컴퓨터를 등록한다. computer id는 빨간색 창에서 win64 를 클릭해 프로그램을 다운받아 실행하면 알 수 있다.

 

그럼 메일로 라이센스 파일인 mjkey.txt 가 바로 발급된다. (1년짜리 이므로 발급일을 대충 기억해 두자)

 

2. MuJoCo 다운로드

이번엔 https://www.roboti.us/index.html 이 링크로 들어가 빨간색의 MuJoCo 창에서 mjpro 150 win64를 다운받는다.

 

MuJoCo

MuJoCo 2.0 was released on October 1, 2018. The list of changes is below. MuJoCo    (formerly MuJoCo Pro) MuJoCo is a dynamic library with C/C++ API. It is intended for researchers and developers with computational background. It includes an XML parser, mo

www.roboti.us

2.0.0의 최신 버전도 있지만, 아쉽게도 MuJoCo는 더이상 윈도우를 지원 안해 1.5.0 를 받아야 한다. (사용엔 큰 문제 없다.)

 

3. MuJoCo 엔진 설치

받을 파일의 압축을 풀면 mjpro150이란 폴더가 생긴다. 이 폴더를 C:\Users\[본인계정] 에 ".mujoco" 란 새폴더를 만들고 그 안에다 옮긴다. 또한 메일로 발급받은 mjkey.txt 를 C:\Users\[본인계정]\.mujoco\mjpro150\bin 안에다 옮긴다.

그리고 C:\Users\[본인계정]\.mujoco 에도 복사한다.

 

잘 설치 됐는지, 그리고 라이센스가 정확한지를 확인하기 위해 프롬프트에서

C:\Users\[본인계정]\.mujoco\mjpro150\bin> simulate ../model/humanoid.xml

를 실행해본다. 설치가 잘 됐으면 힘없이 쓰러지는 humanoid를 볼 수 있다.

 

4. MuJoCo-py 설치

프롬프트 창에 SET PATH=C:\Users\[본인계정]\.mujoco\mjpro150\bin;%PATH%; 를 입력해 path를 설정해준다.

https://github.com/openai/mujoco-py/archive/1.50.1.0.zip 이 링크에서 설치 파일을 받아 C:\Users\[본인계정]\.mujoco 에 압축을 풀어준다. 설치를 위해 프롬프트에서

C:\Users\[본인계정]\.mujoco\mujoco-py-1.50.1.0> python setup.py install

을 실행해 설치를 마무리 한다.

 

4. MuJoCo-py 동작 확인

프롬프트에서

C:\Users\[본인계정]\.mujoco\mujoco-py-1.50.1.0> python examples\body_interaction.py

을 실행해 mujoco 화면이 정상적으로 팝업되는지를 확인한다.

 

 

+ Recent posts