← Все игры

Как машина научилась играть

Шесть ступеней, и каждая начиналась с отказа от предыдущей идеи

Шесть ступеней и шесть отказов

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

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

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

1

Полный перебор

досчитать до конца всё, что можно досчитать
Что умеет

Игра с конечным числом позиций, без случайности и без скрытой информации разрешима в принципе. Эрнст Цермело показал это в 1913 году на примере шахмат: либо у одной из сторон есть выигрывающая стратегия, либо обе способны добиться ничьей, и третьего не дано. Доказательство не говорит, как играть, — оно говорит, что ответ уже лежит в дереве. Дальше техника: раскрыть дерево до листьев, где партия кончилась, и подняться обратно с точным результатом. В крестиках-ноликах доска заполняется 9! = 362 880 способами — меньше, чем процессор перебирает за миллисекунду. Оценки здесь нет вовсе: выигрыш, проигрыш и ничья посчитаны, а не угаданы.

Где ломается

Дерево растёт не в длину, а в степень: при b продолжениях на позицию и партии в d полуходов узлов порядка bd, и каждая добавленная пара ходов работу умножает. Шеннон в 1950 году оценил число шахматных партий примерно в 10120. Оно не уменьшается ни от нового процессора, ни от тысячи сразу: расстояние между шашками (1020 позиций) и шахматами (1044) — см. Решённые игры — железом не закрывается. Полный перебор не медленный. Он невозможный.

От чего отказалисьОтказываться пока не от чего: это исходная идея, от которой отказывались все следующие пять.
Где это на сайтеНим — предельный случай: дерево разобрано так, что ходить по нему уже не нужно, ответ свёрнут в формулу Бутона. В Быках и коровах перебор видно прямо: пять тысяч сорок кодов существуют списком, и машина вычёркивает их после каждого ответа.
E. Zermelo, «Über eine Anwendung der Mengenlehre auf die Theorie des Schachspiels», Proceedings of the Fifth International Congress of Mathematicians, 1913. C. Shannon, «Programming a Computer for Playing Chess», Philosophical Magazine 41(314), 1950 — отсюда оценка 10120. C. Bouton, «Nim, a Game with a Complete Mathematical Theory», Annals of Mathematics 3, 1901. Оценки размеров игр — как на странице «Решённые игры».
2

Минимакс

предположить, что соперник не ошибётся ни разу
Что умеет

По дереву нельзя пройти, не решив, что происходит в чужих узлах. Минимакс отвечает раз и навсегда: в своих узлах берём максимум, в чужих — минимум, то есть считаем, что соперник выберет худшее для нас из доступного ему. Теорему для игр с нулевой суммой доказал Джон фон Нейман в 1928 году; к 1950-му Шеннон расписал, как это программируется для шахмат, а Алан Тьюринг в начале пятидесятых проигрывал свой Turochamp на бумаге, считая позиции вручную за неимением машины. Безошибочный соперник — не пессимизм, а единственный способ получить гарантию: оценка минимакса есть то, что вы получите при худшем поведении соперника, и хуже не будет.

Где ломается

Гарантия и оказывается слабостью. Против человека, который ошибается, минимакс играет не сильнейшим образом, а безопаснейшим: он не поставит ловушку, потому что заранее считает, что в неё не попадут, и не пойдёт на риск, окупающийся девять раз из десяти. И главное: минимакс не экономит ни одного узла. Это правило подсчёта, а не способ считать меньше — дерево остаётся таким же невозможным, каким было.

От чего отказалисьОтказ от равноправия позиций. Дерево перестаёт быть пространством вариантов и наполовину становится чужим: половина узлов принадлежит воле, работающей против вас.
Где это на сайтеAtaxx на сложном уровне строит ровно такое дерево на три полухода — мой ход, ваш ответ, мой ход — и берёт минимум в ваших узлах потому, что предполагает вашу безошибочность. Злой 2048 показывает правило в чистом виде: соперник там — появление плитки, и плитка ставится туда, где ваш лучший ответ окажется худшим.
J. von Neumann, «Zur Theorie der Gesellschaftsspiele», Mathematische Annalen 100, 1928. C. Shannon, Philosophical Magazine 41(314), 1950. A. Turing, «Digital Computers Applied to Games», в сборнике «Faster Than Thought» под ред. B. Bowden, 1953.
3

Альфа-бета отсечения

не смотреть туда, где ответ уже не изменится
Что умеет

