Введение

Компьютерное оборудование и программное обеспечение, способное играть в шахматы. Компьютерные шахматы включают в себя как аппаратные средства (специализированные компьютеры), так и программное обеспечение, способное играть в шахматы. Компьютерные шахматы предоставляют игрокам возможность практиковаться даже при отсутствии соперников-людей, а также возможности для анализа, развлечений и тренировок. Компьютерные шахматные приложения, играющие на уровне гроссмейстера или выше, доступны на оборудовании от суперкомпьютеров до смартфонов. Также существуют автономные шахматные машины. Stockfish, Leela Chess Zero, GNU Chess, Fruit и другие бесплатные приложения с открытым исходным кодом доступны для различных платформ. Компьютерные шахматные приложения, реализованные на аппаратном или программном обеспечении, используют стратегии, отличные от человеческих, для выбора ходов: они применяют эвристические методы для построения, поиска и оценки деревьев, представляющих последовательности ходов из текущей позиции, и стремятся реализовать наилучшую из этих последовательностей в процессе игры. Такие деревья обычно весьма велики – от тысяч до миллионов узлов. Вычислительная мощность современных компьютеров, способных обрабатывать десятки тысяч, сотни тысяч узлов или более в секунду, в сочетании с эвристиками расширения и сокращения, которые сужают дерево до наиболее релевантных узлов, делает такой подход эффективным. Первые шахматные машины, способные играть в шахматы или упрощенные варианты шахмат, представляли собой программные программы, работающие на цифровых компьютерах в эпоху вакуумных ламп (1950-е годы). Ранние программы играли настолько плохо, что их мог победить даже начинающий игрок. В течение 40 лет, к 1997 году, шахматные движки, работающие на суперкомпьютерах или специализированном оборудовании, смогли побеждать даже сильнейших игроков-людей. К 2006 году программы, работающие на настольных компьютерах, достигли аналогичного уровня. В 2006 году Монти Ньюборн, профессор информатики в Университете Макгилла, заявил: "Научная работа завершена". Тем не менее, решение шахматной задачи в настоящее время невозможно для современных компьютеров из-за огромного количества возможных вариантов игры. Компьютерные шахматы когда-то считались "дрозофилой искусственного интеллекта", передовой областью инженерии знаний. В настоящее время эта область считается научно завершенной парадигмой, а игра в шахматы – рутинной вычислительной задачей.

Доступность и сила игры

Шахматные машины / программы доступны в нескольких различных формах: автономные шахматные машины (обычно микропроцессор, запускающий шахматную программу, но иногда и в виде специализированного аппаратного устройства), программное обеспечение для стандартных ПК, веб-сайты и приложения для мобильных устройств. Программы работают на всем – от суперкомпьютеров до смартфонов. Аппаратные требования к программам минимальны: приложения занимают не более нескольких мегабайт на диске, используют несколько мегабайт памяти (но могут использовать и больше, если она доступна), и достаточно любого процессора с частотой 300 МГц или выше. Производительность незначительно зависит от скорости процессора, однако для игровой силы важнее наличие достаточного объема памяти для большой таблицы транспозиций (до нескольких гигабайт и более), чем скорость процессора. Большинство доступных коммерческих шахматных программ и машин способны играть на уровне супергроссмейстеров (Elo 2700 и выше) и используют преимущества многоядерных и гиперпоточных компьютерных процессоров. Лучшие программы, такие как Stockfish, превзошли даже игроков уровня чемпионов мира. Большинство шахматных программ состоят из шахматного движка, подключенного к графическому интерфейсу, например, Winboard или Chessbase. Силу игры, контроль времени и другие параметры, влияющие на производительность, можно настраивать через графический интерфейс. Большинство графических интерфейсов также позволяют игроку устанавливать и редактировать позиции, отменять ходы, предлагать и принимать ничьи (и сдаваться), запрашивать и получать рекомендации по ходу, а также просматривать анализ движка по ходу игры. Существуют тысячи шахматных движков, таких как Sargon, IPPOLIT, Stockfish, Crafty, Fruit, Leela Chess Zero и GNU Chess, которые можно бесплатно скачать (или получить исходный код) из Интернета.

Типы и особенности шахматного программного обеспечения

Возможно, наиболее распространенным типом шахматного программного обеспечения являются программы, которые просто играют в шахматы. Человек делает ход на доске, ИИ вычисляет и делает ответный ход, и человек с ИИ поочередно ходят до окончания игры. Шахматный движок, который вычисляет ходы, и графический пользовательский интерфейс (GUI) иногда представляют собой отдельные программы. К GUI можно подключать различные движки, что позволяет играть против соперников с разными стилями. Движки часто имеют простой текстовый интерфейс командной строки, в то время как GUI могут предлагать различные наборы фигур, стили доски или даже 3D- или анимированные фигуры. Поскольку современные движки обладают высокой вычислительной мощностью, движки или GUI могут предлагать способы ограничения возможностей движка, чтобы повысить шансы игрока на победу. Универсальные шахматные движки с интерфейсом UCI, такие как Fritz или Rybka, могут иметь встроенный механизм для снижения рейтинга Эло движка (через параметры `uci limitstrength` и `uci elo` UCI). Некоторые версии Fritz имеют режимы "Гандикап" и "Для развлечения" для ограничения текущего движка, изменения процента ошибок или изменения его стиля. Fritz также имеет режим "Друг", в котором во время игры он пытается подстроиться под уровень игрока. Шахматные базы данных позволяют пользователям искать в обширной библиотеке исторических партий, анализировать их, проверять статистику и формировать репертуар дебютов. Chessbase (для ПК) – распространенная программа для этих целей среди профессиональных игроков, но существуют альтернативы, такие как Shane's Chess Information Database (Scid) для Windows, Mac или Linux, Chess Assistant для ПК, Gerhard Kalab's Chess PGN Master для Android или Giordano Vicoli's Chess Studio для iOS. Программы, такие как Playchess, позволяют игрокам играть друг против друга через интернет. Шахматные обучающие программы учат игре в шахматы. Chessmaster содержал учебные партии, проведенные международным мастером Джошем Вайтцкином и гроссмейстером Ларри Кристиансеном. Стефан Майер Кален предлагает Shredder Chess Tutor, основанный на учебниках Step Роба Брунии и Кора Ван Виджердена. Компания Play Magnus бывшего чемпиона мира Магнуса Карлсена выпустила приложение Magnus Trainer для Android и iOS. Chessbase предлагает Fritz и Chesster для детей. Convekta предоставляет большое количество обучающих приложений, таких как CT ART и линейку Chess King, основанных на учебных материалах гроссмейстеров Александра Калинина и Максима Блоха. Существует также программное обеспечение для работы с шахматными задачами.

