시즌 1 · 알파고편 / PART 6 · PART 6 · AlphaGo Zero (2017) / Ch 4 · 7x7 학습 파이프라인

전체 파이프라인 요약

지금까지 본 코드들을 합치면 AlphaGo Zero 학습 파이프라인:

📖 의사 코드 — 전체 학습 루프
# 초기화
net = NetworkZero()  # 무작위 가중치
best_net = net.copy()
replay_buffer = []

# 메인 루프 (700 사이클)
for cycle in range(700):
    # ===== Stage 1: Self-play =====
    cycle_data = []
    for game in range(25000):
        game_data = play_one_game(best_net)  # MCTS 800 시뮬
        cycle_data.extend(game_data)
    
    # Replay buffer 갱신
    replay_buffer.extend(cycle_data)
    if len(replay_buffer) > 500_000 * 200:  # 50만 게임 × 200수
        replay_buffer = replay_buffer[-500_000 * 200:]
    
    # ===== Stage 2: 학습 =====
    for step in range(1000):
        batch = sample(replay_buffer, batch_size=2048)
        loss = compute_loss(net.forward(batch), batch_targets)
        loss.backward()
        optimizer.step()
    
    # ===== Stage 3: 평가 =====
    wins = 0
    for game in range(400):
        winner = play_evaluation(net, best_net)
        if winner == net: wins += 1
    
    if wins / 400 >= 0.55:
        best_net = net.copy()  # 채택
        print(f"Cycle {cycle}: 새 모델 채택, 승률 {wins/400:.2%}")
    else:
        print(f"Cycle {cycle}: 새 모델 폐기, 승률 {wins/400:.2%}")
  
💡 우리가 본 모든 부품의 역할
  • play_one_game (Ch 4 §2): self-play 한 게임 → 학습 데이터 생성
  • mcts_visits: 각 수에서 MCTS visits 분포 (π_target)
  • compute_loss (Ch 4 §3): 데이터 → 손실 신호
  • play_evaluation: 새 모델 채택 결정
  • 이 4개의 반복: 700 사이클
📊 실제 학습 자원 (논문)
자원 사용량
하드웨어4 TPU (Google 자체)
총 자가 대국 게임4,900만
총 시뮬레이션약 78조
학습 데이터 (보드)약 90억
학습 시간40일
최종 ELO5,200+

4 TPU 40일 = $10,000~50,000 비용 (당시 추정). 알파고보다 훨씬 효율.