본문 바로가기

Reinforcement Learning/Practice

[Part 3] Model-based RL

포스팅에 앞서 Reference의 contents를 review하는 글임을 밝힙니다.


이번 포스팅에서는 강화학습 중에서도 model-based한 방법에 대해 알아보겠습니다. Part_2에서는 Cart-Pole problem에 대해 policy gradient agent를 설계했습니다. 우리는 지금까지 실제 env.과 상호작용을 하며 model을 받아와서 사용했습니다. 하지만, 현실의 문제는 이렇게 편리하게 env.이 갖춰져있지 않습니다. 따라서, 이를 modeling하는 방법이 필요하고 그 방법이 model-based RL입니다. Cart-pole 예제를 통해서 model-based RL은 env.의 model을 학습하면서 동시에 policy gradient 방법으로 최대 reward를 얻기 위해 어떤 policy를 취해야하는지도 학습하도록 해보겠습니다.



Model Network

 Cart-pole 문제에서는 현재의 state, S = [x, θ, dx/dt, dθ/dt]에서 action을 취하면 pole의 다음 state, S' = [x', θ', dx'/dt, dθ'/dt]를 predict하는 것을 modeling해볼 수 있습니다. 이렇게 env.을 modeling함으로써, 실제 env.을 사용하지 않고도 modeling된 env.을 이용하여 실제 env.을 이용한 것처럼 학습할 수 있습니다.

 

 Model을 아래와 같은 network 구조로 학습하게 됩니다.


<Fig 1. Model Network>


Input으로는 4가지의 state와 action에 대한 정보까지 5개의 data를 받습니다. 그리고 2개의 hidden layer를 각각 거치며 weight을 학습하게되고 최종적으로 layer2를 거쳐 형성된 weight은 wO, wR, wD 세 가지 입니다. 우리가 환경에서 필요한 model은 3가지로, 다음 state에 대한 정보(Observation, O) 그리고 reward(R), episode의 종료 여부(D)입니다. 각각은 4, 1, 1차원이 필요하므로 layer2의 차원이 256이기 때문에 wO, wR, wD의 차원은 각각 [256, 4], [256, 1], [256, 1]이 됩니다. 


 episode를 100회까지 진행하면서 실제 env.과 상호작용하면서 model을 학습하고 이후 episode부터는 modeling된 env.과 상호작용하며 policy gradient를 학습합니다. policy gradient부분은 Part_2와 같습니다. 아래는 이를 구현한 code입니다. 부연설명은 주석으로 대체하겠습니다.


마치며

다음 포스팅은 Part.4 Deep Q-Networks and Beyond에 대해 포스팅하겠습니다. 

오탈자나 잘못 언급된 부분이 있으면 댓글로 지적해 주세요 :)

Reference

[1] https://medium.com/@awjuliani/simple-reinforcement-learning-with-tensorflow-part-3-model-based-rl-9a6fe0cce99


[2] http://ishuca.tistory.com/395?category=730862