본문 바로가기
Domain Knowledge/Reinforcement Learning

[9] Actor Critic / A2C, A3C

by hleej 2026. 5. 1.

[강화학습] 수업 요약
created: 2026-05-01
last modified: 2026-05-04

결론부터 말하자면, Actor Critic은 기존의 value based 방법과 policy based 방법을 합친 방법이라고 할 수 있다.

 

 

1. Actor Critic

구체적으로는 이전 포스팅에서 이야기했던, REINFORCE와 DQN 각각에서 network를 가져와서, 2개의 네트워크를 쓰겠다는 개념이다.

policy network (Actor)로 policy를 추정하고, 어떤 행동을 몇 %로 할지, 그 확률을 출력한다. 

value network (Critic)로 value를 추정한다.

 

따라서 gradient update 식도 2개를 가진다.

 

REINFORCEpolicy network 

$J(\theta)=E[V]$ 를 최대화하겠다 -> gradient ascent

$\theta \leftarrow \theta + \alpha\nabla \ln{\pi_\theta(s, a)} V(s)$ policy gradient 식이다.

+

DQNQ-value network

$J(w)=TD\:Error$ 를 최소화하겠다 -> gradient descent

$w \leftarrow w - \alpha\nabla_w(r + \gamma Q_w(s', a') - Q_w(a, s))$

$\nabla_w(r + \gamma Q_w(s', a') - Q_w(a, s))= (r + \gamma Q_w(s', a') - Q_w(a, s))(-\nabla_w Q_w(s, a))$

 

 

요약하면 아래의 흐름으로 동작한다.

initialize state s, network weight θ, w

policy network의 출력으로 각 action을 할 확률을 구한 뒤, 그 확률에 따라 action a를 한다.

각각의 step마다 아래를 반복한다.

    action으로부터 Reward r을 얻고, state s'로 변화된다.

    TD error를 구하기 위해 다음 action a'를 policy network의 출력으로부터 구한다.

    TD error $\delta=r+\gamma Q_w(s', a')-Q_w(s, a)$

 

    두 network의 weight들을 update한다.

    $\theta \leftarrow \theta + \alpha\nabla_\theta ln\pi_\theta(a, s) V_\theta(s)$

    $w \leftarrow w - \beta \delta(-\nabla_w Q_w(a, s))$

 

    다음 action과 state를 적용한다.

    $a \leftarrow a'$

    $s \leftarrow s'$

 

아래는 Actor Critic에서 TD Error를 구하는 데 2개의 네트워크가 필요하다는 내용의 그림이다.

 

 

 

2. Advatage Function & A2C (Advantage Actor Critic)

Action Value $Q(s, a)$는, 현재 state s에서 어떤 action a를 하는 것이 얼마나 좋은지를 나타냈었고,

State Value $V(s)$는, 그 s가 얼마나 좋은지를 나타냈었다. 그리고 Q의 평균이기도 했다. $V(s)=E[Q(s, A)]$

 

그렇다면 Q에서 V를 뺸다면? $Q-V = Q(s, a)-E[Q(s, A)]$

이는 s에서 할 수 있는 모든 action 대비, s에서 a를 하는 것이 얼마나 좋은지를 나타내게 된다.

이를 Advantage라고 한다.

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

직관적으로는 s에서 a가 '다른 action 대비 얼마나 더 나온지'를 나타낸다.

 

Advantage를 최대화하는 목적 함수를 짜 보면,  $J(\theta)=E[ \color{Green}{ A(s, a)}]$ 이다.

$\nabla_\theta J(\theta) = \nabla_\theta ln\pi_\theta(a, s) \color{Green}{A(s, a)}=  \nabla_\theta ln\pi_\theta(a, s) \color{Green}{(Q_w(s, a)-V_v(s))}$

$\theta \leftarrow \theta + \alpha\nabla_\theta ln\pi_\theta(a, s)  \color{Green}{ A(s, a)}$ 와 같이 update할 수 있다.

이를 A2C (Advantage Actor Critic) 이라고 한다.

 

