Перейти к содержанию

3.4.3 Дебют программы Chinook Джонатана Шеффера

Материал из Охота на электроовец: Большая Книга Искусственного Интеллекта

В 1989 г. в Лондоне под эгидой ICGA состоялась первая Компьютерная олимпиада. Она включала следующие дисциплины: шахматы, шашки, го на доске 9 × 9, го на доске 19 × 19, бридж, нарды, домино, «четыре в ряд», отелло (реверси), рэндзю, скрэббл, го-моку, китайские шахматы и авари. В соревновании по шашкам участвовало шесть программ, и первое место с отрывом в одно очко заняла канадская программа Chinook (по-русски читается как «шинук»), созданная командой под руководством Джонатана Шеффера. Вообще-то, изначально программа называлась The Beast («Зверь»), но перед Олимпиадой название было решено изменить на более нейтральное Chinook в честь юго-западного ветра (фёна) на восточных склонах Скалистых гор в Канаде. Дело в том, что в Великобритании шашки называются draughts, а draught или draft — это среди прочего «сквозняк» или «порыв ветра» (вообще говоря, у слова draft есть 63 значения, если верить словарю Google), поэтому для канадской шашечной программы хорошо подходило название тёплого канадского ветра. Также словом chinook в Канаде называют чавычу — рыбу семейства лососёвых. Норман Трелоар, один из членов команды Chinook, занимавшийся разработкой библиотеки дебютов и оценочной функцией, задавался перед Олимпиадой вопросом: будет ли Chinook играть как ветер или как рыба (рыбой — fish — иногда уничижительно называют слабых игроков)? К счастью для команды, Chinook играл скорее как ветер[1].

К моменту начала работы над Chinook Шеффер уже имел богатый опыт шахматного программирования: его шахматная программа Phoenix, или Sun Phoenix («Феникс», или «Солнечный Феникс»), разделила с тремя другими программами первое место (оказавшись, правда, на четвёртом месте по дополнительным показателям) на V чемпионате мира по шахматам среди компьютерных программ в 1986 г. в Кёльне. Chinook использовал богатый набор техник, разработанных к тому времени создателями шахматных программ.

Во-первых, в программе Шеффера применялись таблицы окончаний, содержавшие готовые ответы для окончаний с четырьмя и менее шашками на доске. Это во многом решало проблему плохой игры шашечных программ в окончаниях. Во-вторых, Chinook также использовал широко применяемую и в наши дни технику под названием «итеративное углубление» (iterative deepening). Её суть заключается в том, что программа сначала перебирает варианты на минимальную глубину, затем увеличивает глубину рассмотрения, выполняет повторный перебор и так далее, пока не закончится отведённое на перебор время. Благодаря использованию хеш-таблицы для хранения результатов анализа уже рассмотренных узлов дерева (так называемая таблица перестановок или перестановок/опровержений — transposition/refutation table), предыдущие шаги перебора не пропадают напрасно. Результаты анализа, полученные на предыдущей итерации, используются для более эффективного упорядочения ходов, что делает альфа-бета-отсечения более эффективными. Кроме того, таблица перестановок эффективно решает собственно проблему перестановок: если разные последовательности ходов приводят к одной и той же позиции, то повторного изучения вариантов не будет.

Заметим, что более качественное упорядочивание ходов при переборе позволяет заменить классические альфа-бета-отсечения на так называемый перебор с единичным окном, то есть перебор, при котором beta = alpha + 1. Идея этого подхода заключается в том, что если перебор для первого рассматриваемого хода в узле дерева перебора вернул оценку, не превышающую верхнюю границу (т. е. значение параметра beta), то, скорее всего, остальные ходы будут не лучше первого и для проверки этой гипотезы для всех последующих ходов в данном узле вместо перебора с полным окном (т. е. с нижней границей, равной alpha, и верхней границей, равной beta) мы будем использовать перебор с единичным окном (с v до v + 1, где v — оценка для первого хода). Если при переборе с таким окном мы для очередного хода получили оценку меньше или равную v, то для данного хода нет необходимости перебора с полным окном, потому что его результат не будет лучше v (а может оказаться только хуже или равным ему), то есть данный ход необходимо отвергнуть. И только если оценка для какого-либо из ходов превысит v, тогда этот ход оказывается лучше первого и мы повторяем для него перебор, но уже с расширенным окном, чтобы узнать его точную оценку. Такой подход при условии хороших методов упорядочивания ходов-кандидатов позволяет добиться дополнительного уменьшения количества перебираемых позиций. Существует несколько алгоритмов, реализующих данный подход, наиболее широко известные — «поиск основного варианта» (Principal Variation Search, PVS) и NegaScout.

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

