1992년, TD-Gammon은 순수한 시간차 학습(Temporal Difference; TD)만으로 백개먼(backgammon) 인간 챔피언을 이겼습니다. 2016년에는 AlphaGo가 이세돌을 이겼고, 2017년 AlphaZero는 체스(chess), 쇼기(shogi), 바둑(Go)을 처음부터 압도했습니다. 2024년에는 DeepSeek-R1이 PPO를 GRPO로 바꾼 같은 학습 레시피(recipe)가 추론(reasoning)에도 그대로 작동한다는 사실을 증명했습니다. 게임은 이 phase의 모든 돌파구(breakthrough)를 견인해 온 벤치마크(benchmark)입니다.
유형: Build
언어: Python
선수 지식: Phase 9 · 05 (DQN), Phase 9 · 08 (PPO), Phase 9 · 09 (RLHF), Phase 9 · 10 (MARL)
예상 시간: 약 120분
문제
게임에는 강화학습(Reinforcement Learning; RL)이 원하는 모든 조건이 갖춰져 있습니다. 깨끗한 보상(reward), 즉 승패가 분명하고, 자기 대국(self-play) 리셋으로 무한한 에피소드(episode)를 얻을 수 있습니다. 게임 자체가 시뮬레이터(simulator)이므로 시뮬레이션은 완벽합니다. 행동 공간(action space)은 이산적이거나 작은 연속 공간이며, 다중 에이전트(multi-agent) 구조가 적대적 견고함(adversarial robustness)을 강제합니다.
또한 게임은 모든 주요 RL 돌파구가 검증된 무대였습니다. TD-Gammon(백개먼, 1992), Atari-DQN(2013), AlphaGo(2016), AlphaZero(2017), OpenAI Five(Dota 2, 2019), AlphaStar(StarCraft II, 2019), MuZero(학습된 모델, 2019), AlphaTensor(행렬 곱셈, 2022), AlphaDev(정렬 알고리즘, 2023), DeepSeek-R1(수학 추론, 2025)로 이어지는 흐름은 가장 최근에 게임-RL 기법이 텍스트(text)에도 그대로 작동함을 보여 줍니다.
이 캡스톤(capstone)은 세 가지 이정표 격 구조인 AlphaZero, MuZero, GRPO를 하나의 통합 관점, 곧 자기 대국(self-play) + 탐색(search) + 정책 개선(policy improvement) 으로 묶어 살펴봅니다. 각 방법은 이전 방법을 일반화하며, 특히 GRPO는 AlphaZero의 레시피를 LLM 추론에 적용한 사례입니다. 여기서 토큰(token)이 행동(action)이 되고, 수학적 검증(verification)이 승리 신호 역할을 합니다.
사전 테스트
2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요
1.AlphaZero는 몬테카를로 트리 탐색(MCTS)과 신경망을 결합합니다. 순수 MCTS에 없는 것을 신경망이 무엇을 제공하나요?
2.GRPO(Group Relative Policy Optimization)는 DeepSeek-R1에서 LLM 추론(reasoning)에 사용됩니다. PPO의 어드밴티지(advantage) 추정 방식과 어떻게 다른가요?
0/2 답변 완료
개념
통합 루프(unifying loop).
while True:
trajectory = self_play(current_policy, search) # 자기 자신과 대국을 둡니다
policy_target = search.improved_policy(trajectory) # 탐색이 raw policy를 개선합니다
policy_net.update(policy_target, value_target) # 탐색 결과로 지도 학습합니다
AlphaZero (2017). Silver 등. 규칙이 알려진 게임(체스, 쇼기, 바둑)이 주어졌을 때 다음 구성을 사용합니다.
정책-가치 신경망(policy-value network): 하나의 타워 f_θ(s) → (p, v) 구조입니다. p는 합법 수(legal move)에 대한 사전 확률(prior)이고, v는 기대되는 게임 결과(value)입니다.
몬테카를로 트리 탐색(Monte Carlo Tree Search; MCTS): 매 수마다 가능한 진행 트리를 확장합니다. (p, v)를 사전 확률과 부트스트랩(bootstrap)으로 활용하고, UCB의 변형인 PUCT로 노드를 선택합니다. a* = argmax Q(s, a) + c · p(a|s) · √N(s) / (1 + N(s, a)).
자기 대국(self-play): 에이전트끼리 게임을 둡니다. 수 t에서 MCTS 방문 분포(visit distribution) π_t가 정책 학습 목표가 됩니다.
손실 함수: L = (v - z)² - π · log p + c · ||θ||². 여기서 z는 게임 결과(+1 / 0 / -1)입니다.
사람의 사전 지식도, 수작업 휴리스틱(handcrafted heuristic)도 사용하지 않습니다. 하나의 레시피가 각각 수천만 판의 자기 대국 끝에 체스, 쇼기, 바둑을 모두 정복했습니다.
MuZero (2019). Schrittwieser 등. 규칙을 알아야 한다는 전제를 제거합니다.
고정된 환경 대신 잠재 동역학 모델(latent dynamics model)(h, g, f)를 학습합니다.
GRPO (2024-2025). DeepSeek-R1 레시피입니다. AlphaZero와 같은 형태의 루프를 언어 모델 추론(language-model reasoning)에 그대로 적용합니다.
"게임": 수학 / 코딩 / 추론 문제에 답하는 일입니다. "승리"는 검증기(verifier)가 1을 반환한 경우, 즉 테스트 케이스가 통과하거나 수치 정답이 일치하는 경우입니다.
정책(policy): LLM. 행동: 토큰. 상태: 프롬프트 + 지금까지 생성된 응답.
PPO 식의 비평가(critic) V_φ가 없습니다. 대신 각 프롬프트마다 정책으로부터 G개의 완성문(completion)을 표집하고, 각각의 보상을 계산한 뒤 그룹 상대 어드밴티지(group-relative advantage)A_i = (r_i - mean_r) / std_r를 REINFORCE 형태 갱신의 신호로 사용합니다.
표류(drift)를 막기 위해 참조 정책(reference policy)에 대한 KL 페널티(penalty)를 더합니다. RLHF와 동일한 형태입니다.
보상 모델(reward model)도, 비평가도, MCTS도 없습니다. 그룹 상대 베이스라인(group-relative baseline) 하나가 이 셋을 대체합니다. 추론 벤치마크에서 훨씬 적은 연산량(compute)으로 PPO-RLHF와 같은 품질에 도달하거나 그 이상을 보입니다.
전체 R1 레시피. DeepSeek-R1(DeepSeek, 2025)은 하나의 논문에 담긴 두 모델입니다.
R1-Zero. DeepSeek-V3 베이스 모델에서 출발합니다. 지도 미세 조정(Supervised Fine-Tuning; SFT) 단계를 건너뛰고 GRPO를 바로 적용합니다. 보상은 두 가지로 구성되는데, 첫째 정확도 보상(accuracy reward) 은 규칙 기반(rule-based)으로, 최종 답이 올바른 숫자로 파싱(parse)되는지 또는 코드가 단위 테스트(unit test)를 통과하는지를 봅니다. 둘째 형식 보상(format reward) 은 생성문이 사고 흐름(Chain-of-Thought; CoT)을 <think>…</think> 태그로 감쌌는지를 봅니다. 수천 스텝(step)에 걸쳐 평균 응답 길이는 약 100토큰에서 약 10,000토큰까지 늘어나고, 수학 벤치마크 점수도 o1-preview에 가까운 수준까지 오릅니다. 모델은 처음부터 스스로 추론하는 법을 배웁니다. 다만 사고 흐름이 종종 읽기 어렵고, 언어가 섞이며, 문체의 다듬어짐도 부족합니다.
R1. R1-Zero의 가독성 문제를 네 단계 파이프라인(pipeline)으로 보완합니다.
콜드 스타트 SFT(Cold-start SFT). 깔끔한 형식을 갖춘 긴 CoT 시연 데이터를 수천 개 수집하고, 베이스 모델을 그 데이터로 지도 미세 조정합니다. 읽기 좋은 출발점을 확보합니다.
추론 지향 GRPO(Reasoning-oriented GRPO). 정확도 보상과 형식 보상에 언어 일관성(language-consistency) 보상을 더해, 언어가 섞이는 코드 스위칭(code-switching)을 막은 채 GRPO를 적용합니다.
거부 표집(rejection sampling) + 2차 SFT. RL 체크포인트에서 약 60만 개의 추론 궤적(trajectory)을 표집하고, 최종 답이 맞고 CoT가 읽기 좋은 것만 남깁니다. 여기에 작문, QA, 자기 인식(self-cognition) 같은 비추론 SFT 예시 약 20만 개를 합쳐 베이스를 다시 미세 조정합니다.
전 영역 GRPO(Full-spectrum GRPO). 추론(규칙 기반 보상)과 일반 정렬(general alignment, 도움이 되고 무해한 응답을 위한 선호 기반 보상)을 모두 포함해 RL을 한 번 더 수행합니다.
이 결과 공개 가중치(open weights)임에도 AIME와 MATH-500에서 o1에 맞먹는 성능을 내며, 작아서 증류(distillation)하기에도 충분히 가볍습니다. 같은 논문에서는 Qwen-1.5B부터 Llama-70B까지 여섯 개의 증류된 밀집 모델(distilled dense model)도 공개합니다. 학생 모델(student) 쪽에는 RL을 적용하지 않고 R1의 추론 궤적에 SFT만 수행합니다. 강한 RL 교사(teacher)에서 증류하는 방식은 학생의 규모에서 RL을 처음부터 수행하는 방식보다 일관되게 더 나은 결과를 보입니다.
추론에 PPO 대신 GRPO를 쓰는 이유. DeepSeekMath 논문(2024년 2월)이 든 세 가지 이유는 다음과 같습니다. (1) 가치 신경망(value network)을 학습할 필요가 없어 메모리가 절반으로 줄어듭니다. (2) 그룹 베이스라인이 추론 과제에서 발생하는 희소한 종단(end-of-trajectory) 보상을 자연스럽게 처리합니다. (3) 프롬프트별 정규화(per-prompt normalization) 덕분에 난이도 차이가 큰 문제들 사이에서도 어드밴티지를 서로 비교할 수 있습니다. PPO의 단일 비평가로는 이 점을 다루기 어렵습니다.
탐색 없는 방식 vs 탐색 기반 방식(Search-free vs search-based). 게임 영역은 두 갈래로 갈라졌습니다.
지평선이 긴 완전 정보 게임(perfect-information games) 인 바둑, 체스 등은 여전히 탐색 기반입니다. AlphaZero / MuZero가 지배합니다.
LLM 추론 은 아직 실서비스에서 MCTS를 쓰지 않습니다. 전체 롤아웃(rollout)에 GRPO를 적용하고, 추론 시점의 연산 예산은 best-of-N으로 다룹니다. 과정 보상 모델(Process Reward Model; PRM)은 단계별(step-level) 탐색이 다시 결합될 가능성을 시사합니다.
직접 만들기
code/main.py는 소형 GRPO 를 구현합니다. 여러 그룹의 표본을 가진 다중 팔 슬롯머신(bandit) 문제입니다. 알고리즘은 LLM에서 쓰는 것과 동일하고, 정책과 환경만 단순해졌을 뿐입니다. 핵심은 2025년의 혁신인 손실(loss) 과 그룹 상대 어드밴티지 를 학습하는 것입니다.
프롬프트로 조건화된 LLM 마지막 층(final layer)의 출력과 같은 역할을 합니다.
Step 3: 그룹 표집과 그룹 상대 어드밴티지
defgrpo_step(theta, p_idx, G=8, beta=0.01, lr=0.1, rng=None):
probs = policy_probs(theta, p_idx)
samples = [sample(probs, rng) for _ inrange(G)]
rewards = [verify(p_idx, s) for s in samples]
mean_r = sum(rewards) / G
std_r = stddev(rewards) + 1e-8
advs = [(r - mean_r) / std_r for r in rewards]
for a, A inzip(samples, advs):
grad = onehot(a) - probs
for i inrange(len(probs)):
theta[p_idx][i] += lr * A * grad[i]
# KL 페널티: theta를 참조 정책 방향으로 끌어당깁니다for i inrange(len(probs)):
theta[p_idx][i] -= beta * (theta[p_idx][i] - reference[p_idx][i])
그룹 상대 어드밴티지가 2024년 DeepSeek의 핵심 트릭입니다. 비평가가 필요 없습니다. "베이스라인"은 그룹 평균이고, 정규화에는 그룹 표준편차를 사용합니다.
Step 4: REINFORCE 베이스라인(가치 함수 없음)과 비교하기
같은 설정, 같은 연산량으로 단순한 REINFORCE를 학습시켜 비교합니다. GRPO가 더 빠르고 안정적으로 수렴합니다.
Step 5: 엔트로피(entropy)와 KL 관찰하기
RLHF와 같은 진단(diagnostic) 지표를 살펴봅니다. 참조 정책에 대한 평균 KL, 정책 엔트로피, 시간에 따른 보상 추이가 안정화되면 학습은 끝난 것입니다.
주의할 점
검증기 게이밍을 통한 보상 해킹(reward hacking). GRPO는 RLHF의 위험을 그대로 물려받습니다. 검증기가 잘못되어 있거나 악용 가능(exploitable)하면 LLM은 그 빈틈을 찾아냅니다. 견고한 검증기, 예를 들어 여러 테스트 케이스나 형식 증명(formal proof) 같은 장치가 중요합니다.
그룹 크기가 너무 작음. 그룹 베이스라인의 분산은 대략 1/√G로 줄어듭니다. G = 4 아래에서는 어드밴티지 신호가 잡음(noise)에 가깝습니다. 표준 선택은 G = 8에서 64 사이입니다.
길이 편향(length bias). 길이가 다른 LLM 완성문은 로그 확률(log-probability)도 다릅니다. 토큰 수로 정규화하거나, 시퀀스 단위 로그 확률을 사용하거나, 최대 길이로 잘라내야 합니다.
순수 자기 대국 순환. AlphaZero 식 학습은 일반 합 게임(general-sum game)에서 지배 루프(dominance loop)에 갇힐 수 있습니다. 다양한 상대 풀(opponent pool), 예컨대 리그 플레이(league play, Lesson 10) 같은 방식으로 완화합니다.
탐색과 정책의 불일치(search-policy mismatch). AlphaZero는 정책을 탐색 결과에 맞춥니다. 정책망(policy net)이 탐색 분포를 표현하기에 너무 작으면 학습이 멈춥니다.
연산 자원의 바닥선(compute floor). MuZero / AlphaZero에는 막대한 연산이 필요합니다. 실험 하나에 수백 GPU-시간이 드는 경우가 흔합니다. 학습용으로는 Connect Four 위의 AlphaZero 같은 소형 데모(miniature demo)가 존재합니다.
검증기 커버리지(verifier coverage). 버그 있는 풀이를 통과시키는 단위 테스트는 그 버그를 오히려 강화합니다. 경계 사례(edge case)를 잡아 주는 검증기를 설계해야 합니다.
사용해보기
2026년 게임-RL 지형은 도메인별로 다음과 같이 정리할 수 있습니다.
도메인
주류 방법
2인 영합(zero-sum) 보드 게임 (Go, chess, shogi)
AlphaZero / MuZero / KataGo
불완전 정보 카드 게임 (poker)
CFR + 딥러닝 (DeepStack, Libratus, Pluribus)
Atari / 픽셀 게임
Muesli / MuZero / IMPALA-PPO
대규모 멀티플레이어 전략 게임 (Dota, StarCraft)
PPO + 자기 대국 + 리그 (OpenAI Five, AlphaStar)
LLM 수학/코드 추론
GRPO (DeepSeek-R1, Qwen-RL, 공개 재현 사례)
LLM 정렬(alignment)
DPO / RLHF-PPO (GRPO 아님. 검증 가능한 보상이 아닌 선호 기반 보상이기 때문)
로보틱스(robotics)
PPO + 도메인 랜덤화(Domain Randomization; DR) (게임-RL은 아니지만 같은 정책 경사 도구를 사용)
조합 문제(combinatorial problems)
AlphaZero 계열 (AlphaTensor, AlphaDev)
레시피 자체, 즉 자기 대국, 탐색으로 보강된 개선, 정책 증류는 텍스트, 픽셀, 물리적 제어 영역을 가로지릅니다. GRPO는 그중 가장 최근에 등장한 사례이고, 앞으로 더 많은 사례가 이어질 것입니다.
산출물 만들기
outputs/skill-game-rl-designer.md로 저장합니다.
---
name: game-rl-designer
description: Design a game-RL or reasoning-RL training pipeline (AlphaZero / MuZero / GRPO) for a given domain.
version: 1.0.0
phase: 9
lesson: 12
tags: [rl, alphazero, muzero, grpo, self-play]
---
Given a target (perfect-info game / imperfect-info / Atari / LLM reasoning / combinatorial), output:
1. Environment fit. Known rules? Markov? Stochastic? Multi-agent? Informs AlphaZero vs MuZero vs GRPO.
2. Search strategy. MCTS (PUCT with learned prior), Gumbel-sampled, best-of-N, or none.
3. Self-play plan. Symmetric self-play / league / offline data / verifier-generated.
4. Target signal. Game outcome / verifier reward / preference / learned model. Include robustness plan.
5. Diagnostics. Win rate vs baseline, ELO curve, verifier pass rate, KL to reference.
Refuse AlphaZero on imperfect-info games (route to CFR). Refuse GRPO without a trusted verifier. Refuse any game-RL pipeline without a fixed baseline opponent set (self-play ELO is uncalibrated otherwise).
연습문제
쉬움.code/main.py의 GRPO 슬롯머신을 구현합니다. 프롬프트 2개 × 각 4개의 답 토큰으로 학습합니다. G=8에서 1,000번 미만의 갱신으로 수렴시켜야 합니다.
중간. PPO(클리핑 적용)와 단순 REINFORCE를 연결합니다. 같은 슬롯머신에서 표본 효율과 보상 분산을 GRPO와 비교합니다.
어려움. 길이 2짜리 "추론 사슬(reasoning chain)" 로 확장합니다. 에이전트가 토큰 두 개를 내놓고, 검증기가 그 쌍에 대해 보상을 줍니다. GRPO가 두 단계 시퀀스의 신용 할당(credit assignment)을 어떻게 처리하는지 측정합니다. 힌트: 그룹 어드밴티지를 전체 시퀀스(full sequence) 단위로 계산하고, 두 토큰 위치 모두에 동일하게 전파합니다.
핵심 용어
용어
흔한 설명
실제 의미
MCTS
"학습된 신경망과 결합한 트리 탐색"
몬테카를로 트리 탐색(Monte Carlo Tree Search). 학습된 (p, v) 사전 확률을 사용하는 UCB1/PUCT 선택 방식이다.
AlphaZero
"자기 대국 + MCTS"
MCTS 방문 분포와 게임 결과에 맞춰 학습한 정책-가치 신경망.
MuZero
"모델을 학습하는 AlphaZero"
같은 루프를 학습된 동역학 모델 위의 잠재 공간에서 수행한다.
GRPO
"비평가 없는 PPO"
Group Relative Policy Optimization. 그룹 평균을 베이스라인으로, KL 페널티를 더한 REINFORCE이다.
PUCT
"AlphaZero의 UCB"
Q + c · p · √N / (1 + N_a). 가치 추정과 사전 확률의 균형을 잡는다.
Design a game-RL or reasoning-RL training pipeline (AlphaZero / MuZero / GRPO) for a given domain.
Skill
확인 문제
3문제 · 모두 맞추면 완료 표시가 가능합니다
1.MuZero는 알려진 게임 규칙의 필요성을 제거하여 AlphaZero를 확장합니다. 실제 게임 시뮬레이터 대신 MuZero가 MCTS로 탐색하는 것은 무엇인가요?
2.DeepSeek-R1-Zero는 SFT 없이 베이스 모델에 GRPO를 직접 적용합니다. 모델이 추론하는 법을 배우지만(사고 흐름, chain-of-thought이 자연스럽게 출현) 출력이 지저분하고 언어가 섞입니다. 완전한 R1은 4단계 파이프라인으로 이를 해결합니다. '콜드 스타트 SFT(cold-start SFT)' 첫 단계의 역할은 무엇인가요?
3.GRPO에서 그룹 크기 G는 프롬프트당 표본 추출하는 완성문 수를 결정합니다. G가 너무 작으면(예: G=2) 어떻게 되나요?