티스토리 뷰

Study/AI

[RL] Domain Randomization for Sim2Real Transfer

생각많은 소심남 2019. 8. 31. 18:08

(해당 글은 OpenAI Engineer인 Lilian Weng의 포스트 내용을 원저자 동의하에 번역한 내용입니다.)

 

Domain Randomization for Sim2Real Transfer

If a model or policy is mainly trained in a simulator but expected to work on a real robot, it would surely face the sim2real gap. Domain Randomization (DR) is a simple but powerful idea of closing this gap by randomizing properties of the training environ

lilianweng.github.io

 만약 model이나 policy를 simulator상에서 주로 학습시켰지만, 실제로 동작하는 로봇에서 돌릴 경우, simulator와 실제 사이간의 차이(sim2real gap)에 직면하게 된다. 이때 Domain Randomization (DR)은 간단하면서도 학습환경에서의 특성을 랜덤화함으로써 그런 차이를 줄이는데 효율적인 방법이다.

 로보틱스에서, 가장 풀기 어려운 문제 중 하나는 학습시킨 모델을 어떻게 실제 환경으로 투영시킬 수 있느냐는 것이다. Deep RL 알고리즘 상에서의 sample inefficiency와 실제 로봇에서 데이터를 수집하는데 있어서의 한계로 인해서, 보통은 이론적으로 무한대의 데이터를 얻을 수 있는 simulator 환경에서 모델을 학습시키는 경우가 있다. 하지만 simulator와 실제 물리 환경간의 현실적인 차이는 실제 로봇이 동작하는데 있어 실패를 야기하곤 한다. 보통 이런 차이는 (예를 들어 마찰이나, PID parameter, 제동, 질량, 밀도와 같은) 물리 계수와 (부드러원 표면에 대한 충돌같은) 부정확한 환경 모델링간의 inconsistency로 인해서 발생한다.

 이런 sim2real gap을 줄이기 위해서, simulator를 개선하고, 조금더 현실적으로 만들 필요가 있다. 여기에 몇가지 방법론들이 존재한다.

  • System Identification
    • System Identification은 physical system에 대한 수학적인 모델을 만들자는 것이다. 강화학습 용어를 빌려오자면, 수학적 모델이란 simulator를 말하는 것이다. 이 simulator를 현실적으로 만들기 위해서는 세심한 calibration 과정이 필요하다.
    • 안타깝게도 calibration 과정은 cost가 많이 드는 작업이다. 게다가 하나의 machine을 구성하는 수많은 물리 계수들은 시간에 따른 온도나 습도, 위치, 마모 정도에 따라서 급격하게 변하는 성질을 가지고 있다.
  • Domain Adaptation
    • Domain adaptation (DA)는 task model에 맞춰진 mapping이나 regularization등을 통해서 simulation 상의 data의 분포를 실제 환경에 맞게끔 update할 수 있도록 개발된 일종의 transfer learning 기법을 나타낸다.
    • 특히 image classification이나 image 기반의 end-to-end RL task와 같은 많은 DA 모델들은 adversarial loss나 GAN 기반으로 만들어져 있다.
  • Domain Randomization
    • Domain randomization (DR)을 사용하면, 랜덤한 특성을 가진 여러가지 simuation 환경을 만들 수 있고, 이 환경 기반으로 model을 학습시킬 수 있다.
    • 일반적으로 DR 기반의 모델은 실제 환경에 쉽게 적용할 수 있는데, 이는 실제 환경도 학습되는 다양한 환경 중 하나의 샘플로 간주되기 때문이다.

 위의 기법 중 DA와 DR은 비지도 학습(unsupervised) 이다. DA가 학습할 환견의 분포를 만들기 위해서 엄청 많은 양의 실제 데이터가 필요한데 비해서, DR방식은 실제 데이터가 거의 필요없거나 없어도 된다. 해당 포스트에서는 DR에 대해서 초점을 맞추고 있다.

그림 1. sim2real transfer의 세가지 방식에 대한 개념적 묘사도

