체스판은 18 × 8 × 8 텐서로 변환됩니다. 각 채널은 기물 종류(6종 × 2색 = 12채널), 차례, 캐슬링 권리, 앙파상 정보 등을 담습니다.
인코딩된 포지션은 합성곱 신경망(CNN)에 입력됩니다. 3개의 Conv 블록(채널 64 → 128 → 128)을 거친 뒤 완전연결 층을 통과하여, 현재 포지션의 유불리를 -1 ~ +1 값으로 출력합니다.
현재 둘 수 있는 모든 합법 수에 대해, 그 수를 둔 뒤의 포지션을 Negamax 알고리즘으로 2수(2-ply) 앞까지 탐색합니다. 각 포지션의 평가는 가치 신경망이 담당하며, 최종적으로 가장 유리한 결과로 이어지는 수를 선택합니다.
18 × 8 × 8 텐서로 변환이 봇의 핵심은 "포지션을 보고 누가 얼마나 유리한지" 판단하는 가치 신경망입니다. 학습 목표값(레이블)을 연속 스칼라로 설정한 회귀(Regression) 문제로 접근했습니다.
tanh(centipawn / 400)으로 −1 ~ +1 정규화 후 레이블로 사용L(θ) = (1/N) Σ(fθ(xi) − yi)²| 항목 | 설정값 | 역할 |
|---|---|---|
| 옵티마이저 | Adam (lr=3×10⁻⁴, weight_decay=1×10⁻⁴) | 1·2차 모멘트로 파라미터 업데이트 |
| 미니배치 크기 | 2,048 | OOM 방지 + 안정적 기울기 추정 |
| 그래디언트 클리핑 | max_norm=1.0 | 폭발적 기울기 억제 (전체 스텝의 68.2% 발동) |
| LR 스케줄러 | ReduceLROnPlateau (factor=0.5, patience=3) | 검증 손실 정체 시 학습률 절반 감소, 총 5회 적용 |
| 총 에폭 | 50 | — |
| 항목 | 내용 |
|---|---|
| 학습 포지션 수 | 약 60,660,000개 |
| 초기 검증 손실 (epoch 1) | 0.0747 |
| 최종 검증 손실 (epoch 50) | 0.0437 |
| 평균 추론 시간 | 약 1초 이내 / 수 (CPU 기준) |
| 공식 Elo 벤치마크 | 현재 측정 준비 중 |