Электронная библиотека » Виталий Потопахин » » онлайн чтение - страница 4


  • Текст добавлен: 15 ноября 2017, 01:40


Автор книги: Виталий Потопахин


Жанр: Прочая образовательная литература, Наука и Образование


сообщить о неприемлемом содержимом

Текущая страница: 4 (всего у книги 15 страниц) [доступный отрывок для чтения: 5 страниц]

Шрифт:
- 100% +
Вторая базовая идея – оценочная функция

Итак, допустим, мы в анализе позиции продвинулись по дереву перебора на несколько ходов вперед и получили некоторое количество позиций, которые будем считать конечными. Необходимо их оценить. Самая примитивная ситуация – это кто-то уже выиграл. Возможно, будут и такие ситуации, но, скорее всего, каждая из конечных позиций находится в подвешенном состоянии: нет очевидного проигрыша, нет и очевидной победы, но что-то изменилось, и это что-то требуется измерить простыми количественными показателями. Иначе говоря, необходима числовая оценка, характеризующая качество позиции.

Заметим сразу, что оное качество определяется разными видами факторов. Очень важно, какой материал находится на доске. Материальное преимущество, в принципе, может быть решающим. Например, если в игре в шашки у вас четыре дамки, а у противника одна шашка и ход за вами, то совершенно не важно, как расположены шашки. Если у вас на доске к концу шахматной партии остались ферзь и король, а у противника только король и ход за вами, то опять не важно, кто где стоит. Материал часто решает дело, поэтому оценка материала даже без учета его расположения может дать очень много.

Много, но не все. При игре королем против короля и ферзя вполне возможен пат, то есть ничейная ситуация. В русских шашках (поле 8×8) известно, что три дамки гарантированно ловят одну стандартной комбинацией, при условии что эта единственная дамка не стоит на главной диагонали. А значит, если противник, в свою очередь, может превратить свою единственную шашку в дамку, вставшую на главную диагональ, то ситуация из проигранной становится ничейной. Из этих примеров следует, что обе группы факторов – и материальные, и позиционные – могут решить исход игры, и обе группы должны быть учтены самым тщательным образом. Но материальные факторы просчитать несколько легче, поэтому начнем с них.

У каждой из фигур есть собственная сила, не зависящая от расположения

К сожалению, в деле учета материала нет никакой строгой теории, и, может быть, такая теория даже невозможна. Ведь что нам нужно, по сути? Необходимо точно определить значимость каждой фигуры. Мы можем совершенно произвольно определить стоимость самой слабой фигуры – пешки или самой сильной – ферзя. Например, пусть пешка стоит 1 балл. А вот далее начинаются серьезные проблемы. Необходимо договориться, насколько сильнее пешки каждая из фигур. Причем безотносительно конкретной позиции. Это сложно во многих планах. Для любого шахматиста сила фигуры привязана к позиционным факторам: сдвоенные слоны сильнее двух несвязанных. Сила пешки увеличивается по мере ее продвижения к последней горизонтали. В дебюте ладьи мало что решают, но в эндшпиле, когда большая часть доски пустеет, их сила резко возрастает. Конь очень важен в миттельшпиле, но в эндшпиле ему сложно перескакивать с фланга на фланг. Слон скачет с большой легкостью, но у слона серьезные проблемы в миттельшпиле, где он на каждом шагу наталкивается на пешки и свои, и противника, кроме того, для слона доступна только половина шахматного поля – половина его цвета. Но тем не менее надо как-то от всего этого отвлечься и оценить собственную силу фигур, ведь интуитивно ясно, что есть какие-то внутренние характеристики.

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

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

Но необходимо заметить, что вопрос, сформулированный так примитивно, – как оценить собственную силу фигур безотносительно позиции, – не дает эксперту возможности передать более значительную часть своего знания – знания о взаимной силе фигур.

Материальные факторы зависят от взаимного расположения, и это обстоятельство значительно усложняет анализ

