[Deep Reinforcement Learning] 25강 A3C 2

Woosci·2025년 7월 31일

👨‍🏫학습목표

오늘은 Asynchronous Advantage Actor-Critic에서 Advantage를 사용하는 이유, pseudo code, A2C에 대해 배워볼 예정이다.

👨‍🎓강의영상: https://www.youtube.com/watch?v=spAnltgCRY8

1️⃣ Advantage

🔷 Policy gradient

  • Total reward의 expectation을 object function로 사용
  • 하지만 실제로는 total reward 대신 return GtG_t 사용

θJ(θ)=Eπθ[t=0T1(Gt)θlogπθ(atst)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^{T-1} (G_t) \nabla_\theta \log \pi_\theta(a_t | s_t)\right]
  • GtG_t의 크기만큼 해당 action 방향으로 업데이트를 진행한다.

🔷 Advantage

  • A(s,a)=Q(s,a)V(s)A(s,a) = Q(s,a) - V(s)

  • Return GtG_t 대신 Advantage fucntion A(s,a)A(s,a)를 사용하면 어떨까?

  • Q(s,a)Q(s,a)의 의미 : 현재 state에서 해당 action을 취했을 때 앞으로 얻게 될 return의 기대값

  • V(s)V(s)의 의미 : 현재 state에서 모든 action에 대한 return의 기대값이다.

  • A(s,a)=Q(s,a)V(s)A(s,a) = Q(s,a) - V(s)는 현재 state에서 주어진 action을 선택했을 때 얻는 기대 return이 평균적인 기대 return보다 얼마나 더 좋은지를 나타낸다.

  • 만약 A(s,a)>0A(s,a) > 0이면, 해당 action은 평균보다 더 좋은 action이다.

  • 만약 A(s,a)<0A(s,a) < 0이면, 해당 action은 평균보다 더 나쁜 action이다.


🔻 Advantage의 한계

  • Advantage를 사용하려면 Q(s,a)Q(s,a)V(s)V(s) 모두 알아야 한다.
  • 이를 위해서는 2개의 Network가 필요한다.

🔻 A3C의 선택

  • 이러한 한계를 극복하기 위해 A3C에서는 Q(s,a)Q(s,a) 대신 n-step return Gt(n)G_t^{(n)}을 사용한다.

Gt(n)=Rt+1++γn1Rn+t+γnV(sn+t)G_t^{(n)} = R_{t+1} + \dots + \gamma^{n-1} R_{n+t} + \gamma^n V(s_{n+t})
  • n-step return Gt(n)G_t^{(n)}은 모델이 수집한 trajectory를 통해 구한다.
  • n값이 커질수록 원래 return GtG_t에 가까워진다. 그와 함께 gradient variance가 커진다.
  • 반대로 n값이 작아질수록 gradient variance가 줄어들어 학습속도가 빨라지는 효과가 있다.


2️⃣ A3C pseudo code

🔷 파라미터 정리

🔻 Model parameter

  • Global Network의 Actor parameter θ\theta
  • Global Network의 Critic parameter ϕ\phi
  • Worker Agent의 Actor parameter θ\theta'
  • Worker Agent의 Critic parameter ϕ\phi'

🔻 Accumulated gradient

  • dθ:d\theta: agent actor의 accumulated gradient
  • dϕ:d\phi: agent critic의 accumulated gradient

🔷 Gradient 구하기

🔻 가중치 초기화

  • Global Network의 파라미터를 copy하여 Worker Agent의 파라미터로 가져온다.

