image

Вы вечно проигрываете в крестики-нолики? Устали от бесконечных издевок окружающих? Чувствуете себя неполноценным членом общества? Тогда вы обратились по адресу! Сегодня у вас есть уникальная возможность пройти наш обучающий курс по беспроигрышной стратегии, который стартует уже сегодня! Присоединяйтесь сейчас и получите скидку 10% по промокоду НЕУДАЧНОЕ_ВСТУПЛЕНИЕ!

1. Беспроигрышная стратегия в крестики-нолики (или как впасть в состояние «ничейной смерти»)


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

Итак, как не проигрывать, если вы ходите первыми (напомню, что в нашем консервативном мире крестики доминируют).

  • 1 ход: всегда в центр;
  • 2 ход: в угол, который дальше всего от предыдущего хода ноликов;
  • 3 ход: защита от попыток нолика чет выстроить или, что вероятнее, – снова ход в угол;
  • 4 ход: тут у вас в наличии либо уже имеются две выигрышные линии, и вы гасите его, либо нолик прикрыл тылы, и исход – ничья.

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

  • 1 ход: в любой угол;
  • 2 ход: а дальше только пытаться помешать крестикам замутить тройничок, ведь больше вы ни на что не способны в силу своей submissive сущности.


image
Автор потерял нужную картинку из инета, не судите строго

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

Смотрите, корень нашего дерева – пустое поле 3х3. Первый игрок имеет возможность сделать ход на одну из девяти позиций – рисуем дереву девять веток с разными позициями крестиков (там внизу есть картинка). На следующем ходе у каждой ветки с крестиком есть восемь свободных мест для ноликов, то есть каждой ветке рисуем по восемь новых, где в различных комбинациях на поле две клетки заняты крестиком и ноликом. Итого имеем 9х8 – 72 ветки. Следуя такой логике, на дальнейшем шаге у дерева появится по 7 ответвлений, так как свободно только 7 клеток для крестика, количество теперь веток стало 9х8х7=504. Конечное число решений – листиков нашего дерева – равно 9! (все же знают, что это не девять с восклицанием, а факториал? – 9х8х7х6х5х4х3х2х1) или 362880. Теперь достаточно вбить компьютеру все эти исходы и запрограммировать выбирать только выигрышные.

image
Первые ветви дерева решений

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

Ну вот, дерево подстригли, причесали – теперь полное количество его узлов сократилось до 256158, и программа всегда будет выигрывать или заканчивать партию вничью за секунды.

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

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

Вот, например, с шашками дела обстоят интереснее: кроме большого поля у них и правила на порядок сложнее, так что при подсчетах оказывается, что листьев у дерева решений около 5х10^20. Это пять и рядом двадцать нулей. Думаете, это мало? Оно и понятно, у нас мозг просто не способен представить число такого порядка, но для сравнения: чтобы выстроить цепочку от Земли до Марса из бусинок размером с атом потребуется как раз 5,5х10^20 бусинок. Очевидно, что число это офигеть какое большое, и пятидесяти компьютерам не просто так потребовалось почти 20 лет (двадцать лет, Карл!), чтобы полностью рассчитать все возможные исходы шашек и выстроить их дерево решений.

Сие знаменательное событие произошло в 2007 году благодаря команде канадских исследователей во главе с Джонатаном Шеффером, и с этого момента шашки официально вошли в список полностью решенных игр. Если оба соперника не совершают ошибок, то партия всегда заканчивается ничьей. Тут нужно учесть, что речь идет об английских шашках – чекерс; в них назад бьет только дамка.

image
Статья Шеффера и его коллег в журнале Science

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

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

2. Компьютеры, которые играют в игры


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

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

Итак, по сравнению с великими и ужасными шахматами, шашки (а тем более, крестики-нолики) покажутся развлечением для малышей. Напомню, что для английских шашек количество различных вариантов партий равняется 5х10^20, и полностью просчитать их смогли только спустя 18 лет после начала работы программы.

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

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

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

Десять в сто двадцатой степени. Это много. Так много, что у нас даже нет аналогии, чтобы показать весь ужас этого гигантского числа, его попросту не существует в физическом мире. Чтобы вы понимали, количество атомов в известной нам части Вселенной примерно равно 10^80, а количество оригинальных партий в шахматах больше этой цифры в 10^40 раз. Причем в начале игры все выглядит довольно безобидно: у белых есть всего двадцать ходов – 16 пешками и четыре конями — но с каждым сделанным шагом количество возможных комбинаций на доске очень быстро растет. Так, например, после первого хода каждого из соперников, на поле существует 400 различных позиций для следующего шага, после второго – 72084, после третьего – больше 9 миллионов, после четвертого – более 288 миллиардов. Такое число соразмерно с количеством звезд в нашей галактике, а ведь это всего лишь самое начало партии.

Однако не просто так было сказано, что теория игр без шахмат – как самолёт без двигателя. После окончания Второй мировой еще на заре эпохи машинных вычислений шахматы стали своеобразным эталоном для проверки различных идей в этой области. Клод Шеннон *кстати, именно в честь него число 10^120 называется числом Шеннона*, один из основателей раздела об искусственном интеллекте, говорил, что не видит практической ценности в вычислении всех возможных шахматных партий, но сама эта мысль побуждает исследователей двигаться вперед и развивать технологии до тех пор, пока они не найдут решение.

