오늘 끝나면
AlphaGo & AlphaZero
- ✓AlphaGo & AlphaZero의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 AlphaGo이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
MCTS + Self-Play의 왕관 (틱택토 AlphaZero 데모) 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
AI · Day 15 / 강화학습
스스로
두는 신
2016년 3월, 기계가 바둑에서 인간을 이겼다. 진짜 충격은 1년 뒤였다. AlphaGo는 인간 기보 3천만 수를 보고 배웠다. AlphaZero는 규칙만 알고 자기랑 두면서 스스로 신이 됐다.
우주의 원자보다 많은 경우의 수
2016년 3월, 서울에서 이세돌 9단과 DeepMind 서버가 맞붙었다. 5일 뒤 4 대 1로 기계가 이겼다. 그날부터 AI라는 단어의 무게가 달라졌다.
체스는 1997년에 깨졌다(Deep Blue). 바둑은 19년을 더 버텼다.
바둑판은 19×19=361칸이고, 한 수의 선택지는 약 250개, 가능한 국면은 약 10^170이다. 우주 원자 수(10^80)보다 10^90배 많다.
체스를 풀던 brute force는 바둑에서 안 통한다. 가지치기와 평가 함수, 깊이 탐색을 쓰는 방식인데 분기가 너무 넓다. "이 국면이 얼마나 유리한가"를 사람이 함수로 쓰지 못한다.
바둑의 경우의 수는 우주의 원자보다 10^90배 더 많다
평가 함수를 못 쓰면, 끝까지 둬보면 된다
2006년 Rémi Coulom의 발상은 단순했다. 평가 함수를 못 쓰겠으면 무작위 시뮬레이션 승률로 대체한다. 이게 MCTS(Monte Carlo Tree Search)다.
MCTS는 네 단계를 수백만 번 반복한다.
- Selection. 루트부터 유망한 노드로 내려간다(UCB 공식).
- Expansion. 리프에 닿으면 자식 노드를 펼친다.
- Simulation. 거기서 끝까지 둬본다. 이게 Monte Carlo의 심장이다.
- Backup. 승패 결과를 경로를 따라 위로 올린다.
핵심은 탐색과 활용의 균형이다. 승률이 높은 수(Q가 큼)와 덜 가본 수(N이 작음)를 같이 저울질한다. 1600번 반복한 뒤 가장 많이 방문한 수를 둔다.
탐색·활용 균형, UCB 고전값 √2 ≈ 1.41 근처
AlphaGo의 네 머리, 그리고 정책을 직접 배우기
DeepMind의 도박은 이거였다. MCTS의 무작위 시뮬레이션을 딥러닝으로 바꾸면? AlphaGo 2016은 머리 네 개로 굴렸다.
- SL Policy, 인간 기보를 흉내 낸다
- Rollout Policy, 빠른 시뮬레이션에 쓴다
- RL Policy, 셀프플레이로 승률을 올린다
- Value Network, 국면 승률을 예측한다
여기서 Day 14의 DQN과 갈라진다. DQN은 Q(s,a)를 배워서 argmax로 행동을 골랐다. 근데 바둑은 행동이 361개, 로보틱스는 연속 공간이라 argmax가 곤란하다.
그래서 정책 π(a|s) 자체를 직접 파라미터화하고 경사하강한다. 가장 단순한 형태가 REINFORCE다. 좋은 결과를 낸 행동은 로그 확률을 올리고, 나쁜 결과는 내린다. 누적 보상 G가 가중치 역할을 한다.
파이썬 코드 보기
# REINFORCE, Policy Gradient의 원형
log_probs, rewards = [], []
for t in range(T):
a = Categorical(policy(s)).sample() # 정책에서 샘플
log_probs.append(log_prob_of(a))
rewards.append(r)
G = 0; returns = []
for r in reversed(rewards):
G = r + gamma * G # 뒤에서부터 누적
returns.insert(0, G)
loss = -(stack(log_probs) * returns).sum() # 좋은 행동 확률 UP
loss.backward(); opt.step()문제는 G의 분산이 커서 학습이 불안정하다는 점이다. baseline(Value)을 빼는 게 Actor-Critic이고, 업데이트 폭을 clip으로 묶는 게 PPO다. PPO는 지금 강화학습의 디폴트이자 ChatGPT RLHF 엔진이다.
좋은 행동의 로그 확률을 올린다. REINFORCE에서 A2C, PPO로
인간을 버리고, 스스로를 끌어올리다
2017년 AlphaGo Zero 논문의 첫 문장은 도발이었다. "무작위 플레이에서 시작해, 게임 규칙 외엔 아무 지식 없이 초인적 성능에 도달." 인간 기보 0개로 해냈다.
설계가 급진적으로 단순해졌다. Policy와 Value를 신경망 하나로 합쳤다. 사람 데이터와 Rollout을 다 버리고 자기랑 둔다. 한 판이 끝나면 (상태 s, MCTS 분포 π, 승패 z)를 모아 학습한다.
마법의 정체
신경망의 raw policy p를 MCTS가 수백 번 시뮬레이션으로 정제한 게 π다. MCTS가 신경망보다 살짝 더 강하다. 그 "살짝 더 강함"이 다음 신경망의 학습 목표가 된다.
다음 MCTS는 더 좋은 prior에서 출발해 더 강한 π를 만들고, 그게 다시 신경망을 끌어올린다.망이 스스로를 끌어올리는 선순환이다.
AlphaGo Zero는 3일 만에 이세돌을 이긴 버전을 넘어섰다. 40일 뒤엔 100 대 0으로 압살했다.
MCTS가 망보다 살짝 강하고, 그게 다음 망의 목표가 된다
ChatGPT의 DNA에 AlphaZero가 있다
AlphaZero는 게임 AI가 아니다. 오늘날 거대 모델의 뿌리다. AlphaZero의 보상은 게임 승패이고, ChatGPT의 보상은 인간 선호를 학습한 Reward Model이다. 근데 둘 다 PPO 기반이고, 둘 다 자기 출력으로 자기를 키우는 구조다.
교훈 하나. 좋은 보상 신호 하나만 정의하면, 사람이 정답을 안 줘도 시스템이 스스로 진화한다. 물류 최적화, 신소재 발견, 칩 배치 설계가 이미 이 방식으로 SOTA를 깼다.
교훈 둘. 4국 78수. AlphaGo가 1/10,000 확률로도 고려하지 않은 이세돌의 한 수에 Value Network가 허둥댔다. 학습한 분포 안에선 신, 분포 밖에선 아마추어다. 오늘날 LLM 환각, 자율주행 edge case에 그대로 적용된다.
Q. AlphaZero 셀프플레이에서 MCTS가 신경망보다 강한 이유는?
신경망의 raw policy p는 한 번 추론한다. MCTS는 그 prior에서 출발해 수백 번 시뮬레이션하며 실제로 둬보고 결과를 누적한다(탐색). 그래서 MCTS 방문 분포 π가 신경망보다 항상 살짝 더 정제된다. 이 차이가 다음 학습 목표(증류 대상)가 돼서 선순환을 만든다.Self-Play의 계보, 보드게임에서 거대 모델 RLHF까지