What is Domain Randomization?

  정의를 조금더 일반화 시키기 위해서, (simulator와 같이) 우리가 모든 특성에 관해서 접근할 수 있는 환경을 source domain이라고 하고, (physical world와 같이) 모델을 transfer하길 원하는 환경을 target domain이라고 해보자. 보통 학습 과정은 source domain 상에서 일어난다. 그리고 randomization space에서 샘플링된 특정 설정 \(\xi\)이 가해진 source domain \(e_\xi\) 상에서 \(N\)개의 랜덤하게 조절할 수 있는 parameter가 존재한다고 해보자. 그러면 설정변수 \(\xi\)는 \( \xi \in \Xi \subset \mathbb{R}^N \)의 관계를 가지게 될 것이다.

 그러면 policy가 학습되는 동안, episode들이 randomization가 적용된 source domain으로부터 수집될 것이다. 이렇게 되면 policy는 다양한 환경상에서 수행이 될 것이고, 이를 일반화시키게끔 학습될 것이다. 이 때의 policy parameter \(\theta\)는 아래의 식과 같이 앞에서 언급한 configuration 분포 상에서 expected average reward \(R(\cdot)\)를 최대화시키도록 학습될 것이다.

$$ \theta^* = \arg\max_\theta \mathbb{E}_{\xi \sim \Xi} [\mathbb{E}_{\pi_\theta, \tau \sim e_\xi} [R(\tau)]]  $$

 이때 \(\tau_{\xi}\)는 \(\xi\)가 randomize된 source domain상에서 수집된 trajectory가 된다. 이를 다르게 표현하면, "source domain과 target domain 사이의 불일치성이 source domain의 하나의 다양성으로 모델링된다." 라고 할 수 있다. ( 이 표현은 Peng et al. 2018 에서 따왔다.)

Uniform Domain Randomization

 DR의 원래 형태(Tobin et al, 2017; Sadeghi et al, 2016)를 살펴보면, 각각의 randomization parameter \(\xi_i\)는 어느 특정 interval내에 위치해 있고 ( \( \xi_i \in [\xi_i^\text{low}, \xi_i^\text{high}], i=1,\dots,N  \) ), 각 parameter는 해당 범위내에서 균등하게 샘플링된다.

 Randomization parameter들은 어느 특정 scene의 외형을 조절할 수 있고, 보통 아래에 소개되어 있는 것들이 포함되어 있는데, 그렇다고 이런 내용이 꼭 담겨야 한다고 제한되어 있지는 않다. 이렇게 시뮬레이션되고 랜덤화된 이미지 상에서 학습된 모델은 실제 환경상에서의 랜덤화되지 않은 이미지로 전이시켜서 동작을 확인할 수 있다.

  • 위치, 외형, 사물의 색상
  • 사물의 재질
  • 빛이 투영되는 조건
  • 이미지에 가해지는 랜덤한 noise
  • Simulator상에 있는 카메라의 위치나 시점, 그리고 화각 같은 것들...  

그림 2. 랜덤화된 학습 환경에서 캡쳐한 이미지들 (출처 : Tobin et al, 2017)

 Simulator상에서의 물리적 역학관계도 랜덤화시킬 수 있다.(Peng et al. 2018) 몇몇 연구에 따르면 recurrent policy를 사용하면 부분적으로만 관찰가능한 실제 환경(Partial Observable reality)을 포함한 서로 다른 물리 역학 관계에 적응시킬 수 있다는 것을 보여줬다. 이때의 물리 역학관계를 구성하는 특징들은 다음과 같지만, 물론 이것도 크게 제한되어 있는 것들은 아니다.

  • 물체의 질량과 차원
  • 로봇 몸체의 질량과 차원
  • 제동이나 관절내의 마찰
  • PID Controller의 Gain (특히 \(K_p\))
  • 관절이 움직일 수 있는 범위
  • 행동이 취할때의 지연성
  • 관찰시 발생할 수 있는 Noise

 OpenAI Robotics에서 선보인 visual/dynamics DR을 사용하면, 실제 dexterous robot hand에서도 잘 동작하는 policy를 학습시킬 수 있다.(OpenAI, 2018) 여기서 제어하고자 하는 task는 50개의 랜덤화된 사물의 방향을 연속적으로 회전시킬 수 있는 로봇 팔을 학습시키는 것이다. 이 task에서의 sim2real gap은 매우 큰데, 그 이유는 첫번째로 로봇 팔과 사물 사이의 즉각적으로 발생하는 접촉이 많다는 것이고, 두번째로는 사물의 충돌과 다른 동작에 대해서 완벽하게 시뮬레이션되기 어렵다는 것이다. 우선, 단순한 policy로는 로봇팔이 사물을 떨어뜨리지 않고 5초 이상 버티기 힘들었다. 하지만 DR을 적용하면, policy가 실제 환경 상에서도 매우 잘 되게끔 학습되는 것을 확인할 수 있다.

