3. 분산을 감소시키기 위한 방법
지난번에는 본격적으로 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 |
댓글