Статистический подход к шахматам?

читать о том, как Google решает проблему перевода заставило меня задуматься. Можно ли построить сильный шахматный движок, проанализировав несколько миллионов игр и определив наилучший возможный ход, основанный в основном (полностью?) по статистике? Существует несколько таких шахматных баз данных (этой это тот, который имеет 4,5 миллиона игр), и можно потенциально вес движется в одинаковых (или зеркальных или отраженных) позициях, используя такие факторы, как рейтинги участвуют игроки, как старая игра (фактор в улучшений в шахматной теории) и т. д. Любые причины, почему это не быть осуществимым подходом к созданию шахматного движка?

10 ответов


Что-то вроде этого уже сделано: это основная концепция открытие книги.

из-за характера игры, компьютерные AIs, как известно, плохо в начале, когда есть так много возможностей, и конечная цель все еще далеко впереди. Он начинает улучшаться к середине, когда начинают формироваться тактические возможности, и может отлично играть в конце игры, намного превосходя возможности большинства людей.

чтобы помочь AI сделать хорошие шаги в начале многие движки полагаются на открытие книг: в основном это статистически производная блок-схема движений. Многие игры между игроками с высоким рейтингом были проанализированы, и рекомендации жестко закодированы в "книгу", и, хотя позиции все еще находятся в "книге", ИИ даже не "думает", а просто следует тому, что говорит "Книга".

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

на противоположном конце спектра, есть нечто, называемое endgame tablebase, который в основном является базой данных ранее проанализированных эндшпильные позиции. Поскольку позиции ранее были исчерпывающе обысканы, можно использовать это, чтобы обеспечить идеальную игру: учитывая любую позицию, можно сразу решить, выигрывает ли она, проигрывает или рисует, и каков наилучший способ достичь/избежать результата.

в шахматах что-то вроде этого возможно только для открытия и Эндшпиля. Сложность середине игры, что делает игру интересной. Если кто-то может играть в шахматы, просто глядя на стол, то игра это было бы не так захватывающе, интересно и глубоко, как сейчас.


ну, 4,5 миллиона игр по-прежнему охватывает только очень крошечную (бесконечно малую) долю всех возможных игр.

и хотя у вас будет большое количество выигрышных и проигрышных позиций, это оставит проблему сокращения этого до полезного набора параметров. Очень старая проблема, с нейронными сетями в качестве стандартного подхода. Но NeuralNets не выигрывать шахматные турниры.


Это общая стратегия была опробована для различных игр. Очень часто люди создают достаточно большую базу данных игр, заставляя компьютер играть сам. Быстрый поиск в интернете появляетсяhttp://www.cs.princeton.edu/courses/archive/fall06/cos402/papers/chess-RL.pdf - который основывается на предыдущей работе в нарды. В шахматах взгляд грубой силы вперед очень эффективен для компьютеров , хотя и в целом статистика намного эффективнее, когда вы можете смешивать все ранее известная информация о проблеме, а не пытаться повторно узнать ее из данных. Я отмечаю, что в этой ссылке компьютер узнал, что составляет функцию оценки в нижней части перспективы, а не весь процесс.


есть что - то подобное, что очень хорошо работает в компьютере Go-the метод UCT. Он не использует известный набор игр, а вместо этого играет огромное количество случайных игр, сохраняя статистику, которая движется, приводит к более высоким коэффициентам выигрышей. Он делает это, начиная с текущей позиции.

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


Мне нравится идея, но аналогия [с переводом текста], кажется, не подходит при рассмотрении этого контекст предложения на естественном языке требует гораздо меньше элементов, чем контекст позиции шахматной доски (хотя элементы таких предложений, а именно слова, могут происходить из большего множества, чем элементы шахматной игры, а именно фигур, коня, пешки и т. д.)
Более того,наличие многоязычного корпуса (документы различной природы, на разных языках)значительно превышает количество шахматных игр, которые можно найти в цифровом виде, в частности, если учесть, что для шахматного анализа нужна вся игра, в которой для целей перевода можно использовать каждое предложение независимо от остального текста.

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

должен бежать, но я вернусь с конкретными оценками количества возможных шахматных игр (в абсолютном выражении и в подмножестве вразумительный games), и должен эффективно доказать, что 4,5 миллиона игр-относительно небольшая выборка.


