제가 Whot! 카드 게임을 플레이하는 AI 모델을 만든 방법
Source: Dev.to

문제 설명
실용적인 AI 모델을 구축하여 Whot! 카드 게임을 인간 수준으로 플레이하도록 하는 것이 목표입니다.
Whot!는 기술과 운이 결합된 게임입니다: 사용 가능한 카드를 효과적으로 활용하는 방법을 알면 기술이 되고, 상대보다 더 많은 승리‑가능한 특수 카드를 뽑을 수 있다면 운이 따릅니다.
소개
인공지능이 계속 발전함에 따라, AI의 영향을 받지 못하는 것이 거의 없다고 할 수 있습니다.
우리는 대중에게 배포할 수 있는, Whot! 카드 게임을 플레이할 수 있는 능력을 갖춘 AI 모델을 만들고자 합니다. 이 비전이 Whot! AI를 탄생시켰습니다.
이 프로젝트는 AI를 이해하기 쉽게 만드는 데에도 활용될 수 있습니다. AI가 손에 닿지 않는 거대한 존재라고 생각할 수 있지만, 직접 AI를 만들 수 있습니다. 통계학을 조금만 공부하면, 머신러닝(AI의 하위 분야)은 사용 가능한 데이터셋과 통계 지식을 활용해 미래를 예측하는 것과 비슷합니다. 예를 들어, 특정 조건에서 가격이 $1000이라면, 새로운 조건에서는 가격이 어떻게 변할지 예측할 수 있습니다.
Whot! AI
새로운 Whot! AI는 Whot! 카드 게임을 플레이하는 모델입니다. 이 모델은 **강화 학습 (Reinforcement Learning, RL)**이라고 알려진 머신러닝 접근 방식을 사용해 훈련됩니다.
- 강화 학습은 AI 에이전트를 환경에 노출시키고, 그 환경과 직접 상호작용하면서 학습하도록 합니다.
- 이는 라벨이 달린 데이터가 필요 없는 비지도 학습 방법입니다.
전형적인 지도 학습에서는 라벨이 달린 데이터를 수집합니다(즉, 데이터에 대한 질문과 답을 알고 있음). 예를 들어 다음과 같은 질문을 할 수 있습니다:
- 동물의 무게가 작나요?
- 수염이 있나요?
- 꼬리가 길나요?
- 얼굴이 둥글거나 타원형인가요?
- 무게가 몇 킬로그램인가요?
이 질문에 답함으로써 우리는 동물 이미지가 개인지 고양이인지를 분류하는 모델을 만들 수 있습니다. 데이터가 충분할 때는 잘 작동하지만, 데이터가 부족하면 신뢰할 수 있는 AI 모델을 만드는 것이 매우 어렵습니다.
Whot!와 같은 규칙 기반 게임에서는 이러한 데이터를 수집하는 것이 사실상 불가능하며, 전통적인 지도 학습으로 규칙을 100 % 정확히 따르는 AI를 훈련시키는 것은 실행 불가능합니다.
예를 들어 호출 카드가 원 7인데 모델이 별 7을 플레이한다고 예측한다면 게임 규칙이 깨지는 것입니다. 따라서 이 경우에는 지도 학습이 적합하지 않습니다.
강화학습과 Whot! AI
이 장벽은 강화학습을 사용하면 깨질 수 있습니다! 2016년, AlphaGo가 구글 딥마인드에서 강화학습(RL)으로 개발되어 세계 챔피언 이세돌을 이겼습니다. 강화학습은 게임뿐만 아니라 금융(예: 사기 탐지) 및 로봇공학에도 적용됩니다.
강화학습의 아름다움은 에이전트에게 어떻게 해야 하는지를 알려줄 필요가 없고, 무엇을 달성해야 하는지만 알려주면 에이전트가 스스로 방법을 학습한다는 점입니다.
작동 원리
- 환경 – AI 에이전트가 환경(예: Whot! 게임) 안에 배치됩니다.
- 상태 – 환경의 현재 상황(예: 현재 호출 카드, 남은 뽑기 카드 수, 당신의 손 카드 수, 상대의 손 카드 수).
- 행동 – 주어진 상태에서 “올바른” 혹은 가장 적절한 행동.
예시
호출 카드가 Pick Two이고 손에 Pick Two 카드가 있다면, 두 가지 유효한 행동이 있습니다:
| 행동 | 설명 |
|---|---|
| 1 | 방어를 위해 Pick Two 카드를 플레이한다. |
| 2 | 뽑기 더미에서 카드를 두 장 뽑는다. |
이러한 행동은 상태‑가치와 상태‑행동 가치 함수를 생성합니다. 우리의 목표는 주어진 상태를 행동에 매핑하는 정책 π (Pi) 를 도출하는 것입니다. 이러한 정책을 갖게 되면 Whot!을 플레이하는 AI를 모델링할 수 있습니다.
처음에는 AI가 어떤 상태에 대해 올바른 행동을 모를 수 있으므로, 무작위로 유효한 행동을 취하도록 허용됩니다. 시간이 지나면서 무작위 행동을 멈추고 보상을 최대화하는 행동을 선택하게 됩니다. 이 과정에서 에이전트는 Q‑테이블(데이터베이스 테이블이라고 생각하면 됨)을 구축하여 행동을 참고합니다. 어떤 상태든 최대 보상을 주는 행동을 찾아서 선택합니다.
상태 공간이 크고 연속적이 되면 Q‑테이블은 비효율적이므로, 딥러닝을 활용한 Q‑네트워크 접근법을 채택합니다. Q‑네트워크는 정적인 테이블보다 일반화 능력이 뛰어납니다.
보상 설계
핵심 아이디어는 에이전트의 학습 여정을 안내하는 보상 함수를 설계하는 것입니다:
- 양의 보상(예: +1) – 에이전트가 좋은 행동을 취했을 때 부여됩니다. 예를 들어, Pick Two 카드를 가지고 있을 때 방어하기 위해 사용한 경우.
- 음의 보상(예: ‑1) – 에이전트가 나쁜 행동을 취했을 때 부여됩니다. 예를 들어, 방어할 수 있음에도 불구하고 카드를 두 장 뽑은 경우.
이러한 보상은 피드백 역할을 합니다: 양의 행동에 대해서는 “잘했어! 계속 잘하고 있어!” 라는 긍정적인 피드백을, 음의 행동에 대해서는 부드러운 “아니야” 라는 피드백을 제공합니다.
Whot!를 위한 강화 학습
에이전트는 각 움직임 후에 보상(양성) 또는 처벌(음성)을 받습니다. 학습 정책은 벨만 방정식을 사용하여 업데이트됩니다. 에이전트는 계속해서 게임을 진행하고 피드백을 받으며 전략을 개선합니다. 이 과정은 10 000 에피소드 이상 반복될 수 있습니다.
확률적 Whot! 게임의 경우, 모델은 50 000 에피소드 동안 훈련되었습니다. 훈련 중 에이전트는 다음을 학습합니다:
- 부정적인 보상을 주는 행동을 피합니다.
- 긍정적인 보상을 주는 행동을 선호합니다.
훈련 에피소드가 끝난 후, 에이전트는 게임 환경과 최적으로 상호작용할 수 있어야 합니다.
예시: 로봇공학에서의 강화 학습
리더의 댄스 동작을 따라가는 로봇을 훈련하는 경우를 생각해 보세요:
- 인간 댄서(리더)가 한 동작을 수행합니다(예: 손을 들어올림).
- 로봇은 처음에 무작위 동작을 취합니다.
- 로봇의 동작이 리더와 일치하지 않으면 음성 보상을 받습니다.
- 로봇의 동작이 리더와 일치하면 양성 보상을 받습니다.
이 과정을 수천 번 반복하면 로봇은 올바른 댄스 동작을 학습하게 됩니다.
Source: …
전통적인 규칙 기반 엔진과 RL
AI 모델이 Whot!을 플레이하도록 훈련하려면 규칙 기반 엔진에서 얻은 일련의 게임 규칙이 필요합니다.
- 현재 여러분이 플레이하고 있는 Whot! 게임은 규칙 기반 엔진입니다: 규칙이 명시적으로 프로그래밍되어 있으며, 컴퓨터가 이를 따릅니다.
- 우리는 이 엔진을 훈련 중 상대방으로 사용합니다. RL 에이전트는 먼저 규칙 기반 엔진과 대전하고, 그 다음 스스로와 대전하면서 보상 함수를 통해 지속적으로 경험을 축적합니다.
훈련 결과 (50 000 에피소드):
| 결과 | 승리 |
|---|---|
| 모든 카드를 먼저 버리기 | 28 315 |
| 카운팅으로 승리 | 18 095 |
| 총계 | ≈ 46 410 (≈ 92 % 승률) |
AI 에이전트는 자신을 훈련시킨 규칙 기반 엔진보다 뛰어난 성과를 보였으며, 이는 수작업으로 만든 상대보다 더 깊은 패턴과 전략을 학습했음을 의미합니다. 전통적인 엔진은 강력한 상대입니다—가장 긴 연속을 위해 최적의 카드를 명시적으로 계산합니다(예: HoldOn, Suspension, General Market, PickTwo, Check up!). 이러한 상대를 능가한다는 것은 에이전트가 엔지니어링된 규칙을 넘어 일반화할 수 있음을 보여줍니다.
모델 다운로드 및 테스트
Android 앱을 다운로드하여 모델을 사용해 볼 수 있습니다:
앱에는 다음이 포함됩니다:
- 전통적인 규칙 기반 엔진(클래식 컴퓨터 상대).
- Bluetooth, Wi‑Fi 및 온라인 플레이를 통한 멀티플레이어 지원.
우리는 여러분이 현대적인 방식으로 Whot!을 즐기시길 바랍니다. 앱을 플레이하고, 평가하고, 리뷰해 주세요. 감사합니다!
개발자를 위한 정보
-
학습 노트북:
-
카드 이미지 인식 노트북:
