ChessRank.org

Opponent Prep 내부 들여다보기: 다음 상대의 유령을 만드는 방법

Opponent Prep를 열고 사용자 이름을 입력하면, 곧 체스판 건너편에서 뭔가 섬뜩한 것을 마주하게 된다. 상대가 여는 방식 그대로 오프닝을 펼치고, 상대가 늘 빠지는 그 불안정한 구조로 흘러가며, 상대가 언제 실수하기 쉬운지 정확히 아는 듯한 봇이다. 우리는 이것을 Ghost Bot이라고 부르며, 그 내부는 실제로 여러 층으로 쌓인 엔지니어링이다 — 서로 독립된 여러 시스템이 겹겹이 쌓여 있고, 각 시스템은 당신이 한 번도 대국해본 적 없는 낯선 사람에 대한 서로 다른 질문에 답하도록 설계되어 있다.

네 가지 시스템, 하나의 Ghost Bot
정확한 포지션 북
플레이어가 실제로 도달했던 모든 포지션과 그곳에서 둔 수
습관 북
한 번도 도달한 적 없는 포지션에서도 그 사람의 패턴을 인식한다
스타일 지문
비슷한 실력의 상대들과 비교해 측정한, 수를 선택하는 방식에 대한 통계적 해석
안전망
Ghost Bot이 습관을 반복하다가 기물을 그냥 걸어놓는 일이 없도록 막는 실시간 엔진 검증

먼저, 그의 기록을 읽는다

이름을 검색하는 순간, 우리는 그 플레이어의 최근 대국을 가져와 한 번의 분석을 거친다 — 승률, 각 색으로 실제로 어떤 오프닝에 도달하는지, 대국의 여러 시점에서 대략 어느 정도의 실력으로 두는지, 그리고 결정적으로 과거에 정확히 어디에서 가장 많은 점수를 잃었는지. 추측이 아니다. 그 자신의 수로부터 직접 집계한 것이다.

정확한 포지션 북: 그의 수를 색인화하다

이 기록으로부터 우리는 조회 테이블을 만든다: 플레이어가 실제로 도달한 적 있는 모든 포지션에 대해, 무엇을 두었고 얼마나 자주 두었는가? Ghost Bot이 그의 발자취를 따를 때, 즉흥적으로 두는 것이 아니다 — 실제로 각 선택지를 얼마나 자주 골랐는지에 따라 가중치가 부여된 이 테이블에서 곧바로 답을 끌어온다. 그가 50번 방문한 포지션으로 이끌면, 봇의 응답은 정확히 그 동일한 50개의 데이터 포인트에서 나온다. 시뮬레이션이라기보다는, 숫자가 들려주는 재현에 가깝다.

섬뜩할 만큼 정확하게 느껴지게 만드는 비결: 습관 북

여기가 진짜 고민이 필요했던 부분이다. 정확한 포지션 테이블은 그가 이전에 있었던 포지션으로 다시 돌아왔을 때만 도움이 된다 — 그리고 조금이라도 이례적인 수를 두는 순간, 그 테이블은 텅 비게 된다. 실제 상대는 무한한 기억력을 가지고 있지 않지만, 습관은 가지고 있다: 항상 비숍을 피앙케토하는 플레이어, 항상 8수 안에 캐슬링을 하는 플레이어, 체스판 반대편에서 당신이 무엇을 하든 항상 같은 폰 삼각형을 쌓는 플레이어.

그래서 우리는 정보의 절반을 의도적으로 버리는 두 번째 인덱스를 만들었다: 플레이어 자신의 기물만으로 포지션을 기억하고, 당신이 무엇을 하고 있는지는 흐릿하게 지워버린다. 이 더 흐릿한 기억이야말로 Ghost Bot이 기술적으로는 그의 실제 대국에서 한 번도 나온 적 없는 포지션에서도 "이건 그의 런던 시스템 같다"고 인식할 수 있게 해준다. 이는 체스 두뇌를 대신하는 패턴 인식이며 — 불러온 습관 하나하나는 두기 전에 조용히 안전성을 재검증받는다. 그래서 익숙한 배치라 해도 포지션이 그렇게 생겼다는 이유만으로 9수째에 기물을 그냥 걸어놓는 일은 결코 없다.

