ai theory

강화학습 기초 (14) - Actor와 Critic은 무엇을 나눠서 배울까

Junyoung Park · 2024-06-14 · 5 min

들어가며...

REINFORCE는 Policy를 직접 학습하는 가장 단순한 방법이었다.

θθ+αGtθlogπθ(AtSt)\theta \leftarrow \theta + \alpha G_t \nabla_\theta\log\pi_\theta(A_t\mid S_t)

하지만 GtG_t를 알려면 Episode 끝까지 기다려야 한다. 같은 Action의 Return도 이후에 일어난 우연에 따라 크게 달라져 Update가 흔들린다.

Actor-Critic은 일을 둘로 나눈다.

  • Actor: 어떤 Action을 선택할지 나타내는 Policy를 학습한다.
  • Critic: 현재 State나 Action이 얼마나 좋은지 평가한다.

Actor는 Critic의 평가를 받아 Policy를 고치고, Critic은 실제 Reward를 받아 자신의 평가를 고친다. 두 함수가 같은 경험에서 함께 학습하는 구조다.

Return을 그대로 쓰면 비교 기준이 없다

State ss에서 Action aa를 골라 Return 66을 얻었다고 하자. 66은 좋은 결과일까?

  • 이 State에서 보통 22를 얻는다면 매우 좋다.
  • 보통 1010을 얻는다면 오히려 나쁘다.

Return의 절대값만으로는 판단하기 어렵다. 현재 State에서 기대하던 평균을 빼면 “평소보다 얼마나 좋았는가”가 된다.

Aπ(s,a)=Qπ(s,a)Vπ(s)A^\pi(s,a) = Q^\pi(s,a)-V^\pi(s)

AπA^\pi는 Advantage function이다.

  • Aπ(s,a)>0A^\pi(s,a)>0: 이 State의 평균보다 좋은 Action
  • Aπ(s,a)<0A^\pi(s,a)<0: 평균보다 나쁜 Action
  • Aπ(s,a)=0A^\pi(s,a)=0: 기대한 정도의 Action

예를 들어,

V(s)=4,Q(s,A)=6,Q(s,B)=3V(s)=4, \qquad Q(s,A)=6, \qquad Q(s,B)=3

이면,

A(s,A)=64=2A(s,A)=6-4=2 A(s,B)=34=1A(s,B)=3-4=-1

이다. Actor는 A의 확률을 올리고 B의 확률을 내리면 된다.

Baseline을 빼도 평균 방향은 바뀌지 않는다

Policy Gradient에 State만의 함수 b(s)b(s)를 빼도 Gradient의 기대값은 바뀌지 않는다.

EAπ[b(S)θlogπθ(AS)]=0\mathbb E_{A\sim\pi} \left[ b(S)\nabla_\theta\log\pi_\theta(A\mid S) \right] =0

이유는 Action probability의 합이 11이기 때문이다.

aπθ(as)θlogπθ(as)=aθπθ(as)=θaπθ(as)=θ1=0\begin{aligned} \sum_a \pi_\theta(a\mid s) \nabla_\theta\log\pi_\theta(a\mid s) &= \sum_a\nabla_\theta\pi_\theta(a\mid s) \\ &= \nabla_\theta\sum_a\pi_\theta(a\mid s) \\ &= \nabla_\theta 1 \\ &=0 \end{aligned}

Baseline은 평균 Update 방향을 바꾸지 않으면서 불필요한 흔들림을 줄인다. 가장 자연스러운 Baseline이 Vπ(s)V^\pi(s)다.

Critic은 무엇을 학습할까

Critic을 Parameter w\mathbf w를 가진 State value 함수로 두자.

Vw(s)Vπ(s)V_{\mathbf w}(s) \approx V^\pi(s)

Critic은 TD Target으로 학습할 수 있다.

Rt+1+γVw(St+1)R_{t+1} + \gamma V_{\mathbf w}(S_{t+1})

TD error는,

δt=Rt+1+γVw(St+1)Vw(St)\delta_t = R_{t+1} + \gamma V_{\mathbf w}(S_{t+1}) - V_{\mathbf w}(S_t)

이다.

이 값은 “실제로 한 Step을 지나 보니 기대보다 좋았는가”를 나타낸다. 그래서 δt\delta_t를 Advantage의 한 Step 추정값으로 사용할 수 있다.

δtAπ(St,At)\delta_t \approx A^\pi(S_t,A_t)
환경의 한 Transition에서 만든 같은 TD error가 Critic의 평가와 Actor의 선택을 함께 고친다.

숫자로 TD error를 읽어보기

다음 경험을 얻었다고 하자.

Rt+1=1,γ=0.9,V(St)=4,V(St+1)=5R_{t+1}=1, \quad \gamma=0.9, \quad V(S_t)=4, \quad V(S_{t+1})=5

TD error는,

δt=1+0.9×54=1.5\begin{aligned} \delta_t &= 1+0.9\times5-4 \\ &=1.5 \end{aligned}