Следующим шагом необходимо поинтересоваться у экспертной компании не только о том, как оценить некий фактор, но и какие вообще материальные факторы возможны. Имеются в виду факторы, определяемые положением фигур. Группа таких факторов выглядит намного сложнее. И здесь в полный рост встает проблема взаимопонимания. Цель разработчика – грамотно задать вопрос. Искусство вопроса предполагает, что задающий вопрос, может быть, не эксперт, но все же имеет хорошее представление о предмете. Поэтому хотите вы или нет, но если взялись писать программу, играющую в интеллектуальную игру, вам придется и самому научиться в нее играть на приличном уровне. Это даст возможность правильно сформулировать вопрос и выделить из ответов существенную информацию. Критерий хорошего экспертного ответа (в отношении определения фактора) таков: фактор должен быть легко алгоритмизируем. А это не всегда так. Вот пара примеров.

Хороший фактор. Сдвоенные слоны. Так называются слоны, находящиеся на соседних диагоналях. Это обстоятельство алгоритмически легко проверяется, поэтому фактор не только сильный с точки зрения шахматиста, но и удобный с точки зрения программиста.

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

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

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

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

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

Кстати, этот фактор – давление на пункт, или, иначе говоря, возможность захвата пункта, можно выделить в очень многих играх, а стало быть, его допустимо считать общеприменимым

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

Как считать оценочную функцию?

Существует общий принцип, вытекающий из природы игровой стратегии, стремящейся минимизировать ущерб.

Он называется принципом минимакса

Пока ясно, что есть факторы, описываемые двумя числами – ценой и количественным значением. Это как в овощном ларьке, у каждого овоща есть цена, и есть их наличное количество. Центр доски или королевский фланг, конечно, присутствуют на доске в единственном экземпляре, и пара сдвоенных слонов может быть только одна, но материальные факторы, в том числе и ферзь, могут быть в нескольких экземплярах (пешка может стать ферзем). Введем обозначения: mk – это количество фактора, и vk – это цена, или, еще говорят, вес фактора. Тогда общая оценка позиции может быть записана следующим выражением:



Теперь попробуем разобраться, как оценочную функцию использовать для выбора хода. Для этого представим себе некую гипотетическую игру, в которой на каждый ход одного из игроков существуют ровно два ответа. Назовем игроков: Первый и Второй – и выберем продолжение для Первого игрока, при глубине анализа в один ход (один ход – это ход Первого и ответ Второго). Анализ игры в этом случае будет опираться на такое дерево (рис. 2.4):


Рис. 2.4. Пример минимакса


Похожая картинка уже была, но здесь информации несколько больше. Конечные ситуации оценены, и есть вопрос, какой ход: левый или правый – должен выбрать Первый игрок. Возможно, кому-то покажется, что лучший ход – левый, так как именно там расположена ветка с наилучшей оценкой в пять баллов. Но нужно понимать, что после левого хода Первый игрок передает право выбора хода Второму, и этот Второй выберет ветку, оканчивающуюся единичной оценкой. Поэтому необходимо выбирать правый вариант, в котором Второй игрок отдаст Первому ветку с худшей оценкой 2. Заметим, что Первый игрок реально может выбирать только из худших оценок, и все, что в его силах, – это выбор наилучшего из худшего. Данный принцип называется принципом минимакса. Рассмотрим для иллюстрации более сложный пример. Дерево перебора оформим в виде таблицы, на нижнем уровне которой – значения оценочной функции на максимальной глубине дерева перебора, на промежуточных уровнях – значения оценки, выбранные противниками в свою очередь хода (оценки переходят снизу вверх):


Как и любой эвристический механизм, минимакс имеет свои плюсы и минусы, не гарантируя наилучшего продолжения, он позволяет выбрать действительно разумный вариант игры

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

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

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

А теперь давайте посмотрим, что дает фактическая невозможность составить идеальную оценочную функцию. Она, идеальная функция, была бы не нужна, будь у нас возможность выстроить дерево перебора от начала игры до самого конца, в этом случае достаточна предельно простая оценка с одним фактором – игра выиграна или игра проиграна. Можно утверждать, что:

Чем глубже дерево перебора для игрока, тем меньше у него потребность в хорошей оценке. И наоборот, если построить идеальную оценочную функцию, то потребность в дереве перебора отпадет полностью. Очередной ход можно будет просто вычислять из знания текущей ситуации.

