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

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

Большинство специалистов, пишущих программы для игры в покер, не обременяют себя изучением теории игр для поиска оптимальной стратегии. Чаще всего они берут за основу набор строгих правил и создают для каждой потенциально возможной ситуации последовательность инструкций типа: «Если случится это – поступай так». Поэтому поведение бота зависит от стиля игры его создателя и от того, как последний представляет себе действия хорошего игрока.

В 2003 году, обучаясь в магистратуре, программист Роберт Фоллек создал покерного бота SoarBot. Программа использовала когнитивную архитектуру Soar, разработанную учеными из Мичиганского университета. Во время игры в покер SoarBot действовал в три этапа. Сначала он сканировал текущую ситуацию – карманные карты, прикуп и количество игроков, сделавших пас. Проанализировав полученную информацию, бот соотносил ее с заложенными в него инструкциями и определял, какие из них применимы к имеющимся обстоятельствам.

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

Даже получив «в режиме ручного управления» добавочные инструкции, программа время от времени либо упускала реальные шансы, либо вела себя непоследовательно. Эта проблема хорошо знакома математикам. В 1930 году Курт Гёдель, годом раньше получивший докторскую степень, доказал теорему, согласно которой формальная арифметика не может быть одновременно полной и непротиворечивой. Его открытие потрясло научную общественность. Ведущие математики того времени работали над построением надежной системы правил и аксиом. С ее помощью ученые надеялись объяснить некоторые недавно вскрытые ими логические аномалии. Под руководством Дэвида Гилберта, немецкого наставника фон Неймана, исследователи составляли исчерпывающий комплекс правил, достаточных для доказательства любого утверждения и однозначных, то есть не содержащих внутренних противоречий. Но теорема Гёделя о неполноте показала, что это невозможно: любая теория рано или поздно потребует дополнения.

Логический ригоризм Гёделя создал для него проблемы и вне академического пространства. В 1948 году, готовясь к экзамену на получение американского гражданства, Гёдель заявил своему спонсору, Оскару Моргенштерну, что обнаружил в Конституции США некоторые противоречия, по мнению Гёделя, чреватые созданием предпосылок для легального установления в стране диктатуры. На что Моргенштерн заметил, что это не лучшая тема для обсуждения на собеседовании.

К счастью для Фоллека, команда разработчиков технологии Soar сумела обойти теорему Гёделя. Когда программа сталкивалась с трудностями, она самостоятельно усваивала новую инструкцию. Таким образом, если бот Фоллека не знал, как поступить в определенной ситуации, он мог выбрать произвольный вариант действий и добавить его к набору имеющихся инструкций. Если аналогичная ситуация возникала снова, программа обращалась к своей памяти и делала то же, что в прошлый раз. Такое «машинное обучение» с добавлением новых инструкций по ходу функционирования программы позволило избежать описанных Гёделем ловушек.

Перейти на страницу:

Похожие книги