체스 AI를 만드는 가장 핵심적인 문제는 "현재 체스판이 누구에게 유리한가?"를 수치로 표현하는 것입니다. 이를 포지션 평가(Position Evaluation)라고 합니다.
예전 체스 프로그램들은 간단한 규칙으로 평가했습니다.
하지만 이 방식은 기물 배치, 킹 안전, 포지셔널 어드밴티지 같은 복잡한 요소를 반영하지 못합니다.
My Chess Bot은 다른 접근법을 사용합니다. 수천만 개의 체스 포지션을 강력한 엔진(Stockfish)으로 평가한 뒤, 그 결과를 신경망이 학습합니다.
학습 후 신경망은 처음 보는 포지션도 "이 판은 백이 약 0.3 유리하다"와 같이 평가할 수 있게 됩니다.
입력: 체스판을 18 × 8 × 8 텐서로 변환 (기물 위치, 차례, 캐슬링 권리 등)
출력: -1 ~ +1 사이의 단일 값 (+1에 가까울수록 백 유리, -1에 가까울수록 흑 유리)
Stockfish는 평가값을 "센티폰(centipawn)" 단위로 출력합니다. 예를 들어 +300은 폰 3개 어드밴티지를 의미합니다. 하지만 이 값은 -무한대 ~ +무한대 범위라 신경망 학습에 불편합니다.
tanh(x / 400)을 적용하면 모든 값이 -1 ~ +1로 압축되고, 극단적인 값(예: 체크메이트 +9999)도 자연스럽게 처리됩니다.