시즌 2 · 알파폴드편 / PART 8 · PART 8 · MuZero (2019) / Ch 1 · AlphaZero의 한계 — 규칙이 있어야 한다

시뮬레이션은 규칙을 요구한다

MCTS의 Expand 단계를 의사코드로 다시 쓰면:

def expand(node, game):
    for a in legal_actions(node.state):
        s_next = game.next_state(node.state, a)   # ← 여기!
        node.children.append(Node(state=s_next))
📖 game.next_state(s, a)의 의미

"상태 s에서 행동 a를 했을 때 다음 상태는?" 이 질문에 답하는 함수다.

바둑·체스·틱택토는 이 함수가 명시적으로 존재한다. 게임 규칙이 곧 이 함수다.

  • 바둑: 빈 점에 돌 놓고, 따낼 돌 처리, 패 검사 → 다음 보드
  • 체스: 말 이동, 캐슬링·앙파상 규칙 → 다음 포지션
  • 틱택토: 빈 칸에 X 또는 O 놓기 → 다음 보드
🎯 왜 이 함수가 필수인가

MCTS는 본질적으로 "미리 둬보고 좋아 보이는 수 고르기"다.

"미리 둬본다" = 머릿속 시뮬레이션. 시뮬레이션을 하려면 "이렇게 두면 다음에 이렇게 되겠지"를 알아야 한다.

이걸 모르면 트리를 만들 수 없다. 트리가 없으면 MCTS가 없다. MCTS가 없으면 AlphaZero가 없다.

💡 정리

AlphaZero는 "규칙을 함수로 표현할 수 있는 환경"에서만 작동한다.

이걸 학술적으로는 "perfect simulator를 가정한다"고 한다.

"완벽한 시뮬레이터" = 다음 상태를 정확하게 계산해주는 함수.