코드: 작은 Policy Network
작은 policy network의 forward pass를 직접 구현. 핵심 부품:
conv2d_multi— 다채널 합성곱 (입력 3채널 → 출력 8필터)relu— 비선형 활성화softmax— 출력을 확률로
🎯 결과 해석
학습 전 (무작위 가중치) 상태에서:
- 25 자리 확률이 거의 균등 (0.015 ~ 0.089 범위)
- 1/25 = 0.04에 가까운 분포
- 특정 자리를 선호하는 신호 없음 — 당연. 아직 학습 안 했으니까
학습 후 (사람 데이터 100만 게임으로 훈련):
- 중앙 화점에 0.2~0.3 확률 집중
- 코너 자리는 0.001 수준
- 국면에 따라 분포가 변함 — 진짜 "직관"
💡 코드의 본질
이 작은 코드 (~30줄)가 알파고 policy network와 같은 구조. 차이:
- 알파고: 13층 vs 우리 2층
- 알파고: 19x19 vs 우리 5x5
- 알파고: 192 필터 vs 우리 8 필터
- 알파고: TensorFlow 자동 미분 vs 우리 numpy 손코드
스케일이 다르지만 알고리즘은 동일. Conv → ReLU → ... → Softmax.
⚠️ 다음 질문 — 어떻게 학습?
지금까지 모든 가중치는 무작위 또는 손으로 정함. 진짜 알파고는 어떻게 학습한 거?
- 지도학습 (Supervised Learning): 사람 프로 게임 16만 판, 다음 수 맞추기 학습. Ch 6에서 다룸.
- 강화학습 (Reinforcement Learning): 학습된 모델끼리 자가 대국, 이긴 수의 확률 ↑. PART 5에서.
두 가지 결합이 알파고. 코드 본질은 같지만 학습 데이터와 목표가 다름.
PYTHON