알고리즘 작동 방식

My Chess Bot이 수를 선택하는 방법

전체 파이프라인

체스판 (FEN / 보드 상태)

18 × 8 × 8 텐서 인코딩

CNN 가치 신경망 (2.3M 파라미터)
Conv(64) → Conv(128) → Conv(128) → FC

포지션 점수 [−1, +1]

Negamax 탐색 (2-ply)

최선의 수 선택

1. 포지션 인코딩

체스판은 18 × 8 × 8 텐서로 변환됩니다. 각 채널은 기물 종류(6종 × 2색 = 12채널), 차례, 캐슬링 권리, 앙파상 정보 등을 담습니다.

2. 가치 신경망 (Value Network)

인코딩된 포지션은 합성곱 신경망(CNN)에 입력됩니다. 3개의 Conv 블록(채널 64 → 128 → 128)을 거친 뒤 완전연결 층을 통과하여, 현재 포지션의 유불리를 -1 ~ +1 값으로 출력합니다.

3. Negamax 탐색

현재 둘 수 있는 모든 합법 수에 대해, 그 수를 둔 뒤의 포지션을 Negamax 알고리즘으로 2수(2-ply) 앞까지 탐색합니다. 각 포지션의 평가는 가치 신경망이 담당하며, 최종적으로 가장 유리한 결과로 이어지는 수를 선택합니다.

예시: 봇이 수를 고르는 과정

  1. 현재 보드 상태를 18 × 8 × 8 텐서로 변환
  2. 현재 위치에서 둘 수 있는 합법 수를 모두 생성 (예: 30개)
  3. 각 수를 뒀을 때의 포지션을 탐색 — 상대방 응수까지 고려 (2-ply)
  4. 각 리프 포지션을 가치 신경망이 평가 → 점수 반환
  5. Negamax 방식으로 각 수의 최종 점수 집계
  6. 가장 높은 점수의 수를 선택해 이동

4. 학습 방법

이 봇의 핵심은 "포지션을 보고 누가 얼마나 유리한지" 판단하는 가치 신경망입니다.

즉, 강력한 엔진의 형세 판단을 신경망이 모방하도록 학습한 방식입니다.

성능 지표

항목내용
학습 포지션 수약 56,450,000개
검증 손실 (MSE)약 0.042 (Stockfish depth=6 정규화 기준)
평균 추론 시간약 1초 이내 / 수 (CPU 기준)
공식 Elo 벤치마크현재 측정 준비 중

알려진 한계

→ 학습 데이터셋 자세히 보기