Why does Domain Randomization Work?

이제 던질 수 있는 질문은, domain randomization이 어떻게 동작이 잘 되냐는 것이다. 사실 개념 자체는 매우 간단하다. 여기서 내가 가장 납득이 갈만한 두가지 설명을 제시해보고자 한다.

DR as Optimization

 한가지 아이디어(Voung et al, 2019)는 DR상에서 randomization parameter를 학습시키는 것을 일종의 bi-level optimization으로 바라보자는 것이다. 우선 실제 환경에 관한 정보 \( e_{\text{real}}\)에 접근할 수 있고, randomization 설정이 \(\phi\)에 의해서 조정되는 분포에서 샘플링된다고 가정해보자.(\(\xi \sim P_\phi(\xi)\)) 이때 우리가 원하는 것은 학습된 policy \(\pi_{\theta}\)가  \( e_{\text{real}}\)에서도 최고의 성능을 낼 수 있는 특정 분포를 학습하는 것이다. 이를 수식으로 표현하면 아래와 같다.

$$ \begin{aligned}
&\phi^* = \arg\min_{\phi} \mathcal{L}(\pi_{\theta^*(\phi)}; e_\text{real}) \\
\text{where } &\theta^*(\phi) = \arg\min_\theta \mathbb{E}_{\xi \sim P_\phi(\xi)}[\mathcal{L}(\pi_\theta; e_\xi)]
\end{aligned} $$

 위 식에서 \(\mathcal{L}(\pi; e)\)은 특정 환경 \(e\)에서 검증된 policy \(\pi\)에 대한 loss function을 나타낸다.

 비록 randomization에 대한 범위가 uniform한 DR에서 손으로 뽑은 것이라 할지라도, 해당 범위는 domain knowledge와 transfer performace에 기반해서 수차례 trial-and-error를 통한 수정이 필요한 부분이다. 이를 위해서 optimal한 \(\mathcal{L}(\pi_{\theta^*(\phi)}; e_\text{real})\)을 위해서 \(\phi\)를 튜닝하는 optimization process이 반드시 필요하다. 

 다음 section에서 소개할 Guided domain randomization이 이런 관점이 크게 작용한 것이고, bi-level optimization을 수행하고, 가장 좋은 parameter distribution을 자동적으로 학습할수 있도록 해준다.

DR as Meta-Learning

 앞에서 소개한 dexterity project(OpenAI, 2018)에서는 서로 다른 환경의 dynamics를 generalize시키기 위해서 LSTM policy를 학습시켰다. 여기서 관찰할 수 있었던 것은 한번 로봇 팔이 첫번째 회전에 성공하면, 이후의 회전에 성공하는데 필요한 시간이 훨씬 짧아진다는 것이었다. 또한 memory가 없는 Feed-Forward policy는 physical robot에 옮겨서 동작시킬 수 없다는 것또한 발견했다. 이런 관찰 사항 모두 policy가 새로운 환경에 대해서 dynamic하게 학습하고 적응한다는 것에 대한 증거가 된다.

 한편, domain randomization은 서로 다른 task들에 대한 집합이라고 생각해볼 수 있다. 이런 환경에서 Recurrent network내의 memory는 policy가 task 전반적으로 meta-learning(원본, 번역)을 수행할 수 있고, 더 나아가 실제 환경에서도 동작할 수 있게끔 강화시켜주는 역할을 한다.

