본문 바로가기
Data Science/Reinforcement

A2C의 어드밴티지 함수

by hyelog 2023. 6. 20.

3. 분산을 감소시키기 위한 방법

지난번에는 본격적으로 A2C를 들어가기 전에

배경과 그래디언트를 재구성하는 방법을 알아보았다.

 

이전 포스팅 : A2C의 배경과 그래디언트의 재구성

 

오늘은 목적함수 그래디언트의 분산을 줄이기 위한 방법을 알아보자.

A2C 알고리즘은 다음시간에 알아볼 예정이다.ㅎㅎ

 

아래는 이전 포스팅에서 정리해 보았던 목적함수 그래디언트 식이다.

 

$$ \begin{matrix} \nabla_\theta J(\theta) &=& \sum_{t=0}^{T}\limits \left( \int_{(x_t, u_t)} \nabla_\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_tdu_t\right) \\ &=& \sum_{t=0}^{T}\limits \left( \mathbb{E}{x_t \sim p\theta(x_t), u_t\sim \pi\theta(u_t|x_t)}\left[ \nabla_\theta log\pi_\theta(u_t|x_t)Q^{\pi_\theta}(x_t,u_t)\right] \right) \end{matrix} $$

이 식에,

$Q^{\pi_\theta}(x_t,u_t)$ 대신에 어떤 파라미터 $b_t$를 넣으면,

\begin{matrix}
\nabla_\theta J(\theta) &=& \sum_{t=0}^{T}\limits \left( \int_{(x_t, u_t)} \nabla_\theta log\pi_\theta(u_t|x_t)b_t\pi_\theta(u_t|x_t)p_\theta(x_t)dx_tdu_t\right) \ \cdots [1]
\\
&=&
\sum_{t=0}^{T}\limits \left( \int_{(x_t, u_t)} \nabla_\theta \pi_\theta(u_t|x_t)b_tp_\theta(x_t)dx_tdu_t\right)\ \cdots \nabla_\theta log\pi_\theta(u_t|x_t)=\frac{\nabla_\theta\pi_\theta(u_t|x_t)}{\pi_\theta(u_t|x_t)} \\
&=&
\sum_{t=0}^{T}\limits \left( \int_{x_t}\left[\int_{u_t} \nabla_\theta \pi_\theta(u_t|x_t)b_tdu_t\right]p_\theta(x_t)dx_t\right)


\end{matrix} 

  • $\nabla_\theta log\pi_\theta(u_t|x_t)=\frac{\nabla_\theta\pi_\theta(u_t|x_t)}{\pi_\theta(u_t|x_t)}$ 이 관계식은 $log\pi_\theta(u_t|x_t)$ 식을 $\nabla_\theta$ (미분) 한 결과를 적어둔 것이다.

위와 같이 정리할 수 있다.

$b_t$는 상수이거나 행동함수 $u_t$가 아니라고 가정한다.

대괄호 속 식은 다음과 같이 정리되고,

$$ \begin{matrix} \int_{u_t} \nabla_\theta \pi_\theta(u_t|x_t)b_tdu_t &=& b_t \nabla_\theta\int_{u_t}\pi_\theta(u_t|x_t)du_t \\ &=&b_t\nabla_\theta(1) = 0 \end{matrix} $$

결국 [1]번 식은

$$ \nabla_\theta J(\theta) = \sum_{t=0}^{T}\limits \left( \int_{(x_t, u_t)} \nabla_\theta \pi_\theta(u_t|x_t)b_tp_\theta(x_t)dx_tdu_t\right) = 0 $$

이 된다.

다음의 식으로 결론낼 수 있다.

$$ \nabla_\theta J(\theta) = \sum\limits_{t=0}^{T} \left( \mathbb{E}{x_t \sim p\theta(x_t), u_t \sim \pi_\theta(u_t|x_t)}\left[\nabla_\theta log\pi_\theta(u_t|x_t)\left(Q^{\pi_\theta}(x_t,u_t) - b_t\right)\right] \right) $$

📌 간단하게 이해하기

$\nabla_\theta log \pi_\theta(u_t|x_t)$를 A라 놓아 보자.

간단히 작성해 보자면

$\mathbb{E}[A\left(Q^{\pi_\theta}(x_t,u_t) - b_t\right)$ 로 쓸 수 있고,

$\mathbb{E}[AQ^{\pi_\theta}(x_t,u_t)] - \mathbb{E}[Ab_t]$ 라 표현할 수 있다.

여기서 $\mathbb{E}[Ab_t]$가 지금까지 보인 0이 되는 과정인 것이다.

그러므로 목적함수 그래디언트 식의 $Q^{\pi_\theta}$에서 $b_t$를 빼도 기댓값은 변하지 않음을 보일 수 있다.

 

여기서 $b_t$는 베이스라인 이라고 한다.

베이스라인을 도입하는 이유는 목적함수 그래디언트의 분산을 줄이기 위해서이다.

$b_t$의 최적값은 목적함수 그래디언트의 분산을 최소화하는 값으로 선정하면 된다.

 

보통 일반적으로 상태가치 함수 $v^{\pi_\theta}$를 베이스라인으로 사용한다.

$$ V^\pi = \int_{u_t} Q^\pi(x_t, u_t)\pi(u_t|x_t)du_t $$

 

 

정리해보면,

$$ \begin{matrix} \nabla_\theta J(\theta) &=& \sum\limits_{t=0}^{T} \left( \mathbb{E}{x_t \sim p\theta(x_t), u_t \sim \pi_\theta(u_t|x_t)}\left[\nabla_\theta log\pi_\theta(u_t|x_t)\left\{Q^{\pi_\theta}(x_t,u_t) - V^{\pi_\theta}\right\}\right] \right) \\ &=& \sum\limits_{t=0}^{T} \left( \mathbb{E}{x_t \sim p\theta(x_t), u_t \sim \pi_\theta(u_t|x_t)}\left[\nabla_\theta log\pi_\theta(u_t|x_t)A^{\pi_\theta}(x_t,u_t)\right] \right) \end{matrix} $$

 

$A^{\pi_\theta}(x_t,u_t) = Q^{\pi_\theta}(x_t,u_t) - V^{\pi_\theta}$ 를 어드밴티지(advantage)함수라고 한다.

 

가치함수는 $V^\pi(x_t) = \mathbb{E}_{u_t \sim \pi(u_t|x_t)}[Q^\pi(x_t,u_t)]$이므로

상태변수 $x_t$에서 선택된 행동 $u_t$가 평균에 비해 얼마나 좋은지를 평가하는 척도로 해석할 수 있다.

이제 목적함수 그래디언트는 행동가치가 아니라 어드밴티지에 비례한다.

어드밴티지의 값이 행동가치 $Q(x_t,u_t)$보다 작으므로 그래디언트의 분산이 작아질 것으로 기대할 수 있다.

 

문제는 어드밴티지를 알 수 없다는 것이다.

즉, 분산을 줄이는 문제는 어드밴티지 함수를 얼마나 정확하게 추정하는냐에 달려있다.

'Data Science > Reinforcement' 카테고리의 다른 글

A2C 알고리즘  (0) 2023.06.27
강화학습의 키, 가치함수  (0) 2023.06.21
A2C의 배경과 그래디언트의 재구성  (0) 2023.06.13
목적함수  (0) 2023.05.23
강화학습의 개념  (0) 2023.05.09

댓글