Just Fighting
[강화학습] AC2 2 본문
< 분산 감소 방법>
< 베이스라인 >
목적함수 그래디언트의 분산이 크면, 업데이트될 정책 파라미터 값이 들쭉날쭉해져 신경망 학습이 불안정해지며, 정책의 불확실성도 커진다.
\begin{align*}
\bigtriangledown_\theta J(\theta)
&= \sum_{t=0}^{T} \left ( \int_{x_t,u_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 [ \bigtriangledown_\theta log \pi_\theta (u_t|x_t) Q^{\pi_\theta}(x_t, u_t)\right ] \right )
\end{align*}
적분항 $Q^{\pi_\theta}(x_t, u_t)$ 대신 어떤 파라미터 $b_t$를 넣으면,
\begin{align*}
\bigtriangledown_\theta J(\theta)
&= \sum_{t=0}^{T} \left ( \int_{x_t,u_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 ( \int_{x_t,u_t}^{} \bigtriangledown_\theta \pi_\theta (u_t|x_t) b_t p_\theta(x_t) dx_t du_t \right ) \\
&= \sum_{t=0}^{T} \left ( \int_{\tau_{x_0}}^{} \left [ \int_{u_t} \bigtriangledown_\theta \pi_\theta (u_t|x_t) b_t du_t \right ] p_\theta(x_t) dx_t \right ) \\
\end{align*}
가 되는데, $\bigtriangledown_\theta log \pi_\theta (u_t|x_t) = \frac{\bigtriangledown_\theta\pi_\theta (u_t|x_t)}{\pi_\theta (u_t|x_t)}$를 이용한 것이다.
여기서 $b_t$가 상수거나 행동 $u_t$의 함수가 아니라고 가정한다.
그렇다면 대괄호 안의 식은 0이되며,
\begin{align*}
\int_{u_t} \bigtriangledown_\theta \pi_\theta (u_t|x_t) b_t du_t &= b_t \bigtriangledown_\theta \int_{u_t} \pi_\theta (u_t|x_t) du_t \\
&= b_t \bigtriangledown_\theta(1) = 0
\end{align*}
\begin{align*}
\bigtriangledown_\theta J(\theta)
&= \sum_{t=0}^{T} \left ( \int_{x_t,u_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 ) \\
&= 0
\end{align*}
목적함수 그래디언트 식의 $Q^{\pi_\theta}(x_t, u_t)$에서 $b_t$를 빼도 기댓값은 변하지 않는다.
\begin{align*}
\bigtriangledown_\theta J(\theta)
&= \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) \left ( Q^{\pi_\theta}(x_t, u_t)-b_t\right ) \right ] \right )
\end{align*}
($b_t$를 빼도 기댓값이 변하지 않는 이유!는 $b_t$를 뺐을 때 계산해야 하는 식이 0임을 위에서 보였기 때문!이지않을까,,,)
여기서 $b_t$는 베이스라인(baseline)이라고 한다.
베이스라인을 넣는 이유는 목적함수의 그래디언트 분산을 줄이기 위함!
$b_t$의 최적값은 목적함수 그래디언트의 분산을 최소화하는 값으로 선정하면 된다.
그러나, 일반적으로 $b_t$의 최적값은 상태가치 함수 $V^{\pi_\theta}(x_t)$를 사용한다.
상태가치 함수는 행동 $u_t$의 함수가 아니기 때문.
$$V^\pi(x_t) = \int_{u_t} Q^\pi (x_t, u_t)\pi(u_t|x_t)du_t$$
상태가치 함수를 사용하면 목적함수 그래디언트를 아래와 같이 표현할 수 있다.
\begin{align*}
\bigtriangledown_\theta J(\theta)
&= \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) \left \{ Q^{\pi_\theta}(x_t, u_t)-V^{\pi_\theta}(x_t)\right \} \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) A^{\pi_\theta}(x_t, u_t) \right ] \right ) \\
\end{align*}
< 어드밴티지 함수 >
이 때, $A^{\pi_\theta}(x_t, u_t) =Q^{\pi_\theta}(x_t, u_t)-V^{\pi_\theta}(x_t) $를 어드밴티지(advantage) 함수라고 한다.
상태가치는 상태변수 $x_t$에서 선택 가능한 모든 행동 $u_t$에 대한 행동가치의 평균값 $V^{\pi_\theta}(x_t) =E_{u_t\sim \pi(u_t|x_t)}Q^{\pi_\theta}(x_t, u_t)$ 이므로,
상태변수 $x_t$에서 선택된 행동 $u_t$가 평균에 비해 얼마나 좋은지 평가하는 척도가 될 수 있다.
목적함수 그래디언트는 행동가치가 아닌 어드밴티지에 비례한다.
어드밴티지의 정의 상 값이 행동가치보다 작기 때문에( 행동가치-행동가치의 평균이니까) 그래디언트의 분산이 작아질 것이다.
그러나 문제는 어드밴티지의 값을 모른다는 것.
따라서, 어드밴티지를 정확하게 추정하는 것이 중요하다.
[출처]
박성수, 「수학으로 풀어보는 강화학습 원리와 알고리즘」, 위키북스(2020)