알파고(AlphaGo)와 알파고 제로(AlphaGo Zero)의 방법론을 모방하여 오목 인공지능(AI)을 구현하는 프로젝트입니다.
아래 유사 프로젝트들의 소스코드를 적극 활용하였습니다.
실행 과정은 학습(train)과 플레이(play) 두 과정으로 구분됩니다.
- 학습(train)
- 딥러닝을 활용한 학습을 반복하여 모델(model)을 생성합니다.
- 과정 생략 가능. (model 폴더에 이미 학습된 가중치가 저장되어 있음)
- 플레이(play)
- 플레이어(사람)은 학습된 모델을 기반으로 하는 AI(인공지능)와 오목을 플레이할 수 있습니다.
- 오목 인공지능은 9x9 환경에서 동작합니다.
- ⭐플레이 하는 방법⭐
- play.ipynb에서 "Open in Colab" 버튼을 통해 Google Colab 환경에서 플레이할 수 있습니다.
- 입력 예시
사용한 주요 방법론은 다음과 같이 3가지입니다.
- 정책망(Policy Network)
- 알파고(AlphaGo)에서 사용된 방법론으로, 현재 오목판의 상태(state)를 입력받아 각 위치에 대한 기댓값을 계산합니다.
- 기댓값이 크다는 것은 자신 또는 상대가 착수하기 좋은 위치를 의미합니다.
- 자가 대국(self-play)을 통한 학습
- 알파고 제로(AlphaGo Zero)에서 사용된 방법론으로, 자가 대국을 통해서 생성한 플레이 데이터만을 사용하여 정책망을 학습합니다.
- 인간의 플레이 데이터를 전혀 사용하지 않았음에도, 알파고 제로는 알파고보다 뛰어난 성능을 보여주었습니다.
- MCTS(Monte Carlo Tree Search : 몬테카를로 트리 탐색) 알고리즘
- 알파고와 알파고 제로에서 사용된 방법론으로, 다양한 경우의 수를 탐색하여 최종적으로 착수 위치를 결정합니다.
파일명 | 구분 | 설명 |
---|---|---|
game.py | 공통 | 오목 게임의 규칙을 정의합니다. |
renju_rule.py | 공통 | 렌주룰의 규칙을 정의합니다. |
mcts_alphaZero.py | 공통 | MCTS 알고리즘을 정의합니다. |
train.py | 학습 | 정책망의 학습 과정을 반복 진행합니다. 100번 반복할 때마다 모델을 파일 형태로 저장합니다. |
policy_value_net.py | 학습 | 정책망의 구조를 정의합니다. Theano 라이브러리를 사용합니다. |
human_play.py | 플레이 | 사람과 AI의 대결을 실행합니다. |
policy_value_net_numpy.py | 플레이 | 저장된 모델 파일을 불러옵니다. numpy 라이브러리를 사용합니다. |
- 정책망의 학습 횟수가 증가한다고 해서, 성능이 선형적으로 증가하지는 않음.
- 15x15 환경에서는 학습에 소요되는 시간이 매우 큼. 그리고 학습에 소요된 시간에 비해 성능이 기대에 못 미침.
전체적인 배경을 파악하는데 유용합니다.
이론적으로 참고한 자료들입니다.