Guided Domain Randomization

 원론적인 DR은 실제 데이터에 대해서 접근하지 않는 것을 가정하기 때문에, randomization config도 simulator환경에서 최대한 broad하고 uniform하게 sampling되어야 하고, 이를 통해 실제 환경이 이런 분포내에 포함되어 있기를 바라게 된다. 이때 이를 개선하기 위해서, 기존의 uniform sampling을 task performance나 실제 데이터, 아니면 simulator로부터 도움을 받은 sampling을 취해보는 전략을 선택해볼 수 있다.

 Guided DR을 구현할 수 있는 요소 중 하나는 바로 비현실적인 환경에서 모델을 학습시키는 것을 피함으로써 이에 필요한 computation resource를 줄이는 것이다. 또다른 하나는 엄청나게 넓은 randomization distribution으로부터 파생되어, policy를 학습하는데 방해가 될 수 있는 말이 안되는 답을 최대한 피하는 것이다.

Optimization for Task Performance

 우리가 서로 다른 randomization parameter \( \xi \sim P_\phi(\xi) \)에 대한 policy들의 집합을 학습시키고 있고, 이때 \( P_\phi(\xi) \) 은 \(\phi\)에 의해서 조절되는 \(\xi\)에 대한 분포를 나타낸다. 학습된 후에는 (실제 환경에서 로봇을 컨트롤 한다던가 validation set을 검증한다던가 하는) target domain상에서 하위의 task에 대해서 policy들을 하나씩 해보기로 한다. 이때의 피드백은 특정 randomization parameter \(\xi\)가 좋은지 여부와  \(\phi\)를 최적화하는데 필요한 정보들을 제공해준다.

 Neural Architecture Search(NAS)의 아이디어를 가져온 AutoAugment (Cubuk et al, 2018) 은 image classification task에서 (sheering, rotation, invert와 같은) 가장 좋은 data augmentation 동작에 대한 문제를 강화학습 문제로 간주했다. 참고로 AutoAugment는 sim2real transfer에 딱 적용이 가능한 것은 아니지만, task performance를 통해서 도움을 받는 DR의 범주안에 포함이 된다. 개개별의 augmentation 설정은 검증 데이터 셋에서 확인이 되었고, 이에 대한 성능 향상은 PPO policy를 학습시키는데 있어 reward로 사용되었다. 이때의 policy는 서로 다른 dataset에 대해서 다른 augmentation을 취하는 것을 출력으로 내보낸다. 예를 들어서 CIFAR-10 dataset에 대해서 ImageNet이 geometric 기반의 transformation 방식을 취하는 반면, AutoAugment 방식은 일반적으로 color 기반의 transformation을 취한다.

 Ruiz et al(2019)에서는 task feedback은 강화학습의 reward로 간주했고, 이에 따라 \(\xi\)를 조절하는데 있어 강화학습 기반의 방법을 제안했는데, 이름이 "learning to simulate"였다. 이 방법에서 policy는 main task의 validation data에서 뽑을 수 있는 performance metric을 reward로 이용해서 \(\xi\)를 predict하도록 학습되었고, 이건 multivariate Guassian 분포를 띄게끔 모델링된다. 전반적인 아이디어는 data generation을 하는데 NAS를 사용한다는 점에서 AutoAugment와 유사하다. 논문에서 진행한 실험에 따르면 main task model이 어느 특정 범위로 수렴하지 않더라도, data generation policy한테는 의미있는 정보를 제공할 수 있다고 알려져있다.

