강화학습 관련 논문을 읽다가, Bootstrapping 이라는 단어를 마주하게 되었다.
Bootstrapping이라는 용어는 통계학에서도 사용되고, 또한 머신러닝에서도 사용되곤 한다.
나는 위 두가지 분야에서 사용되는 의미를 알고 있었기 때문에, 강화학습에서 과연 유사한 의미를 가지는지 의문을 가지게 되었다.
왜냐하면 강화학습은 Data-driven 방식이 아니기 때문이다.
따라서 강화학습에서는 과연 Bootstrapping은 어떤 의미로 사용되는지를 다뤄보도록 한다.
강화학습에서의 Bootstrapping은 무엇인가??
강화학습에서의 Bootstrapping은 같은 종류의 추정값에 대해서 업데이트를 할 때, 한 개 혹은 그 이상의 추정값을 사용하는 것이다.
강화학습의 고전 알고리즘인 SARSA를 업데이트하는 식을 보고 이것이 무슨 얘기인지 이해해보자.
값 $R_{t+1} + \gamma Q(s', a')$ 은 $Q(s, a)$의 실제 값에 대한 추정치이고, 또한 TD(Temporal-Difference) target이라고 불린다.
이렇게, 다른 Q value를 업데이트 하기 위해서 부분적으로 Q value를 사용하기 때문에 SARSA는 bootstrap 방식이다.
같은 업데이트 규칙을 대조적인 방법인 Monte Carlo을 사용해보면 어떤 차이가 있는지 확인할 수 있다.
$G_t$ 는 시간 $t$일때, 전체 discounted reward를 의미하고, 이러한 방식의 업데이트를 가정한다면, 상태 $s$에서 시작해서 action $a$를 취하고, 그러고 나서 episode가 끝날 때까지 현재 정책을 따르게 된다.
반환값은 수식 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에 비해서 더 선호된다.
[참고자료]
'강화학습(Reinforcement Learning) > 강화학습 자료' 카테고리의 다른 글
modulenotfounderror: no module named 'gym'를 해결해보자 (2) | 2020.10.18 |
---|