Я посетил центр имени Уотсона весной 2010 г., чтобы увидеться с Мюрреем Кэмпбеллом, канадцем с приятными манерами и подростковым восприятием жизни, который был одним из главных инженеров проекта еще со времен создания компьютера Deep Thought в Карнеги – Меллон (в настоящее время Кэмпбелл руководит департаментом статистического моделирования в IBM). В офисе Кэмпбелла висит огромный плакат с изображением Каспарова, угрожающе смотрящего на шахматную доску, и надписью:
В конечном итоге в игре «кто кого переглядит» первым моргнул Каспаров, а не Deep Blue, хотя причины оказались не совсем те, что ожидал Кэмпбелл со своей командой.
Deep Blue был создан с целью обыграть Каспарова, и только его. Команда пыталась предсказать, какие первые ходы будет, вероятнее всего, делать чемпион. После этого она придумывала самые сильные контратаки для любой комбинации (фактически Каспаров смог избежать этой ловушки, используя нетипичные для себя шаги в начале партии). Благодаря своим, хотя и довольно посредственным, итогам противостояния с Каспаровым в 1996 г. и результатам игр с другими шахматистами, игравшими в похожем стиле, вычислительная мощность Deep Blue удвоилась, а эвристика значительно улучшилась{650}
. Кэмпбелл знал, что для того, чтобы соответствовать уровню стратегического мышления Каспарова, Deep Blue нужно более глубоко (но, возможно, более избирательно) изучать дерево вариантов. В то же время система была спроектирована с небольшим перекосом в сторону сложных позиций, что позволяло ей активнее использовать свои сильные стороны.«Лучше всего компьютеры играют в позициях, где на доске имеется много фигур, что позволяет делать множество ходов, – рассказал мне Кэмпбелл. – Мы хотим играть в позициях, где тактика оказывается важнее стратегии. И для этого нужно совсем немногое». В этом смысле Deep Blue был более «человечным», чем любой шахматный компьютер до или после него.
Хотя теория игр не столь значима для шахмат, как для игр с неполной информацией типа покера, то очень важной становится последовательность ходов в начале партии. Даже слабый ход, который выведет оппонента из равновесия, способен отрицательно сказаться на качестве его многомесячной подготовки – или же это произойдет с вами, если оппонент найдет правильный ответ. Однако большинство компьютеров пытается играть в «идеальные» шахматы, а не варьировать свою игру, пытаясь противостоять конкретному оппоненту. Deep Blue сделал то, что делают большинство игроков-людей, – ставку на позиции, которые, по мнению Кэмпбелла, могли обеспечить весомое преимущество.
Характерная особенность или сбой?
Тем не менее в 1997 г. навыки Каспарова были насколько сильными, что научить Deep Blue выигрывать у него в шахматы можно было только с помощью программирования.
В теории создать компьютерную программу для игры в шахматы довольно просто: если поисковым алгоритмам шахматной программы предоставить возможность работать в течение неограниченного периода времени, то все 10 10 50
позиций могут быть решены методом перебора. «Есть довольно понятный алгоритм решения шахматных задач, – рассказал мне Кэмпбелл. – Я мог бы за полдня написать программу, позволяющую найти решение для любой позиции, если только у нее будет достаточно времени». Однако на практике, жаловался он, «для того чтобы это сделать, потребуется все время жизни нашей Вселенной».А процесс обучения шахматного компьютера способу обыграть чемпиона мира часто сводится к банальному процессу проб и ошибок. Вырастет ли результативность, если мы дадим программе больше времени для работы в эндшпиле и меньше в середине игры? Есть ли хороший способ оценить, какая фигура важнее на первых ходах – конь или слон? Насколько быстро должна программа отсекать кажущиеся мертвыми ветви своего поискового дерева, даже если она знает, что в них может скрываться шанс на мат или, напротив, ловушка?
Изменяя эти параметры и наблюдая, как это повлияет на работу компьютера, Кэмпбелл провел с Deep Blue множество тестов. Однако иногда программа все равно допускала «ошибки», делая странные и неожиданные ходы. Каждый раз в подобном случае Кэмпбелл должен был задавать опытным программистам вопрос: был ли этот новый ход свойством программы – то есть моментом «эврики», показывавшим новую степень ее развития? Или же это просто был сбой?
Мой общий совет (в более широком контексте прогнозирования) для случаев, когда при использовании вашей модели вы получаете неожиданные или сложно объяснимые результаты, состоит в том, чтобы по умолчанию считать случившееся «сбоем». Ошибочно принять шум за сигнал довольно просто. А сбои способны подорвать усердную работу даже самых сильных прогнозистов.