그림 3. "learning to simulate" 도식화 (출처: Ruiz et al, 2019)

 Evolutionary algorithm은 feedback을 evolution할 수 있도록 도움을 주는 fitness처럼 간주된다는 점에서 또다른 접근 방식이다.(Yu et al, 2019) 이 논문에서는 CMA-ES (Covariance Matrix Adaptation Evolution Strategy)을 사용했는데, 이때 fitness는 target environment의 \(\xi\)에 따라 조절되는 policy의 성능을 나타낸다. 부록을 살펴보면, 논문에서는 CMA-ES와 Bayesian optimization이나 neural network을 포함한,  \(\xi\)의 dynamics를 모델링한 다른 방식과 비교한 결과도 있다. 여기서 주 요지는 위의 다른 방식들이 CMA-ES 만큼이나 안정적이거나 sample efficient하지 않다는 것이다. 재미있는 부분은 neural network으로 \(P(\xi)\)을 모델링할때, LSTM이 일반적인 FeedForward Network 보다 월등하게 동작한다는 것이었다.

 몇몇 논문에서는 sim2real gap이 밖으로 드러난 gap(appearance gap)과 내면의 gap(content gap)의 조합으로 이루어져 있다고 표현했다. 예를 들어 GAN에서 파생된 DA model같은 경우는 appearance gap에 초점을 맞췄다. Meta-Sim (Kar et al, 2019) 은 task별로 임의로 생성한(synthetic) dataset을 생성함으로써 content gap을 줄이려고 노력했다. 논문에서는 자율 주행 차량을 학습하는 것을 예제로 들었는데, 이로 인해 학습 데이터는 매우 복잡한 형태를 가질 수도 있게 된다. 이 경우, 임의의 scene들은 (location이나 color와 같은) property로 구성된 object의 계층을 마치 object들간의 관계처럼 활용해서 수치화시키게 되는데, 이때의 계층은 Structure Domain Randomization (SDRPrakash et al, 2018)와 유사하게 일종의 probablistic scene grammar로 표현할 수 있게 된다. 그리고 이 것들은 사전에 알고있는 것으로 가정해둔다. 그러면 모델 \(G\)는 다음과 같은 과정을 통해 scene property \(s\)의 분포를 확장시키는 방향으로 학습이 된다.

  1. 중요한 것을 먼저 학습한다. 다시말해 identity function \(G(s) = s\)을 학습할 수 있도록 \(G\)를 사전에 학습시킨다.
  2. Real data distribution과 simulator data distribution 사이에서 계산한 Maximum Mean Discrepancy(MMD) loss를 최소화시킨다. 이 과정은 미분불가능한 renderer를 통한 backpropagation과 연관이 있는데, 논문에서는 \(G(s)\)에 대한 attribute를 perturb하는 방식으로 이 loss를 수치적으로 계산해냈다.
  3. synthetic data에서 학습하고 real data data에서 검증할때 REINFORCE task loss를 최소화시킨다. 다시 말하지만 이 과정은 AutoAugment와 많이 유사하다.

 앞에서 언급한 내용이지만, 이런 방식들은 sim2real case에 적합하지 않다. RL policy나 Evolutionary Algorithm 모두 real sample들을 많이 필요로 한다. 또한 training loop내에 실제 로봇의  feedback data collection을 실시간으로 받는 작업 자체도 cost가 많이 들어간다. 실시간 data collection을 처리하기 위한 computation resource를 줄일지 말지에 대한 여부는 전적으로 학습할 task에 달려있다.

Match Real Data Distribution

Domain Randomization을 보조하는데 있어 실제 데이터를 활용하는 것은 어떻게 보면 앞에서 소개한 system identification이나 Domain adaptation과 많이 유사해보인다. Domain Adaptation에 깔린 핵심 아이디어는 실제 데이터의 분포와 일치시키도록 임의의 데이터의 quality를 향상시키겠다는 것이다. Real-data-guided DR에서는, simulator상의 상태의 분포를 실제 환경의 상태 분포와 가깝게 만들어주는 randomization parameter \(\xi\)를 학습하길 원하는 것이다.

 SimOpt 모델 (Chebotar et al, 2019) 먼저 특정 policy \(\pi_{\theta, P_\phi}\)를 구하기 위해서 초기의 randomization distribution \(P_{\phi}(\xi)\) 상에서 학습시킨다. 그리고 난후 해당 policy를 simulator와 실제 로봇상에 반영시켜서 각 환경에 대한 trajectory \(\tau_\xi\)와 \(\tau_{\text{real}}\)를 모을 수 있도록한다. 이때 optimization object는 simulator와 real environment로부터 수집한 trajectory사의 불일치성을 최소화하는 것이 된다.

