2021. 5. 17. 23:24ㆍArtificial_Intelligence/Reinforcement Learning
import gym
import time
env = gym.make('CartPole-v1') #강화학습 환경 불러오기
for i_episode in range(20):
# 새로운 에피소드(initial environment)를 불러온다(reset)
observation = env.reset()
for t in range(100):
env.render() #화면에 출력 / 행동 취하기 이전 환경에서 얻은 관찰값(obsevation)적용해서 그림
time.sleep(0.05)
# 행동(action)을 취하기 이전에 환경에 대해 얻은 관찰값(observation)
print('observation before action:')
print(observation)
action = env.action_space.sample()#임의의 action 선택
observation, reward, done, info = env.step(action)#선택한 action을 환경으로 보냄
time.sleep(0.05)
# 행동(action)을 취한 이후에 환경에 대해 얻은 관찰값(observation)
print('observation after action:')
print(observation)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
env.close()
Gym은 강화학습의 구현원리를 이해하고 간단히 실습할 수 있는 OpenAI의 라이브러리이다.
- A pole is attached by an un-actuated joint to a cart, which moves along
- a frictionless track. The pendulum starts upright, and the goal is to
- prevent it from falling over by increasing and reducing the cart's velocity.
- This environment corresponds to the version of the cart-pole problem
에피소드 종료 조건
- 막대기의 각도가 12도 이상 넘어갈때
- 카트 위치가 2.4보다 클때(카트 중앙이 디스플레이 끝으로 넘어갈때)
- 에피소드가 200보다 클때
- 평균 100회 연속 시행에서 195.0보다 크거나 같을때 해결된다 판단한다.
env.step 함수를 이용해서 에이전트가 환경(environment)에 대한 행동(action)을 취하면, 행동 이후에 획득한 환경에 대한 정보를 리턴(return)해주게 된다.
<CartPole환경에서 리턴해주는 값들>
observation : 환경에 대한 정보를 포함한 4-dimension vector로 각각 Cart Position(카트의 위치), Cart Velocity(카트의 속도), Pole Angle(막대기의 각도), Pole Velocity At Tip(막대기 끝의 속도)을 의미한다.
reward는 넘어지지 않을 경우 매 time마다 +1의 값을 갖는다.
done은 현재 에피소드(episode)가 끝났는지 끝나지 않았는지를 나타내는 boolean 값이다.
(막대기가 쓰러지거나 카트가 중앙에서 너무 멀리 이동하면 episode를 종료(terminate)한다.
CartPole 환경에서 Agent가 취할 수 있는 행동(action_space)은 0, 1 두개의 값이다.
0은 왼쪽으로 이동, 1은 오른쪽으로 이동을 뜻한다.
CartPole-v0은 한 에피소드에서 얻을 수 있는 최대보상은 200 step이다.
매 스탭마다 막대가 넘어지지 않으면 1의 보상을 받는데,
100 에피소드 연속으로 195이상의 보상(reward)를 획득하면 문제를 해결했다고 본다.
step 함수
선택한 action을 step함수로 보내면, 다음의 4가지 value를 return한다.
observation : 픽셀 데이터과 같은 관찰값
reward : 그 action을 하므로서 환경에서 받는 reward값
done : 에피소드가 terminal 되면 True( 목표를 달성했거나, 에이전트가 목숨을 잃었을때)
info : 환경의 정보들( 점수 등등 )
Agent는 각 time_step마다 action을 선택하며 Environment과 상호작용을 한다.
이때 Environment는 Agent로부터 action을 받고 reward와 observation을 return 한다.
'Artificial_Intelligence > Reinforcement Learning' 카테고리의 다른 글
[논문리뷰]Multi-DQN An ensemble of Deep Q-learning agents for stock market forecasting (0) | 2022.02.20 |
---|---|
Solve Titanic problem with Reinforcement Learning (0) | 2021.11.23 |
DQN, A3C (0) | 2021.11.23 |
Multi-Agent Reinforcement Learning (0) | 2021.11.23 |
Reinforcement learning (강화학습) (0) | 2021.03.19 |