본문 바로가기
프로젝트/강화학습1

시작 전 훑어보기: 뭘 해야하나?

by soypablo 2023. 4. 1.

목표는 정했는데, 아직 아는 게 하나도 없다. 따라서, 오늘은 뭘 해야 하는지 좀 더 세밀하게 생각해 보자.

그리고 이런 걸 기가 막히게 도와주는 친구가 있다.

 

요약하면, 게임을 강화학습으로 학습하기 위해서는 게임 환경 구현, 상태 정의, 보상 함수 정의, 강화학습 알고리즘 선택, 데이터 수집, 학습과 평가 총 6가지가 존재한다.

 

그럼 우선적으로 게임 환경 구현 은 어떻게 해야 하는지 찾아보자.

 

두 가지 방법이 있는데, 게임 코드를 직접 구현하는 것과 게임 인터페이스를 사용하는 것 두 가지가 존재한다.

 

일단 게임자체를 구현하는 것도 문제지만, 가장 문제가 되는 것은 속도이다. 강화학습은 학습과정에서 수많은 시뮬레이션 과정이 동반되기 때문에, 게임진행속도가 빨라야 매우 유리하다.

 

관련 정보를 찾기 위해, 검색해 본 결과 쿠키런으로 유명한 데브시스터즈에서 강화학습을 시도한 글을 찾을 수 있었다.

https://tech.devsisters.com/posts/crp-puzzle-bot/

 

강화학습으로 더 재미있는 게임 만들기

플레이 테스트 및 밸런싱 자동화 그리고 업데이트 방향성 설정까지, 강화학습을 통해 보다 재미있는 게임을 만들어나간 과정을 이야기해봅니다.

tech.devsisters.com

 

이 글을 보면, 원래 unity환경에서 구현된 게임을 cython으로 구현하여 속도를 10배 이상 단축시킨 것을 알 수 있었다.

 

Slay the Spire는 자바기반의 게임이지만, 여러 그래픽적 요소나, 인터페이스, 사운드등에서 사용하는 리소스, 자체적으로 게임속도가 정해져 있는 문제등이 있어 스팀에 있는 게임 자체를 학습용으로 사용하는 것은 데브시스터즈의 경우와 마찬가지로 시간낭비가 클 것으로 보인다.

 

따라서 일단 Python을 기반으로 작성하되, 너무 속도가 느리면 Pypi나 Cython 등의 라이브러리를 사용하여 속도를 올려야 할 것 같다.

 

일단 게임 구현은 python으로 한다고 가정하고, 게임을 구현하기는 하는데 그 이후의 과정을 모르겠다. 게임을 구현한 뒤 이 게임을 강화학습이 가능한 환경으로 설정해줘야 하는데, 처음이어서 잘 모르겠어서 챗지피티에게 다시 한번 물어봤다.

OpenAI Gym을 사용하여 환경을 구현하면 된다고 한다.(지금은 OpenAI에서 관리하지는 않고 다른 데서 관리하는 라이브러리다.)

 그래서 다시 한번 OpenAI Gym에 대해 질문했다.

요약하면, OpenAI Gym은 다양한 게임 및 시뮬레이션 환경을 제공하기도 하지만, 새로운 게임에 대하여 환경을 구현하는 것 또한 제공한다고 한다. 따라서 일단은 OpenAI Gym을 기반으로 환경을 만드는 것으로 생각하고 진행하면 될 것 같다.


오늘의 요약

1. 게임을 강화학습으로 학습하기 위해서는 게임 환경 구현, 상태 정의, 보상 함수 정의, 강화학습 알고리즘 선택, 데이터 수집, 학습과 평가 총 6단계가 존재한다.

2. 게임 환경 구현을 위해서는 소스코드를 구현하고, 강화학습에 필요한 환경을 설정해주어야 한다. 이 과정에서 python, Openai Gym이 필요하다.

3. 필요하면 cython을 공부해서 적용해 보자.

 

오늘의 TMI: 최근 5kg을 감량했다. 근데 5kg가 쪄서 시작한 거라 그대로다.