시즌 2 · 알파폴드편 / PART 8 · PART 8 · MuZero (2019) / Ch 4 · 잠재 공간에서의 MCTS

MCTS 네 단계 복습 — 시즌 1 PART 3에서

먼저 시즌 1에서 본 MCTS의 네 단계를 다시 정리하자. 알고리즘 자체는 MuZero에서도 똑같다 — 다만 "어디에서 일어나는가"가 바뀐다.

📖 MCTS — Monte Carlo Tree Search

한 줄 요약: "미래를 시뮬레이션해보고, 그 결과를 모아서 현재 가장 좋아 보이는 수를 고른다."

이걸 정확히 네 단계로 쪼개면:

1️⃣ Select (선택)

루트에서 출발해서, 이미 만들어진 트리 안에서 자식 노드를 따라 리프(leaf)까지 내려간다.

  • 매 단계마다 "어느 자식이 가장 가치 있을까?"를 PUCT 점수로 판단
  • PUCT = Q값(지금까지의 평균 가치) + 탐험 보너스(잘 안 가본 곳일수록 가산점)
  • 이미 expand된 노드만 따라간다 → 결국 expand 안 된 노드(leaf)에 도착
2️⃣ Expand (확장)

방금 도착한 리프 노드에서 가능한 모든 행동에 대해 자식 노드를 만든다.

  • 가능한 행동이 4개면 자식 4개 생성
  • 각 자식은 아직 방문 횟수 0, 가치 0의 빈 노드
  • 자식들의 사전 확률(prior)은 부모의 정책 신경망 출력 p에서 가져옴
3️⃣ Evaluate (평가)

리프 노드의 가치 v를 계산한다.

  • 오리지널 MCTS: 랜덤 rollout으로 게임 끝까지 가본 결과
  • AlphaZero / MuZero: 가치 신경망 출력 v로 대체 (훨씬 빠르고 정확)

Expand와 Evaluate는 보통 같은 신경망 호출 한 번으로 같이 처리된다 (p, v = f(s)).

4️⃣ Backup (역전파)

계산된 가치 v를 리프에서 루트까지 거꾸로 거슬러 올라가며 모든 조상 노드에 반영한다.

  • 각 노드의 방문 횟수 N을 +1
  • 각 노드의 가치 합 Wv를 더함 (또는 보상 누적)
  • 평균 가치 Q = W / N은 자동 갱신

이 네 단계를 보통 수백~수천 번 반복한 뒤, 루트의 자식들 중 방문 횟수가 가장 많은 행동을 실제로 선택한다.

💡 왜 "가치 최대"가 아니라 "방문 횟수 최다"?

방문 횟수는 PUCT 점수가 누적된 결과다 — 가치도 높고 탐험도 충분히 이루어진 행동만 많이 방문된다.

가치 하나만 보고 결정하면 "한두 번만 가봤는데 우연히 좋아 보였던" 수에 속을 수 있다. 방문 횟수가 더 안정적인 신호.