[RL] Playing Atari with Deep Reinforcement Learning 실행 방법

2024. 9. 19. 15:43·Reinforcement Learning

Atari가 무엇일까? Atari는 비디오 게임 회사이다.

그럼 어떻게 강화학습 [Reinforcement Learning]에 Atari가 도입되게 되었을 까?
2013년 구글 Deepmind에서 발표한 Playing Atari with Deep Reinforcement Learning 이라는 논문이 등장하면서 시작되었다. 이 논문을 통해 보이고자 한 것은 Breakout (a.k.a 벽돌깨기) 게임을 강화학습을 통해 학습을 시켜서 인공지능이 스스로 벽돌을 깨부수는 것을 확인하고자 함이였다. 특히나 이 모델의 경우 Deep 이라는 단어에서 알 수 있듯이 딥러닝을 강화학습에 적용시킨 모델이다. DQN이라고 불리는데, 강화학습 중 하나인 Q-Learning에 Deep Learning을 접목시켜서 더 효율적인 학습이 가능하도록 하기 위함이였다.

이 글을 통해 Atari를 활용하여 강화학습을 할 수 있는 경험이 되었음 좋겠어서 글을 쓰게 되었다. 이 글은 논문 리뷰는 아니고 강화학습을 하기 위한 튜토리얼의 느낌이니 참고바란다.

실행 방법

1. Anaconda 환경 설정

conda create -n atari_test python=3.6

이 문장을 conda prompt에 입력을 하게 되면 atari_test라는 이름을 가진 가상 환경에 python 3.6 버전을 설치하게 된다. 본인의 경우 밑에 표를 보면 python 3.6.13 버전이 설치된 것을 확인할 수 있었다.

2. conda 활성화

3. 필수 라이브러리 설치


여기서 부터는 강화학습을 진행하기 위한 필수 라이브러리들을 설치해야 한다.

conda install pytorch torchvision, torchaudio cudatoolkit=10.2 -c pytorch

딥러닝도 사용하기 때문에 pytorch도 설치를 해야한다. 여기서 cudatoolkit=10.2의 경우는 GPU를 사용하지 않으면 cpuonly-c로 바꾸면 된다.

4. gym, stable baseline3, atari_py, opencv 설치


강화학습 모델 라이브러리 중에 stable baseline3가 있다. 이것 또한 설치를 하면 된다.
https://stable-baselines3.readthedocs.io/en/master/index.html
위의 경로로 들어가면 설치 방법과 예제, 알고리즘 등 다양한 정보를 얻을 수 있으니 참고하면 된다.

conda install -c conda-forge gym

conda install -c conda-forge stable-baselines3

conda install -c conda-forge atari_py

conda install -c conda-forge opencv

위의 4개의 코드를 각각 실행하면 준비가 완료 된다.
다만, 설치에 시간이 좀 걸릴 수 있다.

5. atari 설치

기껏 강화학습에 관련된 라이브러리를 설치해놓고 atari를 설치안하면 아무것도 할 수가 없다. atari를 설치 해야하는데 설치방법은 간단하다.
https://www.atarimania.com/rom_collection_archive_atari_2600_roms.html
이 경로로 들어가면 다음과 같은 창이 뜬다.


여기서 밑에 있는 Download V19.0을 클릭하면 압축파일이 다운로드 된다. 다운로드 후 압축해제를 하고 그 폴더 자체를 원하는 위치로 옮겨서 경로복사를 해놓는다. (나중에 쓸일이 있다)


압축 해제를 하면 HC ROMS와 ROMS 2개의 폴더가 보이는데 이 폴더가 만약 압축되어있다면 이 역시 압축 해제를 한다. ROMS 폴더에 들어가면 위의 이미지와 같은 내용들이 들어있는데, 뭔진 모르겠지만 눈치껏 파일의 이름을 보면 atari사에서 만든 게임들인 것을 눈치챌 수 있다.

6. atari 파일 불러오기

이젠 모든 준비가 끝났다. 지금부터는 conda 환경으로 아까 설치한 atari game들을 불러와서 강화학습을 돌리기만 하면 된다.

python -m atari_py.import_roms <파일 경로>

아까 뒤에서 쓰기 때문에 경로복사 하라고 했던 그 경로를 파일 경로 이 부분에 집어 넣고 실행하면 아래와 같은 화면이 뜬다.


되게 이상해 보이지만, copy를 계속하고 있는것으로 보아 conda 환경으로 복사하고 있다는 것을 알 수 있다.

7. python 파일 생성


이 부분은 필수는 아니지만, 뒤죽박죽 파일이 섞여있는 꼴을 보기가 싫어서 mkdir로 새로운 폴더를 만들어서 실행할 파일을 이 디렉토리에 저장을 했다.
그 다음 이 디렉토리로 들어가서 아무 이름의 python 파일을 생성한 뒤, 아래의 코드를 복붙하고 저장하면 된다.

from stable_baselines3.common.env_util import make_atari_env
from stable_baselines3.common.vec_env import VecFrameStack
from stable_baselines3 import A2C

# There already exists an environment generator
# that will make and wrap atari environments correctly.
# Here we are also multi-worker training (n_envs=4 => 4 environments)
env = make_atari_env('Breakout-v0', n_envs=4, seed=0) // Breakout 게임을 불러옴
# Frame-stacking with 4 frames
env = VecFrameStack(env, n_stack=4)

model = A2C('CnnPolicy', env, verbose=1)
model.learn(total_timesteps=100000) // 10만번 학습 실행

obs = env.reset()
while True:
    action, _states = model.predict(obs)
    obs, rewards, dones, info = env.step(action)
    env.render()

8. python 파일 실행

만든 python 파일을 실행시키면 다음과 같은 화면이 뜬다.


자세히 보면 mean값은 증가하고 loss 값은 감소하고 있다. 이를 통해 제대로 학습이 되고 있는 것을 알 수 있다.
Training이 다 끝나고 나면 자동으로 게임이 실행되어 강화학습이 진행중인 화면이 뜬다.

9. 참고용 동영상

https://youtu.be/V1eYniJ0Rnk

결론

재미있다ㅎㅎ

'Reinforcement Learning' 카테고리의 다른 글

[논문] Deep Reinforcement Learning with Double Q-learning [a.k.a DDQN]  (1) 2024.09.20
'Reinforcement Learning' 카테고리의 다른 글
  • [논문] Deep Reinforcement Learning with Double Q-learning [a.k.a DDQN]
HJo0on
HJo0on
Hyunjoon
  • HJo0on
    Visionery
    HJo0on
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • Baekjoon (17)
      • OpenCV (9)
      • Paper Review (20)
        • Baseline (4)
        • 3D Human Reconstruction (7)
        • 3D Gaussian Splatting (1)
        • Neural Radiance Field (1)
        • Music-to-Dance (6)
        • Video Generation (1)
      • Pose Estimation (3)
      • Object Detection (2)
      • Segmentation (3)
      • ETC (1)
      • Reinforcement Learning (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Velog
    • Github
  • 공지사항

  • 인기 글

  • 태그

    grounding dino
    3d vision
    novel-view synthesis
    computer vision
    PAPER
    Dino
    pose estimation
    3dgs
    Deep learning
    segmentation
    BFS
    mesh
    pifu
    Human pose estimation
    opencv
    Python
    DP
    BAEKJOON
    graph
    reinforcement learning
    Diffusion
    6DOF
    math
    티스토리챌린지
    sam
    3d human reconstruction
    오블완
    object detection
    C++
    music-to-dance
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
HJo0on
[RL] Playing Atari with Deep Reinforcement Learning 실행 방법
상단으로

티스토리툴바