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

강화학습 - (18) 시간차 학습

Johnny Yoon 2020. 10. 4. 22:46
728x90
반응형

강화학습

시간차 (Temporal Difference)

강화학습의 가장 특수한점, 강화학습만의 유일한 강점을 꼽으라고 한다면,

그것은 시간차학습(Temporal Difference Learning)일 것이다.

 

강화학습은 어떠한 상태의 가치를 판단함으로서 예측한다.

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

지금까지의 학습 기법은 에피소드가 끝나야만 학습이 가능했다.

하지만 배운 기법을 조금 수정하면 에피소드 중간에도 학습이 가능하게 해준다.

몬테카를로 학습기법에 점진적인 갱신을 반영하면 다음과 같다:

$V(S_t) \leftarrow V(S_t) + \alpha [G_t - V(S_t)]$

 

결과값 $G_t$는 에피소드가 끝나야만 얻어지는 반환갑이다.

따라서 이를 대체하기 위해 우리는 각 시점에서의 리워드와 가치함수를 활용한다:

$V(S_t) \leftarrow V(S_t) + \alpha [R_{t+1} + \gamma V(S_{t+1}) - V(S_t)]$

 

위 수식에서 $R_{t+1} + \gamma V(S_{t+1}) - V(S_t)$ 는 하나의 오차식이다.

이를 강화학습에서는 시간차 오차 (TD error)라고 부른다.

 

다이나믹 프로그래밍에서 비슷한 상황을 본 기억이 있을 것이다.

두가지의 저장소를 사용하지 않고, 그대로 현재의 저장소에 갱신하는 방법이다.

하지만 다이나믹 프로그래밍은, 환경에 대해 모든 지식이 있을 때만 활용이 가능하다.

시간차 학습은 몬테카를로 샘플링을 활용하기 때문에 환경에 대한 사전 지식이 필요하지 않다.

 

시간차 학습 (Temporal Difference Learning)

위 수식에서 시간이 한시점 지나 $S_{t+1}$가 현재 상태가 되었다고 하자.

그 때 우리는 현재 상태 $s_t$을 $s_{t+1}$로 변경할 수 있다.

이 과정을 반복하면 다음과 같은 연속적인 값들이 반복된다.

$S, A, R, S, A, R, S, A, R, ...$

그리고 각각의 $S$는 다음 스텝으로 가기 직전 $R, S$가 있어야만 갱신이 가능하다.

그리고 에이전트는 이 가치의 시간차적인 오차를 통해 학습하게 된다.

 

다음은 위의 아이디어를 구현한 TD(0) 알고리즘이다:

 

시간차 학습은 비지도된 지도학습이라고 표현되기도 한다.

이는 강화학습 기법은 어떠한 정답이 존재하지는 않지만,

어떻게 행동하는가를 시간차의 행동 변화를 통해서 학습하기 때문이다.

 

예제)

일을 마치고 집으로 돌아가는 상황을 예제로 들어보자.

회사에서 나오는 시간, 주차장을 나오는 시간, 고속도로를 나오는 시간, 

국도에서 집근처까지 오는 시간, 집 주차장에 들어가는 시간을 각각 산정하였다.

$V(S_t) \leftarrow V(S_t) + \alpha[G_t - V(S_t)]$

원래대로라면 우리는 각각 상태의 가치를 산정하기 위해서

끝까지 주행해본 뒤 $G_0$를 구해 가치를 갱신해야 했다.

 

$V(S_t) \leftarrow V(S_t) + \alpha[R_{t+1} + \gamma V(S_{t+1} - V(S_t))]$

하지만 $TD_0$ 알고리즘을 활용하면 위와 같이 각각의 상태가 끝날 때,

상태에 대한 가치를 바로 갱신할 수 있게 된다.

 

시간차 학습의 장점

시간차 학습은 다이나믹 프로그래밍과 몬테카를로 샘플링의 장점을 모두 가지고 간다.

다이나믹 프로그래밍과는 다르게, 시간차 학습은 모델에 대한 사전 지식을 필요로 하지 않는다.

몬테카를로와는 다르게 각 상태에서 점진적으로 갱신이 가능하다.

따라서 몬테카를로보다 수렴이 빠르게 이뤄진다.

728x90
반응형