На конец 1989 г. программа Шеффера победила в компьютерной олимпиаде (четыре победы и одна ничья), сыграла три партии по телефону с бывшим чемпионом Канады 1971 и 1972 г. Эдом Томпсоном (две победы Chinook и ничья), из шести партий с одним из сильнейших игроков Великобритании Ричардом Паском пять закончились вничью и одна поражением программы, а в матче из четырёх партий с Дереком Олдбери, в своё время обыгравшим со счётом 4 : 0 программу Сэмюэла, Chinook победил, завершив две партии победой и две ничьей.

Однако в определённый момент позиция Олдбери в одной из проигранных партий была выигрышной, а во второй британский чемпион явно экспериментировал. Олдбери, сам к тому времени увлёкшийся программированием и разработавший собственную шашечную программу Checker Hustler, показал Шефферу некоторые недостатки его программы.

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

Им владел «ужасный Тинсли» — самый опасный соперник.

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

В середине 1990 г. Шеффер задался вопросом: насколько хорош Тинсли на самом деле? Чемпионы мира по шахматам тоже очень хороши в игре против других людей, но всё же они периодически проигрывают партии другим игрокам, а последующий анализ турнирных партий нередко выявляет ошибки, допущенные в пылу сражения. Союзником чемпиона всегда является его имя: противники оказываются психологически подавлены репутацией чемпиона. Из-за волнения они не верят в то, что чемпион мог допустить просчёт, отказываются от решительных действий, ведущих к победе. Сильной стороной машины, напротив, является её бесстрастность: она ничего не знает о своём оппоненте, свободна от страха, спокойно действует даже в, казалось бы, безнадёжных позициях. В итоге нередко выясняется, что эти позиции в действительности не являются такими уж безнадёжными. Действительно ли партии Тинсли так идеальны, пройдут ли они скрупулёзную проверку машинным интеллектом?

Найти игры Тинсли было легко[2]. Книга «Шашки по-тинслевски» (Checkers the Tinsley Way) содержала около семисот игр Тинсли с 1945 по 1981 г.[3] Конечно, игр за последнее десятилетие не хватало, но Шеффер предположил, что в таком возрасте (а Тинсли в 1981 г. исполнилось 54 года) стиль игры вряд ли мог радикально измениться.

Шеффер взял 732 партии из книги, разделил их между четырьмя компьютерами и запрограммировал Chinook осуществлять анализ позиций из этих партий, при этом игнорировались проигрышные ходы в играх, которые Тинсли проиграл, а также первые десять ходов партии, поскольку выбор дебютов был во многом вопросом индивидуального вкуса. Для каждой позиции Chinook на основе глубокого перебора должен был выбрать лучший ход. Если ход совпадал с решением Тинсли, то Chinook переходил к следующей позиции, если нет — производился перебор для хода, сделанного Тинсли, и оценки обоих ходов сохранялись в файле. Обычно значения оценок были близки. Шеффера и его команду интересовали ситуации, в которых Тинсли совершал ход, по оценке сильно уступающий ходу, предложенному Chinook. Иначе говоря, позиции, в которых программа считала, что Тинсли допустил серьёзный просчёт.

В результате анализа Шефферу удалось найти 17 позиций, в которых ход, предложенный Chinook, по оценке превосходил ход, сделанный в партии Тинсли, хотя бы на 100 единиц, то есть на «стоимость» одной шашки. Однако анализ уже первых из них показал, что в число этих ходов входят неоптимальные выигрывающие ходы. То есть Chinook придумал, как Тинсли мог бы выиграть партии немного быстрее, но конечный результат от этого бы не изменился. Расстроенный Шеффер изменил значение разницы оценок до 50 единиц, но и это радикально не поменяло картину. Удалось найти всего две позиции, в которых Тинсли вроде бы действительно ошибался. Шеффер заставил программу проанализировать эти позиции более глубоко — отведя на каждую из них целую ночь вычислений. В первой позиции ошибка не подтвердилась: позиция, казавшаяся проигранной, оказалась ничейной. Но в последней позиции ночь анализа не изменила оценку программы: она считала, что Тинсли ошибался. Итак, Тинсли был смертным — он был способен допустить ошибки, точнее — одну ошибку.

Впрочем, радость Шеффера продолжалась недолго. Немного позже гроссмейстер Лео Левитт, которому Шеффер показал найденную позицию, продемонстрировал, что, хотя белые на первый взгляд и имели преимущество, у них не было способа его реализовать[4].

Но хотя Шеффер и думал уже о возможности победы над самим Тинсли, вначале Chinook должен был явно продемонстрировать, что превосходит других возможных претендентов на титул.

С 13 по 18 августа 1990 г. в городе Тупело (штат Миссисипи) должен был состояться чемпионат США по шашкам.

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

