강화학습 : 몬테카를로 예측과 시간차 예측
May 4, 2022, 11:18 p.m.
앞에서 정책 이터레이션과 가치 이터레이션에 대해서 알아보았습니다. 최적 정책을 찾는 좋은 방법이지만 분명한 한계가 있습니다. 현실은 바둑처럼 수많은 상태들이 존재하고 매번 이 모든 상태에 대한 가치함수를 업데이트 하는 것은 분명합니다. 그렇기 때문에 우리는 가치함수를 '근사' 해야 합니다.
1. 몬테카를로 예측
가치함수를 직접 구하지 않더라도 다양한 방법으로 가치함수를 근사할 수 있습니다. 바로 샘플링을 이용하는 것입니다. 에이전트가 환경의 각 상태들을 돌아다니면서 얻는 보상을 통해 그 상태들의 가치함수 샘플들을 얻을 수 있는데요, 각 상태들을 무수히 많이 돌아다니며 얻은 샘플들을 평균내어 가치함수를 구하는 방식입니다. 몬테카를로 예측이라고도 부릅니다.
하나의 샘플은 에이전트가 하나의 에피소드를 시작할때 부터 끝날때까지 입니다. 그동안 받은 보상들을 저장하며 무수히 많은 에피소드들을 진행하다가 보면 거의 모든 상태에 대한 반환값을 얻을 수가 있을 것입니다. 그런 다음 각 상태의 반환값을 평균내어 가치함수로 사용하면 됩니다. 이 방법은 꽤나 정확하면서도 직접계산하는 것보다 쉽습니다.
몬테카를로 예측의 가치함수 업데이트 식은 아래로 표현할 수 있습니다. V는 현재 가치함수이고 G는 얻은 반환값입니다.
즉 가치함수를 반환값과 현재 가치함수의 차이의 만큼 업데이트 하는 것입니다. 반환값이 업데이트의 목표이고 만큼 목표로 다가가는 것이죠. 여기서 를 스텝사이즈라고 부릅니다.
몬테카를로 예측의 단점은 반환값을 사용한다는 점에 있습니다. 반환값이란 에이전트가 에피소드가 끝날때 까지 얻은 보상들을 할인해서 받는 개념으로, 에피소드가 끝날때까지 기다려야 해야합니다. 만약 에피소드의 끝이 없거나 길이가 매우 긴 경우에는 이 방법이 적합하지 않겠죠.
2. 시간차 예측
이 단점을 극복한 방법이 바로 시간차 예측입니다. 에피소드가 끝날때 까지 기다리지 않고 한 스텝마다 가치함수를 업데이트 합니다. 반환값 G를 사용하지 않고 이 대신에 를 사용하는 것이죠. 그러면 한 스텝마다 얻은 보상과 다음 상태의 가치함수 값으로 그 전 가치함수를 업데이트 할 수 있습니다. 시간차 예측의 업데이트 식은 아래와 같습니다.
이 역시 는 스텝 사이즈이고 는 할인율입니다. 여기서는 가 가치함수 업데이트의 목표가 되겠죠?
시간차 예측은 몬테카를로 예측과 다르게 에피소드가 끝날때 까지 기다리지 않고 행동을 하나 할때마다 가치함수를 업데이트 할 수 있는 장점이 있습니다. 훨씬 효율적이죠. 대신에 초기 값에 따라 영향을 많이 받는다는 단점도 있습니다.
시간차 예측과 몬테카를로 예측은 많은 강화학습 알고리즘의 기본이 되는 개념입니다. 그렇기 때문에 잘 알고 있다면 강화학습 에이전트를 만들고 구성하는데 많은 도움이 됩니다.
강화학습 몬테카를로예측 시간차예측