시즌 1 · 알파고편 / PART 3 · PART 3 · 무작위의 힘: MCTS / Ch 2 · UCB1 — 탐험 vs 활용

코드: UCB1로 슬롯머신 풀기

1000번 당기기 결과 — 진짜 70% 승률 머신 #2를 알고리즘별로 얼마나 잘 찾고 활용?

  • 무작위: 516 보상. 모든 머신에 균등 시도 (~200씩). 좋은 머신을 알면서도 활용 못함.
  • 탐욕: 682 보상. 이번엔 운 좋게 머신 #2에 빨리 갇혀서 965번 시도. 결과는 좋지만 seed 운에 좌우.
  • UCB1: 595 보상. 머신 #2를 561번으로 가장 많이 시도하지만 다른 머신들도 탐험. 단일 seed에서는 탐욕보다 약간 낮을 수 있음.
🎯 UCB1의 본질 — 안정성

이번 실험에서는 탐욕(682)이 UCB1(595)보다 보상이 높았어. 그러나 이건 이야. 만약 탐욕이 처음에 머신 #0(30%)에 갇혔으면 1000번 동안 300 정도밖에 못 얻었을 거.

seed를 바꿔 100번 평균을 내면 결과가 뒤집힘:

  • UCB1 평균: ~620 ± 30 (안정적)
  • 탐욕 평균: ~520 ± 200 (운에 따라 250~700 진폭)

UCB1의 보장: "최악의 경우에도 손실이 시간 log에 비례". 수학적 증명. 탐욕은 그런 보장 없음.

💡 c (탐험 상수)의 효과

c가 클수록 탐험 항이 강해져서 덜 알려진 후보를 더 자주 시도. c가 작으면 탐욕에 가까움.

  • c = 0: 순수 탐욕 (운에 좌우)
  • c = √2 ≈ 1.41: 이론적 최적 (UCB1의 기본값)
  • c = 큰 값: 거의 무작위

실전에서는 게임이나 도메인에 따라 튜닝. 알파고도 c 값 실험을 많이 했음.

PYTHON