하지만 이런 식으로 AdvantageActor Critic에 바로 적용하면 잘 학습이 되지 않는다. 실제 A2C 논문에서는 이를 해결하긴 했다.

위의 식에서 볼 수 있듯이, Advatage를 구하기 위해 필요한 Q와 V를 구하는 데에 서로 다른 network weight w와 v를 갖는다.

다시 말해서, TD Error를 구하는 데 필요한 network가 3개가 된다는 뜻이다.

이렇게 되면 Value Network 와 Q Network는 서로 높은 상관관계를 가지기 때문에, 잘 학습이 되지 않는다. 

쉽게 말해서, On Policy인 상황에서, V(s)를 Q(s', a')-V(s') 방향으로 update되고, Q(s, a)도 Q(s', a')-V(s') 방향으로 update되는데, V(s)가 업데이트되면 Q가 따라가려고 했던 V(s')가 바뀌어 버리고, Q(s, a)가 업데이트되면 V가 따라가려고 했던 Q(s', a')가 바뀌는, 서로 서로 따라가려고 자신을 바꾸는 갈팡질팡하는 식으로 (높은 variance로) 훈련된다.

 

 

3. TD Actor Critic

사실 Advantage 식 $A(s, a) = Q(s, a) - V(s)$ 에서,

이전에 배운 1-step sampling 값인 $Q(s, a)=R_{t+1}+\gamma V(s')$ 를 적용할 수 있다.

그러면.. 맙소사!

 

$A(s, a) = R_{t+1}+\gamma V(s')-V(s)=\text{TD Error in 1-step TD}$

1-step TD에서 썼던 TD Error 식과 완전히 동일해진다.

게다가 식에서 Q가 사라졌으므로, Q network를 쓸 필요 없이, Value Network와 Policy Network만 학습시키면 된다.

따라서 Q 없이 V만으로 설명하는 Advatange를 A 대신 δ로 표현한다.

$\delta_{w, t} =R_{t+1} + \gamma V(s_{t+1})-V(s_t)$

 

따라서 TD Actor Critic은 아래와 같이 weight를 update할 수 있다.

    $\delta_{w, t} =R_{t+1} + \gamma V_w(s_{t+1})-V_w(s_t)$ (Advantage이자 TD Error. 아무튼 Value Network로부터 구한다.)

    $\theta \leftarrow \theta + \alpha\nabla_\theta ln\pi_\theta(a, s) \delta_{w, t}$ ($E[Advantage]$를 최대화하는 방향)

    $w \leftarrow w - \beta \nabla_w \delta_{w, t}$  ($\nabla_w \delta_{w, t}=(R_{t+1} + \gamma V_w(s_{t+1})-V_w(s_t))(-\nabla_w V_w(s_t))$)

 

 

3.1. n-step TD Actor Critic / TD(λ) Actor Critic, GAE (Generalized Advantage Estimation)

TD가 나오면 항상 n-step TD하고 TD(λ)가 나오고,

TD(λ)가 나오면 항상 forward TD(λ)backward TD(λ)가 따라온다.

이번에도 마찬가지이다.

 

n-step TD Actor Critic는 어떻게 될지 너무 당연하니 넘어가고,

 

TD(λ) Actor Critic 식을 잠깐 살펴 보면, 

 

TD(λ)가 Actor Critic으로 넘어오면, Actor에서는 GAE(Generalized Advantage Estimation)이라고 불린다.

Critic에서는 여전히 TD(λ)라고 하는듯?

 

Advantage :

$\displaystyle A^{(1)} = \delta_t^V=r_t+\gamma V(s_{t+1}) - v(s_t)$

n-step Advantage :

$\displaystyle A^{(n)} = r_t + \gamma V(s_{t+1}) + \gamma^2 V(s_{t+2}) + ...+\gamma^n V(s_{t+n}) - V(s_t) = \sum_{i=0}^{n-1}{\gamma^i \delta_{t+i}^V}$

GAE :

$\displaystyle  A_t^{GAE(\gamma, \lambda)} = (1- λ)( A^{(1)} + \lambda A^{(2)} + ...) =\sum_{i=1}^\infty (\gamma\lambda)^i \delta_{t+i}^V$

 

 

4. A3C (Asyncronous Advantage Actor Critic)

위의 A2C On-policy 방식이었다. 다시 말해서, sample이 IID 분포가 아니다. 이번에 sample을 뽑아서 policy network를 update하면, 다음 sample을 뽑을 때 영향을 미치는 correlation이 존재하는 문제점이 있다.

참고로 기억을 되돌려서 DQN을 다시 떠올려보면, DQN은 correlation을 해결하기 위해 replay buffer를 사용했다. 이것도 메모리 사용이 많다는 다른 단점이 있긴 하다.

 

A3C(Asyncronous Advantage Actor Critic) 은  correlation 문제를 해결하기 위해 다른 접근 방식을 취했다. 바로 여러 model을 Asyncronous하게 학습시키는 것이다. 구체적으로는 아래와 같다.

 

① 원본인 Global Network를 복사해서, 여러 Worker를 만든다. 이때 각 Worker는 Asyncronous하게(thread로 나눠 병렬적으로) 동작할 수 있다.

② 각 Worker는 서로 독립적인 Environment에서, terminal을 만나거나, 지정된 횟수 만큼 episode를 반복한다.

③ ②를 반복하며 gradient를 누적한다.

④ worker들의 gradient를 합산한 뒤 Global Network를 update한다.

⑤ worker들에 다시 Global Network를 복사하고, 위 과정을 반복한다.

 

결과적으로 Acyncronous하게, 서로 correlation이 없는 gradient들을 병렬적으로 모아,

원본 gradient를 한번에 update할 수 있게 된다. 

 

 모든 worker의 gradient를 모으면 gradient가 너무 크다고 생각할 수도 있는데, 각 worker는 서로 독립이므로 gradient의 방향이 다르다. 그렇기에 진짜 중요한 gradient만 살아남게 된다.

거기에 실제로 A3C는 step size를 조금 작게 쓰기도 한다.

 

일종의 mini-batch를 이용한 학습이라고 생각하면 될 듯 하다.

 

999. 요약

오늘 한 Actor Critic 시리즈에서 Policy Network(Actor) 의 목적함수의 미분 $\nabla_\theta J(\theta)$를 요약한다.

$\nabla_\theta J(\theta)$ 어떤 Actor에서 왔는가? 설명
$\nabla_\theta ln\pi_\theta(a, s) V_t(s)$ REINFORCE Actor Critic 시리즈는 아니지만, 
Actor Critic = REINFORCE + DQN 이므로 넣었다.
network 수 : 없음
"E[V]를 최대화 하겠다."
$\nabla_\theta ln\pi_\theta(a, s) Q_w(s, a)$ Q Actor Critic 최초의 Actor Critic. 
DQN에서 영향을 받아, 
network 수 : 2
"E[Q]를 최대화 하겠다."
$\nabla_\theta ln\pi_\theta(a, s) A_w(s, a)$ Advantage Actor Critic
(A2C)
Advatange $A = Q-V$ 를 도입했다.
network 수 : 3
"E[A]를 최대화 하겠다."
$\nabla_\theta ln\pi_\theta(a, s) \delta$ TD Actor Critic Advatange를 V만으로 표현했다. $A=\delta=R+\gamma  V'-V$
network 수 : 2
"E[A]를 최대화 하겠다."
$\nabla_\theta ln\pi_\theta(a, s) \delta e$
$(e_{t+1}=\gamma \lambda e_t + \nabla_\theta ln\pi_\theta (s_t, a_t))$
TD(λ) Actor Critic
(backward)
TD Actor Critic에서 eligibility trace e를 적용했다.
network 수 : 2
"E[A]를 최대화 하겠다."
  A3C A2C에서 병렬적으로 correlation없이 학습시킨 후, 더하겠다.
network 수 : 2 * (worker 수 + Global Network 1개)