Альфа-бета — не ускорение перебора, а отказ от перебора на большей части дерева. Если в ветке уже нашёлся ответ соперника, делающий её хуже, чем найденное в другом месте, ветку можно бросить целиком: что бы в ней ни лежало дальше, выбор она не изменит. Существенно, что ответ получается тот же, что при полном переборе, — это не приближение, а доказательство ненужности. Приём независимо переоткрывали несколько раз в конце пятидесятых: он есть уже в шахматной программе Ньюэлла, Шоу и Саймона 1958 года, название закрепилось за Джоном Маккарти, полный разбор дали Дональд Кнут и Рональд Мур в 1975-м. Результат количественный: при идеальном порядке ходов альфа-бета смотрит порядка bd/2 узлов вместо bd. Корень. За то же время — вдвое большая глубина.

Где ломается

Всё держится на порядке ходов. Хороший первый кандидат обрубает соседние ветки сразу; плохой не обрубает ничего, и в худшем случае альфа-бета честно просматривает всё дерево, не выиграв ни узла. Отсюда сортировка перед перебором — в наших шашках сначала взятия, потом проходы в дамки, потом остальное, — которая на ответ не влияет вовсе, а на объём работы влияет решающе. И есть предел, о котором приятно забыть: корень из невозможного — по-прежнему невозможное. 10120 превращается в 1060, и это не меняет ничего.

От чего отказалисьОтказ от полноты обхода. Программа больше не знает, что лежит в отсечённых ветках, — она знает только, что знать это было незачем.
Где это на сайтеРеверси, Ataxx и Четыре в ряд устроены на этом. В «Четырёх в ряд» видно и цену порядка: столбцы перебираются от центра к краям, и перебор от центра успевает уйти примерно вдвое глубже перебора слева направо — при том же времени и том же ответе.
A. Newell, J. Shaw, H. Simon, «Chess-Playing Programs and the Problem of Complexity», IBM Journal of Research and Development 2(4), 1958. D. Knuth, R. Moore, «An Analysis of Alpha-Beta Pruning», Artificial Intelligence 6(4), 1975 — отсюда оценка bd/2. Порядок ходов в наших движках — как описано в разборе «Как думает компьютер» на страницах шашек и «Четырёх в ряд».
4

Оценочная функция — признание поражения

оборвать счёт и заменить недосчитанное одной цифрой
Что умеет

До листьев дойти нельзя, поэтому счёт обрывают на заданной глубине, объявляют получившуюся позицию концом партии и приписывают ей число. Первую такую формулу опубликовал Шеннон в 1950 году: ферзь — девять, ладья — пять, слон и конь — по три, пешка — одна, плюс десятая доля за каждый лишний доступный ход, минус половина за каждую сдвоенную, изолированную или отсталую пешку. Всё, что программа «понимает» в игре, живёт в этой строке. Как эти цифры выглядят у нас: в реверси углы дороже всего, соседние с углами клетки идут со штрафом (через них углы и отдают), края ценнее центра, а подвижность в середине партии весит больше разницы фишек. В шашках у Артура Самуэля это материал плюс продвижение: сколько шашек и насколько близко к дамкам.

Где ломается

Числа берутся не из игры. Их назначает человек — по опыту, по аналогии, иногда просто чтобы сходился масштаб, — и любая позиция, где смысл расходится с цифрой, разыгрывается неверно и с полной уверенностью. Самая известная форма этой ошибки — горизонт: беду на полуход дальше границы перебора программа не видит, зато оттягивает её серией бессмысленных разменов, потому что за горизонтом беды нет. Термин ввёл Ханс Берлинер в 1974-м. Лечат это доигрыванием боёв до тишины — так делают наши шашки, — и лечат частично: горизонт отодвигается, а не исчезает. Deep Blue в 1997 году нёс около восьми тысяч признаков и всё равно понимал позицию как взвешенную сумму. Отсюда все «нечеловеческие» ошибки — не сбой, а место, где восемь тысяч чисел не сложились в смысл.

