강화학습
몬테카를로 가치 근사
가치 예측 (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]$
위에 설명한 모든것을 포함하고 있는 몬테카를로 경사 알고리즘은 다음과 같다:
'데이터사이언스 > 강화학습' 카테고리의 다른 글
강화학습 - (24-1) Deep SARSA 코드예제 (0) | 2020.12.07 |
---|---|
강화학습 - (24) 시간차 가치 근사 (0) | 2020.11.21 |
강화학습 - (22) 가치함수의 근사 (0) | 2020.11.15 |
강화학습 - (21) 모델 (0) | 2020.11.15 |
강화학습 - (20-2) Expected SARSA 코드예제 (0) | 2020.11.15 |