두 북 위에는 그중에서도 가장 기이한 층이 놓여 있다: 일련의 다이얼로 축소된 성격이다. 우리는 플레이어의 실제 수 선택을 그와 비슷한 실력의 대조군 상대들과 비교하여 스타일 지문을 만든다. 이는 "조심스럽게 둔다", "날카로운 전술을 좋아한다", "균형 잡힌 포지션에서 조급해진다" 같은 특성을, 두 북을 넘어 즉흥적으로 두어야 할 때마다 Ghost Bot의 결정을 조용히 같은 방향으로 기울이는 수치적 힌트로 바꾼다. 결과물은 그의 오프닝만 기억하는 것이 아니라 — 그가 기우는 방향으로 함께 기운다.

강함은 어디에서 오는가: Stockfish와 우리 서버의 모델

두 북은 Ghost Bot이 어떤 수를 아는지를 설명한다. 얼마나 강해야 하는지, 어떻게 실수해야 하는지는 설명하지 않는다. 그 부분은 당신의 기기에서 시작된다. Stockfish가 브라우저에서 바로 실행되어 상대의 최근 대국 몇 판을 훑으며, 상대에게 선택지가 있었던 모든 포지션에서 가능한 모든 수에 점수를 매긴다. 그 결과는 우리 서버로 전달되고, 우리 모델이 거기서 배운다. 이 플레이어가 최선의 수를 얼마나 자주 찾는지, 언제 흔들리는지, 실수가 얼마나 커지는지다.

이 모델은 신경망으로, Claude와 ChatGPT의 바탕이 되는 LLM과 비슷한 수학 모델이다. 언어 모델은 다음 단어를 고른다. Ghost Bot은 당신의 상대라면 두었을 법한 방식으로 다음 수를 고른다.

그런데 Report와 Blunder Puzzle은 기다리게 하는데 이건 왜 이렇게 빠를까?

리포트의 대부분은 계산이 아니라 집계다. 레퍼토리, 두 개의 북, 스타일 지문, 약점은 이미 끝난 대국에 대한 산수이고, 브라우저는 그것을 순식간에 처리한다. Stockfish는 당신이 요청한 대국만 채점하면 되고, 누군가 같은 대국을 이미 분석했다면 결과는 검증된 캐시에서 몇 초 만에 돌아온다.

Game Analysis와 Blunder Puzzle은 지름길이 전혀 없는 완전히 다른 종류의 질문에 답한다: 이 특정 대국에서 이 특정 수는 실제로 좋았는가 — 얼마나 좋았는가? 이 질문은 5분 전에는 존재하지 않았다. 누구도 전에 이 질문을 던진 적이 없다. 지금 당신의 판 위 포지션은 방금 당신이 둔 그 대국에만 고유하기 때문이다. 그것을 찾아볼 수 있는 테이블은 존재하지 않는다. 이에 답하는 유일하게 정직한 방법은 그 포지션을 실제 체스 엔진에 넘겨, 대국 전체를 한 수 한 수 탐색하게 하는 것이다 — 그리고 어떤 희생이 정말로 성립하는지 확인할 때, 엔진은 첫 번째 질문 위에 두 번째 질문을 던져야 한다: 상대가 그것을 잡으면 어떻게 되는가? 이것은 테이블 조회가 아니다. 이것은 당신의 기기에서 실시간으로, 한 포지션씩 일어나는 진짜 순차적 사고이며, 아무도 둔 적 없는 대국에 대해 이를 건너뛸 수 있는 캐시는 세상 어디에도 없다.

간단히 말하면: Opponent Prep은 몇 판의 대국으로 한 플레이어의 습관을 배운다. Report와 Blunder Puzzle은 눈앞에 있는 대국의 모든 수를 직접 생각해야 한다.

당신만의 유령을 만들어 보라

Opponent Prep누구든 정찰하고 그 사람 자신의 기록으로 만들어진 봇과 대국해 보세요

시계가 시작되기도 전에 그의 습관을 파악하세요.