Мы запустили раздел /critical-moment — тренажёр на позициях с единственным сильным ходом, который не находит даже сильная нейросеть. В статье — устройство отбора: что считает Stockfish, что — Maia, какие пороги и почему позиция «живёт» как пазл только до тех пор, пока её сложность сохраняется. Текст рассчитан на шахматистов от 1500 ELO и тренеров, которые хотят понимать механику.
Что считается «Критическим моментом»
Полупозиция, в которой одновременно:
- среди всех ходов есть ровно один ход на вершине WDL-оценки (
|strongSet| = 1), - Maia 2400 оценивает вероятность найти его человеком < 10%,
- между ним и вторым кандидатом ощутимый разрыв (
gap ≥ 0.2), - альтернативы «сыграть слабый ход и не проиграть» нет (
lossRisk ≤ 0.5).
Все условия проверяются формально, без ручной разметки и категорий («комбинация», «эндшпиль», «жертва»). Пороги пройдены — позиция в выборке. Хотя бы один нет — отбраковка.
Алгоритм отбора
Источник — современные классические партии 2600+ ELO с TWIC. Каждая позиция проходит конвейер.
Шаг 1. Stockfish, MultiPV = 10, два прохода. Первый — быстрый, 1 000 000 узлов: отсеиваются очевидно равные и уже проигранные позиции. Если топ-3 хода по WDL близки — кандидата на «единственный ход» нет, позиция отбрасывается. Второй — глубокий, 10 000 000 узлов, на выживших. Stockfish даёт стабильную WDL-оценку всем десяти ходам; строится strongSet — множество ходов, чья WDL отличается от лучшей не более чем на gap = 0.2. Для прохода требуется |strongSet| = 1.
Шаг 2. Maia ONNX, ELO 2400. На выживших позициях запускается Maia — нейросеть, имитирующая игрока заданного рейтинга. Inference через ONNX Runtime; модель возвращает policy — распределение вероятностей по ходам, как сыграл бы 2400. Сложность:
difficulty = 1 − Σ policy(m), m ∈ strongSet
То есть вероятность, что игрок 2400 не найдёт ни один сильный ход. При |strongSet| = 1 сводится к 1 − policy(bestMove). Порог — difficulty > 0.9.
Шаг 3. Защита от ловушек. Считается lossRisk — суммарная вероятность, что игрок выберет ход, ведущий к проигрышу по WDL. Порог lossRisk ≤ 0.5: позиция должна быть трудной для нахождения, а не «угадайкой». Раздел про мышление, не про ставку.
Чем отличается от классических тактических пазлов
В классических пазлах критерий — форсированная последовательность с матом или выигрышем материала; вариант можно расписать. В «Критическом моменте» критерий иной: ход просто лучший. Это может быть профилактика, перевод фигуры, размен, изменение пешечной структуры — всё, что Stockfish видит как единственный путь, а Maia как непосильную задачу для человека. Отсюда отсутствие градации сложности и категорий: все позиции прошли одни и те же пороги, «лёгких» по определению нет.
Как устроен сам пазл
После хода игрока позиция меняется. Чтобы пазл продолжался, она должна снова удовлетворять критерию. Проверка идёт в браузере — тем же модулем, что и на сервере, переиспользованным из packages/shared: Stockfish WASM + Maia в ONNX Web Runtime.
Цикл на каждом полуходе:
- Игрок ходит.
- Ход не из
strongSet— пазл завершён ошибкой. - Ход правильный — в новой позиции пересчитываются
strongSet,difficulty,gap,lossRisk. - Все пороги пройдены — соперник отвечает, цикл повторяется.
- Хотя бы один порог не прошёл (позиция «остыла», стала технической, дошло до мата) — пазл завершён успехом.
Длина пазла — следствие позиции, а не разметки. Бывает один полуход, бывает шесть.
Попробовать
/critical-moment — без регистрации для одного пазла; история и статистика — для авторизованных.

Comments (0)
No comments yet. Be the first.