Компьютеры против людей

После открытия в 1957 году отсеивания опровержений – применения альфа-бета отсечения для оптимизации оценки хода – команда из Университета Карнеги-Меллона предсказала, что к 1967 году компьютер победит чемпиона мира среди людей. Они не учли сложность определения правильного порядка оценки ходов. Исследователи работали над улучшением способности программ выявлять «убийственные эвристики» – ходы с необычно высокой оценкой, которые следует пересматривать при оценке других ветвей, но вплоть до 1970-х годов большинство ведущих шахматистов считали, что компьютеры в ближайшее время не смогут играть на уровне мастера. В 1968 году международный мастер Дэвид Леви заключил знаменитое пари, что ни один компьютер не сможет победить его в шахматы в течение десяти лет, а в 1976 году старший мастер и профессор психологии Элиот Херст из Университета Индианы написал, что «единственный способ, которым современная компьютерная программа могла бы выиграть хотя бы одну партию у мастера, – это если бы мастер, возможно, в состоянии опьянения, одновременно играя в 50 партий, допустил бы грубую ошибку раз в год». В конце 1970-х годов шахматные программы внезапно начали побеждать высококвалифицированных игроков. В год заявления Херста программа Chess 4.5 Северо-Западного университета на уровне B Американского шахматного чемпионата Пола Массона стала первой, выигравшей турнир среди людей. Леви выиграл свое пари в 1978 году, победив Chess 4.7, но в этом турнире компьютер впервые одержал победу над игроком класса «мастер», выиграв одну из шести партий. В 1980 году Belle стала часто побеждать мастеров. К 1982 году две программы играли на уровне мастера, а три были немного слабее. Внезапное улучшение без теоретического прорыва было неожиданным, поскольку многие не ожидали, что способность Belle анализировать 100 000 позиций в секунду – примерно восемь полуходов – будет достаточной. Спракленсы, создатели успешной микрокомпьютерной программы Sargon, оценили, что 90% улучшения связано с более высокой скоростью оценки, а лишь 10% – с улучшением самой оценки. В 1982 году журнал New Scientist отметил, что компьютеры «играют в ужасные шахматы – неуклюже, неэффективно, расплывчато и просто некрасиво», но люди проигрывали им, совершая «ужасные ошибки, поразительные упущения, невообразимые просчеты, грубые неточности и тому подобное» гораздо чаще, чем осознавали; «короче говоря, компьютеры побеждают главным образом благодаря своей способности находить и использовать просчеты в человеческих замыслах». На Североамериканском компьютерном шахматном чемпионате 1982 года Монро Ньюборн предсказал, что шахматная программа может стать чемпионом мира в течение пяти лет, директор турнира и международный мастер Майкл Вальво – в течение десяти лет, Спракленсы – в течение 15 лет, Кен Томпсон – более чем через 20 лет, а другие предсказывали, что этого никогда не произойдет. Однако наиболее распространенным мнением было, что это произойдет примерно в 2000 году. В 1989 году Леви проиграл Deep Thought в показательном матче. Однако Deep Thought все еще значительно уступал уровню чемпионата мира, что продемонстрировал действующий чемпион мира Гарри Каспаров, одержав две убедительные победы в 1989 году. Лишь в 1996 году Каспаров проиграл свою первую партию компьютеру в турнире с контролем времени в матче Deep Blue против Каспарова, 1996, партия 1. Эта партия стала первой, когда действующий чемпион мира проиграл компьютеру с использованием стандартного контроля времени. Однако Каспаров перегруппировался и выиграл три партии и сыграл вничью две из оставшихся пяти партий матча, одержав убедительную победу. В мае 1997 года обновленная версия Deep Blue победила Каспарова со счетом 3½–2½ в ответном матче. В 2003 году был снят документальный фильм, посвященный в основном этому противостоянию, под названием «Конец игры: Каспаров и машина». С увеличением вычислительной мощности и улучшением оценочных функций шахматные программы, работающие на коммерчески доступных рабочих станциях, стали конкурировать с ведущими игроками. В 1998 году Rebel 10 победил Висванатана Ананда, который в то время занимал второе место в мире, со счетом 5–3. Однако большинство этих партий не проводились в обычном контроле времени. Из восьми партий четыре были блиц-играми (пять минут плюс пять секунд задержки Фишера на каждый ход); Rebel выиграл их со счетом 3–1. Две были полублиц-играми (по пятнадцать минут на каждую сторону), которые Rebel также выиграл (1½–½). Наконец, две партии были сыграны как обычные турнирные партии (сорок ходов за два часа, один час на внезапную смерть); здесь победил Ананд со счетом ½–1½. В быстрых партиях компьютеры играли лучше, чем люди, но при классическом контроле времени – по которому определяется рейтинг игрока – преимущество было не таким очевидным. В начале 2000-х годов коммерчески доступные программы, такие как Junior и Fritz, смогли сыграть вничью с бывшим чемпионом мира Гарри Каспаровым и классическим чемпионом мира Владимиром Крамником. В октябре 2002 года Владимир Крамник и Deep Fritz соревновались в восьми партиях матча «Мозги в Бахрейне», который закончился вничью. Крамник выиграл партии 2 и 3, используя «традиционную» антикомпьютерную тактику – играть консервативно ради долгосрочного преимущества, которое компьютер не может увидеть при поиске в дереве игры. Однако Fritz выиграл партию 5 после грубой ошибки Крамника. Партия 6 была описана комментаторами турнира как «захватывающая». Крамник, находясь в лучшем положении в начале миттельшпиля, попытался пожертвовать фигуру, чтобы добиться сильной тактической атаки, стратегии, известной как высокорискованная против компьютеров, которые наиболее сильны в защите от таких атак. Как и следовало ожидать, Fritz нашел непробиваемую защиту, и атака Крамника сошла на нет, оставив его в плохом положении. Крамник сдался, полагая, что позиция проиграна. Однако последующий анализ людей и компьютеров показал, что программа Fritz вряд ли смогла бы добиться победы, и Крамник фактически пожертвовал ничьей. Последние две партии закончились вничью. При данных обстоятельствах большинство комментаторов все же считают Крамника более сильным игроком в матче. В январе 2003 года Каспаров сыграл с Junior, еще одной шахматной компьютерной программой, в Нью-Йорке. Матч закончился со счетом 3–3. В ноябре 2003 года Каспаров сыграл с X3D Fritz. Матч закончился со счетом 2–2. В 2005 году Hydra, специализированный шахматный компьютер с индивидуальным оборудованием и шестьдесят четырьмя процессорами, а также победитель 14-го IPCCC в 2005 году, победил седьмого в рейтинге Майкла Адамса со счетом 5½–½ в шести партиях (хотя подготовка Адамса была менее тщательной, чем подготовка Крамника к серии 2002 года). В ноябре-декабре 2006 года чемпион мира Владимир Крамник сыграл с Deep Fritz. На этот раз компьютер победил; матч закончился со счетом 2–4. Крамнику удалось просмотреть компьютерную базу дебютов. В первых пяти партиях Крамник направил игру в типичный «антикомпьютерный» позиционный поединок. Он проиграл одну партию (упустив мат в один ход) и сыграл вничью в следующих четырех. В последней партии, пытаясь свести матч вничью, Крамник сыграл более агрессивную сицилианскую защиту и потерпел сокрушительное поражение. Были предположения, что интерес к соревнованиям между людьми и компьютерами в шахматах упадет в результате матча Крамник – Deep Fritz 2006 года. По словам Ньюборна, например, «наука завершена». Матчи между людьми и компьютерами в шахматах показали, как лучшие компьютерные системы обогнали чемпионов мира по шахматам в конце 1990-х годов. За 40 лет до этого лучшие машины набирали примерно 40 очков в год по рейтингу Эло, в то время как лучшие люди – всего около 2 очков в год. Самый высокий рейтинг, полученный компьютером в соревнованиях с людьми, – это рейтинг USCF Deep Thought 2551 в 1988 году, и FIDE больше не принимает результаты соревнований между людьми и компьютерами в свои рейтинговые списки. Были созданы специализированные машинные рейтинговые группы Эло для оценки машин, но эти цифры, хотя и похожи по внешнему виду, не сравниваются напрямую. В 2016 году Шведская шахматная компьютерная ассоциация оценила компьютерную программу Komodo в 3361. Шахматные движки продолжают совершенствоваться. В 2009 году шахматные движки, работающие на более медленном оборудовании, достигли уровня гроссмейстера. Мобильный телефон выиграл турнир 6-й категории с рейтингом 2898: шахматный движок Hiarcs 13, работающий внутри Pocket Fritz 4 на…

