Rollout 한 번 — 무작위 게임의 모습
먼저 한 번의 rollout이 무엇인지 그림으로:
📖 1번의 Rollout 단계
- 시작 상태를 받는다 (지금 누구 차례인지 포함)
- 현재 차례의 가능한 모든 수 중 무작위로 하나 둠
- 차례 바꿈
- 2~3 반복 — 게임 끝까지
- 승자 반환 (또는 점수 차이)
한 번의 rollout은 의미 없는 게임이야. 양쪽이 멍청하게 두니까 결과도 멍청해. 그런데 의외로 빨라:
- 틱택토 rollout 1번: ~5 마이크로초
- 7x7 바둑 rollout 1번: ~0.5 밀리초
- 19x19 바둑 rollout 1번: ~3 밀리초
1초에 7x7 바둑 약 2000번 rollout, 19x19 약 300번 가능. 이게 통계의 시작.
💡 통계로 본 좋은 수
같은 상황에서:
- 자리 A에 두고 rollout 1000번 → 흑이 720번 이김 (72% 승률)
- 자리 B에 두고 rollout 1000번 → 흑이 510번 이김 (51% 승률)
- 자리 C에 두고 rollout 1000번 → 흑이 280번 이김 (28% 승률)
A가 좋은 자리라는 신호. C는 나쁘다. 평가 함수 없이도 비교 가능.
이게 가능한 이유: 정말 좋은 자리는 "양쪽이 멍청하게 둬도 흑이 이길 확률이 높다"는 통계적 성질이 있어. 진짜 나쁜 자리는 그 반대. 무작위라는 노이즈를 압도하는 진짜 신호가 있을 때 rollout이 동작.
코드로 만들어보자.