부제: impala에 popart를 싸서 드셔보세요
Learning values across many orders of magnitude https://arxiv.org/abs/1602.07714
Multi-task Deep Reinforcement Learning with PopArt https://arxiv.org/abs/1809.04474
소개
Atari 57과같이 여러 Task를 한 모델을 가지고 학습하는 경우를 multi-task learning이라고 한다. 각 environment 마다 입력이 다르고, 보상체계가 다르기 때문에 reward clipping을 이용하여 학습이 균일하게 이루어 지도록 하는 테크닉이 사용되고 있다. 그 방법중 하나는 reward를 z-score로 normalization 하는것인데, pop-art에서는 단순히 z-score로 바꾸는 것 뿐만 아니라, $\mu, \Sigma$의 statistic가 바뀌었을 경우, state value/action value가 불안정해져 학습을 개선하지 못하고 단순히 복잡하게 만들수 있음을 인지하고,
- ART: $\mu, \Sigma$의 통계치 수집
- Adaptively Rescaling Targets
- POP: unnormalized value가 수렴하도록 조정
- Preserving Outputs Precisely
의 두가지 단계로 나누어 학습하는 알고리즘을 제시하였다.
원 논문 “Learning values across many orders of magnitude”에서는 DQN에 적용하였고,
새 논문 “Multi-task Deep Reinforcement Learning with PopArt”는
“IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures”에 적용된 IMPALA를 개선하여,
popart+impala를 이용한 알고리즘을 제시하였다.
선행 연구와 비교한 장점
- 전술 했듯 environment의 입력이 다르다는 multi-task learning 자체의 어려움
- reward가 전부 non-negative일 경우에 강화학습 알고리즘은 그 reward의 빈도(frequency)가 높아지도록 학습한다.
- 실제로 학습해야하는 것은 보상의 합(cumulative sum)임에도 불구하고, 쉽게 갈 수 있는 길을 선호하는 경향이 있음.
value를 normalization 할 경우, 비슷한 trajectory라도 절반은 negative feedback되므로, 전체적으로 optimum으로 향하도록 조정해 주는것으로 보임. 논문에 정리된 부분은
-
scale of rewards
각 environment마다 보상체계가 다르고, 스케일이 다름
ex) 스테이지를 클리어하면 +1점/1000step vs 장애물을 격파할때마다 +1점/50step -
sparsity of rewards
스테이지를 클리어 하는 빈도 « 장애물을 격파할때 reward를 받는 횟수 -
competetance of agents
unnormalized reward의 경우자주 들어오는 environment를 학습할 확률이 더 높다. 가끔 들어오는 다른 environment의 reward때문에 전체 학습이 non-stationary해지며 학습자체가 collapse할 수도 있다.
제시 기술/방법
state value는 impala와 동일하게 v-trace target을 이용한다.
\[\begin{aligned} G_t^{\text{v-trace}}&=v(S_t)+\sum\limits_{k=t}^{t+n-1}\gamma^{k-t}\big(\prod\limits_{i=t}^{k}c_i\big)\delta_k,\\ \delta_k&=(R_t+\gamma v(S_{t+1})-v(S_t)) \end{aligned}\]-
Value Advantage ($G_t^v$)
\[G_t^v = G_t^{\text{v-trace}}\] -
Policy Advantage ($G_t^\pi$)
\[G_t^\pi = R_{t+1}+\gamma G_{t+1}^{\text{v-trace}}\]
unnormalized value estimate를 $v_{{\mu, \sigma, \theta}}(S)$,
normalized value estimate를 $n_\theta(S)$라고 한다면,
가 성립한다.
moving average를 적용하여
\[\begin{align} \mu_t &= (1-\)\mu_{t-1}+\ G_t^v,\\ \nu_t &= (1-\)\nu_{t-1}+\ (G_t^v)^2,\\ \sigma_t &= \sqrt{\nu_t-\mu_t^2} \end{align}\]이 식을 오랜만에 봐서 왜 그런지 5분동안 고민했는데,
\[\text{Var(X)} = E(X^2)-[E(X)]^2\]란 사실을 통계책 보고 떠올렸다.
다음으로 normalized된 값을 이용하여 value, policy update는 다음과 같이 스케일링 할 수 있다.
-
Actor-Critic Update
\[\left(\frac{G_t^v-\mu}{\sigma}-n_\theta(S_t) \right)\nabla_\theta n_\theta(S_t)\nabla_\theta V_\theta(x_s)\]
value parameter($\theta$)의 업데이트(Minimize)policy parameter($\omega$)의 업데이트(Maxmize)
원서에는
\[\Delta\omega \propto \left(\frac{G_t^\pi-\mu}{\sigma}-n_\theta(S_t) \right) \nabla_\omega \log\pi_\omega(A_t|S_t)\](IMPALA와의 통일성을 위해 $\eta$를 $\omega$로 변경)
\[\rho_s\left(\frac{G_t^\pi-\mu}{\sigma}-n_\theta(S_t) \right)\nabla_\omega\log\pi_\omega(a_s|x_s)\]
라고 적혀있는데 impala는 importance weighted TD로 볼 수 있으니,이렇게 바꿀수 있겠다.
-
POP-ART
이렇게 $n_\theta$를 갱신하여도 $\mu,\sigma$는 non-trainable variable이기 때문에
학습 전후로 같은 입력이 주어지더라도 $\mu, \sigma$의 값이 변할경우 state value가 달라져 버린다.이것을 조정해 주는것이 POP부분이다. 평균, 분산 통계치가 각각 $\mu\rightarrow\mu^\prime,\quad \sigma\rightarrow\sigma^\prime$으로 수정되었다고 하자, 그러면
\[y = wx +b\]라고 하였을때,
\[\begin{align} w^\prime &= \frac{\sigma}{\sigma^\prime}w,\\ b^\prime &= \frac{\sigma b +\mu - \mu^\prime}{\sigma^\prime} \end{align}\]으로 보정한다.
-
순서가 메챠쿠챠!
오리지널 POPART에서는 들어온 학습데이터를 이용하여,
- 평균과 분산을 구하고(ART)
- 마지막 q-value의 이동평균을 갱신 및 보정(POP)
- 모델 파라미터 업데이트
의 순서로 업데이트를 하고있다.
POPART-IMPALA에서는 이 순서가 뒤바뀌어있다.
- 평균과 분산을 구하고(ART)
- 모델 파라미터 업데이트
- 이동평균을 갱신 및 보정(POP)
-
POPART-IMPALA에 따른 파라미터 업데이트 식을 Timeline에 맞게 다시 써보면
-
ART
\[\begin{align} \mu_{\text{new}} &= (1-\beta) \cdot \mu_{\text{old}}+\beta \cdot G_t^v,\\ \nu_{\text{new}} &= (1-\beta)\cdot\nu_{\text{old}}+\beta \cdot (G_t^v)^2,\\ \sigma_{\text{new}} &= \sqrt{\nu_{\text{new}}-\mu_{\text{new}}^2} \end{align}\] -
Actor-critic update
\[\begin{align} \Delta\theta &= \left(\frac{G_t^v-\mu_{\text{old}}}{\sigma_{\text{old}}}-n_\theta(S_t) \right)\nabla_\theta n_\theta(S_t)\nabla_\theta V_\theta(x_s),\\ \Delta\omega &= \left(\frac{G_t^\pi-\mu}{\sigma}-n_\theta(S_t) \right)\nabla_\omega\log\pi_\omega(a_s|x_s) \end{align}\] -
POP
\[\begin{align} w^\prime &= \frac{\sigma}{\sigma^\prime}w,\\ b^\prime &= \frac{\sigma b +\mu - \mu^\prime}{\sigma^\prime} \end{align}\]
1,2는 서로 독립적이기에 같은 session에서 실행시켜도 문제 없으나 3은 독립적으로 실행하여야 한다.
-