[논문 읽기] IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures

벵갈·2024년 11월 11일

논문 읽기

목록 보기
8/12

0. 개요


Muzero 논문을 읽을 때 끝부분에 성능비교를 하는데 그동안 보지 못했던 알고리즘들이 등장을 했다. Rainbow는 다른 논문에서 봐서 알고 있었는데 IMPALA라는 것은 처음 보았다. 그래서 다음에 읽을 논문으로 이 IMPALA로 결정했다. 참고로 이번 논문인 DeepMind에서 발표한 논문이다.

1. 논문 요약


1.1. 논문 개요


  • 논문 제목: IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures

  • 논문 저자: Lasse Espeholt, Hubert Soyer, Remi Munos, Karen Simonyan, Volodymyr Mnih, Tom Ward, Yotam Doron, Vlad Firoiu, Tim Harley, Iain Dunning, Shane Legg, Koray Kavukcuoglu

1.2. 배경


  • 이전 연구들
    이전 연구들은 deep reinforcement-learning의 scale을 키우기 위해서 distributed asynchronous SGD에 의존했다. 대표적인 예시가 A3C와 Gorilla 그리고 Distributed 방법으로 구현된 DQN이 있다.

  • batched A2C
    그리고 GPU를 사용하는 활용하고자 하는 연구들도 있었다. 대표적으로 batched A2C가 있다. 매 step마다 액션을 진행하고 데이터를 모은 뒤, batch에 도달하면 모인 데이터를 학습한다. 그렇기 때문에 각 batch에서 가장 느린 환경이 전체 단계의 학습 속도를 결정한다. 모든 환경이 데이터를 수집해 완료하기 전까지는 다음 배치로 넘어갈 수 없다. 그래서 환경의 고른 속도가 굉장히 중요한 학습 방법이다.

    그래서 Atari같은 단순한 환경에서는 좋은 성능을 유지하지만 복잡한 환경이 들어오게 되면 분산이 커져서 속도가 느려질 수 있다.


1.3. 연구 방법


1.3.1 Actor Learner


각 trajectory의 시작 시, Actor는 Learner의 최신 정책으로 자신의 로컬 정책을 업데이트하고 환경에서 𝑛단계 동안 실행한다.

𝑛단계가 지나면 Actor는 상태, 행동, 보상의 trajectory와 정책 분포
π(a∣x) 및 초기 LSTM 상태를 큐(queue)를 통해 Learner에게 보낸다.

Learner는 여러 Actor로부터 수집된 trajectory를 배치로 받아, 지속적으로 정책을 업데이트한다.

위 과정은 A3C와 굉장히 비슷하지만 A3C의 경우에는 병렬로 액션을 진행하고 각자 학습해서 중앙에 보내는 방식이었다면 Actor Learner는 액션을 진행하고 거기서 나온 데이터만 중앙에 보내는 방식이기 때문에 조금 더 통신 비용을 적게 사용할 수 있다.

1.3.2 V-trace


Learner는 데이터를 받아서 학습을 진행하는데 그 사이에 actor들은 다른 데이터를 수집중이다. 즉, 지금 actor가 진행하는 액션과 학습에 사용되는 액션이 다르기 때문에 off-policy라고 볼 수 있다.

Actor는 최신 데이터를 수집하지만 Learner는 구형 데이터를 사용하기 때문에 이것의 격차를 줄여주기 위해서 V-trace를 사용한다. V-trace는 Actor가 선택한 행동의 확률과 Learner의 최신 정책에서 그 행동을 선택할 확률의 비율(중요도 비율)을 계산하여, 학습에 필요한 보상을 조정한다.

이런 V-trace를 사용하여 off-policy에서도 정책 차이로 인한 편향을 줄이고 안정감 있는 학습을 진행할 수 있다. 전부 이해는 안되지만 V-trace에서 핵심이 되는 중요도 비율에 관한 수식을 아래에 정리했다.

상태 (xs)(x_s)에서의 가치 함수 V(xs)V(x_s)에 대한 n-step V-trace 타깃을 다음과 같이 정의한다.

vs=V(xs)+t=ss+n1γts(i=st1ci)δtVv_s = V(x_s) + \sum_{t=s}^{s+n-1} \gamma^{t-s} \left( \prod_{i=s}^{t-1} c_i \right) \delta_t^V

여기서 δtV\delta_t^V는 Temporal Difference (TD) 오류로 아래와 같이 정의한다. TD 오류는 예측된 보상과 실제 보상의 차이를 의미하며 이는 정책 업데이트의 기초가 된다.

δtV=rt+γV(xt+1)V(xt)\delta_t^V = r_t + \gamma V(x_{t+1}) - V(x_t)

중요도 비율은 아래와 같이 클리핑해서 사용한다. 즉 actor의 액션과 learner의 액션의 비율을 사용하는 것이다.

ρt=min(π(atxt)μ(atxt),ρˉ)\rho_t = \min\left(\frac{\pi(a_t|x_t)}{\mu(a_t|x_t)}, \bar{\rho}\right)
ci=min(π(aixi)μ(aixi),cˉ)c_i = \min\left(\frac{\pi(a_i|x_i)}{\mu(a_i|x_i)}, \bar{c}\right)

여기서 π\pi는 목표 정책(target policy), μ\mu는 행동 정책(behavior policy), ρˉ\bar{\rho}cˉ\bar{c}는 중요도 비율의 클리핑 값이다.


1.4. 주요 결과


  • Single-Machine 환경
    IMPALA는 A3C와 batched A2C보다 초당 프레임 처리량이 높아, 1개의 GPU에서 최대 24,000프레임까지 처리했다. V-trace 보정을 통해 다양한 하이퍼파라미터에서도 안정적으로 학습이 가능했다.

  • Distributed Multi-Machine 환경
    IMPALA는 500개의 CPU와 1개의 GPU를 사용하는 멀티머신 환경에서 최대 250,000프레임을 처리해, A3C보다 더 빠르고 효율적인 학습을 제공했다.

  • DMLab-30 및 Atari-57 결과
    DMLab-30 환경에서는 IMPALA가 49.4%의 인간 표준 점수를 기록하며, A3C보다 2배 이상의 성능을 보였다.

    Atari-57 환경에서도 IMPALA는 57개 게임의 평균에서 인간 표준 점수 191.8%를 달성했고 대규모 멀티태스크 학습에서의 안정성과 데이터 효율성을 입증했다.

1.5. 개인 의견


A3C를 먼저 읽고 읽어서 그런가 내용이 비슷해서 그런지 이해하기가 좀 편했던 것 같다. 물론 수식 부분은 아직도 힘들다...


2. 논문 링크


https://arxiv.org/pdf/1802.01561

0개의 댓글