잔차 블록 (Residual Blocks) — 더 깊은 신경망
AlphaGo Zero의 신경망 구조 또 다른 변화 — 잔차 블록(Residual Blocks) 사용.
📖 잔차 블록이란
2015년 이미지 분류에서 등장 (ResNet). 핵심:
입력 x ↓ [Conv 1 → BatchNorm → ReLU] ↓ [Conv 2 → BatchNorm] ↓ y + x ← 입력을 직접 더함 (잔차 연결) ↓ ReLU ↓ 출력
핵심: 입력 x를 출력에 직접 더함. "잔차" = 변화량만 학습.
🎯 잔차 연결이 왜 강력한가
- 그래디언트 흐름 개선: 깊은 신경망에서 그래디언트가 사라지는 문제 해결
- 학습 안정성: 가중치가 0이어도 입력이 그대로 전달 → "최소한 입력 유지"
- 매우 깊은 신경망 가능: 100층, 200층도 학습 가능
- 표현력 ↑: 같은 가중치 수에 더 강한 표현 가능
2015년 이후 거의 모든 큰 CNN이 잔차 사용. ResNet, AlphaGo Zero, GPT 등.
📊 AlphaGo Zero 신경망 구조
입력: 19x19x17 (현재 차례 8수 + 상대 8수 + 차례 표시) ↓ [Conv 256, 3x3] ↓ [잔차 블록 × 19 또는 39] ← 깊음! ↓ ┌──────────────────────────┐ ↓ ↓ [Conv 2, 1x1] [Conv 1, 1x1] ↓ ↓ [Flatten + Dense 362] [Flatten + Dense 256] ↓ ↓ [Softmax] [Dense 1 + tanh] ↓ ↓ Policy (362) Value (-1~+1)
362 = 361 + 1 (패스 수). 알파고에는 패스 명시 안 했지만 AlphaGo Zero 명시.
💡 깊이 19 vs 39 — 두 버전
논문에 두 가지 모델:
- AlphaGo Zero (19블록): 빠른 학습, 약 1700만 가중치
- AlphaZero (39블록): 더 강함, 약 2200만 가중치
같은 학습 시간이면 19블록이 더 강하지만, 충분히 학습하면 39블록이 천장이 더 높음.