공간 (Spaces)

이전의 예제에서 CartPole 게임 환경에서 주어지는 행동 공간 (action space)에서 임의의 행동을 선택했습니다. 모든 환경은 action_space와 observation_space를 가집니다.

이러한 속성들은 공간의 한 유형이며, 유효한 행동과 관찰의 형식을 보여줍니다.


예제1 - 행동, 관찰 공간

import gym

env = gym.make('CartPole-v0')
print(env.action_space)
print(env.observation_space)
Discrete(2)
Box(4,)

Discrete 은 고정된 범위의 음이 아닌 숫자를 허용하는 공간입니다. 따라서 이 경우에서 유효한 행동은 0 또는 1이 됩니다.

Box 는 n-차원의 박스를 나타내며, 유효한 관찰값은 4개의 숫자의 어레이가 됩니다. Box 의 범위를 확인해보면,

print(env.observation_space.high)
print(env.observation_space.low)
[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]
[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]

예를 들어, 카트의 위치는 -4.8에서 4.8의 범위에서

막대기의 각도는 약 -0.419에서 +0.419의 범위에서 움직일 수 있습니다.

이렇게 내부를 살펴보는 것은 다양한 환경에서 동작하는 일반적인 코드를 작성하는데 도움이 됩니다. BoxDiscrete 은 가장 흔한 공간의 한 종류입니다.


이 공간에서 샘플을 얻거나 또는 무언가가 이 공간에 포함되는 것인지 확인할 수 있습니다.

예제2 - 샘플 얻기, 확인하기

from gym import spaces

space = spaces.Discrete(8)      # 8개의 요소를 갖는 세트 {0, 1, 2, ..., 7}
x = space.sample()

print(space.contains(x))
print(space.n == 8)
True
True

CartPole-v0 게임에서, 하나의 행동은 왼쪽으로, 그리고 다른 하나의 행동은 오른쪽으로 힘을 가하도록 되어 있습니다.

우리의 학습 알고리즘이 더 좋을수록, 이러한 숫자들을 직접 이해하는 시도를 더 적게해도 될 것입니다.



이전글/다음글