🔻 sample data 수집

  • Policy π(atst; θ)\pi(a_t|s_t; \ \theta')를 통해 action을 선택한다.
  • 해당 action을 통해 rt+1,st+1r_{t+1}, s_{t+1} 을 얻는다.
  • 이 과정을 tmaxt_{max} step 동안 반복하여 길이가 tmaxt_{max}인 trajectory segment를 얻는다.

🔻 Accumulated gradient 연산

🔸 Agent Actor Network

ΔθΔθ+(Gt(n)Vϕ(st))θlogπθ(atst)\Delta\theta \leftarrow \Delta\theta + (G_t^{(n)} - V_{\phi'}(s_t)) \nabla_{\theta'} \log \pi_{\theta'}(a_t | s_t)

🔸 Agent Critic Network

ΔϕΔϕ(Gt(n)Vϕ(st))ϕVϕ(st)\Delta\phi \leftarrow \Delta\phi - (G_t^{(n)} - V_{\phi'}(s_t)) \nabla_{\phi'} V_{\phi'}(s_t)

🔸 Agent Actor Network

dθdθ+(RV(si;ϕ))θlogπ(aisi;θ)d\theta \leftarrow d\theta + (R - V(s_i; \phi')) \nabla_{\theta'} \log \pi(a_i | s_i; \theta')
  • Actor Network를 업데이트하기 위해서는 Actor Network θ\theta'와 Critic Network ϕ\phi'를 모두 활용한다.
  • 이때 RRR(1),R(2),R(3)R^{(1)},R^{(2)},R^{(3)} \dots 으로 연산된다.

🔸 Agent Critic Network

dϕdϕ(RV(si;ϕ))ϕV(si;ϕ)d\phi \leftarrow d\phi - (R - V(s_i; \phi')) \nabla_{\phi'} V(s_i; \phi')
  • Critic Network를 업데이트하기 위해서는 Critic Network ϕ\phi'를 활용한다.
  • 이때 RRR(1),R(2),R(3)R^{(1)},R^{(2)},R^{(3)} \dots 으로 연산된다.

🔷 파라미터 업데이트

θθ+αΔθ and ϕϕβΔϕ\theta \leftarrow \theta + \alpha \Delta\theta \text{ and } \phi \leftarrow \phi - \beta \Delta\phi
  • 계산한 Accumulated gradient를 통해 Global Network의 파라미터를 업데이트한다.
  • Actor Network θ\thetagradient ascent로 업데이트한다.
  • Critic Network ϕ\phigradient descent로 업데이트한다.


3️⃣ A2C

🔷 A2C

  • A3C에서 Asynchronous를 synchronous로 바꿔주었다.
  • Advantage Actor Critic이다.

🔻 AC3

  • 각 Worker Agent가 asynchronous하게 Global Network를 업데이트한다.
  • 각 Worker Agent는 다른 policy를 가지고 학습을 시작한다.
  • 이러한 상황은 Global Networkoptimal하지 않도록 학습할 수 있다.

🔻 A2C

  • 각 Worker Agent가 학습을 마친 후 함께 Global Network를 업데이트한다.
  • 각 Worker Agent가 동일한 파라미터를 copy한다. 즉 동일한 policy를 사용한다.
  • 이러한 과정을 제어해주는 장치를 Coordinator라고 한다.
  • A2C는 synchronous하게 학습하는 방식을 통해 조금 더 cohesive한 학습을 할 수 있다.
  • 또한 동일한 policy에 대해 학습을 수행하기 때문에 convergence 속도가 더 빠르다.
  • A2C는 A3C보다 GPU를 더 효율적으로 사용하며, batch size가 커질수록효율적인 데이터 처리가 가능하다는 특징이 있다.


4️⃣ 정리

🔷 25강에서 배운 내용은 아래와 같다.

  1. Asychronous Advantage Actor-critic은 advantage function을 사용하지만, 실제 연산에서는 n-step retrun Gt(n)G_t^{(n)}을 통해 Q(s,a)Q(s,a)를 대체한다.
  2. A3Ctmaxt_{max} step 동안 업데이트를 진행하면서 여러 n-step return R(1),R(2),R(3)R^{(1)},R^{(2)},R^{(3)} \dots를 사용한다.
  3. A2CA3C가 optimal한 학습을 할 수 없다는 한계를 극복하기 위해 등장하였다.
  4. A2C는 각 agent가 동일한 policy를 통해 학습을 진행한다.
profile
I'm curious about AI

0개의 댓글