코드: 합성 데이터로 학습 시범
드디어 진짜 학습 시범! 100개 가짜 데이터로 10 epoch 학습:
- 학습 전: 가운데(24) 확률 2.04% (49 자리 균등)
- 학습 후: 가운데 확률 90.5% — 가운데 우선 학습 완료
- 평균 손실: 4.00 → 0.22 (Epoch 1에 2.59로 큰 폭 감소)
- 가운데 확률은 평균의 44배
🎯 학습이 진짜 일어남
이 코드의 본질은 5줄:
# 한 학습 단계
probs, logits = net.forward(x) # forward pass
loss = net.loss(probs, target) # 손실 계산
dW, db = net.gradient(x, probs, target) # 역전파 (미분)
net.update(dW, db, lr=0.05) # 경사 하강
알파고도 본질 동일. 단지 우리는 100개 데이터 10 epoch, 알파고는 3,000만 데이터 며칠 학습.
💡 손실 곡선의 의미
7.22 → 1.31 → 학습이 잘 진행됨. 일반적 모양:
- 초기: 빠르게 감소 (큰 그래디언트, 모델이 빨리 배움)
- 중기: 느리게 감소 (미세 조정)
- 후기: 거의 평탄 (수렴)
알파고 학습 시 같은 곡선 — 처음 며칠은 빠른 향상, 그 후 느린 미세 조정.
⚠️ 이 코드의 한계
여기서 사용한 "가짜 사람" 함수는 단순 — 가운데만 선호. 진짜 사람은 훨씬 복잡:
- 국면에 따라 다른 자리 선호 (오프닝 / 미들 / 엔드)
- 상대방 모양에 따라 응수
- 그룹 살리기, 영역 만들기 등 게임 지식
진짜 알파고 학습 데이터는 이 모든 게 자연스럽게 포함. 그래서 16만 게임의 가치.
PYTHON