시즌 1 · 알파고편 / PART 6 · PART 6 · AlphaGo Zero (2017) / Ch 3 · self-play 루프

Stage 1: 자가 대국으로 데이터 생성

한 자가 대국 게임의 흐름:

📖 한 게임의 진행
  1. 빈 보드로 시작
  2. 각 수마다:
    • MCTS 800 시뮬레이션 (PUCT 사용, 신경망이 prior)
    • visits 분포 π_t 추출
    • π_t에서 다음 수 sampling (탐험을 위해)
    • (s_t, π_t) 저장
  3. 게임 끝까지 진행
  4. 최종 결과 z (-1 또는 +1)
  5. 저장된 (s_t, π_t) 모두에 z 추가 → (s_t, π_t, z) 데이터
🎯 두 가지 모드 — 학습 vs 평가
  • 학습 데이터 생성 (Stage 1):
    • visits 분포에서 sampling → 탐험적
    • 처음 30수: 온도 τ=1 (랜덤성 있음)
    • 이후: τ → 0 (가장 많이 방문된 자리만)
  • 평가 (Stage 3):
    • 항상 visits 최대 자리 → 결정적
    • 다양성 없음, 최강 플레이
💡 온도(temperature)란 무엇인가

visits 분포에서 다음 수를 선택할 때:

P(a) ∝ N(a)^(1/τ)
  • τ = 1: visits에 비례한 확률 (학습 초기 다양성)
  • τ → 0: 최대 visits만 선택 (deterministic)
  • τ → ∞: 균등 (완전 무작위 — 사용 안 함)

알파고 Zero는 게임 첫 30수에 τ=1 (다양한 오프닝), 그 후 τ→0 (강한 종반).

📖 Dirichlet 노이즈 추가 — 루트의 탐험

또 다른 탐험 메커니즘. MCTS 루트의 prior에 노이즈 추가:

P(a) = (1−ε)P_net(a) + ε·η_a

η는 Dirichlet 분포. ε = 0.25.

효과: 신경망이 추천하지 않은 자리도 일정 확률로 탐험. "이세돌 78수 같은 수도 발견 가능"해짐.

📊 한 사이클의 게임 데이터
  • 25,000 게임 × 평균 200수 = 500만 학습 사례
  • 각 사례 = (s, π_target, z_target)
  • 이 데이터로 다음 stage(학습)에서 가중치 갱신