나는 최근에 취미로 온라인 바둑을 두고 있다. 처음엔 COSUMI라는 바둑 웹사이트에서 인공지능과 주로 두기 시작했다. https://www.cosumi.net/ko/
바둑 ai는 보통 설치해서 로컬로 돌려야하는 경우가 많다. 아무래도 딥러닝 모델들이 대다수이기 때문에 좋은 성능의 gpu가 필요하지만 gpu 서버는 비용이 아주 비싸기 때문인 것 같다. 하지만 COSUMI라는 사이트는 설치할 필요가 없어서 좋았다. 오래된 사이트인 만큼 딥러닝으로 훈련된 건 아니고, 알파고 등장 이전의 바둑 프로그램들이 주로 사용한 몬테카를로 방법으로 훈련됐다고 한다. 그 중에서는 최고의 실력을 갖춘 프로그램이라는 것은 덤. Fuego라는 모델을 기반으로 만들어졌다는데 필요하면 볼 일이 있을 수도?
(참조 : https://fuego.sourceforge.net/)
아무튼 이걸로 ai랑 두면서 실력을 조금씩 키웠고, 사람이랑 두고 싶어서 바둑팝이라는 모바일 앱을 설치했다. (모바일로만 작동)
레이팅 시스템이 있어서 실력이 비슷한 사람들이 종종 있었고, 사활 게임이랑 자체 ai랑 겨루는 시스템도 있어서 아주 재밌게 플레이하고 있다.
아마 바둑 게임으로 국내에서 가장 유명하고 권위(?) 있는 게임은 타이젬일 것이다.
프로 기사들도 타이젬에서 바둑을 많이 둔다고 하며 재야의 실력자들이 많이 모여있는 곳이다.
그럼 이제 바둑 AI를 만들어보겠다는 프로젝트를 해보기로 한 이유를 설명해보고자 한다.
바둑은 아무래도 역사와 전통이 무구한 게임이고, 재능을 보이는 사람들은 10살도 안 된 나이에 평범한 성인을 농락하면서 이길 수 있을 정도로 타고난 능력치에 따라 편차가 심한 게임이다. 그러니 나같은 초심자가 즐기기엔 어쩌면 무거운 게임일 수도 있다. 바둑팝에선 나름 9급까지 찍어서 호기롭게 타이젬 18단들한테 도전했다가 호되게 당한 경험이 많아서, 실력을 키우기가 참 어렵구나 하는 느낌을 많이 받은 것이다.
그래서 많은 프로기사들과 마찬가지로 ai와 대국하면서 실력을 키우고 싶었는데, 안타깝게도 자기 수준에 딱 맞는 ai를 찾기란 쉬운 일이 아니다.
타이젬은 애당초 이렇게 초고수들을 위한 ai만 제공하고, 나같이 초심자들은 덤벼봤자 집 하나 내기도 어려운 처지이다.
바둑팝에는 다양한 난이도의 ai들이 있긴 한데, 이유를 모르겠으나 ai들이 자꾸만 이상한 수들을 두어서 자폭을 한다. 그래서 연습이 되는 느낌이 안 드는 것이다. 초보자용 바둑 ai를 찾아보려고 해도 cosumi 말고는 찾을 수가 없었다. 그래서 내가 생각한 것이 '나를 포함해 초보자들의 기보로 딥러닝 모델을 학습시켜보자' 이다. 시중에 개발되는 바둑 ai가 오로지 최고의 실력을 위해 개발되는 것을 나는 역으로 파고들어보고자 한다.
지금 생각하기에 이 프로젝트의 의의는 다음과 같다.
1) 시중에 가동되는 바둑 프로그램은 몬테카를로 엔진으로 학습된 프로그램(COSUMI)밖에 없다.
2) 많은 바둑 ai들이 가장 잘 두는 방향으로만 발전하고 있어 초보자들을 위한 바둑 ai가 없다.
3) 적절한 상대를 찾을 수 없는 바둑 초보자들은 바둑을 다른 사람과 두면서 실력을 키울 기회조차 적다.
개인적인 의의는 다음과 같다.
1) 딥러닝 공부 2) 프로젝트 경험 3) 좋은 바둑 친구 만들기
그래서 딥러닝 공부도 할 겸해서 바둑 ai를 만들어보고자 한다. 다행히 바둑 ai를 만드는 방법은 이미 오픈소스로 훤히 공개가 되어 있어서 그 과정에서 큰 어려움은 없을 수도? 라는 생각이 든다. 문제는 데이터인데, 바둑팝에선 내가 둔 바둑 기보가 모두 저장되어 있고 이를 sgf 형식(바둑 기보를 위한 파일 형식)으로 공유하는 것도 가능하기 때문에 이걸로 어느 정도 충당이 가능할 것 같다. 아니면 회사에 문의라도 해서 파일들을 받아놔야 하나..
이런 식으로 바둑 기보를 학습시켜 놓고선 알파고를 학습시켰던 방식도 일부 차용하고 싶다. 내가 알파고에 대해 들은 바로는 두 대의 알파고를 서로 끊임없이 대국시키면서 학습시키는 방식도 채택했다는데, 이 방식이 아마 강화학습인 것 같다. 만들고 공부하면서 함께 사용해보고 싶다.
끝으로 예상되는 이 프로그램의 결과물은, gpu가 필요 없는 선에서 돌아가는 초보자용 바둑 ai 프로그램이다. 내가 백엔드와 프론트엔드 지식은 거의 전무해서 이 부분은 외주를 맡겨야 할 수도 있을 것 같다. 초고수용이 아니기 때문에 파라미터가 많지 않아도 되고, 그러면 gpu까지 필요하지 않을 것 같다는 게 현재 생각이다.
'바둑 ai' 카테고리의 다른 글
[바둑 AI 프로젝트 3일차] 데이터 구하는 곳 + MCTS (0) | 2024.02.20 |
---|---|
[바둑 ai 만들기 프로젝트] 2일차 - alphago 관련 논문 정리 (0) | 2024.02.02 |