엔진 깊이(depth)란? 같은 게임도 분석마다 결과가 다른 이유

2026년 7월 28일 · 수상한 수 가이드

같은 게임을 chess.com 게임 리뷰로 돌렸을 때, lichess 컴퓨터 분석으로 돌렸을 때, 그리고 수상한 수로 돌렸을 때 ACPL이 제각각 다르게 나오는 경험, 한 번쯤 해보셨을 겁니다. 도구가 잘못된 게 아닙니다. 세 도구가 서로 다른 깊이(depth)로 분석했기 때문입니다. 이 글에서는 depth가 정확히 무엇인지, 왜 depth에 따라 평가가 뒤집히기까지 하는지, 그리고 치팅 탐지 도구가 depth를 고를 때 무엇을 기준으로 삼는지 정리합니다.

depth: 엔진이 수를 읽는 반수의 깊이

체스 엔진은 현재 포지션에서 가능한 수들을 가지치기하며 탐색 트리를 만들어 나갑니다. 내가 이 수를 두면, 상대는 저 수로 응수하고, 그러면 나는 다시 이렇게 받고… 이 연쇄를 몇 단계까지 내려가며 계산했는지가 depth입니다. 단위는 반수(ply), 즉 한쪽의 착수 하나입니다. depth 10이라면 백과 흑의 수를 합쳐 10수 앞까지, 사람 기준으로는 대략 5수 앞까지 읽었다는 뜻입니다.

물론 현대 엔진이 모든 가지를 균등하게 읽는 것은 아닙니다. 유망한 수순은 명목 depth보다 훨씬 깊게 연장해서 읽고, 가망 없는 가지는 일찍 잘라냅니다. 그래도 depth는 "이 평가값이 얼마나 깊은 계산에 근거했는가"를 나타내는 가장 표준적인 눈금입니다. 한 가지 주의할 점은 이 눈금이 엔진마다 다르게 매겨진다는 것입니다. 가지치기 전략이 다르기 때문에 Stockfish의 depth 20과 다른 엔진의 depth 20은 같은 계산량을 뜻하지 않습니다. depth는 같은 엔진 안에서만 의미 있는 상대적 눈금입니다.

depth가 낮으면 평가가 뒤집히는 이유

낮은 depth의 평가는 단순히 "덜 정확한" 정도가 아니라, 방향 자체가 틀릴 수 있습니다. 대표적인 원인이 호라이즌 효과(horizon effect)입니다. 엔진은 자기가 읽은 깊이, 즉 지평선 너머에서 일어나는 일을 보지 못합니다. depth 8로 읽는 엔진에게 9수째에 터지는 콤비네이션은 존재하지 않는 것과 같습니다. 그래서 얕은 분석은 폰을 따는 수를 최선이라 평가했다가, 두 수 더 읽고 나서야 그 폰이 독이 든 미끼였음을 발견하고 평가를 뒤집습니다.

희생 공격이 걸린 포지션에서 이 현상이 특히 두드러집니다. 룩 희생의 대가는 보통 5~10수 뒤에 회수되는데, 얕은 depth에서는 "룩을 그냥 잃은 나쁜 수"로 보이다가 깊이가 충분해지는 순간 "결정적인 최선 수"로 재평가됩니다. 같은 수 하나가 분석 깊이에 따라 대실수와 명수 사이를 오가는 셈입니다. 요새(fortress)나 장기 폰 엔드게임처럼 결론이 수십 수 뒤에야 드러나는 포지션에서는 depth 30짜리 분석조차 방향을 잘못 잡는 경우가 있습니다.

분석 창에서 평가값이 실시간으로 출렁이다가 어느 순간 안정되는 것을 본 적이 있다면, 바로 이 과정을 목격한 것입니다. 엔진은 depth 1부터 시작해 한 단계씩 깊이를 늘려 가며(반복 심화) 매 단계의 잠정 결론을 내놓는데, 낮은 단계의 잠정 결론이 뒤집히는 일은 드물지 않습니다. 어느 시점의 숫자를 읽었느냐에 따라 같은 분석에서도 다른 값을 얻게 되는 이유입니다.

브라우저 분석과 서버 분석의 격차

depth를 얼마나 올릴 수 있는지는 결국 계산 자원의 문제입니다. 탐색 트리는 깊이가 1 늘 때마다 기하급수적으로 커지기 때문에, depth를 몇 단계 올리는 데 필요한 시간은 몇 배씩 뜁니다.

분석 환경일반적인 depth특징
브라우저 내 분석 (WASM Stockfish)8~12서버 비용 없음, 즉시 결과. 전술적 세부에서 오차 발생
lichess 서버 분석20 안팎대부분의 전술을 잡아냄. 대기열 필요
정밀 분석 (클라우드/로컬 장시간)30+연구·검토용. 한 게임에 수 분 이상 소요