Графический пользовательский интерфейс

Компьютерные шахматные программы обычно поддерживают ряд общепринятых де-факто стандартов. Почти все современные программы могут читать и записывать ходы игры в Portable Game Notation (PGN), а также читать и записывать отдельные позиции в Forsyth–Edwards Notation (FEN). Старые шахматные программы часто поддерживали только длинную алгебраическую нотацию, но сегодня пользователи ожидают, что шахматные программы будут понимать стандартную алгебраическую шахматную нотацию. Начиная с конца 1990-х годов, программисты стали разрабатывать отдельно движки (с интерфейсом командной строки, который вычисляет сильнейшие ходы в позиции) или графический пользовательский интерфейс (GUI), предоставляющий игроку шахматную доску и фигуры, которыми можно управлять. Движки передают свои ходы GUI, используя протокол, такой как Chess Engine Communication Protocol (CECP) или Universal Chess Interface (UCI). Разделение шахматных программ на эти две части позволяет разработчикам писать только пользовательский интерфейс или только движок, не создавая обе части программы целиком. (См. также шахматный движок.) Разработчики должны решить, подключать ли движок к базе дебютов и/или табличным базам эндшпиля, или оставить это на усмотрение GUI.

Представительства совета директоров

Структура данных, используемая для представления каждой шахматной позиции, играет ключевую роль в производительности генерации ходов и оценки позиции. Существуют различные методы, включая хранение фигур в массиве ("почтовый ящик" и "0x88"), хранение позиций фигур в виде списка ("список фигур"), использование наборов битов для отслеживания расположения фигур ("битборды") и кодирование позиций по алгоритму Хаффмана для компактного долговременного хранения.

Методы поиска

Компьютерные шахматные программы рассматривают шахматные ходы как дерево игры. В теории они анализируют все возможные ходы, затем все ответные ходы на эти ходы, затем ходы, нейтрализующие ответные ходы, и так далее, где каждый отдельный ход игрока называется "пли". Этот анализ продолжается до достижения заданной максимальной глубины поиска или пока программа не определит, что достигнута конечная позиция "лист" (например, мат).

Минимальный поиск

Одним из специфических типов алгоритмов поиска, используемых в компьютерных шахматах, являются алгоритмы поиска "минимакс", где на каждом ходе (или полуходе) выбирается "лучший" ход игрока; один игрок стремится максимизировать оценку, а другой – минимизировать её. В результате этого чередующегося процесса достигается конкретный конечный узел, оценка которого представляет собой искомую ценность позиции. Эта ценность передаётся обратно к корневому узлу и становится оценкой позиции на доске. Этот процесс поиска называется алгоритмом "минимакс". Наивная реализация алгоритма "минимакс" позволяет осуществлять поиск лишь на небольшую глубину за разумное время, поэтому были разработаны различные методы для значительного ускорения поиска хороших ходов. Обычно для уменьшения пространства поиска программы используется альфа-бета отсечение – система определения верхних и нижних границ возможных результатов поиска и прекращения поиска при совпадении границ. Кроме того, применяются различные селективные эвристики поиска, такие как поиск тишины, усечение вперед, расширение поиска и сокращение поиска. Эти эвристики активируются на основе определенных условий, чтобы отсеять очевидно плохие ходы (ходы из истории) или исследовать перспективные узлы (например, расширение при шахе, проходные пешки на седьмой горизонтали и т.п.). Однако эти селективные эвристики необходимо использовать с большой осторожностью. Чрезмерное расширение поиска приводит к трате времени на неинтересные позиции. Слишком сильное отсечение или сокращение поиска может привести к исключению перспективных узлов.

