Search
💪🏻

Actor-Critic

생성일
2024/08/05 02:59
태그
강화학습
작성자

1. Actor-Critic

지금까지 살펴본 내용을 간략히 정리하면, DQN의 경우 value function을 network로 근사하여 표현한 것이고 REINFORCE의 경우 policy를 network로 근사하여 표현한 것이다. Actor-critic의 경우 위의 2가지 network를 모두 사용한 algorithm이다.
Actor-Critic 개요
REINFORCE는 policy update를 위해서 episode의 종료 시점까지 기다려야한다는 문제가 있다. 무엇보다 baseline을 도입하더라도 여전히 GtG_t에 의해 high variance 문제를 가지고 있다. 위와 같은 문제를 해결하기 위해서 Actor-Critic에서는 GtG_t대신 추정량을 사용하여 episode의 종료까지 기다리지 않고 update가 가능하도록 만들며, high variance 문제를 완화한다. 따라서 ϕ\phi로 parameterize한 critic network와 θ\theta로 parameterize한 actor network를 update한다. 이때 사용되는 gradient는 아래와 같다.
θJ(θ)t=0T1(Estpθ(st),atπθ(atst)[γtθlogπθ(atst) (r(st,at)+γVπθ(st+1)Vπθ(st))])\nabla_\theta J(\theta)\approx \sum_{t=0}^{T-1} \left( \mathbb{E}{s_t \sim p_\theta(s_t), a_t \sim \pi_\theta(a_t | s_t)} \left[ \gamma^t \nabla_\theta \log \pi_\theta (a_t | s_t)\ (r(s_t,a_t) + \gamma V_{\pi_\theta}(s_{t+1})-V_{\pi_\theta}(s_t)) \right] \right)
Critic
Critic의 역할은 actor가 선택한 action의 가치를 평가하는 역할을 한다. Critic의 기능은 action의 가치를 평가하는 것이기 때문에 그 가치 추정의 정확도를 높이는 방향으로 update가 일어난다. 따라서 Target과 추정량의 차이에 대한 MSE를 줄이는 방향으로 update를 진행하게 된다.
Actor
Actor의 역할은 action을 실제로 선택하는 역할을 한다. update에 있어서는 critic의 평가 내용을 바탕으로 update가 진행된다. 이때 actor의 objective function은 Return에 대해서 정의되어 있으므로 그것을 최대화 하는 방향으로 update가 진행된다.
Pseudo Code
1.
특정 state에서 현재의 parameter를 바탕으로 action 선택
2.
Action을 적용하여 reward와 next state 관찰
3.
2단계에서 얻은 reward와 action을 바탕으로 TD-error를 계산하여 gradient descent 방식으로 Critic network update. 이때 Critic network update에서는 TD-error에 대한 MSE가 목적함수로 사용됨
4.
TD-error의 결과를 반영하여 Gradient ascent 방식으로 Critic network update. 이때
θJ(θ)t=0T1(Estpθ(st),atπθ(atst)[θlogπθ(atst) (r(st,at)+γVπθ(st+1)Vπθ(st))])\nabla_\theta J(\theta)\approx \sum_{t=0}^{T-1} \left( \mathbb{E}{s_t \sim p_\theta(s_t), a_t \sim \pi_\theta(a_t | s_t)} \left[ \nabla_\theta \log \pi_\theta (a_t | s_t)\ (r(s_t,a_t) + \gamma V_{\pi_\theta}(s_{t+1})-V_{\pi_\theta}(s_t)) \right] \right)
를 사용하여 upate하며, 해당 pseudo code에서는 1-step만큼 진행하여 얻은 data를 바탕으로 sample mean으로 근사하여 update를 진행하고 있음.

2. A3C

A3C 개요
A3C는 multiple network를 사용하는 actor-critic algorithm이다. 구체적으로는 global network와 multiple worker agents로 구성되어 있으며, 각 worker agent는 독립적으로 환경으로부터 학습하고 그 결과를 비동기적으로 global network update에 반영한다. 여기서 독립성은 각 agent가 주어진 time-step에서 다양한 경험을 생성할 수 있도록 하여, temporal correlation을 완화한다. 또한 Critic network에서는 advantage function의 Q-function 대신에 n-step return을 사용하는데 이는 critic network에서 parameter를 하나만 사용하도록 만들어 실용성을 높인다.
Multiple worker agent
Multiple worker agent를 사용하면, 각 agent의 경험이 다른 agent에 대해 독립적이므로 temporal correlation 문제를 해결할 수 있고 각 agent마다 서로 다른 policy를 사용하기 때문에 exploration 효과를 가지도록 하여 global network update에 있어 다양한 경험을 바탕으로 update가 진행되므로 더 유용하다.
Asynchronous
Asynchronous의 구체적인 적용 과정에 대해서 살펴보자. 먼저 worker agent의 parameter를 global network의 parameter를 복사하여 초기화한다. 이후 tmaxt_{max} step만큼 진행하면서 gradient를 계산한다. 축적된 gradient를 바탕으로 비동기적으로 global network의 parameter를 update한다. 그리고나서 다시 global network의 parmeter를 복사하여 사용하는데, 이 과정을 거치면 다른 worker의 영향에 의한 update가 포함된 parameter를 가져오게 된다.
Advantage
Policy gradient의 다양한 형태를 보면 어느 방향으로 parameter를 update할 것인지의 정보를 담고 있는 항과 그 방향으로 얼마나 이동할 것인지의 정보를 담고 있는 항으로 이루어져있다. 이때 이 부분에 advantage function을 사용할 수 있음은 앞의 과정에서 살펴보았다. Advantage function을 사용하게 되면 Return을 사용할 때에 비해서 분산이 줄어드는 효과가 있다. 그러나 Q와 V에 대한 2가지 parameter를 도입해야 하므로 Q-function 대신 n-step return을 사용한다. 이때 n의 값이 커지면 advantage 추정값의 분산이 커지고, n의 값이 작아지면 분산이 작아지게 된다.
**n-step Return
Gt(n)=Rt+1+Rt+2+...+γnV(sn+t)G_t ^{(n)} = R_{t+1}+R_{t+2}+ ... + \gamma^n V(s_{n+t})
Pseudo Code
1.
worker의 actor critic network를 global network의 parameter로 초기화한다
2.
tmaxt_{max} step만큼 진행하여 trajectory를 얻는다. (worker)
3.
time-step을 역순으로 진행하여 n-step return을 계산한다.
→ 이때 n은 fix된 값이 아니다. 각 time-step마다 서로 다른 n-step return이 적용됨
4.
n-step return 값을 반영하여 actor와 critic의 gradient를 누적한다.
5.
누적된 결과를 바탕으로 다른 agent의 종료 여부와 관계없이 global network에 update를 적용한다.
** Policy Gradient 수식
Loading PDF…