본문 바로가기

RL/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입니다. 부연설명은 주석으로 대체하겠습니다.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.


마치며

다음 포스팅은 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