학교 캡스톤 프로젝트로 처음엔 가볍게 보고 시작했는데 3, 4, 5월 내내 고통받고 드디어 좀 결과를 냈습니다.
본래 목표는 Super Hexagon이었는데 예상한 만큼의 성과가 나오질 않아 가볍게 Snake부터 시작하게 되었네요.
예전 도스 시절의 고전게임 스네이크 기억하시는 분들 많으실 겁니다. 빨간 사과를 먹으면 뱀의 몸통이 한 칸씩 늘어나고 맵 바깥으로 벗어나거나 자신의 몸통을 먹으면 죽는 게임이었죠.
학습이 쉽게 될 거란 보장은 없었고 에이전트 프로그램이 취하는 행동의 가짓수도 무려 4개나 되어 잘 될지 걱정 많이 했는데 그래도 결과물에선 초반과 후반의 차이가 좀 나는 편이네요.
팀 레트로는 저희 캡스톤 팀 이름입니다. 원래는 레트로 스타일의 게임을 만들까 고민하다가 고전 게임을 이용한 딥 러닝으로 결정하곤 3개월 내내 고통받게 되었네요.
Google DeepMind의 Atari 학습처럼 프로그램이 받는 정보는 오직 게임 화면 뿐이고 자신이 행할 수 있는 행동은 상 하 좌 우 이동 단 4개뿐입니다. 그리고 에이전트 프로그램이 뱀을 움직였으면 Snake 게임에서 점수를 얻었는지 잃었는지 에이전트 프로그램으로 피드백 해주게 됩니다. 그리고 이 보상 정보와 화면 정보를 가지고 다음 행동을 취하기 위해 자신의 뉴럴 네트워크를 학습하게 됩니다. (강화 학습)
게임 화면을 처리하기 위해 이미지 처리로 요즘 핫하게 뜨고있는 Convolutional Neural Network를 사용했고, 구현은 Google의 Tensorflow로 하였습니다. Cuda 가속을 지원해서 GTX 1070이 고생 많이 했네요.
좀 더 깊게 파고들고 싶은데 학기제 프로젝트라 시간이 없어서 여기서 네트워크만 좀 튜닝하는 방향으로 마무리 지어야 할 것 같습니다. 너무 고생을 많이 했네요...ㅠㅠ