728x90
1. OpenAI Gym 설치
강화학습에 필요한 Gym을 pip으로 설치한다.
pip install gym
2.기본 프로젝트 생성
2-1. 환경 설정
OpenAI Gym에는 다양한 환경들이 제공한다.
각 환경은 강화 학습 에이전트가 실험하고 훈련할 수 있는 다양한 문제를 제공한다.
자신만의 환경을 만들때는 gym.Env 클래스를 상속받아 새로운 환경을 정의하는 방법으로 한다.
# 환경 만들기
env = gym.make('환경이름')
#카트 위에 막대기를 세우고 균형을 맞추는 문제.
env = gym.make('CartPole-v1') # CartPole 환경 생성
num_episodes = 2000 # 학습할 에피소드 수
rList = [] #보상 기록리스트
3. 학습
for i in range(num_episodes):
# 2. 환경 초기화
print(i ,"번째")
state = env.reset() # 초기 상태를 설정하고 반환
rAll = 0 # 에피소드 내 보상 합 초기화
done = False # 환경 종료 여부 초기화
while not done:
# 3. 환경을 렌더링 (시각적으로 표시)
env.render()
# 4. 행동 선택: 무작위로 선택하거나 정책 기반으로 선택
action = env.action_space.sample() # 환경에서 가능한 행동 중 하나를 무작위로 선택
# 5. 선택된 행동을 환경에 적용
# - state: 현재 상태
# - action: 수행할 행동
# - reward: 주어진 보상
# - done: 에피소드 종료 여부 (True/False)
# - info: 추가적인 정보
next_state, reward, done, info = env.step(action)
# 6. 총 보상 업데이트
rAll += reward
# 7. 각 에피소드의 총 보상을 rList에 저장
rList.append(rAll)
3-1.환경 초기화
reset() 메서드는 환경을 초기 상태로 설정하고, 에이전트가 시작할 때의 상태를 반환한다.
매번 새로운 에피소드를 시작할 때 호출한다.
state = env.reset() # 초기 상태를 설정하고 반환
rAll = 0 # 에피소드 내 보상 합 초기화
done = False # 환경 종료 여부 초기화
3-2.화면에 랜더링
시각적으로 진행과정을 본다.
env.render()
3-3.동작 선택
동작을 선택하는 부분이다. 여기서는 무작위로 선택한다.
# 4. 행동 선택: 무작위로 선택하거나 정책 기반으로 선택
action = env.action_space.sample() # 환경에서 가능한 행동 중 하나를 무작위로 선택
3-4.동작을 환경에 적용
동작을 env.step(action)을 통해 행동을 취한다.
# 5. 선택된 행동을 환경에 적용
# - state: 현재 상태
# - action: 수행할 행동
# - reward: 주어진 보상
# - done: 에피소드 종료 여부 (True/False)
# - info: 추가적인 정보
next_state, reward, done, info = env.step(action)
3-5.보상 리스트 적용
끝나고 시각화로 보상을 보기위해 리스트에 적용해둔다.
# 6. 총 보상 업데이트
rAll += reward
# 7. 각 에피소드의 총 보상을 rList에 저장
rList.append(rAll)
3-6.보상 시각화
환경을 닫고 저장한 보상 리스트들을 matplotlib을 통해 시각화해본다.
(여기선 정책이 무작위 동작선택이므로 의미있는 결과는 얻을수없다.)
# 8. 환경 닫기
env.close() # 환경 종료 시, 리소스를 반환하고 종료
# 9. 보상 시각화
plt.plot(rList) # 각 에피소드의 총 보상을 그래프에 표시
plt.xlabel('Episode') # x축: 에피소드
plt.ylabel('Total Reward') # y축: 총 보상
plt.title('Learning Progress (CartPole-v1)') # 그래프 제목
plt.show() # 그래프 출력
728x90
'AI' 카테고리의 다른 글
[강화학습] 정책(Policy),가치 함수 (0) | 2025.01.24 |
---|---|
[강화학습] 강화학습(Reinforcement Learning, RL) (0) | 2025.01.24 |
[OpenCV] 영상 캡쳐,녹화 (0) | 2025.01.18 |