팀 소개와 윷놀이 AI
강화학습으로 바둑 한도, 장기·오목·고스톱 AI를 개발·서비스해 온 팀을 소개하고, 올해 초 요청받은 윷놀이 AI를 만든 이야기를 시작한다. 기존 강화학습·룰 베이스 선례가 없어 직접 만들게 되었다고 밝힌다.
바둑·체스처럼 상태 공간이 큰 게임은 GPU가 많이 필요하고 C++ 인퍼런스·분산처리까지 요구되지만, 윷놀이는 GPU 없이 CPU만으로 3일이면 학습되고 모든 파트를 파이썬으로 구현할 수 있어 강화학습 입문 예제로 적합하다고 설명한다.
삼국시대 이전부터 이어진 윷놀이의 룰(도개걸윷모, 보너스 윷, 백도, 낙, 31개 지점 판, 지름길)을 설명한다. 윷가락의 볼록·평평 면이 나올 확률을 계산해 도·개·걸·윷·모 확률을 구하고, 이 확률을 실제 서비스 환경과 동일하게 써야 한다고 강조한다.
게임 AI를 만들려면 무엇을 잘하는 AI인지 목표를 정해야 한다. 재밌게 지는 AI나 상대 말을 계속 잡는 AI도 가능하지만 여기서는 이기는 AI로 정한다. 윷 던지기·보너스 윷 선택은 운·정석으로 처리하고, 결국 나온 윷으로 말을 잘 이동시키는 것이 핵심이라 결론짓는다.
강화학습 전에 사람이 플레이하는 방식을 룰로 구현한 휴리스틱 플레이어를 베이스라인으로 만든다. 상대 말 잡기, 업기, 지름길, 골인, 그리고 유출 확률을 반영한 거리 점수 룰을 조합하면 랜덤 대비 약 90% 승률의 AI를 만들 수 있음을 실험으로 보여준다.
어떤 상태의 좋고 나쁨을 나타내는 값을 가치(밸류)라 부르고, 이기는 게임에서는 승률을 가치로 삼는다. 표 대신 뉴럴넷으로 상태를 넣으면 승률을 예측하는 가치 네트워크를 만들고, 직접 게임을 하며 얻은 경험으로 이 값을 추정·학습하는 강화학습 원리를 설명한다.
보너스 윷의 무한 루프 문제를 턴 정보를 유지하는 방식으로 간단히 처리하고, 걸+윷을 조합한 상태나 상대 턴까지 내다보며 유출 확률로 기댓값을 계산한다. 상대 턴까지 보면 약 4% 승률이 오르고, 롤아웃으로 특정 수가 실제로 더 나음을 검증한다.
2인 학습 모델을 3인 플레이에 대응시키기 위해 여러 명을 예측하는 헤더와 3인 셀프플레이 모델을 따로 만들고, 가변 말 개수는 미리 골인시킨 상태로 처리한다. 신유리2 고유의 찬스 룰(분노 누적 시 확률 선택)까지 AI가 언제 어떻게 쓸지 다룬다.