Чемпионат Миссисипи завершился победой Chinook — восемь побед, шесть ничейных партий и ни одного поражения. Впереди был чемпионат США, а почти одновременно с ним, с 15 по 21 августа 1990 г., в Лондоне проводилась II Компьютерная олимпиада. Спортсменам-людям в подобных случаях приходится выбирать, ведь человек не может одновременно находиться в двух местах. Для компьютерной программы это не помеха. Пока Шеффер и Трелоар в качестве операторов Chinook находились на турнире в Тупело, за океаном копия программы участвовала в Компьютерной олимпиаде под управлением другого члена команды — Пола Лю[5].

На Компьютерной олимпиаде в Лондоне у Chinook было всего два противника: Colossus, программа, созданная Мартином Брайантом, и Checker-Mate Эдриана Миллетта и Дерека Олдбери.

Colossus — шашечная программа Брайанта, в создании которой он опирался на опыт в работе с одноимённой шахматной программой, — была сильным противником: незадолго до того, как Chinook победил в Миссисипи, она одержала победу на чемпионате Западной Англии (23–24 июня 1990 г.).

Миллетт и Олдбери, выступавшие на предыдущей, 1989-го, Олимпиаде каждый со своей программой (Sage Draughts и Checker Hustler) и занявшие соответственно второе и первое места с конца турнирной таблицы[6], для выступления в 1990 г. решили объединить свои сильные стороны — высококлассную шашечную экспертизу Олдбери с опытом Миллетта в области программирования. Олдбери приготовил для Checker-Mate продвинутую дебютную библиотеку, заложив в неё ряд ловушек — дебютных вариантов, приводивших игру к позициям, в которых программе противника было бы трудно найти правильный ход в условиях ограниченного времени. В одну из таких ловушек и попал Chinook, однако крышка мышеловки не захлопнулась: вариант в дебютной библиотеке Checker-Mate заканчивался слишком рано — и в ответ на ошибку Chinook его противник не смог ответить правильным ходом. В итоге из-за ошибки в алгоритме распределения времени Checker-Mate просрочил время, и партия завершилась победой Chinook. Казалось бы, угроза миновала, тучи рассеялись и на небе снова засияло солнце. Это действительно было бы так, если бы противниками программы Шеффера на турнире были новички, а не закалённые турнирными соревнованиями ветераны компьютерных шахматных и шашечных баталий. Быстро сообразив, что именно произошло в партии Checker-Mate с Chinook, автор программы Colossus быстро добавил в свою дебютную библиотеку ту же самую ловушку, дополнив дебютную линию ходом, который не удалось найти программе Миллетта и Олдбери, и в партии с Colossus Chinook повторно заглотил наживку, что обернулось для программы Шеффера «баранкой» в турнирной таблице[7]. Пол Лю, в отличие от Шеффера и Трелоара, не обладал должным опытом, чтобы после партии с Checker-Mate принять необходимые контрмеры. Турнирное золото ушло в копилку Брайанта, в то время как команде Chinook пришлось довольствоваться вторым местом[8].

Интересно, что и на чемпионате США в Тупело у Шеффера неожиданно появился компьютерный оппонент. Американская шашечная федерация вполне резонно решила, что если в матче разрешено участвовать Chinook, то на аналогичных условиях в нём могут принять участие и другие программы. Этим не преминул воспользоваться Гил Доджен, автор программы Checkers Experimental[9]. Предыдущая версия его программы — Checkers! — участвовала в Компьютерной олимпиаде 1989-го и заняла второе место, отстав от Chinook всего на одно очко[10]. После олимпиады Шеффер и Доджен обменялись исходными кодами своих программ. Правда, за время, прошедшее с олимпиады, команде Шеффера удалось создать пятифигурные таблицы окончаний, но всё же кто знал, как много пользы автор Checkers! смог извлечь из изучения Chinook за прошедший год. Хотя Доджен и использовал в качестве аппаратной платформы для своей программы компьютер MIPS MI20, в полтора раза более медленный, чем IBM RS/6000, на котором работал Chinook[11], это могло и не быть решающим фактором. Все прекрасно помнили урок[12], который преподал в 1989 г. Ричард Лэнг со своей шахматной программой Mephisto, одержав победу над шестипроцессорным монстром Deep Thought (прародителем Deep Blue) на Северо-Американском чемпионате по шахматам среди компьютерных программ. А ведь Mephisto использовала скромный даже по тем временам процессор Motorola 68030 с тактовой частотой 36 МГц[13]. Кроме того, гроссмейстеры Лео Левитт и Эд Маркузик жили недалеко от Доджена и могли помочь ему с профессиональной экспертизой в области шашек. Словом, Гил Доджен со своей программой был серьёзным противником, которого нельзя было недооценивать.

Но вернёмся к чемпионату США в Тупело. Он стал серьёзным испытанием для Chinook, которое программа успешно преодолела, — не проиграв ни одной партии, Chinook занял второе место, уступив лишь действующему чемпиону мира Мариону Тинсли. Программа Checkers Experimental Гила Доджена заняла восьмое место[14].

