///
Search

오목의 달인

팀장
팀원
분야
Reinforcement Learning
발표자료
오목의 달인_Conference_24_2_1.pptx
오목의 달인_Conference_24_2_1.pdf

오목의 달인

2024년 2학기 AIKU 활동으로 진행한 프로젝트입니다

소개

복잡한 규칙과 방대한 경우의 수를 가진 게임에 있어 AI가 고성능 하드웨어와 오랜 시간을 필요로 한다는 한계점을 개선하기 위해 진행된 프로젝트입니다.
[알파제로(AlphaZero)의 강화학습 기법을 활용한 오목 AI ]
기보 데이터와 self-play를 결합한 효율적인 학습 진행
MCTS 병렬화 기법을 도입해 탐색 속도 개선
렌주룰을 적용해 실제 오목 대국과 비슷한 환경 구현
콘솔을 통해 ai와 실제 플레이 가능

방법론

1.
알파고, 알파제로 참고
알파고: MCTS 기반으로 작동합니다. Policy Network로 탐색 범위를 줄이고, Value Network로 가치를 평가하여 효율적으로 경우의 수를 탐색
알파제로: Policy Network과 Value Network을 하나의 네트워크로 통합
2.
게임 규칙과 코드 구현
참고한 프로젝트의 경우 connect4로 구현되어 있어 오목 룰을 구현을 새로 구현
기존 코드가 구버전 텐서플로우로 되어 있어 이를 torch로 포팅
3.
병렬화(Parallelization)
MCTS의 탐색 횟수가 기하급수적으로 증가하는 문제를 해결하기 위해 스레드를 활용해 병렬 탐색 진행
4.
데이터 준비 및 학습
약 10만 개의 오목 대회 기보를 여러 조건에 따라 필터링하여 학습 데이터로 사용
이 데이터를 통해 초기 모델을 학습시킨 후, self-play를 통해 추가적인 학습을 진행

환경 설정

pip install -r requirements.txt
Plain Text
복사

사용 방법

1.
학습
python3 main1_fromdata.py
Plain Text
복사
1.
오목 게임 플레이
python3 tmp_userplay.py
Plain Text
복사

예시 결과

(영상으로 대체)

팀원

문승기: 문제정의, 데이터셋 수집, 코드 작성
윤혜원: 코드 작성, 데모 개발
임주원: 코드 작성, 데모 개발
문정민: 코드 작성, 데이터 전처리
신동현: 코드 작성, 데이터 전처리