개발 창고/AI

강화학습 쉽게 시작하기: OpenAI Gym으로 첫 AI 에이전트 만들기

로이제로 2025. 7. 9. 22:00
반응형

강화학습 쉽게 시작하기: OpenAI Gym으로 첫 AI 에이전트 만들기

AI가 스스로 배우고, 시행착오를 거치며 점점 더 똑똑해진다면 어떨까요? 강화학습(Reinforcement Learning)은 바로 그런 학습 방식입니다. 사람이 말로 알려주지 않아도, 경험을 통해 배우는 인공지능이죠.

이 글에서는 초보자도 이해할 수 있도록, OpenAI에서 제공하는 Gym이라는 도구를 이용해 직접 AI 에이전트를 만들어보는 과정을 안내합니다. 단순한 예제로 시작해, 나중에는 게임을 스스로 클리어하는 AI를 만드는 기반이 될 수 있습니다.


1. 강화학습이란? 쉽게 설명하기

강화학습은 컴퓨터가 **보상(reward)**을 최대화하는 방향으로 학습하는 방식입니다. 이 개념은 현실에서도 흔히 볼 수 있습니다.

예시:

아이가 자전거를 배울 때

  • 넘어지면 아프니까 (부정적인 보상)
  • 넘어지지 않고 달리면 칭찬을 받거나 재미있으니까 (긍정적인 보상)
    점점 잘 타게 됩니다.

이와 똑같이, AI 에이전트도 보상을 주고받으며 행동을 개선합니다.

핵심 용어 정리:

용어 의미
Agent 학습 주체, 행동을 결정하는 존재
Environment 에이전트가 활동하는 공간
State 환경의 현재 상태 (예: 수레의 위치와 속도)
Action 에이전트가 취할 수 있는 행동
Reward 행동의 결과로 얻는 점수 (좋은 행동이면 +, 나쁜 행동이면 -)
Policy 어떤 상태에서 어떤 행동을 할지 결정하는 전략

2. OpenAI Gym이란?

OpenAI Gym은 다양한 시뮬레이션 환경을 제공하는 파이썬 라이브러리입니다. 다양한 게임 환경에서 에이전트가 실험을 통해 학습할 수 있도록 도와줍니다.

대표 환경 예시:

  • CartPole: 수레 위 막대 세우기
  • MountainCar: 언덕을 올라가는 자동차
  • LunarLander: 달 착륙선 착륙시키기
  • Atari: 옛날 아타리 게임들 (Breakout, Pong 등)

설치 방법

pip install gym

렌더링이 필요하다면?
화면에 시뮬레이션을 띄우려면 pygame 설치도 필요할 수 있습니다.

pip install pygame

3. CartPole으로 첫 에이전트 실습

강화학습 입문에서 가장 널리 사용되는 환경이 바로 CartPole-v1입니다. 이 환경은 다음과 같은 구조로 되어 있습니다:

  • 바닥에 수레(cart)가 있고, 그 위에 막대기(pole)가 세워져 있습니다.
  • 에이전트는 막대가 쓰러지지 않도록 수레를 좌우로 이동시켜야 합니다.

목표

  • 막대가 쓰러지지 않게 최대한 오래 버티기
  • 시간이 지날수록 더 많은 보상을 획득

최소 코드 예시

import gym

# 환경 생성
env = gym.make("CartPole-v1")
obs = env.reset()

# 1000번 반복하며 시뮬레이션 실행
for _ in range(1000):
    env.render()  # 화면에 출력
    action = env.action_space.sample()  # 가능한 행동 중 무작위 선택
    obs, reward, done, info = env.step(action)  # 한 스텝 실행

    if done:  # 막대가 쓰러졌다면
        obs = env.reset()  # 환경 초기화

env.close()

위 코드의 흐름 이해하기

  • env.reset(): 환경을 초기 상태로 설정
  • env.step(action): 행동을 취하고, 새로운 상태, 보상 등을 반환
  • env.render(): 시각적으로 화면에 보여주기
  • done: 에피소드 종료 여부 (막대가 쓰러지면 True)

이 에이전트는 아직은 학습을 하지 않은 상태로, 행동을 무작위로 선택합니다. 당연히 오래 버티기 어렵겠죠.


4. 강화학습은 어떻게 학습하는가?

강화학습은 “경험 → 판단 → 개선”의 반복입니다.

강화학습 루프

  1. 현재 상태(state)를 보고
  2. 행동(action)을 선택하고
  3. 보상(reward)을 받고
  4. 다음 상태로 이동하며
  5. 이 경험을 학습에 활용

이러한 루프를 수천, 수만 번 반복하면서 점점 더 보상을 많이 받을 수 있는 방향으로 학습하게 됩니다.


5. 더 똑똑한 에이전트를 만들기 위한 다음 단계

앞서 만든 에이전트는 행동을 랜덤하게 선택하지만, 실제 강화학습은 ‘정책(Policy)’이나 ‘가치(Value)’ 기반으로 학습합니다.

대표 알고리즘

  • Q-Learning: 각 상태-행동 쌍의 가치를 테이블로 저장
  • DQN (Deep Q-Network): 딥러닝을 활용한 Q-Learning 확장 버전
  • PPO, A3C, DDPG 등: 고급 알고리즘으로 성능 향상 가능

이 글에서는 다루지 않지만, 다음 글에서 Q-Learning 기반 CartPole 클리어 방법도 소개할 예정입니다.


6. 왜 OpenAI Gym으로 시작해야 할까?

강화학습을 처음 접할 때 OpenAI Gym은 여러 가지 이유로 이상적인 선택입니다.

이유 설명
다양한 환경 실생활 시뮬레이션부터 게임까지 다수의 환경 지원
단순한 API 파이썬 코드 몇 줄로 시뮬레이션 가능
커뮤니티 자료 튜토리얼과 오픈소스가 풍부
시각적 피드백 env.render()로 학습 과정을 눈으로 확인 가능

7. 정리 및 마무리

  • 강화학습은 보상 중심 학습으로, AI가 스스로 최선의 행동을 찾는다.
  • OpenAI Gym은 강화학습 입문에 매우 적합한 라이브러리이다.
  • CartPole 환경은 단순하면서도 학습 구조를 익히기에 최적이다.
  • 오늘 만든 에이전트는 아직 학습 전 단계이며, 이후 Q-Learning이나 DQN으로 개선이 가능하다.
반응형