Напряжение в определённые моменты турнира было очень велико. Вот как описывает Шеффер одну из партий — против гроссмейстера, будущего чемпиона мира Рональда Кинга:

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

По возвращении с соревнований Шеффер попытался связаться с Артуром Сэмюэлом. Он был уверен, что тот будет рад услышать об успехе Chinook, воплощении в реальность своей сорокалетней мечты. Но в ответ получил печальное известие: профессор Артур Сэмюэл умер 29 июля 1990 г. от осложнений, вызванных болезнью Паркинсона[15].

Артур Сэмюэл оставил в истории компьютерных технологий значительный след, не ограничивающийся одними только компьютерными шашками. Например, он, совместно с Дональдом Кнутом, работал над популярной в научной среде системой компьютерной вёрстки TeX, внеся в её создание весьма существенный вклад, несмотря на то что в те годы ему уже перевалило за 80 лет[16]. Своими смелыми попытками решить задачу создания шашечного ИИ в условиях крайне ограниченных аппаратных ресурсов 1950–1970-х гг. Сэмюэл вдохновил многих молодых исследователей, и, хотя его работы и вызвали некоторое головокружение от успехов, даже это стало в конечном счёте полезным уроком для специалистов.

  1. * Здесь и далее я буду использовать мужской род для программ Chinook, Fritz и нескольких других. Формально это неправильно, но фразы типа «Chinook играла» или «Fritz выиграла» звучат неестественно и режут мне слух.
  2. Schaeffer J. (2013). One Jump Ahead: Challenging Human Supremacy in Checkers. Springer New York // https://books.google.ru/books?id=HKfqBwAAQBAJ
  3. Shuffett R. L. (1982). Checkers, the Tinsley Way: Featuring the Checker Games of the World’s Greatest Player, Dr. Marion F. Tinsley. R.L. Shuffett // https://books.google.ru/books?id=LHOxHAAACAAJ
  4. Schaeffer J. (2013). One Jump Ahead: Challenging Human Supremacy in Checkers. Springer New York // https://books.google.ru/books?id=HKfqBwAAQBAJ
  5. Schaeffer J. (2013). One Jump Ahead: Challenging Human Supremacy in Checkers. Springer New York // https://books.google.ru/books?id=HKfqBwAAQBAJ
  6. 1st Computer Olympiad, Checkers / ICGA Tournaments. Tournaments between computer programs: chess, draughts, checkers, Go, backgammon, and more // https://www.game-ai-forum.org/icga-tournaments/tournament.php?id=126
  7. Millett A. (1994). Derek Oldbury: A Eulogy / Journal of the International Computer Chess Association, 17, Vol. 3, pp. 174–175 // https://content.iospress.com/download/icga-journal/icg17-3-14?id=icga-journal%2Ficg17-3-14
  8. 2nd Computer Olympiad, Checkers / ICGA Tournaments. Tournaments between computer programs: chess, draughts, checkers, Go, backgammon, and more // https://www.game-ai-forum.org/icga-tournaments/tournament.php?id=136
  9. Schaeffer J. (2013). One Jump Ahead: Challenging Human Supremacy in Checkers. Springer New York // https://books.google.ru/books?id=HKfqBwAAQBAJ
  10. 1st Computer Olympiad, Checkers / ICGA Tournaments. Tournaments between computer programs: chess, draughts, checkers, Go, backgammon, and more // https://www.game-ai-forum.org/icga-tournaments/tournament.php?id=126
  11. Schaeffer J. (2013). One Jump Ahead: Challenging Human Supremacy in Checkers. Springer New York // https://books.google.ru/books?id=HKfqBwAAQBAJ
  12. Mephisto (Computer) vs Deep Thought (Computer). 20th NACCC (1989), Reno, NV USA, rd 5, Nov-15. Queen's Gambit Accepted: Janowski-Larsen Variation (D25). 1-0 / chessgames.com: online chess database and community // http://www.chessgames.com/perl/chessgame?gid=1472135
  13. Mephisto Portorose / Chess Programming Wiki // https://www.chessprogramming.org/Mephisto_Portorose
  14. 1990 3-Move Nationals Location: Tupelo, Mississippi / The American Checker Federation // https://www.usacheckers.com/nats1990.php
  15. Schaeffer J. (2013). One Jump Ahead: Challenging Human Supremacy in Checkers. Springer New York // https://books.google.ru/books?id=HKfqBwAAQBAJ
  16. Knuth D. (1990) Arthur Lee Samuel, 1901–1990 / TUGboat, Volume 11, No. 4 // https://tug.org/TUGboat/tb11-4/tb30knut-samuel.pdf

Loading comments...