강화학습 관련 논문을 읽다가, Bootstrapping 이라는 단어를 마주하게 되었다.

 

 

Bootstrapping이라는 용어는 통계학에서도 사용되고, 또한 머신러닝에서도 사용되곤 한다. 

 

 

나는 위 두가지 분야에서 사용되는 의미를 알고 있었기 때문에, 강화학습에서 과연 유사한 의미를 가지는지 의문을 가지게 되었다.

 

 

왜냐하면 강화학습은 Data-driven 방식이 아니기 때문이다.

 

 

따라서 강화학습에서는 과연 Bootstrapping은 어떤 의미로 사용되는지를 다뤄보도록 한다.

 

 

 

 

강화학습에서의 Bootstrapping은 무엇인가??

 

 

 

강화학습에서의 Bootstrapping은 같은 종류의 추정값에 대해서 업데이트를 할 때, 한 개 혹은 그 이상의 추정값을 사용하는 것이다.

 

 

강화학습의 고전 알고리즘인 SARSA를 업데이트하는 식을 보고 이것이 무슨 얘기인지 이해해보자.

 

 

 

수식 1. SARSA의 업데이트 식

 

 

값 $R_{t+1} + \gamma Q(s', a')$ 은 $Q(s, a)$의 실제 값에 대한 추정치이고, 또한 TD(Temporal-Difference) target이라고 불린다. 

 

 

 

이렇게, 다른 Q value를 업데이트 하기 위해서 부분적으로 Q value를 사용하기 때문에 SARSA는 bootstrap 방식이다.

 

 

 

 

 

같은 업데이트 규칙을 대조적인 방법인 Monte Carlo을 사용해보면 어떤 차이가 있는지 확인할 수 있다.

 

 

 

수식 2. MC 방식으로 Q value update

 

 

$G_t$ 는 시간 $t$일때, 전체 discounted reward를 의미하고, 이러한 방식의 업데이트를 가정한다면, 상태 $s$에서 시작해서 action $a$를 취하고, 그러고 나서 episode가 끝날 때까지 현재 정책을 따르게 된다. 

 

 

 

수식 3. 반환값(Return) 계산식

 

 

반환값은 수식 3과 같이 계산할 수 있으며, 여기서 $T$는 terminal state에 도달하는 time step을 의미한다.

 

 

 

 

특히, 이 반환값($G_t$)은 다른 Q value로부터 어떠한 추정치를 전혀 사용하지 않기 때문에, 이는 오직 환경으로부터 얻게 되는 일련의 observation들만 사용하게 된다. 

 

 

 

 

 

 

Bootstrapping의 특징

 

 

 

Bootstrapping의 주요한 단점은 우리가 $Q(s', a')$에 대해서 어떤 starting value를 사용했는지에 따라 편향된다는 점이다.

 

 

 

이렇게 편항되는것은 대부분의 경우에 옳지 않으며, 너무 많은 자기 참조와 충분하지 않은 실제 데이터 때문에 전체적으로 업데이트 시스템이 불안정해질 수 있다.

 

 

 

이것이 바로 신경망을 이용하는 off-policy learning의 문제점이다. (Q-learning이 이에 해당한다.)

 

 

 

Bootstrapping을 사용하지 않으면, 더 긴 trajectory를 사용해야 하는데, 이는 그 대신에 종종 더 높은 분산을 가져오게 되며, 실제로 추정값이 수렴하기 전에 더 많은 샘플이 필요하게 됨을 의미한다.

 

 

 

따라서, bootstrapping의 문제점에도 불구하고, 만약 bootstrapping를 사용해서 작동이 되도록 만들 수 있다면 상당히 더 빠르게 배울 수 있을 것이고 종종 Monte Carlo approach에 비해서 더 선호된다.

 

 

 

 

[참고자료]

https://datascience.stackexchange.com/questions/26938/what-exactly-is-bootstrapping-in-reinforcement-learning

 

 

 

 

 

 

+ Recent posts