평가 함수가 없으면? — 무작위로 끝까지 둔다
👋 PART 3 시작 — 알고리즘의 새 시대
PART 2 마지막에서 우리는 7x7 minimax가 처참하게 실패하는 걸 직접 봤다. 평가 함수가 없으니 모든 자리가 같은 점수. 그래서 알고리즘이 (0,0)에 둠.
이 문제를 푸는 의외의 해법이 PART 3의 주제 — 무작위.
"평가 함수가 어려우면, 평가하지 말자."
대신 어떻게? 그 자리에서 끝까지 무작위로 둬보자. 어차피 무작위니까 누가 이길지 모르지만, 같은 일을 1만 번 반복해서 평균을 내면 통계적 신호가 나옴.
🎲 핵심 아이디어: Monte Carlo Rollout (a.k.a. playout)
한 보드 상태에서:
- 양쪽이 무작위로 끝까지 둠 (1초 안에 충분)
- 누가 이겼는지 본다 (1 또는 0)
- 이걸 1000번, 10000번 반복
- 승률이 곧 그 보드의 "추정 좋음" 점수
이게 Monte Carlo 방법. 도박장 이름에서 따옴 — 무작위로 시도해서 평균을 내는 모든 알고리즘의 통칭.
⚠️ 처음 들으면 황당함
"양쪽이 멍청하게 둔 결과로 평가한다고? 그게 진짜 좋은 수랑 무슨 상관?"
그런데 동작해. 진짜 좋은 자리는 대부분의 무작위 게임에서도 이김. 진짜 나쁜 자리는 무작위로 둬도 짐. 통계 법칙이 직관보다 강함.
1993년 Bernd Brügmann이 처음 제안. 2006년 MoGo가 이걸 MCTS로 발전시켜 컴퓨터 바둑이 도약.
이 챕터:
- rollout / playout 개념 — 한 게임을 무작위로 끝까지
- 코드: 무작위 게임 진행 + 승자 판정
- 코드: N번 반복해서 승률 측정
- 그냥 무작위로는 부족 — 그 한계가 다음 챕터들의 동기