Диалоги (июнь 2003 г.) - Александр Гордон
Шрифт:
Интервал:
Закладка:
А.Г. А как, вы не знаете?
Б.М. А почему – не знаю.
А.Г. То есть вы программируете работу правого полушария правым полушарием и в результате получается хорошая программа.
Б.М. Да, да, да, так иногда оно и есть. Но кое-что всё-таки можно объяснить. И как раз это объяснение и есть предмет нескольких статей, которые мы с соавторами написали, и не только про программирование игр, но и про разные другие задачи дискретной оптимизации.
Кстати, не все специалисты в искусственном интеллекте принимают эти статьи, были очень серьёзные возражения. В частности, одно из возражений можно кратко сформулировать таким образом: совершенно не объясняется никаких новых моментов, которые программируются, то есть никаких новых идей, связанных с искусственным интеллектом не объясняется. А мне кажется, что всё-таки в программировании, в эвристическом программировании вообще, не обязательно в программировании игр, важен конечный, конкретный результат. И когда он достигается, когда он лучше, чем при другом подходе, когда в том, что он лучше, можно убедить даже неспециалиста – это и есть решение, и это может быть значительно более важно, чем формулировка какого-то нового метода.
А.Г. Но это, извините, уже искусство.
Б.М. Может быть. Так игра в шахматы, в нарды тоже многими сравнивается с искусством.
Но сейчас, может быть, стоит перейти к тому, что алгоритмизуется работой правого полушария, и что нашло отражение в программах и для игры в нарды, и в других задачах дискретной оптимизации – это динамическая оценка позиции, даже лучше сказать, применение динамически генерируемых функций риска. Может быть, об этом вы расскажете подробнее?
А.Р. Про статические оценки я коротко уже говорил. В недетерминированных играх, благодаря этой недетерминированности, мы не знаем точно, что у нас получится, и мы перебираем всевозможные случайные исходы. Выпали у нас показания кубиков такие-то, мы получаем такой-то прогноз, следующий – следующий прогноз. Итак, мы для каждого исхода случайного события имеем какую-то коллекцию прогнозов, каких-то построенных статических оценок.
А как оценить вообще ситуацию для всех случайных исходов? В какую ветвь пойти нам при принятии решения? Здесь можно либо просто усреднять, то есть получать среднеарифметическое математическое ожидание и где оно нас устраивает, туда и идти. Но это не всегда бывает оправдано. Оправданным оказался подход с функцией риска – этот набор прогнозов мы усредняем, но специальным образом.
Б.М. Сейчас я опять перебью на секунду. Набор прогнозов можно рассматривать как вектор аргумента функций. Это не совсем правильное название, и математики могут за него поругать, но это близко к истине.
А.Р. Тем более там размерность нефиксированная получается.
Это специальное усреднение основывается на весовой функции, которая у нас называется «функция риска» и которая также подбирается специальным образом. А подбирается она так. Если у нас дела идут в гору…
Б.М. Давайте я снова вас перебью. Итак, есть у нас набор значений статической оценки позиции. И вот эти наборы значений как-то распределены, условно говоря, на отрезке от минус единицы до единицы. То есть, минус единица – самый плохой результат, единица – самый хороший, это результат, зависящий от выпадения кубиков. Ну, опять же, если снова говорить про бэкгеммон, про нарды, тут можно сказать, что у нас либо 21 вариант, если показания кубиков 5,6 и 6,5 считать одинаковыми, либо говорить, что 36 вариантов, если их считать разными, но это дело не меняет.
Главное, что некоторое количество вариантов тут распределено. И действительно, у нас могут быть и очень хорошие, и очень плохие показания кубиков. То есть в реальных партиях, в реальных оценках позиции распределение этого вектора – от минус до плюс единицы. Как усреднять? Алексей говорил, что можно среднеарифметически, но лучше не так, лучше усреднять с помощью, как он тоже начал говорить, функции риска. Что это такое. На отрезке от минус до плюс единица проводится какая-то функция, и наши аргументы получают временные значения, равные высоте столбиков ординат этой функции в нужных абсциссах. Я не очень красиво выразился, может, вы меня поправите?
А.Р. Каждому прогнозу, каждой оценке как бы приписывается свой вес.
Б.М. Равный значению этой функции риска. А абсцисса там, где она и находится.
А.Р. Потом эта система взвешивается, ищется центр тяжести.
Б.М. Центр тяжести – вот она главная оценка! То есть, то, чего мы не нашли ни в каких других программах.
Во-первых, мы применили эту оценку в задачах дискретной оптимизации. В общем-то, может быть, это отдельный разговор, причём здесь задача дискретной оптимизации. Причём, например, здесь так называемая «задача коммивояжёра», когда там никакого недеретминизма нет. Есть – причём те же самые алгоритмы применяются. И там получаются достаточно хорошие результаты.
Но раз уж я об этом заговорил, ещё пару слов скажу. Здесь неизвестность, недетерминизм, то есть неизвестные заранее показания кубиков. А там неизвестные заранее исходы, то есть продолжение пересчёта какой-то матрицы, достаточно большой. Мы можем делать только прогнозы, как пойдёт этот расчёт. И вот есть программы-эксперты, которые делают эти прогнозы. То есть здесь неизвестность, а там… Ну, может быть, тоже неизвестность, полученная от разных прогнозов. То есть те же самые приёмы применяются нами в классических задачах дискретной оптимизации.
А.Г. В казино не хотите в рулетку играть с этим подходом?
Б.М. Нет, но один из результатов этого подхода – предсказание курса валют, которые мы безуспешно всё пытаемся куда-нибудь пристроить. Но этих программ-предсказателей немереное количество.
А.Г. Насколько аккуратны ваши действия?
Б.М. Предсказать какой-то катаклизм вроде нашего кризиса 98-го года, видимо, никому не удавалось и не удастся, а доказать, что наша программа лучше, на каком-то более простом примере нам пока не удаётся. Но, в общем-то, это тоже не ставится как цель. Получить отсюда прибыль, коммерческий эффект, это второе, третье дело. Пока не получается. Получится – хорошо. Не получится – не страшно. Я всё-таки вижу основную цель в том, чтобы этот подход ввести в программирование игр, в другие задачи. Победить – дай Бог – на следующем чемпионате мира, 2004 года.
А.Г. Можно ещё чуть подробнее, что такое «центр тяжести» в данном случае, потому что я понял, но не до конца. Ещё раз можете объяснить, что такое принцип динамического подхода, присвоение веса и так далее?
А.Р. То, что мы для каждого исхода случайного события имеем какую-то числовую величину – это просто набор прогнозов на будущее. Нам этот набор не делает погоды, из него надо получить какую-то одну величину, одно значение, которое всю ветвь, которая следует за случайными событиями, оценивает приемлемой величиной, основываясь на которой мы сделаем решение – ходить нам так или предпочесть другой вариант. Так вот, на основе чего получается общая оценка этого набора прогнозов? Каждую точку, каждую величину, грубо говоря, можно представить шариком на стержне. Стержень у нас длиной от минус единицы до единицы, минус единица – это значит, что дела для нас очень плохо пойдут. Единица – что очень хорошо, мы победители. На этот стержень нанизаны шарики. Каждый на своём расстоянии от нулевой точки. Это расстояние соответствует значению прогноза.
Теперь мы подбираем массу этих шариков, а масса этих шариков подбирается согласно функции риска.
Б.М. Чем больше значение этой функции в данной точке, тем больше масса шарика.
А.Р. А потом этот стержень уравновешиваем и находим положение центра тяжести.
Б.М. Это, видимо, лучше объяснение, чем моё…
А.Г. Оно доступнее, да.
А.Р. Этот центр тяжести, его положение, мы считаем величиной, которая…
А.Г. Оптимальной величиной, которая позволяет сделать…
А.Р. Не сказать, чтобы оптимальной, это просто характерная величина, которая более-менее описывает куст с этими случайными событиями. И мы её принимаем в качестве оценки.
Б.М. Давайте тогда следующий шаг сделаем. Это был первый шаг нашей оценки, именно на этом мы получили достаточно хорошую программу, которая, правда, всё-таки была хуже этого «Джели-фиша» пресловутого. Следующий шаг такой. Эти функции риска, мы, как правило, брали, условно говоря, пессимистические – человек в жизни должен быть хоть немного пессимистом и ожиданиям плохого придавать больший вес, чем ожиданию хорошего.
А.Г. То есть вы определяли себя игроком хуже, чем ваш партнёр?
Б.М. Нет, не так: плохие показания кубиков мы ожидали с большей вероятностью, чем хорошие показания кубиков. В общем, это, наверное, естественно – когда мы идём гулять, совершенно ничего не зная про прогноз погоды, то, наверное, зонтик всё-таки стоит брать. Здесь фактически то же самое.