Но идеальная оценка невозможна, невозможно и полное или даже очень глубокое дерево перебора. Это означает, что вывод о качестве выбранного хода всегда может быть ошибочен, что создает возможность для так называемого комбинационного удара, выполнение которого выходит за рамки минимакса. В чем суть комбинации (тактического приема)? А суть в следующем: игрок допускает резкое ухудшение своей позиции в анализе дерева перебора на глубину в N ходов, но на большей глубине он получает значительно большую компенсацию. Например, можно отдать ферзя, если в результате противник получит мат, можно отдать легкую фигуру, если за этим последует взятие тяжелой фигуры противника. А иногда в шахматах отдают материал за позиционный выигрыш.

Заметим, конечно, что, увеличивая вычислительные ресурсы, мы даем возможность программе просчитывать варианты, которые выглядят как комбинации (отдача материала или позиции с последующим отыгрышем), но всегда есть несчитаемая глубина дерева перебора и всегда, с точки зрения минимакса, плохая оценка на максимальной глубине – это безусловно плохая оценка.

Оптимизация минимаксной процедуры. Альфа-бета-алгоритм

В этом параграфе мы обсудим два момента: как увеличить глубину дерева перебора и как без полного перебора обнаружить комбинационный удар. Начнем с метода, позволяющего более глубоко копнуть дерево перебора. Заметим, для начала, что более глубокое дерево без увеличения вычислительных ресурсов возможно только за счет отсечения некоторых его не очень значимых ветвей. Только это дает возможность другие, более важные ветки просмотреть глубже. А процедура отсечения ветки нуждается в критерии, позволяющем оценить ветвь игры до ее анализа.

Интуитивный критерий лежит на поверхности. Предположим, следующим ходом (напомню, мы в качестве базовой игры рассматриваем шахматы) игрок теряет ферзя. С точки зрения простой оценочной функции, это очень плохо, и такой ход разумно исключить из рассмотрения. Предположим далее, что следующим ходом противник теряет ферзя. Обычный здравый смысл говорит, что на этом варианте следует сосредоточиться. Но мы сделаем несколько парадоксальный вывод, что этого хода также следует избегать. Дело в том, что, выстраивая теорию, мы исходили из предположения, что силы игроков равны. Из чего следует, что ни один из игроков выиграть слишком много не может. И следовательно, как выигрыш ферзя, так и его проигрыш необходимо признать делом нереальным. Математически расчетная схема выглядит так: определим для оценочной функции пределы значений, для которых ни одному из игроков не гарантирована победа. Эти два уровня опять-таки можно определить экспертной оценкой. Назовем нижний уровень уровнем альфа, а верхний – уровнем бета. Далее все очень просто. Идя по дереву перебора, будем выполнять оценку промежуточных ситуаций (в чистом минимаксе интересны только конечные позиции), и если эта оценка ниже уровня альфа или выше уровня бета, то такую игровую ветку отсекаем. На вопрос, как все же решиться взять ферзя противника, ответим немного позже.

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

Стратегическая борьба за победу и тактический удар вполне возможны, с точки зрения оценочной функции, но необходима более сложная схема расчетов

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

Тактический удар, он же комбинация, также вполне алгоритмизируется в рамках изучаемой схемы, и достаточно легко. Границы альфа и бета – это границы возможной равновесной игры. А комбинация – это форма игры неравновесной, предполагающей резкие скачки оценки. Сказанное означает, что ход, выводящий оценку за границу, потенциально комбинационный. Обнаружив такой ход, программа может выполнить более глубокое построение дерева перебора именно для такого хода, но ограничить его участком доски, для которого ход имеет существенное значение. Конечно, еще остается проблема, как оценить, для какого именно участка он существенен, но ответ на него зависит от системы оценки и природы игры.

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

Для решения проблемы заметим, что факторы, входящие в оценочную функцию, не равнозначны. Между материальными факторами и всеми видами факторов позиционных есть существенное различие. Один и тот же материал можно иметь в разных позициях. Наличие пешек, легких и тяжелых фигур позиции не определяет. И наоборот, позиция заключает в себе игровые возможности, создаваемые особым расположением фигур. Именно расположение фигур дает возможность тактического удара. Это означает, что для уточнения, является данная ситуация комбинационной или нет, мы можем использовать какие-то позиционные моменты.

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

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


Страницы книги >> Предыдущая | 1 2 3 4 5 | Следующая
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации