본문 바로가기

강화학습

4. [강화학습] 몬테카를로 예측(Monte-Carlo Prediction)

반응형

 안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Master.M'입니다.

오늘 알아볼 내용은 '몬테카를로 예측(Monte-Carlo Prediction)'입니다. 

 

 저의 경우 2016년 알파고와 이세돌의 바둑 대결로 인해 인공지능에 관심이 많이 생기기 시작했고 이후 구글의 딥마인드 팀에서 발표한 DQN논문 특히 아타리사의 '브레이트 아웃' 게임을 하는 것을 보고 많은 감명을 받아 '강화 학습'이라는 학문에 많은 관심을 갖게 되었습니다. 그래서 오늘부터는 강화 학습에 대해 차분히 정리를 해보도록 하겠습니다.

 

 저는 '파이썬과 케라스로 배우는 강화 학습'이라는 책을 읽으면서 독학을 하였습니다. 이 글은 이 책을 참고하여 제작합니다.(광고 아닙니다!!)

 

1. 몬테카를로 근사(Monte-Carlo Approximation) 

 어떠한 문제를 확률적으로 접근하자는 개념으로 기존의 전통 모델인 정확한 모델에 근거하지 않고 샘플을 채취해 모델의 결괏값을 근사적 예측하는 방법입니다. 예를 들어 아래와 같이 1/4원이 있고 이 부분의 넓이를 구하고자 할 때 전통적인 방법으로는 (1/4)*pi*r^2이라는 수식을 통해 구하지만, 몬테카를로 근사를 이용하면 보시다시피 무작위로 점을 찍어 그 점이 찍힌 비율로 해당 부분의 넓이를 계산합니다. 

 

몬테카를로 근사

 

 

위 식은 몬테카를로 근사를 나타내는 식입니다. 여기서 'I'는 점이 원 안에 들어가면 '1', 아니면 '0'을 반환하는 함수 입니다. 이는 샘플링 숫자 n이 무한대로 가면 샘플링 값의 평균이 원해의 값과 동일 해지는 것을 보여줍니다. 

 그러면 이러한 몬테카를로 근사를 왜 사용할까요?? 위와 같이 원의 넓이를 구하는 문제는 간단하기 때문에 일반적인 수학공식을 사용하는 것이 유리하지만 아래 우리나라 지도와 같이 복잡한 도형의 넓이를 구할때는 수학적 모델을 만드는 것이 거의 불가능하거나 비효율적이기 때문에 효율적인 몬테카를로 근사를 사용하는 것입니다.

 

 

 자 그러면 이제 이러한 몬테카를로 근사를 가치함수에 적용해 보겠습니다. 가치 함수를 추정할 때는 에이전트가 한 번 환경에서 에피소드를 진행하는 것이 샘플링입니다. 이 샘플링을 통해 얻은 샘플의 평균으로 참 가치 함수의 값을 추정합니다. 우리는 여기서 반환값 G를 샘플링하는 데 식은 아래와 같습니다. 

반환값의 평균으로 가치함수를 추정
몬테카를로 예측에서 가치함수의 업데이트 식

맨 위의 식을 가공하면 바로 위의 식이 되는데 여기서 G(s) - V(s)는 오차를, 1/n은 스텝사이즈를 의미합니다. 그런데 스텝 사이즈가 꼭 1/n일 필요가 있을까요? 물론 상황에 따라 달라질 수 있습니다. 따라서 아래 식처럼 변환이 가능합니다. 이때 G(s)를 '업데이트 목표', alpha(G(s) - V(s))를 '업데이트 크기'라고 합니다. 

 

2. 시간차 예측(Temporal-Difference Approximation)

 위에서 알아보았던 몬테카를로의 단점은 실시간이 아니라는 점입니다. 가치 함수를 업데이트하기 위해서는 에피소드가 끝날 때까지 기다려야 합니다. 이는 에피소드가 길거나 끝이 없으면 예측에 적합하지 않습니다. 이를 해결하기 위해 에피소드마다가 아닌 타임 스텝마다 가치 함수를 업데이트하는 방법이 시간차 예측입니다. 수식으로 나타내면 아래와 같습니다. 여기서 R+gammaV = 업데이트의 목표, alpha(R+gammaV-V) = 업데이트의 크기, R+gammaV-V = 시간차 에러 라고 합니다. 

 

  지금 까지 저희는 몬테카를로 예측(Monte-Carlo Prediction)에 대해 알아보았습니다. 도움이 되셨나요? 만약 되셨다면 구독 및 좋아요로 표현해 주시면 정말 많은 힘이 됩니다. 궁금한 사항 혹은 앞으로 다루어 주었으면 좋을 주제가 있으시면 댓글 남겨주시면 감사하겠습니다. 저는 '코딩 오페라'의 'Master.M'이었습니다. 감사합니다.

반응형