Первую программу для игры в шахматы написал еще в 1952 году Дитрих Принц (коллега Алана Тьюринга) на компьютере Ferranti Mark. Правда, тут не стоит обольщаться, этот компьютер, лишь отдалённо напоминающий наши современные устройства, был таким слабеньким, что объем его оперативной памяти мог содержать программу только по типу «мат в два хода». Она была рассчитана лишь для последних двух ходов, но начало шахматной эпопеи было положено.

В 1956 году компьютер MANIAC-1 *милое название* сыграл три партии в облегченные шахматы (на поле 6х6 и без слонов) – сам с собой, против сильного игрока и против новичка. Несмотря на то, что опытный шахматист в начале игры решил отказаться от ферзя, программа все равно ему проиграла *какой неумелый маньяк*, но вот последнего – слабого соперника компьютер смог победить. Это была первая победа машины над человеком.

image
Название MANIAC, кстати, — это аббревиатура: Mathematical Analyzer Numerical Integrator and Automatic Computer. "… Компания Metropolis выбрала имя MANIAC в надежде остановить поток глупых аббревиатур для названий машин»

После изобретения в 1971 году первого микропроцессора, у ученых появилась возможность задействовать более мощные компьютеры, а значит, сохранять в памяти машины еще больше победных комбинаций. В 1974 году был организован первый чемпионат по шахматам среди программ, в 1978 году машина обыграла международного мастера по шахматам, а в 1981-м Cray Blitz стал первым компьютером, получившим рейтинг мастера.

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

Кстати, легендарным Deep Blue стал 11 мая 1997 года, когда выиграл матч из шести партий у чемпиона мира Гарри Каспарова. Интересно, что за восемь лет до этого в Нью-Йорке Каспаров победил более слабого предшественника Deep Blue под названием Deep Thought. Тогда он высказал такую мысль: «Если компьютер сможет превзойти в шахматах лучшего из лучших, это будет означать, что ЭВМ в состоянии сочинять самую лучшую музыку, писать самые лучшие книги. Не могу в это поверить. Если будет создан компьютер с рейтингом 2800, то есть равным моему, я сам сочту своим долгом вызвать его на матч, чтобы защитить человеческую расу». Что ж, ему явно пришлось пересмотреть свои взгляды.

image
Матч 1997 года, который стал предметом документального фильма «Человек против машины»

Окончательно и бесповоротно человечество проиграло железякам в 2005-м: в этот год представитель нашей расы в последний раз смог одержать верх над программой. Сегодня рейтинг живых шахматистов настолько отстал от их железных соперников, что человеку больше никогда не выиграть партию с машиной. На начало сентября 2022 года наивысший шахматный рейтинг человека составляет 2861, а программы 3535.

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

image
Рейтинг живых шахматистов с официального сайта FIDE на начало сентября

image
Рейтинг шахматных программ

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

3. Go play Go (Последний бой людей)


Оказалось – человек так отстал от своих железных собратьев, что больше никогда не сможет одержать над ними верх. Но что, если бы существовала игра, где люди могли бы проявлять свои сильные стороны, не присущие машинам? Где победа зависит не только от строгих логических расчетов, но и от силы воображения и хитрости?

Как вы уже поняли, такая игра есть: мы наконец-то добрались до го. Го – китайская стратегия – является самой древней настольной игрой, сохраняющей свои правила практически неизменными вот уже 2500 лет. До ХХ века игра была распространена только в Азии, но на сегодняшний день она входит в пять дисциплин Всемирных интеллектуальных игр и является самой распространенной настолкой по числу участников (c поправочкой на плотность населения Востока).

В Китае го образно называют «разговором рук» *italian_moment*, что подчеркивает особое отношение к игре как к искусству. Это неудивительно, ведь ее правила невероятно сложны, так что напоминают не соревнование, а своеобразный диалог, и у разных мастеров есть даже свои собственные стили, по которым их узнают – как стиль писателя или манера художника.

Чтобы сыграть в классическую версию го вам понадобятся: доска в клетку 19х19 (называется гобан) – 1 шт, белые игральные камни – 180 шт., черные игральные камни – 181 шт., кошка-жена – 1 шт. (если есть больше, поделитесь?). Цель игры — отгородить на доске камнями своего цвета бо́льшую территорию, чем противник. Как видно, здесь нет черных и белых клеток на поле, камни можно ставить на любые пересечения линий, нет и разграничения игральных фигур – все они равноценны друг другу. Собственно, именно эта простота и порождает дьявольски сложные тактику и стратегию.

image

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

Обычный метод перебора, которым пользуются компьютеры для выбора выигрышной стратегии в шахматах, здесь просто не уместен. Во-первых, дерево решений го необычайно огромно – на начальной позиции существует 55 вариантов ходов (в шахматах – 20), и «растет» оно быстрее – после первых двух ходов соперников существует уже около 16 миллиардов позиций для следующего (в шахматах – меньше ста тысяч). А во-вторых, го – игра, в которой очень важен опыт.

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

