
몬테카를로방법으로 이용하여 운전 정책을 찾아보려 한다.

파란색은 도로, 초록색이 목적지이며
도로의 맨 아랫부분의 랜덤한 위치에 노란색 차가 정지된 채 생성된다.
상하좌우에 대해 -1,0,1만큼 가속을 가할수 있으며(9가지 행동)
차는 x축과 y축에 대해 -3~3의 속도를 가질수 있다
도로를 벗어날시 출발부분에서 랜덤하게 정지된 채 재생성된다.
목표는 최대한 빠르게 목적지에 도착하는것이다.
(영상 링크)
https://www.youtube.com/watch?v=IzKD1Al7ZGQ
학습을 조금 시켰을때의 모습과, 많이 시켰을때 모습의 영상이다.
학습을 조금 시켰을때는 특정 시작점이 나올때까지 밖을 나가는 모습을 보이며 속도도 느리다.
학습을 더 시키자 개선이 된 모습을 볼 수 있다.
이론상 무한번 반복하여 학습시 최적정책에 도달하게 된다.
시작점이 6개이며 6개의 고정된 길로만 가게 된다는 점이 아쉬운 부분이다.
따라서 매 시간마다 특정확률로 -1~1의 랜덤한 가속을 부여하게 된다면 robust한(?) 운전정책을 찾을수 있을것이다.
위 랜덤가속 조건을 적용해서 학습을 시킨다면, 최대한 중앙으로 가는 효과와,
같은출발위치 -> 같은 경로의 양상이 사라지게 될 것으로 예상된다.
방법
몬테카를로 방법은 환경 동역학 p(s',r|s,a)를 모를때도 사용할수 있다.
간단히 설명하자면 정책π를 반복해서 실행시켜서 여러 경험을 쌓고,
이를 기반으로 가치함수 q를 근사, q에 대해 탐욕적(greedy)이도록 함으로써 정책 향상을 하는 방법이다.
더 자세히 들어가면 이 방법의 문제점을 찾을수 있다.
π를 반복해서 실행시킬 시 모든 상태, 행동쌍을 경험하지 못할수도 있다는 점이다.
모든 상태, 행동쌍에 대해 가치를 계산해야만 정책 향상 정리에 따라 정책을 향상시킬수 있다.
이를 해결하는 방법으로 모든 상태, 행동쌍에 대해 0이 아닌확률로 시작하도록 하는것이며 이를 시작탐험의 가정이라고 한다.
(깃허브 링크)
https://github.com/nrye4286/reinforcementLearning/blob/main/montecarlo_racing.ipynb
모두 실행 누르기만 하면 된다. (약 30분 걸림)
(환경에 대한 모델 p(s',r|s,a)을 알고있기 때문에 DP방법을 이용하면 더 간단하게 코딩이 가능하다)