시즌 1 · 알파고편 / PART 3 · PART 3 · 무작위의 힘: MCTS / Ch 3 · MCTS 4단계

코드: 1번의 MCTS Iteration

드디어 진짜 MCTS! 한 번의 iteration이 4줄 함수:

def mcts_iteration(root):
    leaf = select(root)           # ① 트리 따라 내려감
    new_child = expand(leaf)      # ② 새 자식 추가
    winner = simulate(new_child)  # ③ Rollout
    backup(new_child, winner)     # ④ 결과 역전파

500번 iteration 후 결과:

  • 가운데 (1,1)에 90번 방문, 승률 75% — 가장 많이 시도되고 가장 강함
  • 코너들 (0,0), (0,2), (2,2): 49~74번 방문, 61~71%
  • 변들 (0,1), (1,0), (1,2), (2,1): 39~54번 방문, 55~64%
  • 약한 자리 (2,0): 34번만 방문 — UCB1이 별로라 판단
🎯 Pure Monte Carlo와의 차이

지난 챕터 Pure MC: 모든 자리에 1000번씩 균등 시도 (9000번 총). 가운데 70.7% 발견.

지금 MCTS: 500번만 시도. 가운데에 90번 (가장 많이) 시도하면서 75% 발견. 1/18의 시도로 더 정확한 답.

이게 UCB1의 힘 — 좋은 수에 더 많은 자원 자동 집중.

💡 visits가 더 신뢰할 만한 지표

약한 자리 (2,0)의 승률이 54%로 나오는데, 시도가 34번뿐이라 통계적으로 의미 약함. UCB1이 별로라 판단해 덜 시도.

그래서 MCTS에서 최선의 수는 "승률 최고"가 아니라 "visits 최고". 위 결과에서 (1,1)이 압도적 최다 → 정답.

다음 페이지에서 더 많은 iteration으로 정확도를 높이고, 다양한 보드에 적용.

PYTHON