$$ \phi^* = \arg\min_{\phi}\mathbb{E}_{\xi \sim P_\phi(\xi)} [\mathbb{E}_{\pi_{\theta, P_\phi}} [D(\tau_\text{sim}, \tau_\text{real})]] $$

 위 식에서 \(D(\cdot)\)은 trajectory 기반의 불일치성을 측정하는 식이다. 앞에서 소개한 "Learning to simulate" 논문에서 나온바와 같이 SimOpt에서도 미분불가능한 simulator를 통해서 나온 gradient를 어떻게 발전시키는지에 대한 문제를 해결해야 한다. 그래서 논문에서는 relative entropy policy search라는 방법을 사용했는데, 자세한 내용은 논문을 참조하면 좋을거 같다.

그림 4. SimOpt Framework에 대한 개요 (출처 : Chebotar et al, 2019)

 RCAN (James et al, 2019) 은 "Randomized-to-Canonical Adaptation Networks"의 줄임말인데, end-to-end RL task에서 DA와 DR을 적절하게 조합해서 사용했다. image-conditioned GAN(cGAN)은 domain-randomized image를 non-randomized한 형태(보통"canonical version"이라 표현하기도 한다)로 전환시키기 위해 simulator에서 학습시킨다. 이후 같은 모델을 사용해서 실제의 이미지를 이와 관련있는 시뮬레이션 환경의 이미지로 전환시키는데, 이를 통해 agent가 학습과정에서 어떤 정보와 맞닿는지에 대해서 지속적으로 관찰할 수 있게 해준다. 여전히 여기에 깔린 가정은 domain-randomized한 시뮬레이션 이미지의 분포가 실제 환경에서 뽑은 이미지를 설명할 수 있을만큼 충분히 광범위해야 한다는 것이다.

그림 5. RCAN은 domain-randomized하거나 실제 이미지를 이와 연관된 non-randomize한 simulator 이미지로 바꿔주는 일종의 image-conditional generator이다. (출처 : James et al, 2019)

 그럼 강화학습 모델은 비전 기반의 로봇 팔 제어를 위해서 simulator상에서 end-to-end를 학습한다. 이 때 randomization은 tray-dividor의 위치나, 집어야할 물체들, 랜덤한 표면들을 마치 기존에 학습되고 있던 위치, 방향, 빛의 색깔과 같은 정보에 매 순간마다 적용된다. Canonical version은 기본으로 쓰이는 simulator가 되고, RCAN은 아래와 같은

\(G\) : randomized image \(\rightarrow\) {canonical image, segmentation, depth}

generator를 학습할텐데, 이때 segmentation mask나 depth image는 메인이 아닌 보조 task에서 사용된다. RCAN은 uniform DR과 비교했을때 더 좋은 zero-shot transfer를 보여주긴하지만, 여전히 실제 이미지만 가지고 학습시킨 모델에 비해서는 나쁘게 동작한다. 개념적으로 RCAN은 domain adaptation을 사용해서 임의의 이미지를 실제 이미지로 전환시켜주는 GraspGAN의 역방향으로 동작한다.

Guided by Data in Simulator

 DeceptionNet이라고 알려져 있는, network 기반의 domain randomization (Zakharov et al, 2019)은 image classification task에서 domain간의 gap을 연결시켜주는데 어떤 randomization configuration이 유용한지를 학습하는 것에서 아이디어를 가져왔다.

 Randomization은 encoder-decoder 구조를 가진 deception module들을 통해서 이뤄진다. 이때 deception module은 image를 변환시키기 위해서 특별히 설계된 모듈인데, 여기서 변환 작업이란 배경을 바꾼다던가, distortion을 가한다던가, 광량을 조절한다던가 하는 작업들이다. 또 다른 recognition network은 변환된 이미지들 상에서 classification을 수행함으로써 main task를 수행한다.

 학습 과정은 크데 두가지로 나눠볼 수 있다.

  1. Recognition network이 결정되면, backpropagation 동안 reversed gradient를 활용해서 prediction과 label 사이의 차이를 최대화한다. 그래서 deception module이 가장 구별하기 어려운 케이스를 학습하게 된다.
  2. 위의 와정에서 deception module이 결정되면, input image를 바꿔가면서 recognition network을 학습시킨다.

