코드: 자가 대국 한 게임
한 자가 대국 게임 실행. 결과:
- 게임 길이: 20수 (5x5 보드, move_count 한계까지)
- 학습 데이터: 20개 (보드, π, z) 쌍
- 각 데이터의 π: MCTS 30 iter의 visits 분포 (25 자리)
- 각 데이터의 z: 그 차례 입장에서의 최종 결과 — 이번엔 무승부(z=0)
🎯 코드 핵심 흐름
- play_one_game: 한 게임 끝까지 진행, (s, π, turn) 저장
- 각 수에서 mcts_visits 호출 → visits 분포 π_t
- π_t에서 sampling → 실제 둔 수
- 게임 끝나면 final_z 계산
- 각 상태의 차례에 따라 z 부호 조정 → (s, π, z) 데이터
💡 결과 해석
학습 전 신경망이라 π가 거의 균등 (1/25 ≈ 0.04). 첫 수의 최대 확률은 0.095 정도. 게임 후반에 0.265까지 증가 — 가능한 수가 줄어들면서 자연히 확률 집중.
z = 0.0 (무승부) — 학습 안 된 신경망끼리 두는 무작위 게임은 자주 무승부. 학습이 진행되면 강한 쪽이 명확해져 z가 ±1 빈번해짐.
다음 페이지에서 학습 한 단계.
PYTHON