시즌 1 · 알파고편 / PART 2 · PART 2 · 게임을 푸는 첫 방법: 탐색 / Ch 6 · 7x7 바둑에 minimax 시도, 실패 체험

7x7 minimax 실전 시도

실측 결과를 보면:

  • 깊이 4까지는 0.02초 미만. 노드 수 7,006개
  • 알파-베타 효과가 좋아서 §3의 추정(~1,225)보다는 약간 많지만 여전히 매우 효율적
  • 그러나 깊이 5는 노드가 35배쯤 늘어 수 초 예상
  • 깊이 6~7은 사용 가능 시간 밖
⚠️ 더 심각한 문제: 최선 수가 (0,0)?

출력을 보면 minimax가 매번 "최선 수는 (0,0)"이라고 추천. 이게 진짜 좋은 수일까?

아니에요. (0,0)은 코너로, 바둑에서는 매우 약한 자리. 사람이라면 (3,3) 같은 중앙 화점을 선택할 거. 그런데 우리 minimax는 "왼쪽 위부터 시도해서 동점이면 안 바꿈" 이라 (0,0)이 항상 선택됨.

이게 나쁜 평가 함수의 직접적 결과: 모든 자리가 같은 점수로 평가되니까 알고리즘이 정답을 못 골라.

📖 두 가지 실패가 동시에 발생
  1. 속도 실패: 깊이 5도 빠듯. 깊이 부족하니 미래 시야 짧음.
  2. 평가 실패: 돌 수 차이로는 위치의 강약을 모름. 알고리즘이 임의의 자리에 둠.

둘 중 하나만 해결되면 다른 하나가 발목 잡음. 둘 다 동시에 해결해야 함.

💡 어떻게 개선할 수 있나
  1. 더 좋은 평가 함수 — Bouzy의 영향 모델, GnuGo의 영역 분석 등. 10년의 노력으로 사람 9급 수준 도달.
  2. 더 효율적인 탐색 — 모든 수를 보지 않고 중요한 수만. 이게 다음 PART의 MCTS.
  3. 학습된 평가 함수 — 사람도 못 만든 좋은 평가를 데이터에서 학습. PART 4의 신경망.

이 챕터의 핵심 메시지: minimax + 알파-베타는 바둑에 부족하다. 직접 코드로 측정했어. 추측이 아니라 사실.

PYTHON