그림 6. DeceptioNet이 동작하는 과정 (출처 : Zakharov et al, 2019)

 Deception module을 학습하는 과정에서 얻는 피드백은 하위단에 붙어있는 classifier에서 나온다. 하지만 윗부분에서 소개한 것과 같이 task performance를 최대화시키는 것보다 여기의 randomization module은 복잡한 문제를 생성하는데 초점을 맞추고 있다. 이때 발생하는 큰 단점은 문제를 쉽게 확장시키지 못하게 하기 위해서 서로 다른 dataset이나 task에 대해서 이에 대한 서로 다른 deception module을 일일이 설계해야 한다는 것이다. 이런 일련의 과정이 zero-shot이기 때문에 위와 같은 방식에 대한 결과는 MNIST나 LineMOD dataset에 대해서는 최신의 Domain Adaptation 기법들보다 더 안 좋게 나오게 된다.

 이와 유사하게 Active Domain Randomization (ADR; Mehta et al, 2019) 에서도 샘플들을 학습시키기 어렵게 하기 위해서 simulator에서 나온 데이터를 활용한다. ADR은 주어진 randomization 범위내에서 가장 유의미한 환경 다양성을 찾고자 한다. 이때 유의미성이란 randomized된 환경에서의 policy와 reference(원래 환경의 non-randomized) 환경에서의 policy 간의 서로 다른 부분으로부터 측정할 수 있다. 이런 부분이 위에서 소개한 SimOpt와 많이 유사해 보인다. 유념해야 할 것은 SimOpt는 simulator와 real rollout 간의 차이를 측정했었던 것에 비해 ADR은 실제 데이터를 수집하는데 발생하는 cost 부분을 피하기 위해서 randomized된 simulator와 non-randomized simulator간의 차이를 측정하는 부분에서 서로 다른 부분이 있다.

그림 7. Active Domain Randomization(ADR)의 동작원리 (출처 : Mehta et al, 2019)

 좀더 자세하게 말하자면, 학습과정에서는 다음과 같은 단계를 거친다.

  1. 주어진 policy가 있을 때, 해당 policy를 reference env와 randomized env에서 수행시켜보고 각각의 trajectory를 모은다.
  2. rollout trajectory가 reference에서 돌린것에 비해 randomize되어 있는지 여부를 말해줄 수 있는 discriminator model을 학습시킨다. 이때 예측된 \(\log p\) (randomize여부에 대한 확률)은 reward로 사용된다. reference rollout에 대해서 더 많은 randomize가 되어 있을수록, prediction이 쉬워질 것이고, 그만큼 reward도 더 커질 것이다.
     - 만약 환경이 학습하기 쉬울 경우, 같은 policy agent는 reference에 대해서 거의 비슷한 trajectory를 만들어낼 것이다. 그럴 경우 모델은 더 다른 행동을 유발해서 조금 더 어려운 환경에 대해 탐색하고 보상할 수 있어야 한다.
  3. discreminator에 의해서 계산된 reward는 Stein Variational Policy Gradient (SVPG) particle의 입력으로 들어가 특정 randomization configuration의 형태로 출력되게 된다.

 ADR의 접근 방식은 매우 흥미로우면서도 두가지 작은 문제를 가지고 있다. 첫번째로 trajectory들간의 유사성은 stochastic policy를 수행하고 있는 경우에는 환경의 어려운 정도를 측정하기 좋은 방법이 아닐 수 있다는 것이다. 그리고 sim2real에 대한 결과가 그렇게 좋지 않다는 것이다. 그래도 논문에서는 ADR이 적은 범위내의 randomization parameter탐색하면서도 좋은 결과를 내고 있는 것을 보여줬다.


해당 포스트 글을 논문에 인용하려면 다음 bibtex를 참고하고, 포스트와 관련해서 오류나 문제가 발생하면 댓글이나 원저자 (lilian dot wengweng at gmail dot com), 혹은 역자(kcsgoodboy at gmail dot dom) 에게 문의해주시면 감사하겠습니다.

@article{weng2019DR,
   title = "Domain Randomization for Sim2Real Transfer",
   author = "Weng, Lilian",
   journal = "lilianweng.github.io/lil-log",
   year = "2019",
   url = "http://lilianweng.github.io/lil-log/2019/05/04/domain-randomization.html"
}

댓글