Actor-Critic: A2C
Concept
Actor-Critic은 policy network와 value function을 함께 학습하는 Reinforcement Learning 알고리즘이다.
REINFORCE는 trajectory에서 얻은 Monte-Carlo return을 이용하여 policy gradient를 추정한다. 이 방식은 unbiased estimate에 가까운 장점이 있지만, 실제 학습에서는 reward sequence 전체에 의존하기 때문에 high variance 문제가 발생하기 쉽다.
Actor-Critic은 이 문제를 줄이기 위해 policy를 담당하는 Actor와 value estimation을 담당하는 Critic을 함께 사용한다. Actor는 state \(s_t\)에서 action \(a_t\)를 선택하는 policy \(\pi_\theta(a_t \mid s_t)\)를 학습하고, Critic은 state value function \(V^\pi(s_t)\)를 학습하여 Actor가 어떤 방향으로 policy를 업데이트해야 하는지 평가한다.
Figure 1은 Actor-Critic의 일반적인 구조를 보여준다. 여기서 Actor는 Policy에 해당하고, Critic은 State value function에 해당한다. 따라서 슬라이드 4의 그림에서 Actor와 Critic 표시가 서로 잘못 배치되어 있었다면, Actor는 Policy block 위에, Critic은 State value function block 옆 또는 위에 위치하는 것이 올바른 해석이다.
Actor는 현재 state를 입력받아 action을 선택한다. Environment는 선택된 action에 따라 reward와 next state를 반환한다. Critic은 reward와 value function을 이용하여 TD error를 계산하고, 이 TD error 또는 advantage estimate는 Actor의 policy update에 사용된다.
A2C는 Advantage Actor-Critic을 의미한다. A2C에서는 단순한 return 대신 advantage function을 사용하여 policy gradient를 계산한다. Advantage function은 현재 state에서 선택한 action이 평균적인 action보다 얼마나 좋은지를 나타낸다.
REINFORCE와 Actor-Critic의 차이
REINFORCE의 policy gradient는 다음과 같이 표현된다.
\[\nabla_\theta J(\pi_\theta) = R_t(\tau)\nabla_\theta \log \pi_\theta(a_t \mid s_t)\]위 수식에서 \(\theta\)는 policy network의 parameter를 의미하고, \(J(\pi_\theta)\)는 policy objective를 의미한다. \(R_t(\tau)\)는 trajectory \(\tau\)에서 time step \(t\) 이후에 얻는 discounted return을 의미한다. \(\pi_\theta(a_t \mid s_t)\)는 state \(s_t\)에서 action \(a_t\)를 선택할 probability를 의미한다.
Return \(R_t(\tau)\)는 다음과 같이 정의된다.
\[R_t(\tau) = \sum_{t'=t}^{T}\gamma^{t'-t}r_{t'}\]여기서 \(\gamma\)는 discount factor이고, \(r_{t'}\)는 time step \(t'\)에서 얻은 reward를 의미한다.
REINFORCE는 episode가 끝난 뒤 전체 reward sequence를 이용하여 return을 계산한다. 따라서 trajectory sampling 결과에 따라 gradient estimate가 크게 달라질 수 있다. 이 때문에 policy gradient의 variance가 커질 수 있다.
Baseline을 사용하면 다음과 같이 gradient estimate의 scale을 줄일 수 있다.
\[\nabla_\theta J(\pi_\theta) = (R_t(\tau)-b(s_t))\nabla_\theta \log \pi_\theta(a_t \mid s_t)\]여기서 \(b(s_t)\)는 state-dependent baseline을 의미한다. 일반적으로 baseline으로 state value function \(V^\pi(s_t)\)를 사용할 수 있다. 하지만 baseline은 variance를 줄이는 데 도움을 주지만, Monte-Carlo return 자체가 가지는 high variance 문제를 완전히 제거하지는 못한다.
Actor-Critic은 Monte-Carlo return 대신 value function 기반 estimate를 사용한다. 이때 policy gradient는 다음과 같이 advantage function을 이용하여 표현된다.
\[\nabla_\theta J(\pi_\theta) = A^\pi(s_t,a_t)\nabla_\theta \log \pi_\theta(a_t \mid s_t)\]여기서 \(A^\pi(s_t,a_t)\)는 state \(s_t\)에서 action \(a_t\)가 평균적인 action보다 얼마나 좋은지를 나타내는 advantage function이다.
Actor
Actor는 policy \(\pi_\theta(a_t \mid s_t)\)를 학습하는 neural network이다.
Actor의 역할은 현재 state \(s_t\)를 입력받아 action distribution을 출력하는 것이다. Discrete action space에서는 각 action에 대한 probability를 출력하고, continuous action space에서는 Gaussian distribution의 mean and variance 같은 parameter를 출력할 수 있다.
Actor의 update 방향은 advantage value에 의해 결정된다.
\[\nabla_\theta J(\pi_\theta) = A^\pi(s_t,a_t)\nabla_\theta \log \pi_\theta(a_t \mid s_t)\]위 수식에서 \(A^\pi(s_t,a_t)>0\)이면 현재 state에서 선택한 action이 평균보다 좋은 action이라고 해석할 수 있다. 따라서 Actor는 해당 action of probability를 증가시키는 방향으로 update된다.
반대로 \(A^\pi(s_t,a_t)<0\)이면 현재 action이 평균보다 나쁜 action이라고 해석할 수 있다. 따라서 Actor는 해당 action of probability를 감소시키는 방향으로 update된다.
즉, Actor는 Critic이 제공하는 advantage estimate를 기준으로 policy를 개선한다.
Critic
Critic은 state value function \(V^\pi(s)\)를 학습하는 neural network이다.
State value function은 state \(s\)에서 policy \(\pi\)를 따라 행동했을 때 기대되는 return을 의미한다.
\[V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{k=0}^{\infty}\gamma^k r_{t+k} \mid s_t=s \right]\]위 수식에서 \(V^\pi(s)\)는 state \(s\)의 expected return을 의미한다. \(\mathbb{E}_\pi\)는 policy \(\pi\)를 따라 action을 선택했을 때의 expectation을 의미한다.
Critic은 \(V^\pi(s_t)\)를 추정하고, 이를 이용하여 advantage function을 계산한다.
Advantage function은 다음과 같이 정의된다.
\[A^\pi(s_t,a_t) = Q^\pi(s_t,a_t)-V^\pi(s_t)\]여기서 \(Q^\pi(s_t,a_t)\)는 state \(s_t\)에서 action \(a_t\)를 선택한 뒤 policy \(\pi\)를 따랐을 때의 action value function이다. \(V^\pi(s_t)\)는 state \(s_t\)에서 policy \(\pi\)를 따랐을 때의 평균적인 value를 의미한다.
따라서 \(A^\pi(s_t,a_t)\)는 특정 action의 value가 해당 state의 평균 value보다 얼마나 높은지 또는 낮은지를 나타낸다.
Q Function과 Advantage Function
Advantage function은 action value function \(Q^\pi(s,a)\)를 그대로 사용하는 것보다 더 상대적인 feedback을 제공한다.
| \(Q^\pi(s,a)\) | \(V^\pi(s)\) | \(A^\pi(s,a)\) | 해석 |
|---|---|---|---|
| 110 | 100 | 10 | 평균보다 좋은 action이므로 장려 |
| -90 | -100 | 10 | value는 음수이지만 평균보다 좋으므로 장려 |
| 110 | 120 | -10 | value는 양수이지만 평균보다 나쁘므로 억제 |
이 표는 \(Q^\pi(s,a)\)의 절대값만으로 action을 평가하면 잘못된 update가 발생할 수 있음을 보여준다. 예를 들어 \(Q^\pi(s,a)\)가 음수이더라도 해당 state의 평균 value보다 높다면 좋은 action일 수 있다. 반대로 \(Q^\pi(s,a)\)가 양수이더라도 state의 평균 value보다 낮다면 상대적으로 나쁜 action일 수 있다.
따라서 advantage function은 policy update에서 action의 상대적 품질을 반영하는 역할을 한다.
Advantage Estimation
Advantage function을 정의 그대로 계산하려면 \(Q^\pi(s_t,a_t)\)와 \(V^\pi(s_t)\)가 모두 필요하다.
\[A^\pi(s_t,a_t) = Q^\pi(s_t,a_t)-V^\pi(s_t)\]하지만 \(Q^\pi\)와 \(V^\pi\)를 모두 neural network로 approximate하면 두 value estimate가 서로 일관되어야 한다는 문제가 생긴다. 또한 두 개의 value function을 함께 학습해야 하므로 학습 효율성이 떨어질 수 있다.
A2C에서는 일반적으로 \(V^\pi(s)\)만 Critic으로 approximate하고, \(Q^\pi(s_t,a_t)\)는 reward와 next state value를 이용하여 계산한다.
\[Q^\pi(s_t,a_t) \approx r_t + \gamma V^\pi(s_{t+1})\]이를 advantage 정의에 대입하면 다음과 같은 TD error 형태가 된다.
\[\delta_t = r_t + \gamma V^\pi(s_{t+1}) - V^\pi(s_t)\]여기서 \(\delta_t\)는 TD error를 의미한다. TD error는 현재 value estimate \(V^\pi(s_t)\)와 one-step bootstrapped target \(r_t+\gamma V^\pi(s_{t+1})\) 사이의 차이를 나타낸다.
즉, TD error는 one-step advantage estimate로 해석할 수 있다.
n-step Return
One-step TD estimate는 variance가 작지만 bias가 클 수 있다. 반대로 Monte-Carlo return은 bias가 작지만 variance가 클 수 있다.
n-step return은 이 둘 사이의 trade-off를 조절하는 방법이다.
n-step action value estimate는 다음과 같이 표현할 수 있다.
\[Q^\pi(s_t,a_t) \approx \sum_{k=0}^{n}\gamma^k r_{t+k} + \gamma^{n+1}V^\pi(s_{t+n+1})\]위 수식에서 \(n\)은 실제 reward를 몇 step까지 사용할지를 결정하는 hyperparameter이다. \(\sum_{k=0}^{n}\gamma^k r_{t+k}\)는 실제 trajectory에서 관측한 discounted reward를 의미하고, $$\gamma^{n+1}V^\pi(s_{t+n+1})$는 그 이후의 return을 value function으로 bootstrap한 항이다.
이를 이용한 n-step advantage estimate는 다음과 같이 정의된다.
\[A_n^\pi(s_t,a_t) = \sum_{k=0}^{n}\gamma^k r_{t+k} + \gamma^{n+1}V^\pi(s_{t+n+1}) - V^\pi(s_t)\]\(n\)이 작으면 value function에 더 많이 의존하므로 bias가 커질 수 있지만 variance는 작아진다. \(n\)이 크면 실제 reward sequence에 더 많이 의존하므로 bias는 작아질 수 있지만 variance가 커질 수 있다.
따라서 n-step return은 bias-variance trade-off를 조절하는 advantage estimation 방법이다.
Generalized Advantage Estimation
Generalized Advantage Estimation, 즉 GAE는 하나의 \(n\) 값만 선택하지 않고 여러 n-step advantage estimate를 exponentially weighted average로 결합하는 방법이다.
GAE는 다음과 같이 정의된다.
\[A_{\mathrm{GAE}}^\pi(s_t,a_t) = (1-\lambda) \sum_{l=1}^{\infty} \lambda^{l-1} A_l^\pi(s_t,a_t)\]여기서 \(\lambda\)는 advantage estimate의 bias-variance trade-off를 조절하는 hyperparameter이다. \(\lambda\)가 0에 가까우면 one-step TD estimate에 가까워지고, \(\lambda\)가 1에 가까우면 Monte-Carlo estimate에 가까워진다.
GAE는 TD error를 이용하여 다음과 같이 계산할 수 있다.
\[A_{\mathrm{GAE}}^\pi(s_t,a_t) = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l}\]여기서 \(\delta_{t+l}\)는 time step \(t+l\)에서의 TD error이다.
\[\delta_{t+l} = r_{t+l} + \gamma V^\pi(s_{t+l+1}) - V^\pi(s_{t+l})\]GAE는 여러 step의 TD error를 discount factor \(\gamma\)와 smoothing parameter \(\lambda\)로 가중합하여 advantage를 추정한다. 이 방식은 policy gradient의 variance를 줄이면서도 지나치게 큰 bias가 생기지 않도록 조절하는 역할을 한다.
GAE Derivation
GAE가 TD error의 weighted sum으로 표현되는 과정을 간단히 정리하면 다음과 같다.
먼저 one-step advantage는 TD error와 같다.
\[A_1^\pi(s_t,a_t) = r_t+\gamma V^\pi(s_{t+1})-V^\pi(s_t) = \delta_t\]Two-step advantage는 다음과 같다.
\[A_2^\pi(s_t,a_t) = r_t+\gamma r_{t+1} + \gamma^2 V^\pi(s_{t+2}) - V^\pi(s_t)\]여기에 \(+\gamma V^\pi(s_{t+1})-\gamma V^\pi(s_{t+1})\)를 추가하면 다음과 같이 정리할 수 있다.
\[A_2^\pi(s_t,a_t) = \delta_t+\gamma\delta_{t+1}\]Three-step advantage도 같은 방식으로 정리된다.
\[A_3^\pi(s_t,a_t) = \delta_t+\gamma\delta_{t+1}+\gamma^2\delta_{t+2}\]따라서 \(l\)-step advantage는 TD error의 discounted sum으로 해석할 수 있다.
\[A_l^\pi(s_t,a_t) = \sum_{k=0}^{l-1} \gamma^k\delta_{t+k}\]이를 GAE 정의에 대입하면 다음과 같다.
\[A_{\mathrm{GAE}}^\pi(s_t,a_t) = (1-\lambda) \left[ A_1^\pi + \lambda A_2^\pi + \lambda^2 A_3^\pi + \cdots \right]\]각 \(A_l^\pi\)를 TD error의 합으로 바꾸면 다음과 같이 정리된다.
\[A_{\mathrm{GAE}}^\pi(s_t,a_t) = \delta_t + \gamma\lambda\delta_{t+1} + \gamma^2\lambda^2\delta_{t+2} + \cdots\]따라서 최종적으로 GAE는 다음과 같은 형태가 된다.
\[A_{\mathrm{GAE}}^\pi(s_t,a_t) = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l}\]이 수식은 GAE가 여러 time step의 TD error를 누적하여 advantage를 계산하는 방법임을 보여준다.
A2C Objective Function
A2C에서는 Actor와 Critic을 각각 다른 objective function으로 학습한다.
Critic은 predicted value \(V_phi(s_t)\)가 target value에 가까워지도록 학습한다.
\[L_C = \frac{1}{T} \sum_{t=0}^{T} \left( V_\phi(s_t)-V_t^\pi \right)^2\]위 수식에서 \(\phi\)는 Critic parameter를 의미한다. \(V_\phi(s_t)\)는 Critic이 예측한 state value이고, \(V_t^\pi\)는 target value이다. Critic loss \(L_C\)는 mean squared error 형태로 정의된다.
Actor는 advantage estimate를 이용하여 policy likelihood를 증가시키는 방향으로 학습한다.
\[L_A = \frac{1}{T} \sum_{t=0}^{T} A_t^\pi \log \pi_theta(a_t \mid s_t)\]위 수식에서 \(A_t^\pi\)는 GAE 또는 n-step return으로 계산한 advantage estimate이다. \(\log \pi_\theta(a_t \mid s_t)\)는 실제 선택한 action의 log-probability를 의미한다.
Actor는 \(L_A\)를 maximize하는 방향으로 update된다.
\[\theta \leftarrow \theta + \alpha_A \nabla_\theta L_A\]Critic은 \(L_C\)를 minimize하는 방향으로 update된다.
\[\phi \leftarrow \phi - \alpha_C \nabla_\phi L_C\]여기서 \(\alpha_A\)는 Actor learning rate이고, \(\alpha_C\)는 Critic learning rate이다.
A2C Algorithm
A2C의 학습 과정은 다음과 같이 정리할 수 있다.
-
Actor learning rate \(\alpha_A\)와 Critic learning rate \(\alpha_C\)를 초기화한다.
-
Policy network \(\pi_\theta\)와 value network \(V_\phi\)의 parameter \(\theta\), \(\phi\)를 초기화한다.
-
현재 policy \(\pi_\theta\)를 이용하여 trajectory \(\tau=(s_0,a_0,r_0,\dots,s_T,a_T,r_T)\)를 sampling한다.
-
각 time step \(t\)에 대해 Critic target value를 계산한다.
- 각 time step \(t\)에 대해 TD error를 계산한다.
- TD error sequence를 이용하여 GAE 기반 advantage를 계산한다.
- Critic loss \(L_C\)를 계산한다.
- Actor objective \(L_A\)를 계산한다.
- Critic은 gradient descent로 update한다.
- Actor는 gradient ascent로 update한다.
이 과정에서 Critic은 value estimation을 개선하고, Actor는 Critic이 계산한 advantage를 이용하여 더 좋은 action을 선택하도록 policy를 개선한다.
Network Architecture
Actor와 Critic은 모두 state \(s_t\)를 입력으로 받는다. 따라서 두 network는 완전히 분리해서 구현할 수도 있고, 일부 parameter를 공유하는 shared backbone 구조로 구현할 수도 있다.
분리된 구조에서는 Actor와 Critic이 각각 독립적인 feature extractor를 가진다.
\[\pi_\theta(a_t \mid s_t) = \mathrm{Actor}_\theta(s_t)\] \[V_\phi(s_t) = \mathrm{Critic}_\phi(s_t)\]Shared backbone 구조에서는 state \(s_t\)를 먼저 공통 feature representation으로 변환한 뒤, Actor head와 Critic head가 각각 policy와 value를 출력한다.
\[h_t = f_\psi(s_t)\] \[\pi_\theta(a_t \mid s_t) = \mathrm{ActorHead}_\theta(h_t)\] \[V_\phi(s_t) = \mathrm{CriticHead}_\phi(h_t)\]여기서 \(f_\psi\)는 shared feature extractor를 의미한다. \(\psi\)는 shared parameter이고, \(\theta\)와 \(\phi\)는 각각 Actor head와 Critic head의 parameter이다.
Parameter sharing은 학습할 parameter 수를 줄이고 sample efficiency를 높이는 데 도움을 줄 수 있다. 하지만 Actor loss와 Critic loss의 gradient scale이 크게 다르면 shared representation 학습이 불안정해질 수 있다. 따라서 shared backbone을 사용할 때는 loss coefficient, gradient clipping, normalization 등을 함께 고려해야 한다.
Interpretation
A2C는 REINFORCE의 high variance 문제를 줄이기 위해 Critic을 도입한 policy gradient algorithm으로 해석할 수 있다.
REINFORCE에서는 return \(R_t(\tau)\)가 policy update의 weight로 사용된다. 하지만 A2C에서는 advantage estimate \(A^\pi(s_t,a_t)\)가 policy update의 weight로 사용된다.
이 차이는 update signal의 의미를 바꾼다. Return은 특정 trajectory에서 얻은 절대적인 reward 크기를 반영하지만, advantage는 현재 state에서 선택한 action이 평균보다 좋은지 나쁜지를 반영한다. 따라서 A2C는 action의 상대적 품질을 기준으로 policy를 update한다.
Critic은 Actor에게 학습 signal을 제공하는 evaluator 역할을 한다. Critic이 정확한 value function을 학습할수록 advantage estimate의 품질이 좋아지고, Actor는 더 안정적인 policy gradient를 얻을 수 있다.
하지만 Critic이 부정확하면 advantage estimate도 부정확해진다. 이 경우 Actor는 잘못된 방향으로 update될 수 있다. 따라서 Actor-Critic에서는 Actor와 Critic의 학습 균형이 중요하다.
A2C에서 GAE를 사용하는 이유는 advantage estimate의 bias-variance trade-off를 조절하기 위해서이다. \(\lambda\)가 작으면 low variance이지만 high bias estimate가 되고, \(\lambda\)가 크면 low bias이지만 high variance estimate가 된다. 따라서 \(\lambda\)는 학습 안정성과 policy improvement 사이의 균형을 조절하는 중요한 hyperparameter이다.
Summary
Actor-Critic은 policy를 학습하는 Actor와 value function을 학습하는 Critic으로 구성된다.
Actor는 \(\pi_\theta(a_t \mid s_t)\)를 학습하여 action selection을 담당한다.
Critic은 \(V^\pi(s_t)\)를 학습하여 Actor의 update 방향을 평가한다.
A2C는 Advantage Actor-Critic을 의미하며, policy gradient에서 return 대신 advantage function을 사용한다.
Advantage function \(A^\pi(s_t,a_t)\)는 특정 action이 해당 state의 평균적인 action보다 얼마나 좋은지를 나타낸다.
TD error \(\delta_t=r_t+\gamma V^\pi(s_{t+1})-V^\pi(s_t)\)는 one-step advantage estimate로 해석할 수 있다.
n-step return은 Monte-Carlo estimate와 TD estimate 사이의 bias-variance trade-off를 조절한다.
GAE는 여러 n-step advantage estimate를 exponentially weighted average로 결합하여 안정적인 advantage estimate를 계산한다.
A2C의 Actor는 advantage-weighted log-probability를 maximize하고, Critic은 value prediction error to minimize한다.
References
-
Murphy, Kevin. “Reinforcement learning: an overview.” arXiv preprint arXiv:2412.05265 (2024).
-
ResearchGate. “The general framework of Actor-Critic.” https://www.researchgate.net/figure/The-general-framework-of-Actor-Critic_fig2_327512420