카테고리 없음

[강화학습] A2C

yennle 2023. 6. 13. 21:38
728x90

< A2C >

 

A2C(advantage actor-critrc)은 정책을 업데이트하기 위해서 에피소드가 끝날 때까지 기다려야 하며, 그래디언트의 분산이 매우 크다는

REINFORCE의 단점을 개선한 알고리즘이다. (살짝 개선한 것이지만 성능은 뛰어나다고 함!)

 


 

< 그래디언트의 재구성 >

 

\begin{align*}
\bigtriangledown_\theta J(\theta) &= E_{\tau\sim p_\theta(\tau)}\left [ \sum_{t=0}^{T}\left ( \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t)\left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right ) \right ) \right ] \\

&= \sum_{t=0}^{T} \left \{  E_{\tau\sim p_\theta(\tau)}\left [ \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t)\left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right ) \right ] \right \}

\end{align*}

 

위 식은 REINFORCE 알고리즘의 그래디언트이다.(REINFORCE 추후 작성 예정ㅎㅎ)

두 번째 줄의 소괄호 항은 시간 스텝 $k=t$부터 에피소드가 종료될 때까지 받을 수 있는 감가된 예정 보상(reward-to-go)의 총합반환값 $\sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k)$이다.

 

 

 

궤적 $\tau$를 시간스텝 $t$를 기준으로 두개의 영역으로 분할한다.

$$\tau = \tau_{x_0:u_t}\cup \tau_{x_{t+1}:u_T}$$

 

그렇다면 목적함수의 그래디언트는 다음과 같이 표현할 수 있다.

\begin{align*}
\bigtriangledown_\theta J(\theta) 

&= \sum_{t=0}^{T}  \int_{\tau_{x_0:u_t}}^{} \int_{\tau_{x_{t+1}:u_T}}^{} \left ( \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t)\left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right ) \right ) p_\theta(\tau_{x_0:u_t}, \tau_{x_{t+1}:u_T})d\tau_{x_{t+1}:u_T} d\tau_{x_0:u_t} \\

&= \sum_{t=0}^{T}  \int_{\tau_{x_0:u_t}}^{} \int_{\tau_{x_{t+1}:u_T}}^{} \left ( \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t)\left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right ) \right ) p_\theta( \tau_{x_{t+1}:u_T}|\tau_{x_0:u_t})p(\tau_{x_0:u_t})d\tau_{x_{t+1}:u_T} d\tau_{x_0:u_t} \\

&= \sum_{t=0}^{T}  \int_{\tau_{x_0:u_t}}^{} \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t) \left [ \int_{\tau_{x_{t+1}:u_T}}^{} \left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right ) p_\theta( \tau_{x_{t+1}:u_T}|\tau_{x_0:u_t})d\tau_{x_{t+1}:u_T} \right ] p(\tau_{x_0:u_t}) d\tau_{x_0:u_t}

\end{align*}

 

 

위의 식에서 대괄호 항은 마르코프 가정에 의해서 행동가치 함수가 된다.

\begin{align*}

& \int_{\tau_{x_{t+1}:u_T}}^{}  \left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right )  p_\theta( \tau_{x_{t+1}:u_T}|\tau_{x_0:u_t})d\tau_{x_{t+1}:u_T} \\
&= \int_{\tau_{x_{t+1}:u_T}}^{}  \left ( \sum_{k=t}^{T} \gamma^{k-t}r(x_k, u_k) \right )  p_\theta( \tau_{x_{t+1}:u_T}|x_t,u_t)d\tau_{x_{t+1}:u_T} \\
&= Q^{\pi_\theta}(x_t, u_t)

\end{align*}

 

이 식을 위에 대입하면

 

\begin{align*}
\bigtriangledown_\theta J(\theta) 

&= \sum_{t=0}^{T} \int_{\tau_{x_0:u_t}}^{} \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t) Q^{\pi_\theta}(x_t, u_t) p_\theta (\tau_{x_0:u_t}) d\tau_{x_0:u_t} \\

&= \sum_{t=0}^{T} \left( \int_{x_t,u_t}^{} \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t) Q^{\pi_\theta}(x_t, u_t) p_\theta (x_t, u_t) dx_t du_t \right )

\end{align*}

 

 

여기서 $p_\theta(x_t, u_t)$는 $(x_t, u_t)$의 한계확률밀도함수이다.

확률의 연쇄 법칙을 적용하면 다음과 같다.

 

 

\begin{align*}
\bigtriangledown_\theta J(\theta) 

&= \sum_{t=0}^{T} \left ( \int_{x_0:u_t}^{} \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t) Q^{\pi_\theta}(x_t, u_t) \pi_\theta (u_t| x_t) p_\theta(x_t)] dx_t du_t \right ) \\

&= \sum_{t=0}^{T} \left ( E_{x_t \sim p_\theta(x_t), u_t \sim \pi_\theta (u_t|x_t)} \left [  \gamma^t \bigtriangledown_\theta log \pi_\theta (u_t|x_t) Q^{\pi_\theta}(x_t, u_t) \right ] \right ) \\

&= \sum_{t=0}^{T} \left ( E_{x_t \sim p_\theta(x_t), u_t \sim \pi_\theta (u_t|x_t)} \left [  \bigtriangledown_\theta log \pi_\theta (u_t|x_t) Q^{\pi_\theta}(x_t, u_t) \right ] \right )

\end{align*}

 

여기서 $d_\theta(x_t) = \gamma^t p_\theta(x_t)$를 상태변수 $x_t$의 감가된 확률밀도함수라고 한다.

감가율은 에피소드 후반부 궤적에 있는 데이터의 이용도를 크게 떨어트리는 단점이 있어, 일반적으로는 제거한다.

그러면 $d_\theta(x_t) = p_\theta(x_t)$이 된다.

 

 

이제 목적함수의 그래디언트를 계산하기 위해서 행동가치를 계산하면 된다.

행동가치는 상태변수 $x_t$에서 행동 $u_t$를 선택하고 그로부터 정책 $\pi$에 의해 행동이 가해졌을 때 기대할 수 있는 미래의 반환값으로서, 정책이 실현되는 시간스텝 $t$에서의 기댓값이기 때문에 목적함수의 그래디언트를 계산할 때 에피소드가 끝날때까지 기다릴 필요가 없다.

 

 

 

 

 

[출처]

박성수, 「수학으로 풀어보는 강화학습 원리와 알고리즘」, 위키북스(2020)

728x90