есть примерно 10123 игра деревья в шахматы, из которых у вас есть около 4,5 × 106 в этой базе данных. Мы можем игнорировать игровые деревья и рассматривать только сложность пространства состояний, которая находится где-то между 1043 и 1050 правового государства. Предположим, что все игры в этой базе данных имеют уникальные ходы и что в среднем за игру 1000 ходов, что дает нам 4.5 × 109 государства. Принимая по оценкам, нижняя граница 1043 возможных состояний, которые охватывают только 4.5 × 10-34 всех государств. Я не знаю, каково общее количество уникальных позиций доски, которые исключают вращения или отражения, но это только уменьшит его в два раза или около того, что не очень полезно.

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

тем не менее, это отличная идея, которую стоит исследовать дальше, хотя я подозреваю, что ее уже пробовали, учитывая сложность шахмат и интерес к ней.


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

Шаблоны

типичная шахматная программа оценивает и дает бонусы за признанные шаблоны, такие как хорошая защита пешки или открытой ладьи линии и с другой стороны штрафы за удвоение пешек.

такие шаблоны могут быть эффективно запрограммированы в 64-битных масках. У вас будут бит-маски для важных позиций и бит-маски для ожидаемых частей в этих позициях. Каждый шаблон занимает время, чтобы соответствовать, поэтому было бы важно найти те, которые имеют значение. Вот где будет использоваться статистический подход Google. Он может проходить через "исторические" игры и искать закономерности. После того, как он найдет шаблон, ему придется вычислить вес к картине и посмотреть, если улучшенная оценка перевешивает накладные расходы.

Я думаю, что это будет довольно большой проект, чтобы попробовать, даже слишком много для кандидатской диссертации.


машинное обучение сделало большие успехи в последнее время, особенно после того, как команда Google победила чемпиона GO с помощью ML. Теперь это было продемонстрировано и в шахматах. Взгляните на статью в MIT technology Review, https://www.technologyreview.com/s/541276/deep-learning-machine-teaches-itself-chess-in-72-hours-plays-at-international-master/

глубокое обучение ML-это усовершенствование старых нейронных сетевых алгоритмов самонастройки AI. Демонстрация Лаи не учил машину основным правилам шахмат и не заботился об исходе игр. Он просто скормил машине большую базу данных игр, а машина вычислила остальное и играла на разумном "человеческом" уровне.

Я предполагаю, что два больших улучшения должны были бы сделать его более эффективным, обучая его правилам, а затем направлять его, подавая ему фактические результаты игр. Затем после этого идите тренироваться с действующими чемпионами по шахматам, двигателями, такими как Stockfish! :-)


алгоритм глубокого обучения, похожий на программу GO, которая победила мастера человеческого игрока, может быть убийцей. Хотя это потребует больших затрат. Тем не менее, можно использовать изученные шаблоны глубокого обучения от GO и apply это к шахматам.


Чинмай,

Я знаю, что это старая тема, но это тема, которую я изучал в последнее время. Большинство людей, которые ответили выше, на самом деле не получили ваш вопрос. Я думаю, что да, стоит проанализировать многочисленные игры в прошлом, чтобы разработать предлагаемые ходы. Будет ли он охватывать все возможные ходы? Нет, очевидно, нет. Но он охватывает все реалистичные ходы из реальных игр. Человек (или другой компьютерный алгоритм) должен был бы начать играть очень странные движения, чтобы выбросить вещи. Итак, ты не могу построить "идеальный" алгоритм, который выигрывает все время, но если он выигрывает много, скажем, рейтинг >2200 FIDE, это неплохо, не так ли? И если вы включаете открытия и эндшпили, а не просто полагаетесь на анализ прошлых ходов, это делает его еще лучшим двигателем.

существует астрономически большое количество возможных позиций на доске, но оно конечное, и если вы удалите глупые позиции, это немного уменьшит число. Возможно ли иметь 4, 5 или 6 пешек одного игрока, выстроенных в одну линию файл? Да, это произойдет в реальной игре? Сомневаться в этом. Включите базовый шахматный мозг в свою логику для ситуаций, когда противник идет "вне книги". Micro Max - это всего лишь пара сотен строк кода, например. Если противник сыграл глупо, чтобы помешать вашим ходам, они, вероятно, будут доступны с помощью простого двигателя.