강화학습 — 흉내내기에서 이기기로
👋 이 챕터에서 다룰 것
지난 챕터의 SL Policy는 "사람 흉내". 이번 챕터에서 그 위에 강화학습(Reinforcement Learning)을 적용 — "이기기"로 학습 목표 전환.
강화학습이 무엇인가:
📖 강화학습 (RL) 핵심
- 에이전트(Agent): 행동을 결정 (우리 경우 = policy network)
- 환경(Environment): 행동에 반응 (바둑 게임)
- 보상(Reward): 행동 결과의 점수 (이기면 +1, 지면 -1)
- 목표: 누적 보상을 최대화하는 정책 학습
지도학습(SL)과 결정적 차이: 정답 라벨이 없음. 행동의 결과 보상만 있음. 보상을 최대화하는 방향으로 학습.
🎯 알파고의 RL Pipeline
- 초기화: SL Policy의 가중치로 RL Policy 시작
- 자가 대국: RL Policy(현재) vs RL Policy(과거 버전 무작위)
- 결과 수집: 한 게임 끝나면 모든 수에 결과 라벨 (이긴 쪽 +1, 진 쪽 -1)
- Policy Gradient: 이긴 게임의 수의 확률 ↑, 진 게임의 수의 확률 ↓
- 반복: 1, 2, ..., 만 번. SL Policy를 점차 강하게 만듦
💡 왜 과거 버전과 대국?
현재 자기 자신과만 대국하면? — 같은 정책이라 항상 비슷한 패턴. 다양성 부족.
해결: "opponent pool" — 학습 중간 저장된 과거 모델들 중 무작위 선택. 다양한 상대 → 다양한 시나리오 학습.
2016 알파고는 500개 정도의 과거 모델을 풀에 보유.
📊 RL 학습 결과 (논문)
- SL Policy 단독 ELO: 1,917 (시작점)
- RL Policy 단독 ELO: 2,200 (+283)
- RL vs SL 직접 승률: 80% (RL 압도)
- 학습 시간: 50 GPU × 1일 (SL 학습 후 추가)
같은 신경망 구조, 같은 데이터(자가 대국), 다른 학습 목표 → ELO 283 차이.
이 챕터:
- Policy Gradient — RL의 핵심 알고리즘
- 자가 대국으로 데이터 생성
- RL이 발견한 새로운 수 — 사람이 안 두는 강한 수
- 한계 — value function이 또 필요한 이유