Поиск по деревьям Монте-Карло

Дерево Монте-Карло (MCTS) — это эвристический алгоритм поиска, расширяющий дерево поиска на основе случайной выборки пространства поиска. Версия алгоритма Монте-Карло для деревьев поиска, часто используемая в компьютерных шахматах, — PUCT (Predictor and Upper Confidence bounds applied to Trees). AlphaZero и Leela Chess Zero от DeepMind используют MCTS вместо алгоритма minimax. Такие движки используют пакетную обработку на графических процессорах для вычисления оценочной функции и политики (выбора хода), и поэтому требуют параллельного алгоритма поиска, поскольку вычисления на GPU по своей природе параллельны. Алгоритмы minimax и альфа-бета отсечения, используемые в компьютерных шахматах, являются последовательными по своей сути и поэтому плохо подходят для пакетной обработки на GPU. MCTS же является хорошей альтернативой, поскольку случайная выборка, используемая в поиске по деревьям Монте-Карло, хорошо распараллеливается, и именно поэтому почти все движки, поддерживающие вычисления на GPU, используют MCTS вместо альфа-бета.

Другие оптимизации

Многие другие оптимизации могут быть использованы для повышения силы шахматных программ. Например, таблицы транспозиции используются для сохранения уже оцененных позиций, чтобы избежать их повторного вычисления. Таблицы опровержений содержат ключевые ходы, которые "опровергают" кажущийся хорошим ход; как правило, их сначала проверяют в вариантах (поскольку ход, опровергающий одну позицию, вероятно, опровергнет и другую). Недостатком является то, что таблицы транспозиции при большой глубине поиска могут становиться очень большими – от десятков до сотен миллионов записей. Например, таблица транспозиции IBM Deep Blue в 1996 году содержала 500 миллионов записей. Слишком маленькие таблицы транспозиции могут привести к тому, что на поиск несуществующих записей из-за "трешинга" будет тратиться больше времени, чем выигрывается за счет найденных записей. Многие шахматные движки используют "обдумывание" – поиск на большую глубину за время хода соперника, подобно тому, как это делают люди, для увеличения игровой силы. Разумеется, более быстрое оборудование и больший объем памяти могут улучшить игру шахматной программы. Гиперпоточные архитектуры могут незначительно повысить производительность, если программа работает на одном или небольшом количестве ядер. Большинство современных программ разработаны для использования нескольких ядер для параллельного поиска. Другие программы предназначены для работы на универсальном компьютере и распределяют генерацию ходов, параллельный поиск или оценку между выделенными процессорами или специализированными сопроцессорами.

История

