Select 단계 — MuZero에서 무엇이 달라지나
여기서 흥미로운 점. Select 단계의 알고리즘 자체는 AlphaZero와 MuZero에서 동일하다.
💡 핵심 — 트리 자체는 똑같다
Select가 다루는 것은 "이미 만들어진 트리"다. 트리 노드들이 무엇을 들고 있는가는 알고리즘과 상관없다.
AlphaZero든 MuZero든 노드는 똑같이:
- 방문 횟수 N
- 가치 합 W (또는 평균 Q)
- 사전 확률 P
- 자식들
를 들고 있다.
📖 그럼 무엇이 다른가?
차이는 "각 노드에 무엇이 저장돼 있는가"다.
- AlphaZero 노드: 게임의 실제 상태(보드 위치)를 가짐
- MuZero 노드: 잠재 상태 벡터 하나를 가짐
하지만 Select 단계에서는 이 차이가 보이지 않는다 — Select는 PUCT 계산에만 신경 쓰고, 노드가 들고 있는 게 무엇이든 상관 안 한다.
🎯 그래서 어디서 차이가 나타나는가?
Select 자체가 아니라 다음 단계 — Expand에서 차이가 폭발한다.
- AlphaZero가 Expand할 때:
next_state(s, a)함수 호출 (외부 게임 규칙) - MuZero가 Expand할 때:
g(s, a)호출 (학습된 dynamics 신경망)
이게 결정적 차이. 다음 섹션에서 자세히 본다.
⚠ 미묘한 한 가지 — 트리는 한 게임 안에서만 쓰인다
알아둘 점 하나: MCTS의 트리는 한 수를 결정할 때만 쓰고 버려진다.
- 현재 보드 → MCTS로 트리 만듦 → 가장 많이 방문된 행동 선택 → 두기
- 다음 차례에 또 새 트리를 만든다 (이전 트리는 버림 또는 일부 재사용)
그래서 "트리에 저장된 잠재 상태"가 노이즈가 있어도 한 수만 잘 결정하면 충분 — 누적 오차의 큰 골치를 면한다.