브라우저에서 도는 WASM 버전 Stockfish는 네이티브 버전보다 느리고 스레드·메모리 제약도 큽니다. 그래서 웹 기반 분석 도구 대부분이 depth 8~12 구간에서 타협합니다. 반대로 서버 분석은 깊게 읽는 대신 비용이 들고, 사용자가 몰리면 대기열이 생깁니다.

다행히 이 격차는 예전만큼 치명적이지 않습니다. 최신 Stockfish는 신경망 기반 평가 함수(NNUE)를 쓰기 때문에, 깊이 읽기 전의 포지션 판단 자체가 과거의 수제 평가 함수보다 훨씬 정확합니다. 오늘날의 depth 10은 십수 년 전의 depth 10보다 실질적으로 강하며, 인간 게임에서 나오는 실수의 대부분을 걸러내는 데에는 충분한 수준입니다. 다만 깊은 전술의 세부, 미묘한 엔드게임 판정에서는 여전히 서버급 분석과 차이가 남습니다.

왜 같은 게임의 ACPL·일치율이 도구마다 다른가

ACPL과 엔진 일치율은 모두 "엔진이 생각하는 최선"을 기준선으로 삼는 지표입니다. 그런데 방금 본 것처럼 그 기준선 자체가 depth에 따라 움직입니다. depth 10의 최선 수와 depth 25의 최선 수가 다르면, 같은 착수가 한쪽에서는 일치로, 다른 쪽에서는 손실 30짜리 부정확으로 집계됩니다. 이 차이가 게임 전체에 누적되면 ACPL이 10~20씩, 일치율이 몇 퍼센트포인트씩 벌어지는 것은 자연스러운 일입니다.

그래서 서로 다른 도구가 낸 절대값을 직접 비교하는 것은 의미가 없습니다. "lichess에서는 ACPL 35였는데 여기서는 48이 나왔다"는 모순이 아니라, 자로 잰 값과 줄자로 잰 값의 차이일 뿐입니다. 비교는 반드시 같은 도구, 같은 depth 안에서 해야 합니다.

치팅 탐지에서 depth 선택의 트레이드오프

그렇다면 치팅 탐지 도구는 무조건 깊게 분석해야 할까요? 그렇지 않습니다. 여기에는 뚜렷한 트레이드오프가 있습니다.

치팅 탐지의 핵심 질문은 "이 수가 최선이었는가"가 아니라 "이 계정의 수치가 같은 레이팅대의 정상 분포에서 얼마나 벗어났는가"입니다. 이 비교가 성립하려면 절대값의 정밀도보다 측정의 일관성이 중요합니다. 모든 게임, 모든 계정을 같은 눈금으로 재는 한, 눈금 자체의 오차는 비교 대상 양쪽에 똑같이 적용되어 상쇄되기 때문입니다. 수상한 수가 브라우저 Stockfish의 depth 10을 기본값으로 쓰는 이유가 이것입니다. depth 10의 오차는 분석 대상에게도, 비교 기준이 되는 레이팅별 통계에도 동일하게 들어 있으므로 레이팅 기대치와의 괴리를 재는 데에는 지장이 없고, 대신 수십 판을 몇 분 안에 훑는 속도를 얻습니다.

MultiPV: 최선 수 하나가 아니라 후보 수 여러 개

depth와 함께 자주 등장하는 설정이 MultiPV입니다. PV(Principal Variation)는 엔진이 최선이라고 판단한 수순 하나를 뜻하고, MultiPV는 그 후보를 여러 개 뽑으라는 지시입니다. MultiPV 3이면 1순위부터 3순위까지의 후보 수와 각각의 평가값을 받아볼 수 있습니다.

치팅 분석에서 MultiPV가 필요한 이유는 두 가지입니다. 첫째, 최선 수와 차선 수의 평가 차이가 5센티폰이라면 그 둘은 사실상 같은 수입니다. 차선을 뒀다고 "불일치"로 처리하면 신호가 왜곡되므로, 상위 후보군 전체와 대조하는 Top-N 일치율을 계산하려면 MultiPV가 필수입니다. 둘째, 실제로 둔 수가 후보 몇 순위에 해당하는지, 순위 밖이라면 최선과 얼마나 벌어지는지를 알아야 수마다의 센티폰 손실을 안정적으로 계산할 수 있습니다. 대신 후보를 여러 개 유지하는 만큼 탐색 자원이 분산되어 같은 시간 안에 도달하는 depth는 조금 낮아집니다. 이 역시 정밀도와 정보량 사이의 트레이드오프입니다.

depth가 몇이든, 분석이 만들어내는 것은 통계적 신호이지 증거가 아닙니다. 어떤 점수도 특정인의 치팅을 판정하는 근거가 될 수 없으며, 판정 권한과 비공개 데이터는 플랫폼에만 있습니다. 의심되는 계정은 공식 신고 절차를 이용하세요.

다른 가이드

ACPL이란? 체스 정확도 지표 완전 정리 엔진 일치율(Top1)의 의미와 한계 레이팅별 기대 성능 — 통계로 보는 실력의 상한선 chess.com에서 치팅 의심 유저를 신고하는 방법 → 수상한 수로 직접 분석해보기