Первая статья о поиске была написана Клодом Шенноном в 1950 году. Он предсказал две основные возможные стратегии поиска, которые будут использоваться, которые он назвал "Тип А" и "Тип Б", прежде чем кто-либо запрограммировал компьютер для игры в шахматы. Программы типа А будут использовать подход "грубой силы", исследуя каждую возможную позицию для фиксированного числа ходов с использованием чистого наивного алгоритма минимакса. Шеннон считал, что это было бы непрактично по двум причинам. Во-первых, с приблизительно тридцатью возможными ходами в типичной реальной позиции, он ожидал, что поиск приблизительно 10<sup>9</sup> позиций, связанных с поиском трех ходов вперед для обеих сторон (шесть полуходов), займет около шестнадцати минут, даже в "очень оптимистичном" случае, когда шахматный компьютер оценивает миллион позиций каждую секунду. (Для достижения этой скорости потребовалось около сорока лет. Позже алгоритм поиска, называемый alpha-beta pruning, система определения верхней и нижней границ возможных результатов поиска и поиска до тех пор, пока границы не совпадут, уменьшил фактор ветвления игрового дерева логарифмически, но в то время для шахматных программ было невозможно использовать экспоненциальный рост дерева. Во-вторых, он проигнорировал проблему спокойствия, пытаясь оценить только позицию, которая находится в конце обмена фигурами или другой важной последовательности ходов ("линии"). Он ожидал, что адаптация минимакса для решения этой проблемы значительно увеличит количество позиций, которые необходимо рассмотреть, и еще больше замедлит программу. Это привело к тому, что называется "селективным поиском" или "поиском типа B", используя знания в шахматах (эвристики), чтобы выбрать несколько предположительно хороших ходов из каждой позиции для поиска и отбросить остальные без поиска. Вместо того, чтобы тратить вычислительные ресурсы на изучение плохих или тривиальных ходов, Шеннон предложил, чтобы программы типа B использовали два улучшения:
Использовать поиск спокойствия. Использовать forward pruning, то есть рассматривать только несколько хороших ходов для каждой позиции. Это позволило бы им заглянуть дальше ("глубже") в наиболее важные линии в разумные сроки. Однако ранние попытки селективного поиска часто приводили к тому, что лучшие ходы или ходы оказывались отброшенными. В результате, в течение следующих 25 лет, доминировавших этой первой итерацией парадигмы селективного поиска, прогресс был незначительным или отсутствовал вовсе. Лучшей программой, созданной в этот ранний период, была Mac Hack VI в 1967 году; она играла примерно на уровне среднего любителя (класс C по шкале рейтинга Федерации шахмат США). Тем временем аппаратное обеспечение продолжало совершенствоваться, и в 1974 году поиск с помощью грубой силы был впервые реализован в программе Northwestern University Chess 4.0. При этом подходе все альтернативные ходы в узле исследуются, и ни один не отбрасывается. Они обнаружили, что время, необходимое для простого поиска всех ходов, было намного меньше, чем время, необходимое для применения трудоемких эвристик для выбора лишь нескольких из них, и преимущество от того, что не отбрасывать хорошие ходы преждевременно или случайно, привело к значительно более высокой производительности. В 1980-х и 1990-х годах, наконец, был достигнут прогресс в парадигме селективного поиска, с развитием поиска спокойствия, обрезки нулевого хода и других современных эвристик селективного поиска. Эти эвристики имели гораздо меньше ошибок, чем предыдущие, и оказалось, что они стоят дополнительного времени, которое они экономили, поскольку позволяли искать глубже и были широко приняты многими движками. Хотя многие современные программы используют alpha-beta поиск в качестве основы для своего алгоритма поиска, эти дополнительные эвристики селективного поиска, используемые в современных программах, означают, что программа больше не выполняет поиск "грубой силы". Вместо этого они в значительной степени полагаются на эти селективные эвристики, чтобы расширить линии, которые программа считает хорошими, и отбросить и сократить линии, которые программа считает плохими, до такой степени, что большинство узлов в дереве поиска отбрасываются, что позволяет современным программам искать очень глубоко. В 2006 году Реми Кулом создал поиск по дереву Монте-Карло, еще один вид селективного поиска типа B. В 2007 году Леванте Кочиш и Чаба Сепешвари создали адаптацию поиска по дереву Монте-Карло под названием Upper Confidence bounds applied to Trees, или UCT. В 2011 году Крис Розин разработал вариант UCT под названием Predictor + Upper Confidence bounds applied to Trees, или PUCT. PUCT затем был использован в AlphaZero в 2017 году, а позже в Leela Chess Zero в 2018 году.

Знание против поиска (скорость процессора)

В 1970-х годах большинство шахматных программ работало на суперкомпьютерах, таких как Control Data Cyber 176 или Cray 1, что свидетельствует о том, что в этот период развития компьютерных шахмат именно вычислительная мощность являлась ограничивающим фактором производительности. Большинство шахматных программ испытывали трудности при поиске на глубину более 3 полуходов. Лишь с появлением аппаратных шахматных машин в 1980-х годах стала очевидной взаимосвязь между скоростью процессора и знаниями, заложенными в оценочной функции. По оценкам, удвоение скорости компьютера даёт прирост примерно в 50-70 пунктов Эло.

Оценка листьев

Для большинства шахматных позиций компьютеры не могут просчитать все возможные финальные позиции. Вместо этого они должны анализировать позицию на несколько ходов вперед и сравнивать возможные позиции, известные как "листья". Алгоритм, который оценивает эти листья, называется "функцией оценки", и эти алгоритмы часто существенно различаются в разных шахматных программах. Функции оценки обычно выражают оценку позиции в сотых долях пешки (называемых "центипешками"), где по соглашению положительная оценка благоприятствует белым, а отрицательная – черным. Однако некоторые функции оценки выдают проценты вероятности победы, ничьей или проигрыша вместо центипешек. Исторически, разработанные вручную функции оценки учитывают материальную ценность в сочетании с другими факторами, влияющими на силу каждой стороны. При подсчете материала для каждой стороны обычно принимаются следующие значения фигур: 1 балл за пешку, 3 балла за коня или слона, 5 баллов за ладью и 9 баллов за ферзя. (См. Относительная ценность шахматных фигур.) Королю иногда присваивается произвольно высокое значение, например, 200 очков (в работе Шеннона), чтобы гарантировать, что мат перевешивает все остальные факторы. Помимо оценки фигур, большинство разработанных вручную функций оценки учитывают множество других факторов, таких как структура пешек, преимущество пары слонов, активность фигур, и так далее. Обычно также учитывается защита короля и фаза игры (дебют, миттельшпиль или эндшпиль). Методы машинного обучения, такие как Texel-повороты, стохастический градиентный спуск или обучение с подкреплением, обычно используются для оптимизации разработанных вручную функций оценки. Большинство современных функций оценки используют нейронные сети. Наиболее распространенной функцией оценки сегодня является эффективно обновляемая нейронная сеть – неглубокая нейронная сеть, входными данными которой являются табличные значения фигур по полям. Табличные значения фигур по полям – это набор из 64 значений, соответствующих полям шахматной доски, и обычно существует таблица для каждой фигуры и цвета, что дает в сумме 12 таблиц и, следовательно, 768 входов для нейронной сети. Кроме того, некоторые шахматные движки используют глубокие нейронные сети в своей функции оценки. Нейронные сети обычно обучаются с использованием алгоритмов обучения с подкреплением в сочетании с контролируемым или неконтролируемым обучением. Выход функции оценки – это единственное скалярное значение, квантованное в центипешках или других единицах, которое, в случае разработанных вручную функций оценки, является взвешенной суммой различных факторов, а в случае функций оценки на основе нейронных сетей – выходом последнего слоя нейронной сети. Оценка предположительно представляет или аппроксимирует ценность поддерева ниже оцениваемого узла, как если бы поиск был продолжен до конца игры. В процессе поиска оценка сравнивается с оценками других листьев, отсекая узлы, представляющие плохие ходы для любой из сторон, чтобы в итоге получить узел, который, в результате сходимости, представляет собой оценку позиции при оптимальной игре обеих сторон.

Основы таблицы финальной игры

Игра в эндшпиле долгое время была одной из главных слабостей шахматных программ из-за необходимой глубины поиска. Некоторые программы, имевшие уровень мастера, не могли выиграть в позициях, где даже игроки среднего уровня могли обеспечить победу. Для решения этой проблемы компьютеры стали использовать для полного анализа некоторых шахматных эндшпильных позиций, начиная с короля и пешки против короля. Такие табличные базы эндшпилей генерируются заранее с использованием разновидности ретроградного анализа, начиная с позиций, где известен конечный результат (например, где одна сторона поставила мат), и определяя, какие другие позиции находятся в одном ходе от них, затем какие – в одном ходе от этих и так далее. Кен Томпсон был пионером в этой области. Результаты компьютерного анализа иногда удивляли людей. В 1977 году шахматная машина "Белл" Томпсона использовала табличную базу эндшпиля для короля и ладьи против короля и ферзя и смогла свести к ничьей теоретически проигранную позицию против нескольких мастеров (см. позицию Филидора # Ферзь против ладьи). Это произошло, несмотря на то, что программа не следовала обычной стратегии затягивания поражения, удерживая защищающегося короля и ладью вместе как можно дольше. Когда Томпсона попросили объяснить причины некоторых ходов программы, он не смог этого сделать, кроме как сказать, что база данных программы просто выдавала лучшие ходы. Большинство гроссмейстеров отказались играть против компьютера в эндшпиле ферзь против ладьи, но Уолтер Браун принял вызов. Была установлена позиция ферзь против ладьи, в которой ферзь может выиграть в тридцать ходов при идеальной игре. Брауну было разрешено сделать пятьдесят ходов за два с половиной часа, иначе ничья была бы зафиксирована по правилу пятидесяти ходов. После сорока пяти ходов Браун согласился на ничью, не сумев добиться мата или выиграть ладью в течение следующих пяти ходов. В финальной позиции Брауну оставалось еще семнадцать ходов до мата, но он был не так уж далек от выигрыша ладьи. Браун изучил эндшпиль и сыграл с компьютером снова через неделю в другой позиции, в которой ферзь может выиграть в тридцать ходов. На этот раз он взял ладью на пятидесятом ходу, получив выигрышную позицию. Другие позиции, которые долгое время считались выигранными, на самом деле требовали большего количества ходов при идеальной игре, чем разрешало правило пятидесяти ходов в шахматах. В результате на несколько лет официальные правила шахмат ФИДЕ были изменены, чтобы увеличить количество ходов, разрешенных в этих эндшпилях. Через некоторое время правило вернулось к пятидесяти ходам во всех позициях, но было обнаружено еще больше таких позиций, что еще больше усложнило правило, и это не имело значения в игре людей, поскольку они не могли играть в эти позиции идеально. За эти годы были выпущены другие форматы баз данных эндшпилей, включая Edward Tablebase, De Koning Database и Nalimov Tablebase, которые используются многими шахматными программами, такими как Rybka, Shredder и Fritz. Табличные базы для всех позиций с шестью фигурами доступны. Некоторые эндшпили с семью фигурами были проанализированы Марком Бурзуцким и Яковом Коновалом. Программисты, использующие суперкомпьютеры Ломоносова в Москве, завершили шахматную табличную базу для всех эндшпилей с семью фигурами или меньше (тривиальные эндшпильные позиции исключены, такие как шесть белых фигур против одинокого черного короля). Во всех этих базах данных эндшпилей предполагается, что рокировка больше невозможна. Многие табличные базы не учитывают правило пятидесяти ходов, согласно которому игра, в которой пятьдесят ходов проходят без взятия или хода пешкой, может быть объявлена ничьей любой стороной. Это приводит к тому, что табличная база возвращает результаты, такие как "Принудительный мат в шестьдесят шесть ходов" в некоторых позициях, которые на самом деле были бы ничьими из-за правила пятидесяти ходов. Одна из причин этого заключается в том, что если правила шахмат будут изменены еще раз, предоставив больше времени для выигрыша таких позиций, не будет необходимости перегенерировать все табличные базы. Также очень легко для программы, использующей табличные базы, заметить и учитывать эту "особенность", и в любом случае, при использовании табличной базы эндшпиля она выберет ход, который приведет к самой быстрой победе (даже если это нарушит правило пятидесяти ходов при идеальной игре). Если играть против игрока, не использующего табличную базу, такой выбор даст хорошие шансы на победу в течение пятидесяти ходов. Табличные базы Nalimov, использующие современные методы сжатия, требуют 7,05 ГБ дискового пространства для всех эндшпилей с пятью фигурами. Для охвата всех эндшпилей с шестью фигурами требуется примерно 1,2 ТБ. По оценкам, табличная база с семью фигурами требует от 50 до 200 ТБ дискового пространства. Табличные базы эндшпилей сыграли заметную роль в 1999 году, когда Каспаров сыграл выставочный матч в Интернете против остального мира. Был достигнут эндшпиль с семью фигурами (ферзь и пешка), в котором команда мира боролась за спасение ничьей. Евгений Налимов помог, сгенерировав табличную базу эндшпиля с шестью фигурами, где у обеих сторон было по два ферзя, которая активно использовалась для анализа обеими сторонами. Самая популярная табличная база эндшпилей – Syzygy, которая используется большинством ведущих компьютерных программ, таких как Stockfish, Leela Chess Zero и Komodo. Она также значительно меньше по размеру, чем другие форматы, при этом табличные базы с семью фигурами занимают всего 18,4 ТБ. Для современного шахматного движка, такого как Stockfish, табличная база обеспечивает лишь незначительное увеличение игровой силы (примерно 3 Elo пункта для Syzygy 6men по состоянию на Stockfish 15).

Книга открытия

Шахматные движки, как и люди, могут экономить вычислительное время и выбирать сильные варианты, предложенные мастерами, обращаясь к дебютному справочнику, хранящемуся в базе данных на диске. Дебютные справочники охватывают начальные ходы игры на различную глубину, в зависимости от дебюта и варианта, но обычно до первых 10-12 ходов (20-24 полуходов). Поскольку дебюты изучались мастерами на протяжении веков, а некоторые из них известны даже в миттельшпиле, оценки конкретных вариантов, данные мастерами, обычно превосходят общую эвристику программы. Если раньше игра вне дебютного справочника могла быть эффективной стратегией, чтобы заставить шахматную программу полагаться на собственные ресурсы, поскольку дебютные справочники были подобраны под стиль игры программы, а программы имели явные слабости по сравнению с людьми, то сейчас это уже не так. Дебютные справочники, хранящиеся в компьютерных базах данных, скорее всего, гораздо обширнее, чем даже у самых подготовленных игроков, и игра в раннем дебюте вне справочника может привести к тому, что компьютер найдет необычный ход в своей базе данных и поставит соперника в невыгодное положение. Даже если этого не произойдет, игра вне дебютного справочника может быть гораздо более выгодна для тактически сильных шахматных программ, чем для людей, которым приходится самостоятельно находить сильные ходы в незнакомом варианте за доской. В современных турнирах шахматных движков дебютные справочники используются, чтобы вынудить движки играть намеренно несбалансированные дебюты, чтобы снизить количество ничьих и добавить разнообразия в партии.

Списки компьютерных шахматных рейтингов

CEGT, CSS, SSDF, WBEC, REBEL, FGRL и IPON ведут рейтинговые списки, позволяющие любителям сравнивать силу шахматных движков. Различные версии Stockfish, Komodo, Leela Chess Zero и Fat Fritz доминируют в рейтинговых списках в начале 2020-х годов. CCRL (Computer Chess Rating Lists) – это организация, которая оценивает силу компьютерных шахматных программ, проводя матчи между ними. CCRL была основана в 2006 году для развития компьютерных шахматных соревнований и публикации результатов в виде рейтинговых списков. Организация ведет три различных списка: 40/40 (40 минут на каждые 40 ходов), 40/4 (4 минуты на каждые 40 ходов) и 40/4 FRC (такой же контроль времени, но с позициями Chess960).

Докомпьютерный век

Идея создания шахматной машины восходит к восемнадцатому веку. Около 1769 года шахматный автомат под названием «Турк», созданный венгерским изобретателем Фаркасом Кемпеленом, прославился, прежде чем был разоблачен как мистификация. До развития цифровых вычислений серьезные попытки, основанные на автоматах, такие как El Ajedrecista 1912 года, сконструированный испанским инженером Леонардо Торресом Квеведо, который умел играть эндшпиль «король и ладья против короля», были слишком сложны и ограничены, чтобы быть полезными для игры в полноценные шахматные партии. Область исследований механических шахмат оставалась в застое до появления цифровых компьютеров в 1950-х годах.

Ранний век программного обеспечения: селективный поиск и Ботвинник

С тех пор шахматные энтузиасты и инженеры-программисты с возрастающей серьезностью и успехом создавали шахматные машины и компьютерные программы. Одним из немногих гроссмейстеров, серьезно посвятивших себя компьютерным шахматам, был бывший чемпион мира Михаил Ботвинник, написавший несколько работ на эту тему. Интерес Ботвинника к компьютерным шахматам возник в 50-х годах, и он отдавал предпочтение шахматным алгоритмам, основанным на селективной стратегии типа B, предложенной Шенноном, которую он обсуждал вместе с Максом Эуэ в 1958 году на голландском телевидении. Работая с относительно примитивным оборудованием, доступным в Советском Союзе в начале 1960-х годов, Ботвинник был вынужден исследовать методы программного выбора ходов; в то время лишь самые мощные компьютеры могли выполнить поиск вглубь более чем на три хода, а таких машин у Ботвинника не было. В 1965 году Ботвинник был консультантом команды ITEP в матче по компьютерным шахматам СССР-США, которая выиграла заочный матч у программы Kotok McCarthy, возглавляемой Джоном Маккарти, в 1967 году (см. Kotok McCarthy). Позже он консультировал команду, создавшую шахматную программу Kaissa в Московском институте проблем управления. У Ботвинника были собственные идеи о моделировании мышления шахматного мастера. После публикации и обсуждения своих ранних идей о картах атак и траекториях в Московском центральном шахматном клубе в 1966 году он нашёл Владимира Бутенко в качестве сторонника и соавтора. Бутенко первым реализовал представление шахматной доски в виде 15x15 векторных атак на компьютере М-20, определяя траектории. После того как Ботвинник представил концепцию Зон в 1970 году, Бутенко отказался от дальнейшего сотрудничества и начал разрабатывать свою собственную программу под названием "Эврика". В 70-х и 80-х годах, возглавляя команду, в которую входили Борис Стильман, Александр Юдин, Александр Резницкий, Михаил Цфасман и Михаил Чудаков, Ботвинник работал над своим проектом "Пионер" – шахматным проектом, основанным на искусственном интеллекте. В 90-х годах, уже в возрасте за 80 лет, Ботвинник работал над новым проектом "CC Sapiens".

Позднее программное обеспечение: полный поиск

Одна из вех в развитии наступила, когда команда из Северо-Западного университета, разработавшая серию программ Chess и выигравшая первые три чемпионата ACM по компьютерным шахматам (1970–1972), отказалась от поиска типа B в 1973 году. В результате была создана программа Chess 4.0, которая выиграла чемпионат в том же году, а её последователи заняли второе место как на чемпионате ACM 1974 года, так и на первом чемпионате мира по компьютерным шахматам в 1974 году, прежде чем вновь выиграть чемпионат ACM в 1975, 1976 и 1977 годах. Реализация типа A оказалась столь же быстрой: за время, которое ранее тратилось на определение перспективных ходов для поиска, теперь можно было просто перебрать все возможные ходы. Фактически, Chess 4.0 задала парадигму, которой по существу следуют все современные шахматные программы и сегодня, и которую успешно начала разрабатывать советская группа ITEP в 1965 году.

Появление шахматных машин

В 1978 году ранняя версия аппаратной шахматной машины Бель, разработанная Кеном Томпсоном, участвовала и выиграла Североамериканский компьютерный шахматный чемпионат, обойдя доминирующую программу Северо-Западного университета Chess 4.7.

Микрокомпьютерная революция

Технологический прогресс, увеличивший вычислительную мощность на несколько порядков, сделал метод грубой силы гораздо более эффективным, чем в первые годы его применения. В результате, очень сильный тактический ИИ-игрок, дополненный ограниченными позиционными знаниями, заложенными в оценочную функцию и правила отсечения/продления, начал демонстрировать результаты, сопоставимые с лучшими игроками мира. Оказалось, что, по крайней мере в шахматах, наиболее эффективным подходом является позволить компьютерам делать то, что у них получается лучше всего – вычислять, – вместо попыток заставить их имитировать человеческие мыслительные процессы и знания. В 1997 году Deep Blue, машина, использующая метод грубой силы и способная анализировать 500 миллионов позиций в секунду, победила чемпиона мира Гарри Каспарова, впервые в истории компьютер одержал победу над действующим чемпионом мира по шахматам в классическом контроле времени.

Сверхчеловеческие шахматы

В 2016 году NPR попросил экспертов охарактеризовать стиль игры компьютерных шахматных движков. Мюррей Кэмпбелл из IBM заявил, что "компьютеры лишены какого-либо чувства эстетики. Они играют ход, который, по их мнению, является объективно лучшим в любой позиции, даже если он выглядит абсурдным, и могут сделать любой ход, каким бы некрасивым он ни был". Грандмастера Эндрю Солтис и Сьюзан Полгар отметили, что компьютеры чаще склонны к отступлению, чем люди. Нейронные сети не получили широкого распространения в шахматных движках до появления эффективно обновляемых нейронных сетей летом 2020 года. Эффективно обновляемые нейронные сети были первоначально разработаны в 2018 году Ю Насу для компьютерных шахмат сёги, и сначала их необходимо было портировать на производную от Stockfish под названием Stockfish NNUE 31 мая 2020 года и интегрировать в официальный движок Stockfish 6 августа 2020 года, прежде чем другие шахматные программисты начали внедрять нейронные сети в свои движки. Некоторые люди, например Венки Рамакришнан из Королевского общества, полагают, что AlphaZero привела к широкому распространению нейронных сетей в шахматных движках. Однако AlphaZero оказала влияние на очень небольшое количество движков, чтобы начать использовать нейронные сети, и это были, как правило, новые экспериментальные движки, такие как Leela Chess Zero, которые были созданы специально для воспроизведения результатов, описанных в статье об AlphaZero. Глубокие нейронные сети, используемые в оценочной функции AlphaZero, требовали дорогостоящих графических процессоров, которые были несовместимы с существующими шахматными движками. Подавляющее большинство шахматных движков используют только центральные процессоры, а вычисления и обработка информации на графических процессорах требуют специальных библиотек в бэкэнде, таких как CUDA от Nvidia, к которым ни один из движков не имел доступа. Таким образом, подавляющее большинство шахматных движков, таких как Komodo и Stockfish, продолжали использовать созданные вручную оценочные функции до тех пор, пока эффективно обновляемые нейронные сети не были портированы в компьютерные шахматы в 2020 году, что не требовало использования графических процессоров или библиотек, таких как CUDA. Даже в этом случае нейронные сети, используемые в компьютерных шахматах, относительно неглубоки, а методы глубокого обучения с подкреплением, разработанные AlphaZero, по-прежнему крайне редки в компьютерных шахматах.

Решаем шахматы

Перспективы полного решения шахмат обычно считаются весьма отдалёнными. Широко распространено мнение, что не существует вычислительно эффективного метода решения шахмат, даже в слабом смысле – определения с уверенностью оценки начальной позиции, и, следовательно, идея решения шахмат в более строгом смысле – получения практически применимого описания стратегии безупречной игры для любой из сторон – представляется нереалистичной на сегодняшний день. Однако не доказано, что не существует недорогого способа определения наилучшего хода в шахматной позиции, и даже что традиционный алгоритм альфа-бета поиска, работающий на современном вычислительном оборудовании, не может решить начальную позицию за приемлемое время. Сложность доказательства последнего заключается в том, что, хотя число возможных позиций в ходе шахматной партии огромно (порядка не менее 1043–1047), трудно математически исключить возможность того, что начальная позиция позволяет одной из сторон форсировать мат или троекратное повторение позиции после относительно небольшого числа ходов, в этом случае дерево поиска может охватывать лишь небольшую часть множества всех возможных позиций. Математически доказано, что обобщённые шахматы (шахматы, играемые с произвольным числом фигур на произвольно большой доске) являются NP-полными, что означает, что определение выигрышной стороны в произвольной позиции обобщённых шахмат в худшем случае требует экспоненциального времени; однако этот теоретический результат не даёт нижней границы объёма работы, необходимой для решения обычных шахмат 8x8. Мини-шахматы Мартина Гарднера, играемые на доске 5x5 с приблизительно 1018 возможными позициями, были решены; их игровое значение равно 1/2 (то есть ничью может обеспечить любая сторона), и стратегия форсирования этого результата описана. Прогресс достигнут и в другом направлении: по состоянию на 2012 год были решены все эндшпили с 7 или менее фигурами (2 короля и до 5 других фигур).

Шахматные двигатели

"Шахматный движок" – это программное обеспечение, которое вычисляет и ранжирует ходы, определяя наиболее сильные из них в заданной позиции. Разработчики движков сосредоточены на улучшении игры своих программ, часто просто интегрируя движок в графический пользовательский интерфейс (GUI), разработанный другими. Движки взаимодействуют с GUI посредством стандартизированных протоколов, таких как широко распространенный Универсальный шахматный интерфейс (UCI), разработанный Стефаном Майером Каленом и Францем Губером. Существуют и другие протоколы, например, Протокол связи шахматных движков (CEC), разработанный Тимом Манном для GNU Chess и Winboard. Chessbase использует собственный проприетарный протокол, а в свое время компания Millennium 2000 использовала другой протокол для ChessGenius. Движки, разработанные для определенной операционной системы и протокола, могут быть портированы на другие операционные системы или протоколы. Шахматные движки регулярно соревнуются друг с другом на специализированных турнирах.

Веб-приложения для шахмат

В 1997 году Интернет-шахматный клуб выпустил свой первый Java-клиент для игры в шахматы онлайн против других игроков непосредственно в веб-браузере. Это, вероятно, было одним из первых веб-приложений для шахмат. Вскоре после этого появился Free Internet Chess Server с аналогичным клиентом. В 2004 году Международная федерация шахматной корреспонденции открыла веб-сервер, чтобы заменить свою систему, основанную на электронной почте. Chess.com начала предлагать Live Chess в 2007 году. Chessbase/Playchess уже давно имеет загружаемый клиент и добавила веб-клиент в 2013 году. Еще одно популярное веб-приложение – тренировка тактики. Теперь уже несуществующий Chess Tactics Server открыл свой сайт в 2006 году, за которым в следующем году последовал Chesstempo, а Chess.com добавила свой Tactics Trainer в 2008 году. Chessbase добавила веб-приложение для тренировки тактики в 2015 году. Chessbase перенесла свою базу данных шахматных партий в онлайн в 1998 году. Другой ранней базой данных шахматных партий была Chess Lab, запущенная в 1999 году. New In Chess изначально пыталась конкурировать с Chessbase, выпустив программу NICBase для Windows 3.x, но в конечном итоге решила отказаться от разработки программного обеспечения и вместо этого сосредоточиться на своей онлайн-базе данных, начиная с 2002 года. С 2006 года можно было играть против шахматного движка Shredder онлайн. В 2015 году Chessbase добавила веб-приложение Play Fritz, а также My Games для хранения собственных партий. Начиная с 2007 года, Chess.com предлагала контент учебной программы Chess Mentor своим пользователям онлайн. Ведущие гроссмейстеры, такие как Сэм Шенкленд и Уолтер Браун, внесли свой вклад в создание уроков.

Медиа

История компьютерных шахмат: взгляд искусственного интеллекта – полная лекция с участием Мюррея Кэмпбелла (проект IBM Deep Blue), Эдварда Файгенбаума, Дэвида Леви, Джона Маккарти и Монти Ньюборна в Музее истории компьютеров.