Arhn - архитектура программирования

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

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


  • @Chinmay Kanchi: вы ответили на свой вопрос в одном из своих комментариев ... Это не работает из-за комбинаторного взрыва. Черт возьми, чтобы иметь базу данных шахматных игр, вы могли бы заставить лучшие покерные программы сражаться друг с другом и создавать миллиарды игр. Это все равно было бы каплей в море. Тогда как бы вы их анализировали? В реальном времени? Или как бы вы заранее сохранили ход для каждой возможной доски? Где? Будь то процессор или память, во Вселенной недостаточно атомов, чтобы сделать ваш подход осуществимым. Комбинаторный взрыв. 27.04.2010
  • Google переводчик полезен для быстрого и грязного перевода языка, которого вы не знаете, но его переводы часто неграмотны. Возможно, в зависимости от конкретных языков, которые он поддерживает. 17.02.2016
  • Теперь с Alpha Zero от Google я бы сказал, что они уже сделали еще один шаг вперед, создавая статистический материал, играя против себя. И угадайте, что благодаря Alpha Zero предпочтительным дебютом теперь является английский дебют - C4. 19.04.2018

Ответы:


1

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

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

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

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

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

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

27.04.2010
  • Вступительная книга Рыбки (продается!): rybkachess.com/index.php? auswahl=Рыбка+3+книга 27.04.2010
  • И книга открытия, и база данных эндшпиля на самом деле не являются статистическими. Я думаю, что нейронная сеть (любое «обучающее» программное обеспечение) подходит ближе. 27.04.2010
  • @Henk: Базы таблиц эндшпиля явно не таковы, но создание самой вводной книги часто основано на статистике, не так ли? Конечно, как только книга готова, компьютер просто слепо следует за ней. 27.04.2010
  • Openingbooks — результат анализа экспертов. Вы можете назвать человеческое обучение статистическим процессом, но это немного натянуто. 27.04.2010
  • @polygenelubricants: для меня действительно увлекательная вещь в шахматах заключается в том, что это игра с идеальной информацией со строго определенными правилами (ну, в основном ;) и, в конце концов, есть только три возможных исхода при оптимальной игре. с обеих сторон: a) всегда побеждают белые, b) всегда побеждают черные и c) ни белые, ни черные не побеждают (эксперты склоняются к а) кстати). И что действительно увлекательно: мы никогда не узнаем, что во Вселенной недостаточно атомов, чтобы решить шахматы :) Игра доказуемо решаема (и это доказано), но мы просто не могу решить :) 27.04.2010
  • @WizardOfOdds: если вы просто хотите исходить из необработанных чисел и других объективных измерений, го намного увлекательнее, чем шахматы. Я так и не научился играть в го, но на данный момент я предпочитаю шахматы просто потому, что мне нравится иметь самые разные типы фигур для игры. В каком-то смысле это придает ему больше индивидуальности и стиля игры (Сак ферзя!, Двойные слоны! и т. д.). Камни Го однородны, и в зависимости от того, как вы это видите, они могут быть либо элегантными, либо просто скучными. 27.04.2010
  • @SyntaxT3rr0r: у вас есть ссылка на The game is provably solvable (and it has been proven) but we simply cannot solve it? 12.07.2011
  • @sehe: ключевые слова, которые вы ищете: пошаговая игра с нулевой суммой для двух человек с полной информацией. Шахматы действительно похожи на крестики-нолики, только с гораздо большим количеством ходов. И точно так же, как есть оптимальная стратегия для крестиков-ноликов, есть и для шахмат. Но комбинаторный взрыв настолько велик, что мы не можем его вычислить. Единственное значение имеет следующее: в начале игры белые находятся в выигрышной позиции? Если нет, находятся ли черные в выигрышной позиции?< /i> Если ни то, ни другое, то ни белые, ни черные не побеждают. 16.07.2011
  • @sehe: кстати, решение веселой пошаговой игры с нулевой суммой для двух человек с идеальной информацией - очень забавная вещь. Как правило, это очень элегантные рекурсивные алгоритмы. В TopCoder раньше проводились соревнования по алгоритмам, где у вас было 75 минут, чтобы решить три задачи, одна из которых иногда была решением такой игры. Веселые времена. Но, да, шахматы решаемы (независимо от правил, хотя в зависимости от правил могут быть разные решения), просто не решаемы. 16.07.2011
  • @sehe: что касается справки, запись в Википедии на самом деле неплохая: en.wikipedia.org/wiki/ Solving_chess И снова то, что шахматы разрешимы, не подлежит обсуждению. Однако есть некоторые споры о том, сможем ли мы когда-нибудь построить компьютер достаточно быстро, чтобы решить эту проблему или нет: некоторые люди утверждают, что комбинаторный взрыв слишком велик, чтобы его можно было решить в нашей вселенной, другие думают, что однажды это будет выполнимо. , около 2250 года или около того. 18.07.2011

  • 2

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

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

    26.04.2010
  • Я, конечно, понимаю, что количество возможных шахматных партий огромно. Тем не менее, есть что сказать о способности человека быстро оценить небольшое количество хороших ходов, даже не рассматривая явно плохие вещи. Похоже, статистическая машина могла бы использовать это. 27.04.2010
  • @Chinmay, немногие люди изучили хотя бы миллион игр. Но разработка этого статистического механизма является большой проблемой здесь. Что бы он искал? 27.04.2010
  • Я выступал за тупой подход. Если этот ход был сделан в статистически значимом количестве игр (после взвешивания), вы тоже делаете этот ход. 27.04.2010
  • @Chinmay: может быть, начать с анализа этих 4,5 миллионов игр и посмотреть, сколько различных позиций будет среди них после n ходов, для n = 1 (т.е. сколько ходов белых - возможно, появятся все 20) и выше. Вы можете обнаружить, что очень скоро (примерно через 20-30 ходов) все стандартные дебюты разыграны и статистически значимого количества партий уже не существует. 27.04.2010
  • Кроме того, ваш статистический шахматист, вероятно, будет хреновым в эндшпиле. У него не будет никакого материала для продолжения после того, как кто-то сдастся, поэтому оппоненты могут разоблачить его блеф и побить его из невыигрышной позиции просто потому, что ваш алгоритм не может закрыться ;-) 27.04.2010
  • Ну, для эндшпилей можно схитрить и использовать табличные базы ;) 27.04.2010

  • 3

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

    27.04.2010
  • @mcdowella: забавно, что вы упомянули об этом, я прокомментировал ОП, что он может взять лучшие шахматные программы и заставить их играть сами для создания игр, не зная, что они на самом деле использовались для других игр :) 27.04.2010

  • 4

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

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

    27.04.2010

    5

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

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

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

    26.04.2010
  • Я видел оценки, согласно которым сложность дерева игры составляет ~ 10 ^ 50 с учетом правила пятидесяти ходов. Так что да, 4,5 миллиона игр — это капля в море. Тем не менее, огромное количество этих ходов почти никогда не будет сыграно, потому что они действительно ужасно ужасны, такие ходы люди даже не рассматривают. Конечно, даже если количество неплохих ходов составляет всего 10% от общего количества ходов, у вас все равно получается ~10^49 ходов, что не помогает :D 27.04.2010

  • 6

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

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

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

    26.04.2010
  • есть шанс 1 из 10^35, что вы не найдете подходящую позицию на доске (включая отражения и повороты). Не совсем. Шахматные позиции не достигаются случайным образом ни в игре в базе данных, ни в конкретной игре, которую играет компьютер. 27.04.2010
  • @ Стив, ты говоришь, что шансы выше или ниже? Дерево игр не всегда разворачивается в соответствии с играми, хранящимися в базе данных. Он будет экспоненциально разветвляться с каждым ходом противника, который не совпадает с чем-то, что уже есть в базе данных. 1/10 ^ 35 является приблизительным, и фактическое значение не очень далеко. 27.04.2010
  • На самом деле это не вопрос вероятности. Это зависит от того, как играет противник, и мы не можем рассматривать это как случайную величину с известным распределением. Когда хорошие шахматисты играют с машинами, они намеренно выбирают позиции, в которых, по их мнению, машина будет слаба. Так что в этом случае вероятность очень скоро будет намного ниже. И наоборот, пока противник следует стандартному дебюту, вероятность попадания в базу данных равна 1 на несколько ходов. 27.04.2010
  • @ Стив, вероятность имеет прямое отношение к этому, когда вы пишете статистический движок. Меня больше интересует нахождение верхней границы, когда игра действительно разветвляется за пределы небольшого количества ходов, и она может разветвляться очень быстро. Да, есть 20 способов сделать первый ход, но 69352859712417 способов сделать 10-й ход. Но вы правы, когда у вас есть 20/400/8902 возможных ходов для первых трех слоев соответственно, то вероятность попадания в один из базы данных довольно высока, но уменьшается экспоненциально с каждым ходом. 27.04.2010
  • Думаю, под словом вероятность мы понимаем разные вещи. Вероятность того, что игра окажется в позиции, которая есть в базе данных, не равна количеству позиций в базе данных, деленному на количество позиций, которые может занять игра. Это функция стратегии противостоящего игрока. Поскольку мы ничего не сказали об игроке, мы буквально понятия не имеем, какими могут быть вероятности. Если игрок, например, является другой копией нашей машины, то вероятность того, что позиция находится в БД, равна 1, поскольку только так она может играть. 27.04.2010
  • ... если противник всегда играет стандартные дебюты в течение первых нескольких ходов, то вероятность выхода из БД также не увеличивается экспоненциально, она остается равной 1 до тех пор, пока кто-то не отклонится от стандартного дебюта. Для лучших игроков вероятность того, что они рано сделают новый ход, довольно мала, по крайней мере, в важных играх. Если, конечно, это их тактика победить машину, в таком случае она очень высока. Ни по какой причине, кроме чистой случайности, она не будет равна доле возможных позиций в БД. 27.04.2010
  • Итак, чтобы рассчитать нужные вам вероятности, я думаю, что самое близкое к исправлению - это посмотреть на игры в БД и разбить их, чтобы найти в каждой из них новые позиции (если таковые имеются) по отношению к БД в точке. время, когда была сыграна эта игра. Это даст вам оценку вероятности на основе частоты, предполагая, что игры, в которые играет ваша машина, будут в каком-то смысле типичными. Чего, конечно, не будет, если противник знает или догадывается, что играет на автомате. 27.04.2010
  • @Steve, давайте предположим, что это гипотетическая настольная игра с уменьшенными числами. В игре есть 10 возможных состояний. Существует база данных, содержащая только 2 из этих 10 состояний. Учитывая случайную позицию на доске, какова вероятность того, что база данных содержит эту позицию на доске? Если это не 2/10 или 0,2, то да, наши определения вероятности различаются. 27.04.2010
  • Учитывая случайную позицию на доске - случайное с каким распределением? Ваше определение вероятности выглядит как позиция на доске, выбранная случайным образом с равномерным распределением. В стад-покере распределение карт равномерное. В шахматах нет ни распределения фигур на доске, ни распределения позиций на доске в партиях. Итак, в чем мы расходимся, так это в том, что я не думаю, что позиция на доске, выбранная из всех возможных позиций на доске с равномерным распределением, является разумной моделью того, какие позиции вы увидите в шахматной игре. 27.04.2010
  • @ Стив, ты абсолютно прав в том, что позиция на доске, выбранная случайным образом в игре, не имеет равномерного распределения. Но есть бесконечное количество факторов, которые вы можете использовать при составлении распределения, например, сколько кофеина было у оппонента перед игрой. Будет ли соперник играть по-другому, если бы это был чемпионат мира по сравнению с казуальной игрой с друзьями. Или, может быть, противник злится на дождливую погоду, влияющую на его суждение. Существует бесконечное количество факторов, которые вы можете принять во внимание при разработке этой модели. 27.04.2010
  • И в одном вы можете быть уверены, что модель не будет единственно правильной моделью. Попросите десять человек максимально точно смоделировать это, и вы получите десять разных результатов. Вот почему я выбрал простое равномерное распределение, чтобы узнать вероятность в наихудшем случае — когда разыграны учебники, а доска широко открыта, и знания, хранящиеся в базе данных, ничем не помогут. Но если вы хотите детально смоделировать это распределение и добавить столько факторов, сколько хотите, то будьте моим гостем. 27.04.2010

  • 7

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

    В поисках шаблонов

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

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

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

    15.02.2016

    8

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

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

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

    27.06.2016

    9

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

    03.10.2016

    10

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

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

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

    Интересны как база данных, так и компьютерный анализ, но их легко неверно истолковать. Остерегаться.

    12.11.2018

    11

    Чинмай,

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

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

    07.03.2011
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..


    © 2024 arhn.ru, Arhn - архитектура программирования