카트폴(Cartpole)

 

카트폴

OpenAI에서는 강화학습을 쉽게 실습할 수 있도록 다양한 환경과 예제를 제공하고 있으며, 그 중 대표적인 환경 중 하나가 바로카트폴(CartPole)’이다. 이번에는 이 카트폴 환경을 활용해 DQN 알고리즘으로 직접 구현해보도록 하자.

카트폴은 막대가 달린 수레를 좌우로 움직이며 막대가 바닥으로 쓰러지지 않도록 중심을 유지하는 게임이다. 막대는 수레 위에 세워져 있지만 고정되어 있지는 않기 때문에 좌우로 쉽게 기울어진다. 어릴 적 손바닥 위에 막대를 세워 놓고, 균형을 잡기 위해 손을 이리저리 움직이던 놀이를 떠올리면 이해가 쉽다. 다만 손바닥이 아니라 수레를 움직인다는 점이 다르다.

이 환경에서 에이전트가 취할 수 있는 행동은 두 가지뿐이다. 하나는 수레를 왼쪽으로 움직이는 것이고, 다른 하나는 오른쪽으로 움직이는 것이다. 에이전트는 이 두 가지 행동 중 하나를 선택해 막대가 쓰러지지 않도록 수레를 제어해야 한다.

강화학습에서상태(state)’란 에이전트가 인식하는 환경의 정보, 즉 의사결정을 위해 입력으로 사용하는 값들을 말한다. 카트폴 환경에서 에이전트가 관찰할 수 있는 상태는 총 네 가지 정보로 이루어져 있다. 수레의 위치(x), 수레의 속도(F), 막대의 각도(θ), 그리고 막대의 각속도(ω)이다. 이 네 가지 값은 막대가 기울어지는 방향과 속도, 수레의 움직임을 모두 반영하고 있기 때문에, 에이전트가 적절한 행동을 선택하는 데 필요한 핵심 정보가 된다.

결국 에이전트는 이 네 가지 숫자를 기반으로 지금 막대가 어떤 상태에 있는지를 파악하고, 막대가 쓰러지지 않도록 왼쪽 또는 오른쪽으로 수레를 움직여야 한다. 이러한 과정을 통해 강화학습은 환경과 상호작용하며 점점 더 똑똑한 에이전트로 발전하게 된다.

댓글 쓰기

Please Select Embedded Mode To Show The Comment System.*

다음 이전