데이터사이언스/강화학습

강화학습 - (11) 정책 평가

Johnny Yoon 2020. 9. 28. 13:51
728x90
반응형

강화학습

정책 평가 (Policy Evaluation)

정책 평가란 어떠한 정책에 대해 가치함수를 찾는 것이다.

이를 더 자세히 수식화 하면, 정책 $\pi$에 대한 상태-가치 $v_{\pi}$를 찾는 것이다.

$\pi \rightarrow v_{\pi}$

 

상태가치 벨만 방정식의 정의를 다시 살펴보자.

$v_{\pi}(s) \dot{=} \mathbb{E}_{\pi}[G_t | S_t = s]$

$v_{\pi}(s) = \sum_{a}\pi(a|s) \sum_{s'} \sum_{r}p(s',r|s,a)\left[r+\gamma \mathbb{E}_{\pi}[G_{t+1}|S_{t+1}=s']\right]$

 

이전에 봤던 다음과 같은 그리드 월드에서의 MDP는 선형대수(선형시스템)으로 푸는 것이 가능했다.

이러한 선형 시스템은 또한 다이나믹프로그래밍(동적계확법) 이라는 방식으로 더 효율적으로 풀수있다.

 

 

제어 (Control)

제어란 더 많은 보상을 얻기 위해 정책을 찾는 것이다.

다른 말로 하면 가치함수를 최대화 할 수 있도록 정책을 향상시키는 것이다.

이 제어가 바로 강화학습의 최종적인 목표이다.

하지만 이 제어를 하기 위해서 선행되어야 하는 것은, 정책이 어떠한 가치를 주는가를 먼저 평가하는 것이다.

 

정책 $\pi_1$이 정책 $\pi_2$보다 낫다는 것은,

모든 상태에 대해서

정책 $\pi_1$이 정책 $\pi_2$보다 같거나 더 큰 가치를 주어야 한다는 것을 기억하자.

 

제어란 더 나은 정책이 될 수 있도록 정책을 향상 시키는 것이고,

더이상 정책이 발전될 수 없을 때 이 정책을 $\pi_*$, 즉 최적 정책이라고 부른다.

따라서 제어의 목적은 다른말로 최적 정책 $\pi_*$를 찾는 것이 된다.

 

 

반복적 정책 평가 (Iterative Policy Evaluation)

다이나믹 프로그래밍(동적계획법)을 활용하면 정책평가를 반복적으로 효율적으로 할 수 있게 된다.

이 반복적인 절차는, 랜덤한 초기값에서 정책이 조금씩 나아지도록 갱신하는 방법이다.

이를 수식적으로 보면 이는 매우 간단하다.

$v_{k+1}(s) = \sum_{a}\pi(a|s) \sum_{s'} \sum_{r}p(s',r|s,a)\left[r+\gamma v_k(s')\right]$

 

$k$를 반복의 횟수라고 하면, $k+1$은 정책 평가를 한 뒤의 다음 단계가 된다.

이를 $k+1$이 $*$가 될 때까지 반복하면 되는것이다.

다른말로 하면 정책 평가를 진행했는데도 가치가 더이상 나아지지 않는다면,

우리의 가치함수가 $v_*$에 도달했다고 할 수 있는 것이다.

 

동적계획법은 메모리를 사용해 재귀적인 계산을 더 효율적으로 하는 방법이다.

먼저 $V$를 현재 상태, $V'$을 다음 상태라고 한다면,

반복적으로 $V$의 상태에 대해서 정책 평가를 한 결과를 $V'$에 저장하고,

모든 평가가 끝나면 $V'$이 현재 상태가 되므로, $V$에 모든상태값을 복사한다.

물론 아래와 같이 바로바로 한 상태 평가시에 바로 갱신을 수행할 수도 있다.

이러한 방법은 각 상태 갱신 시에 이미 갱신된 결과를 사용할 수 있어 더 빠른 수렴이 가능하게 된다.

 

다음은 정책 평가 반복의 알고리즘(Pseudo-code)이다.

 

 

728x90
반응형