이다.

현재 State에서 44 정도를 기대했는데, Reward 11을 받고도 다음 State에 55의 미래가 남았다. 실제 한 Step의 결과가 기대보다 1.51.5 좋았다는 뜻이다.

반대로 δt=0.7\delta_t=-0.7이면 선택한 Action이 기대보다 나빴다고 본다.

Advantage는 Action value를 State의 평균과 비교한다. TD error는 이 차이를 한 Step 경험으로 추정한다.

Actor Update

Actor는 TD error를 Return 대신 사용한다.

θθ+αθδtθlogπθ(AtSt)\theta \leftarrow \theta + \alpha_\theta \delta_t \nabla_\theta \log\pi_\theta(A_t\mid S_t)
  • δt>0\delta_t>0이면 선택한 Action의 확률을 높인다.
  • δt<0\delta_t<0이면 선택한 Action의 확률을 낮춘다.
  • δt\delta_t00에 가까우면 Policy를 거의 움직이지 않는다.

REINFORCE가 Episode 전체 Return을 기다렸다면 Actor-Critic은 한 Step마다 Update할 수 있다.

Critic Update

Critic은 TD error가 줄어들도록 Value Parameter를 Update한다.

ww+αwδtwVw(St)\mathbf w \leftarrow \mathbf w + \alpha_w \delta_t \nabla_{\mathbf w}V_{\mathbf w}(S_t)

Linear function이라면,

wVw(St)=x(St)\nabla_{\mathbf w}V_{\mathbf w}(S_t) = \mathbf x(S_t)

이고 Neural Network라면 Backpropagation으로 Gradient를 계산한다.

Actor와 Critic의 Learning rate는 보통 따로 둔다. Critic이 너무 느리면 Actor가 부정확한 평가를 따라가고, 너무 빠르게 흔들리면 Actor에게 불안정한 Signal을 준다.

전체 흐름을 한 Step으로 보면

  1. Actor가 Atπθ(St)A_t\sim\pi_\theta(\cdot\mid S_t)를 Sample한다.
  2. 환경이 Rt+1R_{t+1}St+1S_{t+1}을 돌려준다.
  3. Critic이 δt\delta_t를 계산한다.
  4. Critic은 δt\delta_t로 Value를 고친다.
  5. Actor는 같은 δt\delta_t로 선택한 Action의 확률을 고친다.
  6. St+1S_{t+1}에서 반복한다.

Actor는 방향을 정하고 Critic은 그 방향이 예상보다 좋았는지를 빠르게 알려주는 역할을 한다.

Bias와 Variance의 교환

Monte Carlo Return GtG_t는 실제 Episode 결과를 사용하므로 Bootstrapping Bias는 없지만 Variance가 크다.

한 Step TD error는 Critic의 추정을 사용해 Variance를 줄이지만, Critic이 틀리면 Bias가 생긴다.

Advantage 추정실제 Reward를 보는 길이성향
REINFORCE GtV(St)G_t-V(S_t)Episode 끝까지낮은 Bootstrap Bias, 높은 Variance
1-step δt\delta_t한 Step더 큰 Bias 가능, 낮은 Variance
n-step Advantagen Step두 사이를 조절

여러 길이의 TD error를 섞는 GAE, Generalized Advantage Estimation도 같은 생각에서 나온다.

A^tGAE(γ,λ)=l=0(γλ)lδt+l\hat A_t^{\text{GAE}(\gamma,\lambda)} = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l}

λ\lambda가 작으면 짧은 TD error를 더 믿고, 11에 가까우면 긴 미래를 더 반영한다.

Actor-Critic도 불안정할 수 있다

Actor가 바뀌면 Critic이 평가해야 할 Policy도 바뀐다. Critic이 바뀌면 Actor가 받는 Advantage도 바뀐다. 두 학습기가 서로의 Target을 움직이는 셈이다.

큰 Policy update는 아직 모은 경험과 현재 Policy를 빠르게 다르게 만들어 학습을 망칠 수 있다. 다음 글의 PPO는 Old policy와 New policy의 확률 비율을 보고 한 번에 너무 멀리 움직이지 않도록 제한한다.

이번 글에서 기억할 것

Actor는 Action distribution을 학습하고, Critic은 기대 Value를 학습하며, TD error가 두 Update를 연결한다.

  1. Advantage는 Q(s,a)V(s)Q(s,a)-V(s)로 “평균보다 얼마나 좋은가”를 나타낸다.
  2. State-dependent baseline을 빼면 평균 Gradient는 유지되고 Variance를 줄일 수 있다.
  3. δt=R+γV(S)V(S)\delta_t=R+\gamma V(S')-V(S)를 Advantage의 한 Step 추정으로 사용한다.
  4. Actor는 Action probability를, Critic은 Value prediction을 고친다.
  5. n-step과 GAE로 Bias와 Variance를 조절할 수 있다.

참고 자료