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

강화학습 - (23) 몬테카를로 가치 근사

Johnny Yoon 2020. 11. 17. 20:03
728x90
반응형

강화학습

몬테카를로 가치 근사

 

가치 예측 (Value Estimation)

가치함수의 예측은 지도학습과 비슷한 점이 있다.

몬테카를로 예측에서는 상태 $S_i$를 받아 반환값 $G_i$를 예측하는 것을 지도학습과 비슷하다고 볼 수 있고,

시간차학습에서는 상태 $S_i$를 받아 보상과 미래가치 $R_{i+1} + \gamma v_{i+1}$를 예측하는 것을 비슷하다고 볼 수 있다.

여기서 $v$를 함수 근사로 표현하면 $\hat{v}(S_{i+1}, w)$로 표현할 수 있다.

 

하지만 강화학습에서는 지도학습과는 다른점이 존재한다.

지도학습은 어떠한 정답(ground truth label)이 존재한다.

하지만 강화학습은 에이전트의 자체적은 다음 상태에 대한 예측값이 사용된다.

(몬테카를로에서는 $G_i$, TD에서는 $\gamma \hat{v}(S_{i+1}, w)$).

따라서 강화학습에서는 예측모델의 타겟이 계속 변하게 된다.

 

또한 한가지 더 다른 점은, 강화학습은 정해진 배치(batch)로 학습하는 학습법이 아니라는 것이다.

특정 지도학습 기법들은 랜덤배치로만 동작하는 기법들이 존재한다.

데이터가 한건한건 별개로 들어오는 상황을 online-setting이라고 하는데,

온라인 상황에서 활용될 수 있어야만 강화학습이라고 불릴 수 있다.

 

가치 에러 목적함수

강화학습이 지도학습과 비슷하게 학습을 하려면, 최적화를 위한 목적이 있어야 한다.

다음과 같은 에피소드가 존재한다고 하자:

$\{(S_1, v_{\pi}(S_1)), (S_2, v_{\pi}(S_2)), (S_3, v_{\pi}(S_3)), ...\}$

이 에피소드를 데이터로 우리는 가치함수를 근사할 수 있는 가중치 $w$를 학습시켜야 한다.

가중치 $w$는 모든 상태 $s$에 대해서 $v_{\pi}(s)$를 근사할 수 있도록 학습되어야 한다:

$\hat{v}(s, w) \approx v_{\pi}(s)$

 

우리는 모든 상태 $s$에 대해서 가치 $v$를 완벽하게 학습할 수는 없다.

하지만 $w$가 주어진 상태에 대해서 비교적 정확한 $v$를 학습할 수 있도록 해야 한다.

이를 학습하기 위해서는 우리의 근사값이 실제 가치함수와 어느정도 차이가 있는지에 대한 산정이 필요하다.

 

예제)

다음과 같이 선형 함수 근사를 사용하고, 모든 상태는 연속적이라고 가정해보자.

우리가 학습할 가치함수는 $\hat{v}으로 표기되고 실제 가치함수는 $v_{\pi}$로 표기된다.

한 상태 $s$에 대헤서 우리는 가치가 얼마나 다른지를 산정해야 하고,

보통 지도학습에서는 이를 평균제곱오차(mean squared error)로 산정한다.

$\sum_s \mu (s)[v_{\pi}(s) - \hat{v}(s, w)]^2$

 

여기서 한 상태에 대해 갱신하는 것은 다른상태에서는 더 많은 에러를 낳게 될 수 있음을 의미한다.

따라서 우리는 모든 상태에 대해 에러를 반영할 수 있어야 한다.

여기서 중요한 것은 $s$가 모든 상태에 대해서 같은 수를 갖지 않는다는 것이다.

에이전트가 상태$s_i$에 얼마나 많이 방문했느냐에 따라 횟수가 달라지게 된다.

이 때문에 위 수식에서는 각 상태의 평균 $\mu(s)$를 곱해주게 된다.

이를 통해 평균제곱오차를 사용하면, 더 많이 방문된 상태에 대해 더 많은 갱신이 이뤄지게 된다.

 

당연히 여기서 $w$의 학습은 머신러닝/딥러닝에서 사용하는 경사하강을 통해 학습하게 된다.

$\nabla \sum_s \mu (s)[v_{\pi}(s) - \hat{v}(s, w)]^2$

 

경사하강법

이제 수식을 경사하강법을 사용해 풀이해본다.

(1) $\nabla \sum_s \mu (s)[v_{\pi}(s) - \hat{v}(s, w)]^2$

(2) $= \sum_s \mu (s) \nabla [v_{\pi}(s) - \hat{v}(s, w)]^2$

(3) $= -\sum_s \mu (s) 2[v_{\pi}(s) - \hat{v}(s, w)] \nabla \hat{v}(s, w)$

 

(2) 위 수식에서 경사는 미적분 법칙에 의해 summation안쪽으로 들어올 수 있다.

(3) 그리고 체인룰을 통해 제곱을 풀어낸다. 

여기서 $v_{\pi}$의 제곱은 경사 미분에 의해 사라진다.

사라지는 이유는 $v_{\pi}$는 우리가 갱신하고자 하는 $w$와 관계없는 항이기 때문이다.

따라서 우리는 위 수식에서 $v_{\pi}$와 $\hat{v}$의 차이만큼 $w$를 갱신하게 된다.

 

여기서 한가지 문제가 발생한다. 

우리는 상태의 분포 $\mu$를 알고있지 않다.

이를 해결하기 위해 우리는 확률적 경사하강을 사용한다:

$w_{t+1} \dot{=} w_t + \alpha [v_{\pi}(s) - \hat{v}(s, w)] \nabla \hat{v}(s, w)$

모든 경사하강에서 그렇듯 위 수식에서 $\alpha$는 학습률이라는 하이퍼파라미터 이다.

 

이제 마지막 한가지 문제만이 남아있다.

우리는 $v_{\pi}$에 대해서도 알지 못한다는 것이다.

이를 해결하기 위해 우리는 $v_{\pi}(s_t)$ 대신 반환값 $G_t$를 대입한다:

$w_{t+1} \dot{=} w_t + \alpha [G_t - \hat{v}(s, w)] \nabla \hat{v}(s, w)$

 

이것이 가능한 이유는 바로 $v_{\pi}(s_t)$의 기댓값이 $G_t$이기 때문이다:

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

 

위에 설명한 모든것을 포함하고 있는 몬테카를로 경사 알고리즘은 다음과 같다:

 

 

728x90
반응형