Но вот настал 2016 год и программа AlphaGo, разработанная корпорацией Google, в прямом эфире победила мирового мастера с девятым даном – Ли Седоля. Это стало возможно благодаря новому подходу обучения, который кардинально отличается от обучения шахматных компьютеров. Помните, что Deep Blue использовал обычный метод перебора дерева решений просто с кучей оптимизаций и на самом деле кроме мощных процессоров и больших объемов памяти он недалеко ушел от железяк 60-х.

image

AlphaGo – революционная программа, в ней нет базы данных с удачными ходами чемпионов или оценочного алгоритма, лишь самые базовые правила, которым учат новичков. Всему остальному она научилась сама, проигрывая тысячи партий с собой. В основе компьютера лежит нейронная сеть, моделирующая работу органического мозга. Главное новшество AlphaGo заключается в использовании глубинного обучения — метода, успешно применявшегося для распознавания образов (например, для поиска картинок в Google Images). Но как ни парадоксально именно из-за этого разработчики не знают, каким конкретным образом программа оценивает ситуацию в игре: система настолько сложна, что анализировать все уровни обработки информации в целом не представляется возможным.

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

Довольно простая статья о работе AlphaGo.

Поэтому как ни грустно признавать наше поражение по всем фронтам (и в шашках, и в шахматах, и даже в го) – все же мы не проигрываем впустую. Такие программы, как AlphaGo только лишний раз доказывают невероятную силу человеческого разума и задают высокую планку для следующих поколений. Несмотря на окончательную победу машин, го не только не потеряла статус интересной настольной игры, но и вышла за эти рамки, став важным этапом в истории развития искусственного интеллекта, также как шашки или шахматы.

Комментарии (6)


  1. Pochemuk
    19.11.2022 13:34
    +5

    Крестики-нолики, шахматы, шашки, рэндзю, го, го-моку, сёги — это все позиционные игры с полной информацией.

    А вот карточные игры (преферанс, покер, бридж, да хотя бы и дурак) — это игры с неполной информацией. А где неполная информация, там и блеф. Где блеф — там и смешанные стратегии решений.

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

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

    Тем не менее, в покер (техасский холдем) ИНС научили играть. В 2015 году ИНС Cepheus играла и выигрывала в heads-up limit Texas holdem, а в 2017 году DeepStack рвала профессионалов людей в heads-up no-limit. И при этом они умели блефовать. Как они это делают? Как научить ИНС играм в смешанных стратегиях?


    1. ftdgoodluck
      20.11.2022 02:33
      +1

      Вы правы, в покере для каждой конкретной ситуации существует идеальная смешанная стратегия - но там достаточно малое пространство в целом - чек/бет для первой руки, колл/рейз/пас для второй. В безлимитном это чуть осложняется произвольным размером ставки, но в целом тоже решаемо. Плюс, сама "партия" длится очень недолго, что позволяет очень быстро производить симуляции и подстраивать стратегии. Если интересно - погуглите GTO Solver - как они в целом работают


      1. Pochemuk
        20.11.2022 22:39

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

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

        Т.е. ИНС хорошо (на самом деле — так себе) зарекомендовала себя в задачах классификации (в т.ч в распознавании образов) и кластеризации. В прогнозировании ошибается не намного чаще синоптиков. Но как реализовать обучение ее смешанным стратегиям?

        Есть, допустим, алгоритм Робинсон-Брауна обучения (не ИНС, а матричных игр) смешанным стратегиям. Но как его прикрутить к ИНС, чтобы она выдавала не «лучший снос такой-то», а «в 50% следует выбрать первый вариант сноса, в 40% — второй, и в 10% — третий»?

        — А как же Вы селёдку без водки будете есть? Абсолютно не понимаю. © «Дни Турбиных».


  1. slavanikolsky
    20.11.2022 01:05
    +1

    Дополню из Википедии


  1. raamid
    20.11.2022 04:27
    +2

    Мне одному кажется странным, что в рейтинге шахматных программ нет Alpha Zero? Это следующий этап развития Alpha Go, универсальная версия, которая довольно успешно научилась играть в шахматы и даже "разработала" свой уникальный стиль.


    1. Rom77
      20.11.2022 06:41
      +1

      Рейтинги вычисляются на базе результатов тестовых партий в стандартизованных условиях, заданных авторами рейтинга. Для этого им как минимум нужна копия программы. Поскольку АльфаЗеро недоступна, то и в рейтинг-листах её нет. Да и не запустится она на указанных CPU, так как плюсом нужны ещё TPU.

      Можно конечно прикинуть рейтинг "на пальцах", с соответствующей для такой операции точностью. Но давайте попробуем. АльфаЗеро набрала примерно 60 % очков против Stockfish 8. Это около 70 пунктов рейтинга. У восьмого Стокфиша рейтинг 3371, значит у Альфы будет около 3440. Но это плюс-минус лапоть, поскольку ещё очень много факторов нужно учесть.