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 - 각 노드의 가치 합
W에v를 더함 (또는 보상 누적) - 평균 가치
Q = W / N은 자동 갱신
이 네 단계를 보통 수백~수천 번 반복한 뒤, 루트의 자식들 중 방문 횟수가 가장 많은 행동을 실제로 선택한다.
💡 왜 "가치 최대"가 아니라 "방문 횟수 최다"?
방문 횟수는 PUCT 점수가 누적된 결과다 — 가치도 높고 탐험도 충분히 이루어진 행동만 많이 방문된다.
가치 하나만 보고 결정하면 "한두 번만 가봤는데 우연히 좋아 보였던" 수에 속을 수 있다. 방문 횟수가 더 안정적인 신호.