От чего отказалисьОтказ от правильности. Впервые ответ программы перестаёт быть утверждением об игре и становится утверждением о её собственной оценке.
Где это на сайтеРеверси на экспертном уровне считает углы, приугловые клетки и подвижность. Шашки считают материал с позиционными поправками и доигрывают размены, чтобы не оценивать позицию с висящим боем. Гомоку оценивает не фишки, а шестиклеточные окна с заранее прописанной ценой.
C. Shannon, Philosophical Magazine 41(314), 1950 — веса фигур и формула. A. Samuel, «Some Studies in Machine Learning Using the Game of Checkers», IBM Journal of Research and Development 3(3), 1959 — материал и продвижение. P. Rosenbloom, «A World-Championship-Level Othello Program», Artificial Intelligence 19, 1982 — позиционные веса в отелло. H. Berliner, «Chess as Problem Solving», диссертация, Carnegie Mellon University, 1974 — эффект горизонта. M. Campbell, A. J. Hoane, F.-h. Hsu, «Deep Blue», Artificial Intelligence 134(1–2), 2002 — около восьми тысяч признаков в оценке. Веса наших движков — их собственные, см. «Как думает компьютер» на страницах игр.
5

Базы окончаний и Монте-Карло

считать назад — или не считать вовсе, а пробовать
Что умеет

Два разных отказа считать вперёд. Первый — считать назад. Берут все позиции, где на доске не больше N фигур, размечают те, где партия кончена, и распространяют результат в обратную сторону, пока размечено не будет всё. Получается таблица, из которой ответ читают, а не выводят. Кен Томпсон построил такие таблицы для четырёх- и пятифигурных шахматных окончаний в 1980-х; к 2012 году досчитали все семифигурные, и там обнаружились выигрыши длиной в сотни ходов. Chinook к 2007 году держал базу всех позиций с десятью и менее шашками — тридцать девять триллионов, — и английские шашки объявили ничьей: восемнадцать лет счёта, где перебор шёл сверху, база снизу, и они встретились. Второй отказ радикальнее. В го оценивать позицию числом никто не умел: материала нет, любая формула врёт. Монте-Карло убирает оценку вообще — доиграть отсюда наугад много раз и посчитать победы. Идею предложил Бернд Брюгманн в 1993-м, в дерево её встроили Реми Кулом и, независимо, Левенте Кочиш с Чабой Сепешвари в 2006-м. Позиция перестаёт оцениваться и начинает измеряться.

Где ломается

База знает только свой хвост. Десять шашек — да, двадцать четыре — нет, и таблица для полной игры не поместится ни на каком носителе: та же степень, только упирается уже не во время, а в место. У Монте-Карло беда другая: случайное доигрывание меряет не позицию, а среднее по глупостям, и там, где выигрыш держится на единственной точной последовательности, среднее не видит ничего. Слепые пятна к тому же устойчивы. В 2023 году исследователи нашли у сильнейших программ го стратегию, которую те не понимают, — обход большой группы по краю, — и любитель Келлин Пелрин выиграл по ней четырнадцать партий из пятнадцати, без компьютера во время игры.

От чего отказалисьОтказ от направления счёта — и от самой мысли, что позицию надо понять, чтобы её оценить. Первый приём считает от конца, второй не считает, а голосует.
Где это на сайтеМонте-Карло здесь нет ни в одном движке, и честнее это сказать. Ближайший родственник — Морской бой: он не ищет корабли, а пересчитывает все расстановки, совместимые с известным, и стреляет туда, где их больше всего. Базу окончаний в миниатюре делают Точки и квадраты: когда линий остаётся не больше четырнадцати, включается точный перебор с запоминанием, и с этого хода партия решена. А шашки — та самая игра, которую закрыли базой на тридцать девять триллионов позиций.
K. Thompson, «Retrograde Analysis of Certain Endgames», ICCA Journal 9(3), 1986. V. Makhnichev, V. Zakharov, семифигурные таблицы Ломоносова, МГУ, 2012. J. Schaeffer и др., «Checkers Is Solved», Science 317(5844), 2007 — база на 39 триллионов позиций и восемнадцать лет счёта. B. Brügmann, «Monte Carlo Go», 1993. R. Coulom, «Efficient Selectivity and Backup Operators in Monte-Carlo Tree Search», Computers and Games, 2006. L. Kocsis, C. Szepesvári, «Bandit Based Monte-Carlo Planning», ECML, 2006. T. Wang и др., «Adversarial Policies Beat Superhuman Go AIs», ICML, 2023 — и партии Пелрина, четырнадцать из пятнадцати.
6

Самообучение

не назначать числа, а вынуть их из игры с самим собой
Что умеет

