시즌 1 · 알파고편 / PART 3 · PART 3 · 무작위의 힘: MCTS / Ch 3 · MCTS 4단계

코드: MCTS 노드 클래스

MCTS 노드의 핵심 필드:

  • game — 이 노드의 게임 상태
  • parent, children — 트리 구조
  • untried_moves — 아직 자식으로 안 만들어진 수들 (Expand에서 골라감)
  • visits — 이 노드 방문 횟수
  • wins — 누적 승수 (UCB1의 분자)
  • ucb1() — UCB1 점수 계산 메서드
📖 ucb1() 메서드의 두 케이스
  • visits == 0: ∞ 반환 — 안 가본 노드를 무조건 먼저 가게 함. 모든 자식이 적어도 한 번씩 방문되도록.
  • visits > 0: w/n + c·√(ln(parent.visits)/n) — 표준 UCB1.

이 단순한 트릭으로 "초기에 모든 자식을 한 번씩 시도"가 자동 처리.

💡 wins의 정확한 의미

wins"이 노드의 부모 입장에서의 승수". 왜 부모 입장?

UCB1로 자식을 고를 때 부모가 결정하잖아. 부모는 자기한테 유리한 자식을 고름. 그래서 wins가 "부모에게 유리한 결과"의 횟수로 정의되어야.

구체적으로: 부모 차례가 X면, wins는 X 승 횟수. 부모 차례가 O면, wins는 O 승 횟수.

다음 페이지에서 4단계를 메서드로 구현.

PYTHON