Шрифт:
Интервал:
Закладка:
Всё выглядело так, как будто с 1990 по 1992 г. прогресс в силе игры программы не был существенным. Конечно, противники Chinook были экстраординарными. В одной из партий товарищеского матча с Тинсли чемпион так прокомментировал десятый ход программы: «Вы пожалеете об этом!» [You’re going to regret that!] Программа смогла увидеть поражение лишь на 33-м ходу, анализируя позицию на 19 полуходов вперёд. Вряд ли Тинсли на десятом ходу рассчитал победный вариант на глубину в 65 полуходов, однако понимание тонкостей позиции позволяло ему видеть победу задолго до материализации преимущества.
При этом технически с 1990 г. Chinook проделал долгий путь в своём развитии. Программа получила возможность осуществлять параллельный перебор на многопроцессорных компьютерах. Для матча с Тинсли компания-спонсор Silicon Graphics предоставила восьмипроцессорную машину SGI 4D/480. К началу матча с Тинсли Chinook обладал полным набором семишашечных таблиц окончаний и 43% восьмишашечных. Было внесено множество доработок в оценочную функцию[597].
Но быстрое развитие порождает болезни роста. Недостаточно проверенные новации зачастую опаснее, чем отсутствие новшеств. Отдельные моменты из воспоминаний Шеффера сегодня способны напугать программистов почище иного триллера. Как вам, например, внесение изменений в оценочную функцию программы прямо во время матча? Да ещё и добавление новых элементов оценки с весами, выбранными на глазок? А выводы, сделанные на основе всего лишь сотни партий между двумя версиями программы, да ещё и завершившихся с разрывом всего в несколько очков? Сегодня подобное трудно представить: десятки тысяч проверочных игр, тонкая настройка каждого параметра при помощи сотен тысяч партий, проверки проверок, учёт и контроль. Мир программирования игрового ИИ в 1990-е с позиции сегодняшних практик выглядит как мир Дикого Запада.
Был и другой фактор, действие которого нельзя недооценивать: не только Chinook изменился за эти два года, но и люди. Если в 1990 г. многие сильнейшие игроки недооценивали программу, играли против неё слишком беспечно, не понимали её специфических слабостей, то теперь против Chinook играли уже всерьёз: партии программы обсуждались и анализировались, производилась интенсивная дебютная подготовка.
Но вернёмся к противостоянию с чемпионом мира.
Итак, матч с Тинсли начался. Четыре первые партии окончились вничью. Пятую Chinook проиграл — причиной стал ошибочный вариант в дебютной библиотеке. Он был позаимствован из книги «Основы игры в шашки» (Basic Checkers), и хотя на момент матча Тинсли с Chinook уже было известно, что соответствующая позиция оценивается неправильно, однако команда Шеффера об этом не знала.
Но в восьмой партии матча программе удалось впервые выиграть у Тинсли, тем самым доказав на практике, что такое возможно! В 14-й партии Chinook смог выиграть ещё раз и тем самым повести в счёте.
Однако с 18-й партии Chinook стали преследовать неприятности. Началось всё с ошибки охранника отеля, который вместо того, чтобы в конце дня выключить свет и включить кондиционер в комнате, где находилась машина, сделал всё ровным счётом наоборот — выключил кондиционер и включил свет. На следующий день в 18-й партии программа зависла, и команде Chinook пришлось признать поражение. Было ли это зависание результатом перегрева машины или виной были дефекты при программировании многопроцессорной версии? Это так и не удалось с точностью установить, хотя позже в программе обнаружили ряд ошибок, и как минимум одна из них теоретически могла привести к зависанию.
В 22-й партии проблема повторилась, и Шефферу пришлось перейти на более медленный запасной компьютер (сама партия закончилась вничью). Тинсли выиграл 25-ю партию (программе не хватило примерно двух минут для того, чтобы отказаться от ошибочного хода и выбрать правильный) и захватил лидерство в матче. Длинная серия ничьих продолжалась до 39-й партии. Чтобы сохранить лидерство, Тинсли нужно было не проиграть, и более осторожная игра позволяла ему увеличить шансы на победу в матче. После 28-й партии Шеффер и его команда вносили в программу изменения, стараясь обострить игру, однако это не принесло успеха. Chinook потерпел ещё одно поражение в 39-й партии, и тем самым матч завершился победой Тинсли — из 39 сыгранных партий Тинсли выиграл четыре, Chinook — две, а остальные 33 завершились вничью.
Несмотря на поражение, Шеффер не собирался сдаваться. И что было не менее важно — Тинсли тоже не считал борьбу завершённой и поддержал идею организации нового матча, который, однако, состоялся только в 1994 г. из-за организационных проблем.
До этого, в 1993 г., Chinook поучаствовал в двух матчах. Первый, против Дона Лафферти, вновь закончился поражением программы (три поражения, одна победа и 14 ничьих). Шеффер героически сражался с ошибками — казалось, они были повсюду: в новом коде для различения «лёгких» и «трудных» ничьих, в новых восьмишашечных таблицах окончаний, в дебютной библиотеке.
Второй матч 1993 г. был не менее трудным: Chinook должен был встретиться с программой Colossus Мартина Брайанта, которая нанесла ему поражение на Компьютерной олимпиаде 1990-го. Дело в том, что критики Chinook нередко указывали на то, что программа Шеффера, возможно, была не самой сильной шашечной программой. В конце концов, если Chinook уступил программе Colossus в 1990 г., быть может, именно Colossus должен был играть матч с Тинсли? Требовалось поскорее разрешить эти сомнения[598].
Матч, организованный в канадском Эдмонтоне, завершился уверенной победой Chinook — девять побед, два поражения и 43 ничьих. Да-да, в мире спорта такая разница в очках считается «уверенной победой». Если принять вероятность ничьей в партии между Chinook и Colossus за 43/54, то получается, что при абсолютно равной силе игры обеих программ вероятность того, что матч из 54 партий между ними закончится с разницей в семь очков и более составляет около 5%, что, в общем-то, не так уж мало. Впрочем, с 1990 г. это действительно был самый надёжный турнирный результат. Основываясь на результатах игр Chinook против Тинсли, совершенно нельзя было быть уверенным в том, что Тинсли играет сильнее программы. Даже результаты турниров из нескольких десятков партий во многом зависят от случая — это понимали и Шеффер и Тинсли.
По итогам матча Шеффер и Брайант расстались друзьями. Шеффер передал Брайанту шестишашечные таблицы окончаний, а Брайант передал Шефферу дебютную библиотеку Colossus, которая примерно в восемь раз превосходила по размеру библиотеку Chinook. Позже Брайант стал постоянным помощником Шеффера в работе над программой.
Следующий, 1994-й год для команды Шеффера тоже был богат событиями. Chinook без единого поражения выиграл матч против Дерека Олдбери, который