본문 바로가기
Data Science/Reinforcement

A3C(Asynchronous advantage actor-critic) 알고리즘

by hyelog 2023. 7. 18.

A3C(Asynchronous advantage actor-critic)

A2C의 한계

[장점]

  • 샘플이 모이는 대로 바로 정책을 업데이트 할 수 있음
  • 그래디언트의 분산을 줄임

[단점]

  • 정책과 가치함스를 학습시킬 때 사용하는 샘플이 시간적으로 상관되어 있음
    • 시간의 흐름에 따른 순차적 수집
    • 순차적으로 모인 샘플만으로 정책 업데이트 → 상관관계 커짐
    → 목적함수의 그래디언트를 편향시키고 학습을 불안정하게 만듬
    • 서로 유사한 데이터는 유사한 방향으로 신경망 업데이트

비동기 A2C → A3C(Asynchronous advantage actor-critic)

그래디언트 계산 문제

어드밴티지 액터-크리틱(A2C)에서 사용한 목적함수의 그래디언트 식을 샘플링 기법을 이용하여 근사적으로 계산하면 아래처럼 쓸 수 있다.

$$ \nabla_\theta J(\theta) \approx \sum\limits_{t=0}^T \left[ {1 \over M} \sum\limits_{m=1}^M(\nabla_\theta log \pi_\theta(u_t^{(m)}|x_t^{(m)})A^{\pi_\theta}(x_t^{(m)}, u_t^{(m)})) \right] $$

(m: 에피소드 인덱스, M: 에피소드 개수)

한개의 에피소드 내에서 일정 시간 N동안 목적함수 그래디언트를 이용해 다음과 같이 파라미터를 업데이트 했다.

$$ \begin{matrix} \mathsf{for \ i=0:(N-1):T} \left\{ \\ \theta \leftarrow \theta + \alpha \sum\limits_{t=i}^{i+N-t}(\nabla_\theta log \pi_\theta(u_t|x_t)A^{\pi_\theta}(x_t, u_t)) \\ \right\} \mathsf{end \ for} \end{matrix} $$

A2C 알고리즘에서는 에이전트가 정책 $\pi_{\theta_1}$로 일정 시간스텝 N동안 수집한 N개의 샘플 $(x_i, u_i, r(x_i, u_i), x_{i+1})$을 얻은 후 새로운 정책 $\pi_{\theta_2}$로 업데이트한다.

이런 과정을 반복하는 것이 A2C 알고리즘에서의 미니배치 방식의 업데이트이다.

확률적 경사하강법(SGD)를 이용한 최적화 방법의 기본 가정은 학습데이터가 독립적이고, 동일한 분포를 가진 샘플(iid를 따르는)이여야 한다는 것이다.

위 방법은 이 조건을 만족하지 않는다.

  1. 데이터가 독립적이지 않다.
    • 에이전트가 환경과 상호작용하면서 순차적으로 데이터를 얻기 때문이다. 순차적으로 얻은 데이터이기 때문에 강한 상관관계를 가질 수 밖에 없다
  2. 데이터가 동일한 분포를 가진 샘플이라고 말할 수 없다.
    • 액터 신경망 파라미터가 업데이트 되어 새로운 정책에 의해 얻어진 샘플 데이터는 이전 데이터와는 다른 확률 분포를 가질 것이기 때문이다.
  • 기본적으로 강화학습으로 얻어지는 데이터는 iid를 따른다는 가정을 충족시키기 어렵다.

이런 상관관계 문제를 해결하기 위해 DQN에서는 에이전트의 경험(샘플, 데이터)를 바로 학습에 사용하지 않고 replay buffer라는 곳에 저장해 두었다. 그리고 데이터가 쌓이고 나면 그 안에서 무작위로 꺼내 학습에 이용하는 방식으로 상관관계를 많이 줄였다.

더욱이 버퍼는 오래된 데이터를 먼저 제거하는 방식을 사용하여 비교적 최근의 정책으로 발생시킨 데이터 위주로 학습이 진행되도록 했다.

그러나 이 방법이 가능했던 이유는 DQN이 off-policy 방법이기 때문이다.

 

on-policy인 A2C에서는 리플레이 버퍼를 사용할 수 없다. on-policy 방법은 다른 정책으로 만든 데이터를 이용해 현재의 정책을 업데이트 할 수 없기 때문이다.

 

그럼 어떤 방법을 사용할 수 있을까?

 

위에서 샘플링 기법을 이용해 근사했던 목적함수 그래디언트식을 살펴보자.

 

\begin{matrix} \nabla_\theta J(\theta) &\approx& \sum\limits_{t=0}^T \left[ {1 \over M} \sum\limits_{m=1}^M(\nabla_\theta log \pi_\theta(u_t^{(m)}|x_t^{(m)})A^{\pi_\theta}(x_t^{(m)}, u_t^{(m)})) \right] \\ &=& {1\over M}\sum\limits_{m=1}^{M}\sum\limits_{t=0}^{T}(\nabla_\theta log\pi_\theta(u_t^{(m)}|x_t^{(m)})A^{\pi_\theta}(x_t^{(m)}, u_t^{(m)})) \\ &\approx& {1\over M}\sum\limits_{m=1}^{M}\sum\limits_{i=t}^{i+N-t}(\nabla_\theta log\pi_\theta(u_i^{(m)}|x_i^{(m)})A^{\pi_\theta}(x_i^{(m)}, u_i^{(m)}))
\end{matrix}

 