Если веса оценки — самое слабое место, их можно не назначать вручную. Первым это сделал Артур Самуэль: его шашечная программа на IBM 701 подправляла собственные коэффициенты по сыгранным партиям и в 1956 году обыграла автора. Настоящий результат пришёл в 1992-м, за двадцать четыре года до AlphaGo. TD-Gammon Джеральда Тезауро — сеть, которой сообщили только правила нард; она сыграла триста тысяч партий сама с собой, обучаясь методом временных разностей Ричарда Саттона, и вышла на уровень сильнейших людей. Важнее уровня другое: часть её дебютных предпочтений расходилась с человеческой теорией и была признана лучше — люди пересмотрели розыгрыш нескольких начальных бросков. Дальше известное: AlphaGo Zero в 2017 году обучилась го без единой человеческой партии и обыграла предшественницу 100:0, а AlphaZero тем же способом взяла шахматы и сёги.

Где ломается

Обучение не отменяет ни одной предыдущей ступени, а надстраивается: AlphaZero по-прежнему ходит по дереву, только оценивает сетью и выбирает ветки по Монте-Карло. Меняется не механизм, а источник чисел. Первая цена — прозрачность: у Шеннона можно было спросить, почему ферзь стоит девять, у сети спрашивать некого, и её ошибка выглядит не как неверный вес, а как ничем не объяснённый ход. Вторая — ресурс: AlphaZero смотрит примерно в тысячу раз меньше позиций в секунду, чем Stockfish, и всё равно выигрывает, но за этим стоят миллионы партий и специализированное железо, которого нет ни у кого, кроме нескольких организаций.

От чего отказалисьОтказ от человеческого знания на входе. Сначала от книг и сыгранных людьми партий, потом и от самих признаков, которые человек считал важными.
Где это на сайтеЭтой ступени на сайте нет, и делать вид незачем: ни один движок здесь не учится и не помнит вас между партиями. Единственное, что меняется с опытом, — Угадайка: она ведёт таблицу того, что вы делали после каждого недавнего сочетания нажатий. А нарды — та самая игра, где обучение с собой впервые сработало; наш соперник в ней считает expectimax с написанными руками весами, то есть стоит на четвёртой ступени.
A. Samuel, IBM Journal of Research and Development 3(3), 1959. R. Sutton, «Learning to Predict by the Methods of Temporal Differences», Machine Learning 3, 1988. G. Tesauro, «Practical Issues in Temporal Difference Learning», Machine Learning 8, 1992 — триста тысяч партий с собой. G. Tesauro, «Temporal Difference Learning and TD-Gammon», Communications of the ACM 38(3), 1995 — про пересмотр дебютной теории. D. Silver и др., «Mastering the Game of Go without Human Knowledge», Nature 550, 2017 — счёт 100:0. D. Silver и др., Science 362(6419), 2018 — AlphaZero и порядок разницы в числе просмотренных позиций.

Почему следующая ступень не будет продолжением этой

Сверху вниз шесть пунктов читаются как прогресс, но связи между соседями отрицательные. Полный перебор говорит «досчитаем всё»; минимакс вписывает в дерево чужую волю; альфа-бета отказывается досчитывать; оценочная функция отказывается доходить до конца; базы отказываются от направления счёта, а Монте-Карло — от понимания; обучение отказывается от чисел, которые придумал человек. Ни один переход не был «то же самое, только быстрее».

Поэтому прогноз вида «ещё в тысячу раз быстрее — и появится следующая ступень» ошибается жанром. Deep Blue считал около двухсот миллионов позиций в секунду и остался последней машиной старого типа. AlphaZero считает примерно в тысячу раз меньше и играет сильнее. Количество двинулось в одну сторону, результат — в другую, потому что изменилось не количество, а вопрос, который задают дереву.

О седьмой ступени нельзя сказать ничего полезного, кроме того, что она будет отказом. Зато можно показать, где протекает нынешняя: 2023 год, обход большой группы по краю, любитель забирает у программы, обыгрывающей любого профессионала, четырнадцать партий из пятнадцати. Эту дыру нашли не тем, что стали играть лучше, — её нашла вторая программа, обученная искать дыры. Другой вопрос к той же игре; именно так эти ступени и начинались всегда.

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

Deep Blue, около 200 миллионов позиций в секунду: M. Campbell, A. J. Hoane, F.-h. Hsu, «Deep Blue», Artificial Intelligence 134(1–2), 2002. Скорость перебора AlphaZero против Stockfish: D. Silver и др., Science 362(6419), 2018. Слабость программ го 2023 года и четырнадцать партий Келлина Пелрина из пятнадцати: T. Wang и др., «Adversarial Policies Beat Superhuman Go AIs», ICML, 2023. Что делают наши движки — блок «Как думает компьютер» на страницах игр.
Куда отсюда