How I Built a Pluribus-Style Poker AI From Scratch
개요
이 프로젝트는 Pluribus와 유사한 방식으로 제로 로우 텍사스 홀덤(No-Limit Texas Hold'em) AI를 처음부터 구축하는 과정을 설명합니다.
주요 내용
* 게임의 복잡성: 포커는 상대방의 카드를 알 수 없는 불완전 정보 게임으로, 표준 minimax 알고리즘 대신 내쉬 균형(Nash equilibrium) 또는 게임 이론 최적(GTO, Game-Theoretically Optimal) 전략이 필요합니다. GTO 전략은 상대방이 일방적으로 전략을 변경하여 이익을 개선할 수 없는 상태를 의미하며, 이론적으로 공략 불가능합니다.
* 1단계: Counterfactual Regret Minimization (CFR): Zinkevich 등이 2007년에 제안한 CFR 알고리즘은 Leduc Hold'em과 같은 소규모 게임에서 플레이어 자신을 반복적으로 플레이하며 후회(regret)를 최소화하는 방식으로 작동합니다. 시간이 지남에 따라 전략은 내쉬 균형으로 수렴합니다.
* 2단계: Monte Carlo CFR (MCCFR): 풀 NLHE의 방대한 게임 상태를 처리하기 위해 MCCFR은 각 반복마다 샘플링된 부분 게임 트리를 사용하여 계산을 현실적으로 만듭니다. 외부 샘플링(external sampling) 기법을 사용하여 트래버설 노드에서는 모든 액션을 탐색하고, 상대방 노드에서는 전략에 따라 하나의 액션을 샘플링합니다. Leduc Hold'em에서 MCCFR은 CFR과 동일한 균형에 더 빠르게 수렴했습니다.
* 3단계: 카드 추상화 (Card Abstraction): MCCFR에서도 NLHE의 정보 세트 수가 너무 많기 때문에, 유사한 핸드들을 추상화(버킷화)하는 과정이 필요합니다. 평균 에쿼티(average equity)가 아닌 Earth Mover's Distance (EMD)를 사용하여 핸드 분포의 차이를 더 잘 포착하는 클러스터링 기법을 사용했습니다. 이를 통해 계산량을 줄이고 전략의 정확도를 높였습니다.
* 4단계: Deep CFR: 해시 테이블의 제약을 극복하기 위해 Deep CFR은 신경망을 사용하여 누적 반사실적 후회(cumulative counterfactual regret)와 평균 전략을 근사합니다. 이를 위해 AdvantageNetwork와 StrategyNetwork를 사용했으며, Resevoir buffers를 통해 이전 반복의 정보를 유지하여 치명적인 망각을 방지했습니다. 신경망을 eval() 모드로 설정하여 추론 속도를 6배 향상시켰습니다.
* 5단계: 실시간 검색 (Real-Time Search): Deep CFR에서 얻은 청사진(blueprint) 전략은 추상화 수준이 높기 때문에, 각 결정 시점에서 현재 상태를 루트로 하는 국소 게임 트리를 구축하고 해당 서브트리에서 MCCFR을 실행하는 실시간 검색을 사용합니다. 이를 통해 더 정교한 전략을 실시간으로 도출하며, 의사 결정 평균 시간은 75ms입니다.
* 성능 및 결과: Pluribus와 동일한 아키텍처를 사용했지만, 플레이어 수는 2명(헤즈업)으로 제한되었습니다. 무작위 플레이어와의 매치업에서 검색 전략은 청사진 전략보다 일관되게 뛰어난 성능을 보였습니다.
* 향후 개선점: 프로파일링을 더 일찍 수행하고, 더 미세한 베팅 추상화를 사용하며, 수렴 지표를 명확히 하기 위해 평가 프레임워크를 먼저 구축하는 것을 제안합니다.
* 코드베이스 및 데모: GitHub에 MIT 라이선스로 공개된 코드베이스(40개 파일, 27개 테스트 통과)와 함께, 브라우저 기반 실시간 데모를 제공합니다.
시사점
이 프로젝트는 완전한 불완전 정보 게임 AI를 처음부터 구축하는 복잡한 과정을 단계별로 보여주며, CFR, MCCFR, 카드 추상화, Deep CFR, 실시간 검색 등의 기법이 어떻게 결합되어 포커 AI를 실현하는지를 입증합니다. 공개된 코드와 데모는 관련 연구 및 학습에 기여할 수 있습니다.
댓글
GitHub Discussions