이 식에 의하면 그래디언트를 계산하기 위해서 동일한 정책 $\pi_\theta$로 여러 개의 독립적인 에피소드를 발생시킨 후 각각의 에피소드에서 일정 시간스텝 동안의 데이터로 로그-정책 그래디언트와 어드밴티지의 곱을 계산해 모두 더하고 에피소드 평균을 내면 된다.

여러개의 독립적인 에피소드를 발생시키는 방법으로 사용한 것이 다중 에이전트를 병렬적으로 운용하는 것이다.

각 에이전트가 각자 독립적인 환경과 상호작용하며 데이터를 수집하는 방식이기 때문에 학습데이터의 연관성을 깰 수 있다

다중 에이전트를 어떻게 병렬적으로 운용할 수 있을까?

1️⃣ 동기적인 액터-크리틱

여러개의 에이전트가 수집한 데이터를 동일한 시간에 모두 모아서 한꺼번에 업데이트 하는 방식

2️⃣ 비동기적인 액터-크리틱

워커가 일정시간 수집한 정보를 글로벌 신경망에 전달하면 글로벌 신경망은 자신의 액터와 크리틱 신경망을 업데이트 하고 업데이트 된 신경망을 해당 워커에 복사한다.비동기 방식은 어떤 정보를 글로벌 신경망에 전달하고, 목적함수 그래디언트를 어디서 계산하는지에 따라 두가지로 나뉜다. 

그래디언트 병렬화(gradient parallelism)

  • 워커가 수집한 N개의 샘플로 자신의 그래디언트를 계산하고, 그 결과를 글로벌 신경망에 전달하는 경우 글로벌 신경망이 이를 이용, 자신의 신경망을 업데이트하고 업데이트 된 신경망을 워커에 복사하는 방식
  • 그래디언트의 계산을 워커에게 맡김으로써 글로벌 신경망의 계산량을 줄일 수 있기 때문에 워커의 수를 확장하기 비교적 쉽다

데이터 병렬화(Data parallelism)

  • 워커가 N개의 샘플을 수집하여 글로벌 신경망에 전달하면 글로벌 신경망이 목적함수 그래디언트를 계산하고, 자신의 신경망을 업데이트 한 후 업데이트된 신경망을 워커에 복사하는 방식
  • 그래디언트 계산과 신경망 업데이트를 글로벌 신경망이 전담한다.

이와 같이 여러 개의 워커 에이전트를 병렬적으로 운용하며 비동기적으로 글로벌 액터 신경망과 글로벌 크리틱 신경망을 업데이트하는 방법을 비동기 어드밴티지 액터-크리틱(A3C)라고 한다.

 

n-step 가치 추정

목적함수의 그래디언틀 계산할 때 어드밴티지를 편향 없이 작은 분산값을 갖도록 추정하는 것이 중요하다.

 

1-step 관계식을 이용하면

어드밴티지 추정값의 분산은 작은 반면, 상태가치의 추정 정확도에 따라 어드밴티지 추정값에 큰 편향이 있을 수 있다.

 

그러나 무한구간에서 행동가치 함수의 정의에 따라 몬테카를로 방식으로

한 개의 에피소드에서 다음 식과 같이 어드밴티지를 계산한다면,

어드밴티지의 추정값에 편향은 없지만, 큰 분산을 갖게 된다.

 

$$ A_\phi(x_t, u_t) \approx \sum\limits_{k=t}^{\infty}\gamma^{k-t}r(x_k,u_k) - V_\phi(x_t) $$

 

수많은 단계의 상태와 행동에서의 보상이 계속 누적되기 때문이다.

 

이 양극단의 중간을 취하면서 편향과 분산을 적절히 조절할 수 있는 방식이 n-스텝 가치함수 추정과 어드밴티지 계산 방법이다.

 

$$ \begin{matrix} V_\phi(x_t) \approx r(x_t,u_t) + \gamma r(x_{t+1}, u_{t+1}) + \cdots + \gamma^{n-1}r(x_{t+n-1},u_{t+n-1})+\gamma^n V_\phi(x_{t+n}) \end{matrix} $$

$$ \begin{matrix} A_\phi(x_t,u_t) &\approx& r(x_t,u_t) + \gamma r(x_{t+1}, u_{t+1}) + \cdots + \gamma^{n-1}r(x_{t+n-1},u_{t+n-1})+\gamma^n V_\phi(x_{t+n}) \\ &=& \sum\limits_{k=t}^{t+n-1}\gamma^{k-t} r(x_k, u_k) + \gamma^n V_\phi(x_t) - V_\phi(x_t) \end{matrix} $$

 

n이 크면 어드밴티지 추정값의 분산은 커지고 편향이 작아지는 반면, n이 작으면 분산은 작아지고 편향은 커질 수 있다.

 

A3C에서는 n스텝 가치함수 추정과 어드밴티지 계산 방법을 도입해 분산과 편향을 상대적으로 조절하도록 했다.

댓글