3 단계에 걸쳐 zero-shot sim-to-real transfer learning을 구성
Step1: Teacher policy training - 랜덤하게 생성된 지형에서 명령으로 준 랜덤 target velocity와의 차이를 reward로 PPO알고리즘에 주어 학습 - Teacher policy의 입력으로는 1. 속도 command, 2. proprioception센서 정보, 3. exteroception 센서 정보 4. previleged 정보 (ex. 마찰력과 같은 환경의 true dynamics) - 시뮬레이션을 활용하여 이상적인 정보를 줌으로써, RL알고리즘이 충분히 optimal에 가까운 policy를 학습하도록 유도
Step2: Student policy training - Student policy의 입력으로는 1. 속도 command, 2. proprioception센서 정보, 3. 노이즈가 들어간 exteroception 센서 정보 - 충분하지 못한 정보에서 scratch로 좋은 RL policy를 학습하기보다, 이미 학습한 좋은 tearch policy를 supervised learning으로 distill하여 효율적으로 학습; privileged learning - Prorioception정보와 extroception정보로부터 unobervable state에대한 belief를 추론하기위해 recurrent belief state encoder를 제안 - Belief encoder가 좋은 latent space를 학습하도록 하기위해, previleged 정보와 true exteoception정보에 대한 reconstruction loss를 사용
Step3: Deployment - 실제 로봇에 학습한 student policy를 decoder를 제외하고 deploy - Context based meta-RL인 만큼 fine tunning이나 optimization 없이 실시간으로 real-world에 adaptation가능
Exteroception정보는 경우에 따라 틀리거나 얻지못할 수 있으므로, 필요에 따라 exteroception정보에서 의미있는 정보를 선별하여 쓰기위하여 attention gate를 사용한 gated encoder 적용
Attention gate는 최종 belief state에 어느정도의 exteroception정보를 담을지를 조절
Autoencoder를 사용하여 representation learning을 한 만큼, decoder를 사용하여 internal belief를 시각화 가능
아래 그림에서 빨간 점은 policy에 입력으로 들어가는 실제 지면높이 정보 파란 점은 decoder에 의해 복원된 지면높이에대한 agent의 belief
A) 스펀지 장애물을 밟기전엔 지면 높이가 높다고 생각하고 있다가, 스펀지를 밟자으면서 들어오는 시계열의 푹신한 반응정보로부터 encoder는 실시간으로 평평한 지면 인것으로 belief가 변경
B) 투명한 장애물을 exteroception 센서가 인식못해 평평한 지면이라고 생각하다가, 상자를 밟는 순간 지면의 높이가 있는것으로 belief가 변경
D) 센서가 완전히 가려진 상태에서도 지면이 경사졌다고 판단다는 belief가 형성되며, 이는 사람이 걸으며 주변환경이 어두워질 경우 시각에서 체성감각으로 주의를 옮겨 지형지물을 판단하는것과 유사
E) 미끄러운 지면의 장애물을 걸을경우, 미끄러지는 만큼의 연장된 너비의 지면에 대한 belief가 형성하는 동시에 마찰의 변화 역시 추정
학습은 카이스트 황보재민 교수님께서 만드신 RaiSim시뮬레이터에 Unitree사의 A1로봇을 넣고 환경변수(Friction, payload, center of mass, motor strength, terrain height 등)를 다양하게 바꿔주고 지면조건도 다르게 하며 meta training을 수행.
Meta training 환경변수와 Meta Test환경변수의 distribution이 겹치되 test가 더 넓게 설정
아키텍처는 두개의 phase로 진행.
phase 1: 시뮬레이션 상의 환경변수 $e_{t}$를 인코딩한 latent task variable $z_{t}$를 conditional policy에 주는 multi-task meta RL을 먼저 학습.
이 결과 fine-tuning없이 바로 실제 A1로봇에 policy와 Adaptation Module을 deploy했을때, 처음 보는 환경(지형, payload 등)에서도 실패 없이 잘 걷는것을 확인
Context-based adaptation이 잘 되는지 확인하고자 latent variable $z_{t}$을 분석한 결과, 오일이 뿌려진 미끄러운 지형에 돌입하면서 빠르게 latent variable이 바뀌는것을 확인할 수 있고 미끄러움이 지속됨에 따라 latent variable도 이를 잘 캡쳐하는것을 확인함.
Unexpected payload가 주어졌을때도 latent variable에 잘 반영이 됨
개인적인 생각
1.빠른 adaptation, 2.높은 'structured' representation power, 3. causal inference로의 확장 가능성, 4.tuning이 필요없는 adaptation의 장점으로인해 Context-based Meta RL이 Real world RL을 위한 solution중 하나가 될거라 생각해왔는데, 버클리와 FacebookAI에서 이렇게 직접 보여주니 좋다.
Real world 문제이니 만큼 이외에도 많은 detail이 들어갔지만, 그럼에도 이정도의 복잡도를 가진 로봇이 deploy후 realworld에서 튜닝없이 바로 동작하는건 고무적이다.
사람의 최소한의 개입만으로 4족 보행로봇의 locomotion을 RL로 학습가능한 on-robot learning 시스템을 개발함
Real-world RL은 학습과정에서의 자동화된 데이터 수집과 안전성의 문제가 근본적으로 있음
이를 극복하기 위해 1.multi-task learning/ 2. automatic reset controller/ 3. safety-contrained RL 의 세 가지 방법을 도입함
제안된 방법을 4족보행 로봇에 적용한 결과, 서로 다른 지형에서 사람의 개입없이도 단 몇시간 만에 지형에 특화된locomotion을 학습 하는것이 검증됨
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한 것과 비교하면 매우 현실적인 학습과정이라 볼 수 있음
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가 사용되는걸 보면 그럴수도 있겠다 싶다.