코드: 7x7 바둑 MCTS
실측 결과:
- 1000번 iteration이 0.47초 — 빠름
- MCTS의 첫 수: (5,5) — 중앙 부근
- 49 자식 모두 21번씩 시도 (균등)
- 모든 자식의 승률이 50% — 어? 신호가 안 잡힘?
⚠️ 모든 자식의 승률 50% — 단순 평가 함수의 한계
우리 코드의 평가 함수는 매우 단순 — "돌 수가 많은 쪽 승, 동률은 draw". 7x7 무작위 게임에서는 양쪽 돌 수가 거의 항상 동률에 가까워 → 대부분 무승부.
그래서 MCTS가 어떤 첫 수를 둬도 결과적으로 50:50으로 보임. 신호가 없으니 UCB1이 모든 자식을 균등하게 시도.
이게 Ch 5의 주제 — MCTS의 한계. 평가가 너무 단순하면 통계 신호가 묻힘.
🎯 PART 2 Ch 6 minimax와의 비교
| 알고리즘 | 첫 수 추천 | 시간 | 선택 양상 |
|---|---|---|---|
| minimax 깊이 4 | (0,0) 코너 | 0.02s | 사전순 첫 자리에 갇힘 |
| MCTS 1000 iter | (5,5) 중앙 부근 | 0.47s | 균등 탐색, 우연한 중앙 선택 |
둘 다 약한 평가 함수에 막혀있지만, minimax는 사전순으로 망함, MCTS는 적어도 균등하게 탐험 — 우연이라도 중앙을 선택. 진짜 다른 게임에서는 (실제 영역 평가 사용 시) MCTS가 압승.
다음 페이지에서 iteration 수를 늘리면 어떻게 변하는지 보자.
PYTHON