시즌 1 · 알파고편 / PART 3 · PART 3 · 무작위의 힘: MCTS / Ch 2 · UCB1 — 탐험 vs 활용

게임에서 UCB1 적용

UCB1을 게임 트리에 어떻게 적용하지?

지난 챕터 끝의 Pure Monte Carlo를 떠올려. 9개 자리에 1000번씩 균등 시뮬레이션. 만약 UCB1로 바꾸면?

📖 게임에서 UCB1 의사 코드
  1. 각 첫 수에 대해 1번씩 rollout (초기화)
  2. 이후 N번 반복:
    1. 각 수의 UCB1 점수 계산
    2. UCB1 점수가 가장 높은 수 선택
    3. 그 수에서 rollout 1번
    4. 결과로 그 수의 wins, counts 갱신
  3. 마지막에 가장 많이 시도된 수를 답으로 (최고 UCB1이 아닌 최고 counts!)
💡 왜 마지막에 max(counts)?

UCB1은 "탐험"을 위해 가끔 안 좋은 수도 시도해. 그래서 UCB1 점수만 보면 마지막에 운 좋게 강조된 수가 뽑힐 수 있어.

대신 "가장 많이 시도된 수" = "UCB1이 가장 자주 좋다고 판단한 수" — 더 안정적인 선택. 알파고도 이 방식.

이 단순한 변경만으로 Pure Monte Carlo가 훨씬 강해짐. 그런데 — 아직 한 가지 문제가 남아있어:

⚠️ 여전히 깊이를 못 봄

UCB1을 첫 수 선택에만 쓰고, 그 후로는 여전히 무작위 rollout. 여러 수에 걸친 계획은 아직 못 함.

이상적인 방법: 두 번째 수, 세 번째 수에도 UCB1을 적용 — 트리 형태로 점진적으로 키움.

이게 다음 챕터의 MCTS. UCB1 + 트리 = 마법.

UCB1은 단지 한 부품이야. 진짜 알고리즘은 다음 챕터에서 완성돼.