Evolution Strategies as a Scalable Alternative to Reinforcement Learning
들어가기 전에 : 이 글은 강화학습 관련 글입니다. 차후 다른 사이트로 이동될 것입니다.
핵심적 수식
3쪽 상단의 수식은 다음과 같다.
\[ \nabla_\theta \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} F(\theta + \sigma \epsilon) = \frac{1}{\sigma} \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} \{ F(\theta + \sigma \epsilon) \epsilon\}\]
이는 2쪽의 일반적인 등식에 factored Gaussian을 적용한 것이다. 2쪽의 일반적인 등식은 다음과 같다.
\[ \nabla_{\psi} \mathbb{E}_{\theta \sim p_{\psi}} F(\theta) = \mathbb{E}_{\theta \sim p_{\psi}} \{ F(\theta) \nabla_{\psi} \log p_{\psi} (\theta) \}\]
이를 하나하나씩 설명해보자.
\(\mathbb{E}_{\theta \sim p_{\psi}} F(\theta)\) 은 \(\theta\) 가 \(\psi\) 를 모수를 가지는 확률분포를 따를 때, \(F(\theta)\) 의 평균을 나타낸다. (예를 들어 \(\theta\) 가 평균 0, 분산 1인 정규분포일때, \(p_\psi(\theta)\) 는 정규분포의 확률밀도함수이고, \(\psi\) 는 평균과 분산을 나타낸다.) 그리고 \(\nabla_{\psi} \mathbb{E}_{\theta \sim p_{\psi}} F(\theta)\) 는 \(F(\theta)\) 의 평균을 나타낸다( \(\theta\) 가 \(p_\psi\) 의 확률밀도함수를 가지는 분포일 때!).
이 값을 구하기는 쉽지 않을 것이다. 특히 \(F(\theta)\) 의 값을 모를 때. 만약 \(\mathbb{E}_{\theta \sim p_{\psi}} F(\theta)\) 를 구하고자 한다면, 샘플링을 사용하여 근사값을 얻을 수 있다. 하지만 \(\mathbb{E}_{\theta \sim p_{\psi}} F(\theta)\) 은…
반면 우변을 보면 \(\{ F(\theta) \nabla_{\psi} \log p_{\psi} (\theta)\) 의 평균을 나타내기 때문에 샘플링으로 계산이 가능하다. 그리고 \(\nabla F(\theta)\) 를 구하지 않아도 된다. 대신 \(\nabla_\psi p_\psi(\theta)\) 가 필요한데, \(p_\psi\) 는 확률밀도함수를 나타내기 때문에 대부분 우리가 알고 있는 함수이다.
그런데 3쪽 상단의 수식은 다소 다른 형태를 띄고 있기 때문에 혼동할 수 있다. 3쪽 상단의 수식을 다시 보자.
\[ \nabla_\theta \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} F(\theta + \sigma \epsilon) = \frac{1}{\sigma} \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} \{ F(\theta + \sigma \epsilon) \epsilon\}\]
여기서 일반적인 등식에 \(p_\psi\) 는 이 논문에서는 factored Gaussian( \(\mathcal{N}(\vec{\mu}, \textbf{D})\) )을 나타낸다. 논문에서는 \(\textbf{D}\) 를 모든 방향으로 분산이 \(\sigma\) 이고 공분산이 \(0\) 으로 가정했다.
따라서 \(p_\psi\) 는 \(p_\mu=\mathcal{N}(\vec{\mu}, \sigma \textbf{I})\) 가 된다.
이를 일반적인 등식에 그대로 적용하면 다음과 같다. (여기서 편의상 \(\theta\) 는 \(\mathcal{N}(\vec{\mu}, \textbf{I})\) 즉, \(\sigma=1\) 을 가정했다.)
\[\nabla_{\psi} \mathbb{E}_{\theta \sim p_{\psi}} F(\theta) = \mathbb{E}_{\theta \sim p_{\psi}} \{ F(\theta) \nabla_{\psi} \log p_{\psi} (\theta) \} \ \]
\[\nabla_{\vec{\mu}} \mathbb{E}_{\theta \sim p_{\mu}} F(\theta) = \mathbb{E}_{\theta \sim p_{\mu}} \{ F(\theta) \nabla_{\mu} \log p_{\mu} (\theta) \} \]
Gaussian 분포를 나타내는 \(p_{\mu} = (2\pi)^{-k/2} \exp(-\frac{1}{2}(\theta-\mu)‘(\theta-\mu))\) 이므로 \(\log p_{\mu} = -(2\pi)^{-k/2} \frac{1}{2}(\theta-\mu)’(\theta-\mu)\) 가 된다.
따라서 위 전개의 마지막은 다음과 같다.
\[\nabla_{\vec{\mu}} \mathbb{E}_{\theta \sim p_{\mu}} F(\theta) = \mathbb{E}_{\theta \sim p_{\mu}} \{ F(\theta) \nabla_{\mu} \log p_{\mu} (\theta) \} \]
\[\ \ \ \ \ \ \ \ \ \ \ = \mathbb{E}_{\theta \sim p_{\mu}} \{ F(\theta) \nabla_{\mu} [ -(2\pi)^{-k/2} \frac{1}{2}(\theta-\mu)‘(\theta-\mu) ] \} \]
\(\nabla_{\mu} [ -(2\pi)^{-k/2} \frac{1}{2}(\theta-\mu)’(\theta-\mu) ]\) 를 구한다면 샘플링으로 \(\nabla_{\vec{\mu}} \mathbb{E}_{\theta \sim p_{\mu}} F(\theta)\) 를 구할 수 있음을 알 수 있다.
이제 다시 3쪽 상단의 수식을 보자.
\[ \nabla_\theta \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} F(\theta + \sigma \epsilon) = \frac{1}{\sigma} \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} \{ F(\theta + \sigma \epsilon) \epsilon\}\]
이 식에서 다소 당황스러웠던 것은 \(\nabla_\theta \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} F(\theta + \sigma \epsilon)\) 에서 그래디언트를 \(\mathbb{E}\) 안쪽으로 넣어보면 다음가 같이 쓸 수 있다.
\[\nabla_\theta \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} F(\theta + \sigma \epsilon) = \mathbb{E}_{\epsilon \sim \mathcal{N}(\vec{0}, \textbf{I})} \nabla_\theta F(\theta + \sigma \epsilon) \]
여기서 갑자기 그래디언트가 사라졌기 때문이다.
무엇이 문제였을까요?
REINFORCE와의 관계
어쨋든 수식을 이해했다면 REINFORCE와 정확히 같은 방식의 전개임을 알 수 있다. 단지 REINFORCE는 정책 상의 확률에 대해서 다음을 구한다.
\[ \nabla_\theta \mathbb{E}_{s_t} \Big[ \sum_t \mathbb{E}_{a \sim \pi(\cdot|s_t, \theta)} \Big[ \gamma^t R(s_t,a) \Big] \Big]\]
이때 \(\nabla_{\theta}\) 를 \(\mathbb{E}_{s_t}\) 안쪽으로 보내면 다음과 같다.
\[ \mathbb{E}_{s_t} \Big[ \sum_t \nabla_\theta \mathbb{E}_{a \sim \pi(\cdot|s_t, \theta)} \Big[ \gamma^t R(s_t,a) \Big] \Big]\]
\(\nabla_{\theta}\mathbb{E}_{a \sim \pi(\cdot | s_t, \theta)}\) 에서 위에서와 동일한 이유를 \(\nabla_\theta\) 를 \(\mathbb{E}\) 안쪽으로 넣으면서 \(\nabla_\theta \log \pi(a|s_t, \theta)\) 로 쓸 수 있다.
ES vs. REINFORCE
average return 함수가 local minima가 많을 경우에 REINFORCE와 같은 policy graident 방법은 local minima에 갇혀 버릴 수 있다. 반면 ES는 \(\theta\) 분포의 분산이 클 수록 그런 문제에서 자유로울 수 있다. 물론 담금질 기법(Simulated Annealing, SA)과 같은 local minima를 벗어나는 방법이 있기는 하다.
그외에도 보상이 별로 없고, 즉각적이지 않은 경우에는 ES가 나을 것 같다.
논문에서 추가로 제시하는 장점은 average return 함수가 미분 가능하지 않은 경우(예. hard attention), parallel 하게 진행할 경우 agent 사이의 통신 용량이 크지 않다는 점 등이 있다.
의외의 장점
이 논문에서 주장하는 ES의 가능성은 의외로 많은 계산부하를 요구하지 않는다는 점이다. 왜냐하면 백프로퍼게이션을 하지 않기 때문에 gpu를 쓰지 않아도 되며, cpu로도 충분하다는 점이다. 사실 나는 유전자 알고리즘이 그냥 엄청나게 계산을 하는 것과 다르지 않다고 생각했는데 의외의 장점인 듯 하다(지구 최초의 생명체는 30억년 전이라는데, 진화적 관점에서 고등 생명체가 탄생하기 위해 필요했던 것은 무수히 긴 시간과 적절한 진화압력이었을 뿐?).
그렇다면 네트워크의 크기가 증가함에 따라 ES와 REINFORCE 중에 비교 우위를 점하는 쪽은 어느 쪽일까?
참고문헌
- Evolution Strategies as a Scalable Alternative to Reinforcement Learning, Salimans et al, 2017.
- Key Papers in Deep RL
- openAI blog : 이미지 출처
- 이 글은 강화학습 관련 글입니다. 차후 다른 사이트로 이동될 것입니다.
Leave a comment