Текст
                    Искусственный
интеллект
в компьютерных играх
как обучить виртуальные персонажи
реагировать на внешние воздействия
Алекс Дж- Шампандар
Иеш\
Riders 1

Al GAME DEVELOPMENT: Synthetic Creatures with Learning and Reactive Behaviors Alex J. Champandard Ar» Imprint of Pearson Fducation Nrw York • I ondon
^alallaus^k ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ В КОМПЬЮТЕРНЫХ ИГРАХ: как обучить виртуальные персонажи реагировать на внешние воздействия Алекс Дж. Шампандар Москва • Санкт-Петербург • Киев 2007
ББК 32.973.26-018.2.75 4-17 УДК 681.3.07 Издательский дом “Вильямс” Зав. редакцией С.Н. Тригуб Перевод с английского КА. Птицына и А.А. Шпака Под редакцией К.А. Птицына По общим вопросам обращайтесь в Издательский дом “Вильямс” по адресу: info^williamspublishing.com, http://www.williamspublishing.com 115419, Москва, а/я 783; 03150, Киев, а/я 152 Шампандяр, Алекс Дж. 4-17 Искусственный интеллект в компьютерных играх: как обучить виртуальные персонажи реагировать на внешние воздействия. : Пер. с англ. — М. : ООО “И.Д. Вильямс’*, 2007. — 768 с.: ил. — Парад. тит. англ. ISBN 978-5-8459-1170-4 (рус.) В настоящей книге показано, как ввести в компьютерную игру синтетиче- ские игровые персонажи с реалистичными формами поведения, сосредоточи- ваясь на отдельных аниматах (автономных созданиях с искусственным телом), находящихся в виртуальном мире. Книга посвящена описанию того, как созда- вать подобные автономные персонажи, основанные на использовании средств ИИ, и заставлять их интеллектуально реагировать на происходящие события. В качестве испытательной площадки применяется реалистичная трехмерная игра. Эта книга представляет собой уникальное сочетание теоретических основ,' практических рекомендаций и определений основных понятий, относящихся к области разработки средств ИИ, и предназначена для читателей, которые стре- мятся приобрести знания о средствах ИИ и применить эти знания на практике для создания игр. ББК 32.973.26-018.2.75 Все названия программных продуктов являются зарегистрированными торговыми марками соответ- ствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фо- токопирование и запись на магнитный носитель, если на это нет письменного разрешения издательства New Riders Publishing. Authorized translation from the English language edition published by New Riders Publishing, Copyright © 2004 All rights reserved. No part of this book shall be reproduced, stored in a retrieval system, or transmitted by any means — electronic, mechanical, photocopying, recording, or otherwise—without written permission from the publisher, except for the inclusion of brief quotations in a review. Russian language edition was published by Williams Publishing House according to the Agreement with R&I Enterprises International, Copyright © 2007 ISBN 978-5-8459-1170-4 (pyc.) ISBN 1-59-273004-3 (англ.) © Издательский дом “Вильямс”, 2007 © by New Riders Publishing, 2004
Оглавление Предисловие 31 Введение 34 Часть I Общие сведения 41 Глава 1 Значение средств ИИ в компьютерных играх 43 Глава 2 Проблемы проектирования интеллекта 55 Глава 3 Подход, основанный на реакциях 73 Глава 4 FEAR: платформа для экспериментов 87 Часть II Управление перемещениями 95 Глава 5 Перемещения в игровом пространстве 99 Глава 6 Проявление способностей к перемещениям 111 Глава 7 Системный анализ и разработка технических требований 121 Глава 8 Формализация модели перемещений 133 Глава 9 Разработка технического проекта и представление знаний 145 Глава 10 Изменение направления движения при огибании препятствий 157 Глава 11 Системы, основанные на правилах 169 Глава 12 Синтез перемещений в системах, основанных на правилах 189 Часть II Заключение 203 Часть III Моделирование стрельбы 205 Глава 13 Боевая обстановка 209 Глава 14 Навыки стрельбы игрока 217 Глава 15 Формальное представление процесса стрельбы 225 Глава 16 Физические основы прогнозирования движения 235 Глава 17 Персептроны 247 Глава 18 Устранение ошибок прицеливания 273 Глава 19 Многослойные персептроны 283 Глава 20 Выбор цели 309 Глава 21 Приобретение знаний о задаче 323 Часть III Заключение 341 Часть IV Выбор оружия 345 Глава 22 Условия борьбы 349 Глава 23 Выбор оружия 357 Глава 24 Формализация процесса выбора оружия 365 Глава 25 Сценарная поддержка тактических решений 373 Глава 26 Деревья классификации и регрессии 385 Глава 27 Обучение оценке оружия 403 Глава 28 Понимание сути решения 419 Часть IV Заключение 431
Часть V Работа с предметами и объектами 435 Глава 29 Анализ и разработка спецификаций 439 Глава 30 Нечеткая логика 449 Глава 31 Усовершенствование двигательных форм поведения с использованием нечетких систем 469 Глава 32 Генетические алгоритмы 481 Глава 33 Обучающиеся системы классификаторов 509 Глава 34 Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 519 Глава 35 Проектирование обучающихся средств ИИ 533 Часть V Заключение 545 Часть VI Эмоции 549 Глава 36 Создания, обладающие эмоциями 553 Глава 37 Ощущения, эмоции и чувства 559 Глава 38 Конечные автоматы 569 Глава 39 Влияние эмоций 587 Глава 40 Недетерминированные конечные автоматы 599 Глава 41 Иерархические конечные автоматы 617 Глава 42 Система, проявляющая эмоции 631 Глава 43 Эмерджентная сложность 643 Часть VI Заключение 655 Часть V Выбор действия 659 Глава 44 Принятие стратегических решений 661 Глава 45 Реализация интеллектуальных тактических форм поведения 669 Глава 46 Обучение с подкреплением 677 Глава 47 Усвоение с помощью обучения активизируемых стратегий 701 Глава 48 Применение адаптивных форм поведения 713 Часть VII Заключение 721 Часть V Заключение 723 Глава 49 Принципы разработки игровых средств ИИ 725 Глава 50 Дальнейшие перспективы 735 Приложение А Библиография 741 Предметный указатель 745
^aiattaus,^. Содержание Предисловие 31 Введение 34 Часть I Общие сведения 41 Глава 1 Значение средств ИИ в компьютерных играх 43 Общие сведения о средствах ИИ 44 Машинный интеллект 44 Научное направление 45 Компьютерные игры и средства ИИ 47 Текущий уровень развития игровых средств ИИ 48 Технологическая революция 48 Революция в проектировании 49 Проектировщики или специалисты по ИИ? 50 Препятствия 50 Два типа игр 50 В чем суть конфликта 51 Система ИИ с точки зрения программирования игры 53 Глава 2 Проблемы проектирования интеллекта 55 Инженерный взгляд 55 Традиционный подход 56 Интеграция и архитектура 57 Принципы создания 57 Обсуждение 58 Перспективный подход 58 Аниматы в играх 59 Воплощение 61 Обучаемость 64 Требуемый уровень подготовки 67 Программирование 67 Компьютерные науки 67 Математика 67 Инженерия программного обеспечения 68 Архитектура игровой машины 68 Производственный цикл создания системы ИИ 68 Основные этапы производства 69 Итерации 71 Резюме 71
8 Содержание Глава 3 Подход, основанный на реакциях 73 Определения 74 Академическое определение 74 Практическое определение 75 Поведение: планирование или моделирование реакций 76 Целевое планирование 76 Планирование в играх 77 Замена планирования подходом, основанным на реакциях 78 Использование методов, основанных на рефлексах 78 Применение в стандартных системах ИИ 79 Применение в аниматах 79 Архитектурные решения 80 Компоненты 80 Организация 81 Декомпозиция 82 Арбитраж 83 Примеры 83 Резюме 84 Глава 4 FEAR: платформа для экспериментов 87 Технические сведения 88 Спецификации 88 Программная среда 89 Ход разработки 90 Интерфейс с внешним миром 90 Модули 91 Интерфейсы 91 Загрузка данных 92 Взаимозависимости 92 Гибкая архитектура 92 Создание анимата 93 Описание архитектуры 93 Генерация исходного кода 93 Связь кода с основным кодом игры 93 Резюме 94 Насть II Управление перемещениями 95 Мотивация 95 Краткое содержание части 96 Предположения 97 Глава 5 Перемещения в игровом пространстве 99 Окружающая среда и игровое пространство 100 Две составляющие еди ного целого 100
^laiattaus,^. Содержание 9 Определение игрового пространства 102 Типы игровых миров 103 Влияние трехмерности 103 Дискретность и непрерывность игрового мира 104 Управление перемещениями 107 Предположения 108 Условия тестирования 109 Резюме 109 Глава 6 Проявление способностей к перемещениям 111 Искусство навигации 112 Игровые боты и их перемещения 113 Автономные навигации аниматов 114 Критерии оценки движений 115 Практический пример 117 Резюме 118 Глава 7 Системный анализ и разработка технических требований 121 Проблемная область 122 Этап системного анализа 124 Технические условия 124 Ограничения 125 Условия реализации 126 Этап разработки технических требований 127 Критерии и желаемый исход 128 Формулировка проблемы 129 Общие рекомендации по разработке технических требований 129 Резюме 130 Глава 8 Формализация модели перемещений 133 Анализ существующих решений 134 Разработка технического предложения 135 Контекст 135 Моторика 137 Сенсоры 138 Уточнение возможных решений 140 Разработка эскизного проекта 141 Интерфейсы 141 Эскизный проект исходного кода 142 Резюме 142 Глава 9 Разработка технического проекта и представление знаний 145 Общие сведения о сути технического проектирования 146 Процедурный подход к проектированию системы ИИ 146 Цель технического проектирования 147
10 Содержание Теория представления знаний 147 Формализация представления знаний 149 Символы 149 Объект—атрибут—значение 149 Фреймы 150 Семантические сети 150 Сила интроспекции 151 Основные этапы технического проектирования 151 Предварительный отбор 151 Формализация 153 Уточнение 154 Необходимость технического проектирования 155 Резюме 156 Глава 10 Изменение направления движения при огибании препятствий 157 Общие сведения о теории искусственной жизни 158 Исходные предположения 158 Подход и отход 159 Другие типы поведения, предназначенного для изменения направления движения 160 Алгоритм 160 Разработка технического задания 161 Улучшенный алгоритм 162 Дальнейшее улучшение алгоритма 164 Анализ выбранного алгоритма 165 Преимущества 166 Недостатки 166 Резюме 167 Глава 11 Системы, основанные на правилах 169 Общие сведения о теории систем, основанных на правилах 170 Краткий обзор компонентов 171 Рабочая память 172 База правил 173 Интерпретатор 176 Теория RBS-систем и представление знаний 179 Накопление знаний 179 Представление знаний 181 Анализ RBS-решений 182 Преимущества 182 Недостатки 183 Оценка RBS-решений с точки зрения разработки игр 184 Проблемы, для которых можно применять RBS-решения 185 Резюме 186
Содержание 11 Глава 12 Синтез перемещений в системах, основанных на правилах 189 Пример проявления моделируемого поведения 190 Анализ проблемы 191 Нужно ли использовать RBS-систему? 191 Тип выборки 192 Упрощение правил 192 Технический проект RBS-модуля 193 Инициализация 193 Интерфейс 194 Реализация 195 Структуры данных 196 Интерпретатор 196 Тестирование 197 Рабочая память 197 База правил 198 Сенсоры и эффекторы 199 Оценка 199 Резюме 200 Часть II Заключение 203 Краткие итоги части 203 Перемещения 203 Методы 204 Что дальше 204 Часть III Моделирование стрельбы 205 Мотивация 205 Краткое содержание части 206 Предположения 207 Глава 13 Боевая обстановка 209 Оружие к бою! 210 Оружие рукопашного боя 210 Метательное оружие 211 Требования к оружию 212 Условия окружающей среды 213 Выбор полигона 214 Резюме 214 Глава 14 Навыки стрельбы игрока 217 Искусство боя 218 Ближний бой 218 Крупномасштабное сражение 218 Игровые навыки 219 Анализ основных факторов 220 Ход сражения 221
12 Содержание Критерии выбора условий стрельбы 221 Практический пример 222 Резюме 223 Глава 15 Формальное представление процесса стрельбы 225 Общая постановка задачи 226 Краткий обзор возможных вариантов решения 227 Контекст 227 Входные и выходные данные 228 Действия 229 Рационализация 230 Наиболее важные факторы 230 Основные предположения 231 Предлагаемая спецификация 231 Интерфейсы 232 Набросок кода 232 Резюме 233 Глава 16 Физические основы прогнозирования движения 235 Теоретические основы 236 Физическое состояние 236 Числовое интегрирование 237 Наиболее приемлемые способы определения точки пересечения траекторий объектов 238 Предсказание поведения 240 Алгоритм моделирования 241 Проведение эксперимента 243 Оценка полученных результатов 244 Резюме 245 Глава 17 Персептроны 247 История создания персептронов 248 Персептрон Розенблатта 248 Адалины Видроу и Хоффа 249 Идеи, ставшие результатом изучения биологических объектов 249 Краткий обзор модели 250 Моделирование 252 Результирующая сумма 252 Активизация 253 Общее описание алгоритма 253 Вводные сведения об оптимизации 254 Практический пример 254 Поиск решения по оптимизации с помощью грубой силы 255 Числовые методы оптимизации 256 Метод наискорейшего спуска 257 Локальные минимумы 259
^alattaus,^. Содержание 13 Ввод в действие понятия момента инерции 260 Моделирование отжига 261 Оптимизация весовых коэффициентов персептрона 263 Общее описание дельта-правила 264 Формальное обоснование 265 Процедура обучения 267 Наборы данных 267 Алгоритмы обучения 267 Общие выводы 269 Графическая интерпретация 270 Резюме 271 Глава 18 Устранение ошибок прицеливания 273 Момент инерции и трение 274 Определение модели 275 Линейная аппроксимация 276 Общая методология 276 Оценка полученных результатов 277 Устранение ошибок 277 Обратная задача 278 Реализация 279 Оценка полученных результатов 280 Резюме 281 Глава 19 Многослойные персептроны 283 Исторические сведения о разработках в области персептронов 284 Краткий обзор модели 285 Топология 285 Функция активизации 288 Моделирование 290 Биологические аналоги 291 Нейроны 292 Головной мозг 293 Общее заключение, касающееся проведения биологических аналогий 294 Алгоритмы обучения 294 Обратное распространение 295 Алгоритм обратного распространения 297 Метод быстрого распространения 298 Метод упругого распространения 300 Проблемы практического применения алгоритмов 302 Обобщение 302 Проверка и аттестация 303 Сравнение инкрементных и пакетных методов 304 Организация инкрементного обучения 304 Обсуждение полученных результатов 305
14 Содержание Преимущества персептронов 305 Недостатки персептронов 306 Резюме 306 Глава 20 Выбор цели 309 Практический пример 310 Основные соображения 311 Проект модуля 312 Инициализация 312 Интерфейсы 312 Реализация 313 Структуры данных 313 Моделирование и обучение 314 Общее описание приложения 314 Описание алгоритма 314 Отслеживание пусков ракет 315 Учет наличия шума 316 Входные и выходные данные 317 Процедура обучения 319 Оценка 319 Резюме 320 Глава 21 Приобретение знаний о задаче 323 Понимание задачи на концептуальном уровне 324 Неформальные знания 324 Спецификация программного обеспечения 325 Теоретический анализ 325 Основополагающие знания 327 Анализ частоты использования переменных 327 Переменные и ковариация 328 Эффективная область определения 329 Понимание основ задачи 330 Свойства задачи 330 Характер задачи 332 Уточнение формулировки задачи 333 Упрощение 333 Разработка по принципу “разделяй и властвуй” 334 Общая методология 335 Экспертный анализ характеристик 335 Выявление характеристик опытным путем 336 Анализ данных 337 Резюме 339 Часть III Заключение 341 Краткий ретроспективный обзор 341 Принципы поведения 341 Применяемые методики 342 Перспективы применения нейронных сетей 342
Содержание 15 Часть IV Выбор оружия 345 Обоснование необходимости решения задачи выбора оружия 345 Краткое содержание части 346 Исходные предположения 347 Глава 22 Условия борьбы 349 Свойства оружия 350 Применимость оружия 351 Расположение участников игры 351 Ход борьбы 352 Состояние игрока и противника 352 Компоновка среды 353 Гонка вооружений 354 Навыки участников игры 355 Условия, в которых проводится обучение 355 Резюме 356 Глава 23 Выбор оружия 357 Выбор наиболее привлекательных вариантов 358 Теоретические вопросы оценки оружия 358 Методология выбора 359 Практическое осуществление процесса оценки 360 Логический вывод 360 Опыт 361 Гибридные подходы 361 Критерии выбора оружия 362 Решительность 362 Обоснованность 362 Практический пример 363 Резюме 363 Глава 24 Формализация процесса выбора оружия 365 Краткое описание возможных вариантов 365 Контекст 366 Сенсоры 366 Действия 368 Рационализация 369 Наиболее важные факторы 369 Принятые предположения 369 Предложенная спецификация 370 Интерфейсы 371 Набросок кода 371 Резюме 372 Глава 25 Сценарная поддержка тактических решений 373 Основные сведения о сценарной поддержке 374 Языки сценариев 374
16 Содержание Варианты среды поддержки сценариев 375 Интеграция в системе на основе применения отдельных компонентов 375 Модуль сценарной поддержки 376 Выбор оружия с применением сценариев 377 Краткий обзор 378 Свойства оружия 378 Система голосования 379 Сбор данных о количестве голосов, соответствующих отдельным характеристикам 380 Временные ограничения 381 Оценка полученных результатов 382 Резюме 383 Глава 26 Деревья классификации и регрессии 385 Описание структуры деревьев решений 386 Общие сведения о выборках данных 387 Деревья решений 388 Способы проверки условий 389 Листовые узлы и переменные отклика 391 Классификация и регрессия 392 Формирование дерева 393 Краткое описание алгоритма рекурсивного секционирования 393 Разбиение наборов данных 395 Процедура обучения 397 Управление набором данных 397 Отсечение ребер 398 Конгломерация и усиление 399 Обсуждение полученных результатов 399 Резюме 400 Г лава 27 Обучение оценке оружия 403 Четыре возможных подхода 404 Обучение выбору подходящего оружия 405 Обучение оценке пригодности оружия 405 Определение с помощью обучения свойств оружия 407 Обучение подсчету голосов в пользу отдельных свойств 407 Обоснование принятого подхода 407 Методология 408 Обсуждение полученных результатов 408 Проект модуля 409 Инициализация 409 Интерфейс 410 Реализация 411 Структуры данных 411 Алгоритм формирования дерева 412
NalaHausi Содержание 17 Прогнозирование 412 Приложение 412 Интерпретация характеристик среды 413 Отслеживание эпизодов борьбы 414 Вычисление пригодности 414 Биологически правдоподобные ошибки 416 Оценка полученных результатов 416 Резюме 417 Глава 28 Понимание сути решения 419 Сложность решения 421 Теория информации и искусственный интеллект 421 Минимальная сложность 422 Теория и практика 423 Пространство поиска 424 Внутреннее представление 424 Примеры 424 Свойства пространства поиска 425 Различные подходы к поиску решения 426 Экспертное решение 427 Экспертные рекомендации 427 Исчерпывающий поиск решения 428 Случайный поиск решения 428 Гибридные подходы 428 Резюме 428 Часть IV Заключение 431 Краткий ретроспективный обзор 431 Используемые методы 431 Реализация необходимых форм поведения 432 Общая перспектива 432 Часть V Работа с предметами и объектами 435 Общее назначение части 435 Краткое содержание 436 Исходные предположения 437 Глава 29 Анализ и разработка спецификаций 439 Объекты в мире игры 440 Предметы 440 Хитроумные изобретения 441 Испытательная площадка 441 Совершенствование форм поведения 442 Подход, характерный для людей 442 Применяемые критерии 443 Практические примеры 444
18 Содержание Спецификация 445 Движение 445 Управление запасами 445 Зрение 446 Физическое состояние 447 Резюме 447 Глава 30 Нечеткая логика 449 Дополнения к теории множеств 450 Основные принципы 450 Нечеткие множества 451 Теория множеств 452 Нечеткие модификаторы 453 Нечеткие представления и преобразования 455 Нечеткие переменные и значения 455 Лингвистические переменные 455 Фаззификация 456 Дефаззификация 457 Нечеткая логика 458 Операции 459 Лингвистические выражения 459 Возражения против применения нечеткой логики 460 Нечеткое управление и принятие решений 461 Рабочая память 461 База знаний 462 Интерпретатор нечеткой системы 463 Применяемый алгоритм 466 Обсуждение полученных результатов 466 Резюме 467 Глава 31 Усовершенствование двигательных форм поведения с использованием нечетких систем 469 Нечеткие переменные и функции принадлежности 470 Действия 470 Восприятия 471 Нечеткие правила 472 Использование дверей 47 3 Использование лестницы 473 Использование платформ 474 Проект модуля 474 Инициализация 475 Интерфейс 476 Оценка полученных результатов 477 Резюме 479
^ataHaus,^. Содержание 19 Глава 32 Генетические алгоритмы 481 Сущность биологической эволюции 482 Теория эволюции 482 Биологическое воспроизводство 483 Биология как источник идей для ИИ 483 Генетика и представление 484 Геном и генотип 484 Феном и фенотип 485 Преобразования 486 Генетические алгоритмы 488 Популяция 489 Инициализация 490 Оценка полученных результатов 491 Отбор 492 Скрещивание 493 Мутации 494 Замена 494 Генетические операции и правила осуществления эволюции 495 Инициализация 496 Скрещивание 497 Мутация 500 Отбор 501 Замена 503 Более сложные проблемы 504 Преждевременная сходимость 504 Медленная сходимость 505 Недостатки, связанные с использованием большого количества параметров 505 Знания в проблемной области 506 Обсуждение полученных результатов 507 Резюме 507 Глава 33 Обучающиеся системы классификаторов 509 Представление классификаторов 510 Голова и тело классификатора 510 Другие атрибуты 510 Краткий обзор системы классификаторов 511 Архитектура системы классификаторов 511 Согласование классификаторов с входными данными 512 Создание новых классификаторов 513 Удаление классификаторов 514 Прогноз 514 Отбор действия 515 Подкрепление 516 Обсуждение полученных результатов 516 Резюме 517
20 Содержание Глава 34 Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 519 Представление последовательностей действий 520 Действия и параметры 520 Последовательности 522 Генетические операции 523 Случайная выработка действий 523 Скрещивание 524 Мутация 524 Краткое описание эволюционного алгоритма 524 Проект модуля генетического алгоритма 525 Роль генетического алгоритма 525 Интерфейсы 526 Вычисление значений пригодности 527 Ракетные прыжки 527 Уклонение от огня 527 Приложение 528 Оценка полученных результатов 529 Резюме 530 Глава 35 Проектирование обучающихся средств ИИ 533 Назначение обучения 534 Общее назначение средств обучения 534 Задачи, решаемые с помощью обучения 536 Основные подходы к обучению 537 Два режима обучения 537 Два основных метода 538 Разновидности обучающихся компонентов 539 Контролируемое обучение 540 Обучение с подкреплением 540 Эволюционный подход 541 Неконтролируемое обучение 541 Общие выводы 542 Методологии обучения формам поведения 542 Обучение 542 Моделирование 543 Метод проб и ошибок 543 Формирование 543 Общий обзор используемых методов 543 Резюме 544 Часть V Заключение 545 Краткий ретроспективный обзор 545 Применяемые методы 545 Формы поведения 546 Перспективы применения описанных методов 547
^laiaHaus^i Содержание 21 Часть VI Эмоции 549 Побуждения 549 Краткое содержание 550 Исходные предположения 551 Глава 36 Создания, обладающие эмоциями 553 Происхождение человеческих эмоций в ходе эволюции 554 Биологические модели эмоций 555 От эмоций к искусственному интеллекту 555 Человеко-машинное взаимодействие 556 Применение эмоций в играх 557 Резюме 558 Глава 37 Ощущения, эмоции и чувства 559 Ощущения 560 Ощущения, относящиеся к восприятию 560 Познавательные ощущения 561 Эмоции 561 Настроения 562 Чувства 562 Интерфейсы, позволяющие передавать эмоции 562 Принципы проектирования 562 Общее обоснование 563 Спецификация 564 Отображение эмоций в играх 564 Существующие восприятия и действия 564 Новые интерфейсы 565 Пример проявления эмоций 566 Резюме 567 Глава 38 Конечные автоматы 569 Формальные определения 570 Распознающие конечные автоматы 570 Автоматы Мили 573 Автоматы Мура 575 Представление и моделирование 576 Массив переходов 576 Ориентированный граф 577 Грамматика 578 Логика управления 579 Процедурный подход 579 Потенциальные проблемы, возникающие при использовании процедурных конечных автоматов 579 Средства усовершенствования процедурного управления 581 Оптимизация 583
22 Содержание Обсуждение полученных результатов 584 Преимущества 584 Недостатки 585 Резюме 585 Глава 39 Влияние эмоций 587 Проектирование искусственных эмоций 588 Основные эмоции 588 Ощущения и стимулы 588 Поведенческий отклик 589 Разработка модуля, основанного на использовании конечных автоматов 589 Обмен данными 589 Распознающий конечный автомат 590 Порождающий конечный автомат 590 Спецификация 590 Реализация 591 Создание эмоций как конечных состояний 592 Конечный автомат, применяемый для поддержки эмоций 592 Распознающий конечный автомат и ощущения 593 Интеграция 594 Оценка полученных результатов 595 Резюме 596 Глава 40 Недетерминированные конечные автоматы 599 Краткий обзор 600 Нечеткие конечные автоматы 601 Определения 601 Представление 602 Моделирование 604 Обсуждение полученных результатов 604 Недетерминированные конечные автоматы 605 Определения 606 Представление 607 Алгоритмы 608 Обсуждение полученных результатов 610 Вероятностные конечные автоматы 611 Определения 611 Алгоритмы 613 Обсуждение полученных результатов 614 Резюме 614 Глава 41 Иерархические конечные автоматы 617 Краткий обзор 618 Иерархии 619 Вложенные состояния 619 Иерархия конечных автоматов 620
^ataHaus,^. Содержание 23 Разнородные вычислительные модели 622 Семантика взаимодействия 622 Ведущий и ведомый 623 Моделирование на основе стека 624 Степени детализации 625 Семантика, определяемая пользователем 627 Обсуждение полученных результатов 628 Преимущества 628 Недостатки 629 Резюме 629 Глава 42 Система, проявляющая эмоции 631 Краткий обзор иерархической архитектуры 632 Моделирование чувств 632 Память об отношениях 633 Выражение чувств 634 Улучшенные ощущения 635 Многосторонние влияния 635 Формирование различных комбинаций ощущений 636 Предотвращение создания вырожденных конечных автоматов 636 Накопление эмоций 637 Раскрытие эмоций с помощью непроизвольных поступков 638 Иерархии настроений 639 Оценка полученных результатов 640 Резюме 641 Глава 43 Эмерджентная сложность 643 Определение эмерджентности 644 Пояснения и общее обсуждение 644 Типы эмерджентности 646 Эмерджентные формы поведения 646 Повышение содержательности среды и упрощение форм поведения 648 Осуществимость 649 Восприятие и широковещательная рассылка 649 Осуществление принципов эмерджентности в функциональных возможностях 650 Резюме 652 Часть VI Заключение 655 Краткий ретроспективный обзор 655 Методы 655 Формы поведения 656 Общие перспективы 657
24 Содержание Часть VII Выбор действия 659 Основные цели 659 Краткое содержание 659 Исходные предположения 660 Глава 44 Принятие стратегических решений 661 Игровая ситуация 662 Наиболее важные факторы 662 Характеристики решения 663 Личные цели 663 Тактические формы поведения 665 Аниматы и принятие решений 666 Обучающая среда 666 Резюме 667 Глава 45 Реализация интеллектуальных тактических форм поведения 669 Реализация тактических форм поведения 670 Повторное использование и настройка имеющихся возможностей 670 Примеры форм поведения 671 Формы поведения и архитектура обобщения 672 Дополненные порождающие конечные автоматы 672 Многоуровневый подход 672 Реализация и оптимизация 673 Применение архитектуры обобщения для выработки тактических форм поведения 674 Оценка полученных результатов 675 Резюме 675 Глава 46 Обучение с подкреплением 677 Определение теории подкрепления 678 Игровая ситуация 678 Модель подкрепления 679 Способ действий, который приводит к определению формы поведения 681 Определение оптимальности 681 Марковские процессы принятия решений 683 Фундаментальные элементы 683 Стоимостные функции 684 Типы задач обучения с подкреплением 686 Правильный выбор момента завершения исследования и начала эксплуатации 687 Инструменты обучения 688 Алгоритмы обучения с подкреплением 689 Методы динамического программирования 690
^ataHaus,^. Содержание 25 Метод Монте-Карло 692 Обучение на основе временной разности 695 Скрытые проблемы 697 Аппроксиматоры 697 Иерархии 697 Обсуждение полученных результатов 698 Преимущества 698 Недостатки 698 Резюме 699 Глава 47 Усвоение с помощью обучения активизируемых стратегий 701 Декомпозиция с помощью методов управления 702 Адаптивные формы поведения, связанные со сбором предметов 704 Действия 704 Состояния 705 Сигнал вознаграждения 705 Усвоение с помощью обучения способа действий 705 Моделирование движения 705 Действия 706 Состояния 706 Сигнал вознаграждения 706 Усвоение с помощью обучения способа действий 706 Усвоение с помощью обучения стилей стрельбы 707 Действия 707 Состояния 707 Сигнал вознаграждения 707 Усвоение с помощью обучения способа действий 707 Другие возможности 708 Оценка полученных результатов 708 Резюме 710 Глава 48 Применение адаптивных форм поведения 713 Общая формулировка задачи 714 Отсутствие обучения 714 Отсутствие возможности контроля 714 Отсутствие возможности достичь оптимального результата 715 Отсутствие возможности достичь реалистичного поведения 715 Надежные методы программотехники 715 Надежное программирование 715 Проверка и отладка 716 Разработка средств ИИ 717 Надежный проект 717 Моделирование 717 Пригодность и вознаграждение 718
26 Содержание Архитектура 718 Методология 719 Резюме 719 Часть VII Заключение 721 Краткий ретроспективный обзор 721 Методики 721 Формы поведения 722 Дальнейшие перспективы 722 Часть УШ Заключение 723 Глава 49 Принципы разработки игровых средств ИИ 725 Архитектура 726 Модули ИИ 726 Возможности 727 Формы поведения 727 Арбитражный механизм 727 Реализация 728 Собственный код 728 Применение сценарной поддержки 728 Система, управляемая данными 729 Методы и их применимость 729 Решение задач 730 Последовательное управление 730 Распознавание образов 730 Распознавание последовательностей 731 Механизмы обучения и обратной связи 731 Резюме 732 Глава 50 Дальнейшие перспективы 735 Основной фактор успеха — практика 735 Темы, открытые для исследований 736 Форум специалистов по игровым средствам ИИ 736 Некоторые сведения о моделях мира 736 Методики планирования 737 Краткие сведения о современных игровых средствах ИИ 738 Приложение А Библиография 741 Предметный указатель 745
Об авторе Алекс Дж. Шампандар получил научное и техническое образование по искусст- венному интеллекту в Йорке и Эдинбурге. Алекс часто читает доклады с изложением результатов своих исследований по искусственному интеллекту, особенно на конфе- ренции Game Developers Conference, где он также ведет круглый стол, посвященный обучению искусственному интеллекту (ИИ). В качестве ведущего программиста FEAR (проект разработки игровых средств ИИ с открытым исходным кодом) он консультируется с профессиональными программистами по вопросам внедрения современных прототипов в коммерческие игры. Алекс основал AI-Depot, широко из- вестный узел, с которым сотрудничают представители сообщества разработчиков средств ИИ, а также регулярно выпускает учебники, предназначенные для людей, увлеченных проблематикой ИИ. Кроме того, Алекс опубликовал много статей из се- рии Al Game Programming Wisdom. Он входит в состав комитета Al Interface Standards Committee, целью которого является определение общих спецификаций методов соз- дания игровых средств ИИ.
О технических рецензентах Рецензенты, которые упоминаются в данном разделе, предоставили весь свой зна- чительный практический опыт в распоряжение автора, чтобы оказать ему помощь в подготовке книги Искусственный интеллект в компьютерных играх: как обучить вирту- альные персонажи реагировать на внешние воздействия. По мере написания настоящей книги эти специалисты, полностью посвятившие себя любимому делу, тщательно ана- лизировали весь подготовленный к публикации материал, контролируя качество тех- нического содержания, организацию материала и его совместимость с остальной ча- стью книги. Их отзывы способствовали тому, чтобы данная книга отвечала потребно- стям наших читателей в получении технической информации высшего качества. Эрик Дибсанд (Eric Dybsand) в настоящее время заканчивает подготовку серии статей, посвященных промежуточному программному обеспечению ИИ, которые запланированы к выпуску в ближайшее время. Эрик выполнял функции консуль- танта в проектах разработки обширного списка компьютерных игр, а в проекте соз- дания Full Spectrum Command, системы моделирования деятельности тактического командования, используемой в армии США, непосредственно занимался проекти- рованием и разработкой средств ИИ. Он также спроектировал стратегические сред- ства ИИ для МООЗ — средства ИИ для игр, в которых имитируются гонки, бейсбол и борьба. Он разработал средства ИИ, выступающие в качестве противников по от- ношению к игроку, для стратегической игры Enemy Nations, проходящей в реальном времени, для игры Rebel Moon Revolution со стрельбой от первого лица, игры War in Heaven и для множества военных игр, в которых право хода предоставляется участ- никам поочередно. Эрик участвует в разработке компьютерных игровых средств ИИ с 1987 года, занимаясь проектированием, программированием и тестированием игр, а также является автором с правом публикации статей по искусственному интеллек- ту из серии Al Wisdom и Game Programming Gems. Нейл Керби (Neil Kirby) входит в состав инженерно-технического персонала Bell Laboratories — научно-исследовательского подразделения компании Lucent Technologies. В настоящее время Нейл участвует в разработке решений на основе инфраструктуры .NET. Его предшествующий опыт работы включает создание про- граммного обеспечения для распознавания речи и преподавание на университет- ском уровне. Нейл получил степень магистра компьютерных наук в Университете штата Огайо. В свободное время он проектирует тактические боевые компьютерные игры для нескольких игроков. Нейл — один из модераторов круглых столов по ис- кусственному интеллекту на конференции Developers Conference. Он проживает вме- сте с женой и сыном в центральной части штата Огайо. Франсуа Лараме (Francois Laramee) вносит свой вклад в развитие индустрии ин- терактивных развлечений с 1991 года. Он спроектировал, выпустил, написал или за- программировал больше 20 игр для всевозможных платформ. Кроме того, Франсуа опубликовал две книги для разработчиков игр (Game Design Perspectives и Secrets of the Game Business), а также написал бесчисленное множество статей и даже несколько новелл. Он получил степень дипломированного специалиста по администрирова- нию и компьютерным наукам в двух разных университетах, без особых затруднений добился известности в качестве автора комедий, и несмотря на то что с 1998 года за- рабатывает себе на жизнь в качестве фрилансера, выполняя работы по найму, до сих пор еще не умер с голоду. Посетите его ничем не примечательный Web-узел по адре- су http: / /pages. infinit.net/idjy.
Благодарности Очевидно, настоящий раздел — единственный, который, можно не сомневаться, прочтет каждый; по крайней мере, так обстояли бы дела, если бы эта книга была на- учной диссертацией. Таково одно из преимуществ написания книг вместо диссерта- ций; в частности, все, кого могла заинтересовать данная книга, уже, наверное, загру- зили итоговую демонстрационную версию и бегло просмотрели книгу от первой час- ти до последней! По мнению автора, в этом нет ничего плохого; так или иначе, дан- ный раздел, без сомнения, имеет наиболее слабое информационное наполнение. Эта книга, вероятно, не вышла бы в свет без постоянной помощи Энди Коутса (Andy Coates) и поддержки со стороны Линды Хатчинсон (Linden Hutchinson). Я также бесконечно обязан своей семье за поддержку, особенно в последние несколько меся- цев; они были весьма насыщенными (и заботы семьи, и мои нагрузки в эти месяцы). Особую благодарность я хочу передать своей сестре Джесс за то, что она не выполнила свою угрозу подключиться к написанию этой книги, хотя после этого мне приходится расплачиваться с ней, посвящая ей несколько строк благодарностей. Я во многом обязан непревзойденным специалистам по искусственному интел- лекту, Нейлу Керби, Эрику Дибсанду и Франсуа Доминику Лараме, за техническое рецензирование книги начиная с самых первых черновиков. Без их проницательных комментариев и критических замечаний эта книга не была бы тем, чем является се- годня, и я считаю, что в этом огромная заслуга принадлежит моим рецензентам. Вы- ражаю свою признательность Стиву Вудкоку (Steve Woodcock) за то, что он написал предисловие. Хочу также поблагодарить Лайзу Тибо (Lisa Thibault) и Стефани Уолл (Stephanie Wall) из издательства New Riders за их усилия, которые способствовали значительному упрощению для меня всего того, что связано с изданием книги! Наконец, хочу высказать слова признательности всем участникам проекта FEAR за то, что присоединяются ко мне во всех начинаниях и поддерживают великолеп- ные дискуссии, особенно Макс Деннис Лозебринк (Max Dennis Losebrink) и Томас Веббер (Thomas Webber). Я также весьма обязан коллективу отдела ИИ из Универси- тета Эдинбурга, особенно Тиму Лакинсу (Tim Lukins), Джей Брэдли (Jay Bradley) и Игнаси Кос Агилере (Ignasi Cos Aguilera), за то, что поделились многими идеями и затронули в дискуссиях такие темы, которые затем попали в эту книгу.
От издательства Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение и хо- тим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересны любые ваши замечания в наш адрес. Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бу- мажное или электронное письмо либо просто посетить наш Web-сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравится ли вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас. Отправляя письмо или сообщение, не забудьте указать название книги и ее авто- ров, а также свой обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию новых книг. Наши электронные адреса: F-maik infoOwilliamspublishing. com WWW: http://www.williamspublishing.com Наши почтовые адреса: в России: 115419, Москва, а/я 783 в Украине: 03150, Киев, а/я 152
^ataHaus,^. Предисловие Первая мысль, которая пришла мне в голову, когда я просматривал проект этой книги, — “Да, действительно настало ее время”. Настало время написать книгу о игровых средствах ИИ, которая в большей сте- пени сосредоточена на методах, фактически используемых разработчиками икр, а н^ посвящена, в основном, повторному изложению одних и тех же теоретических ис- следований. Настало время меньше внимания уделить основам ИИ (поиску пути, архитекту- ре, написанию сценариев) и более внимательно рассмотреть проблему создания не- собственных персонажей (NonPlayer Character— NPC), которые выглядят и вос- принимаются как более реалистичные по сравнению с тем, с чем сталкивались уча- стники игры до сих пор. Настало время попытаться спрогнозировать будущие направления развития иг- ровых средств ИИ и оценить, в чем методы, представленные в этой книге, могут по- мочь разработчикам достичь своих целей. Короче говоря, настало такое время, когда кто-то должен был написать книгу Искусственный интеллект в компьютерных играх: как обучить виртуальные персона- жи реагировать на внешние воздействия. Об Алексе То, что эту книгу написал именно Алекс, оказалось просто идеальным. Я уже знаком с Алексом в течение нескольких лет и считаю, что он слишком скромен, что- бы высказать то, что я собираюсь здесь сообщить. Алекс регулярно вносит свой вклад во всевозможные дискуссии по игровым средствам ИИ, проводимые в Web и на конференции Game Developers Conference (GDC), и даже подготовил для этой конференции несколько презентаций. Его зна- ния в области игровых средств ИИ весьма обширны, а его остроумие достойно вос- хищения. На любом мероприятии, посвященном средствам ИИ, которое проводится на конференции GDC и предусматривает в конце предоставление ответов на вопро- сы, Алекс почти всегда первым берет на себя задачу расспросить докладчика о неко- торых деталях его презентации. За эти годы Алекс написал ряд превосходных статей по различным аспектам применения средств ИИ, и я был свидетелем того, как по- степенно совершенствовался его современный подход к созданию игровых средств ИИ от одной конференции GDC к другой. Достаточно лишь взглянуть на его ранние презентации, подготовленные несколько лет назад, после чего наглядно обнаружи- вается, что уже в этих презентациях были заложены корни его идей, получившие в дальнейшем такое развитие.
32 Предисловие По-видимому, то, что Алекс в конечном итоге опишет все свои замыслы, идеи и практические результаты в одной книге, стало просто неизбежным. В результате появилась эта книга. Отличительные особенности книги Книга Искусственный интеллект в компьютерных играх: как обучить виртуальные персонажи реагировать на внешние воздействия стоит во всей литературе, посвящен- ной средствам ИИ, немного особняком, особенно в сравнении с другими работами по игровым средствам ИИ. Безусловно, вышло очень много превосходных книг по этой теме, но данная книга лучше большинства из них, поскольку почти полностью направлена на достижение одной цели — помочь читателю изучить методы создания активизируемых, обучающихся средств ИИ. В этой книге Алекс подробно разъясняет понятие современные игровые средства ИИ, подразумевая под этим подход к проектированию, в котором сочетаются эле- менты активизируемых архитектур и алгоритмов обучения. Это сочетание позволяет разработчикам создавать средства ИИ, которые становятся все более автономными. В этих средствах ИИ используются такие же основные алгоритмы и функции маши- ны ИИ, как и в других автономных сущностях, но они являются независимыми агентами, которые способны действовать и реагировать на свою среду характерным только для них способом. Эти автономные агенты обладают естественной способно- стью адаптироваться к новым вариантам среды (или, по крайней мере, не выглядеть в них беспомощными), а внезапная смена обстановки часто наблюдается в постоян- но разворачивающемся и развивающемся мире оперативных ролевых игр (Role- Playing Game — RPG). Этот подход к проектированию является весьма продуктивным и позволяет осу- ществить многие начинания, которые были задуманы в игровой индустрии за мно- гие годы. В последние годы растет популярность таких “открытых” игр, как The Sims, Freelancer и GTA3: Vice City, и это показывает, что любителям игр нравятся те игры, в которых можно обрести чувство реальности, в которых и несобственные персонажи, и второстепенные участники игры, и даже случайные прохожие дейст- вуют вполне естественно. О таком раньше можно было только мечтать, и настоящая книга стала воплоще- нием этих мечтаний. Начиная с первых глав, посвященных основным формам на- вигационного поведения, и заканчивая главами, в которых более подробно рассмат- риваются вопросы проектирования средств ИИ, обладающих восприятиями и эмо- циями, книга Искусственный интеллект в компьютерных играх: как обучить вирту- альные персонажи реагировать на внешние воздействия позволяет читателям взять на вооружение такие подходы, с помощью которых они смогут ответить на любые по- требности любителей игр в течение последующих нескольких лет.
SVgtgHgg$;| Предисловие 33 Книга, рассчитанная на широкую аудиторию Алексу удалось справиться с той задачей, которую он перед собой поставил. Он сумел добиться того, чтобы изложение материала книги было легким для воспри- ятия и интересным, чем эта книга и отличается от других, посвященных той же те- матике. Алекс стремится, в основном, описать наилучшие подходы к проектирова- нию и продуктивные методики, а не предложить лишь ряд фактически не связанных друг с другом методов, не объединенных в рамках единой технологии проектирова- ния. Его замысел состоит в том, чтобы предоставить в распоряжение читателя набор безусловно полезных методов разработки средств ИИ и вместе с тем помочь приоб- рести квалификацию, достаточную для того, чтобы разобраться в теории, лежащей в основе этих методов, и использовать такие методы для более качественной разра- ботки, прежде всего, применяемой машины ИИ. Алексу удалось это сделать, не уг- лубляясь в теоретические выкладки, которые часто становятся препятствием при изучении подобных книг, и для читателя, книжные полки которого гнутся под тяже- стью литературы, изучению которой он отдал столько сил, это становится истинным облегчением. Поэтому книга Искусственный интеллект в компьютерных играх: как обучить виртуальные персонажи реагировать на внешние воздействия должна принести пользу практически всем категориям читателей. Она рассчитана на читателей, увлеченных своим любимым делом, которые хотят самостоятельно создать новый бот для но- вейшей игры со стрельбой от первого лица; на разработчиков игр, у которых появи- лось немного свободного времени между проектами для освоения нескольких новых методик; или просто на случайного искателя новой информации, который хочет лучше понять, как устроены игры, которыми он увлекается; короче говоря, эта книга позволит приобрести что-то важное и вам. Алекс подготовил демонстрацион- ные версии, ознакомление с которыми будет интересным для всех, даже для тех чи- тателей, которые не любят изучать подготовленный другими исходный код, а основ- ные принципы изложены настолько просто, что сами любители игр смогут наконец- то подсказать разработчикам интересующих их игр на форумах, чтобы они больше уделяли времени созданию качественных игровых средств ИИ. (Поверьте, нам, раз- работчикам игровых средств ИИ, не помешает любая поддержка со стороны люби- телей игр, которую они могут нам предоставить!) Поэтому приготовьтесь к увлекательному чтению, включите компьютер и с удо- вольствием воспринимайте все новое и интересное, что написано в этой книге об игровых средствах ИИ. Настоящая книга позволит оценить перспективы развития игровых средств ИИ; она, безусловно, заслуживает внимания. Стивен Вудкок Основатель узла GameAl. com
Введение В книге Искусственный интеллект в компьютерных играх: как обучить виртуаль- ные персонажи реагировать на внешние воздействия показано, как создать синтетиче- ские персонажи с реалистичными формами поведения, сосредоточиваясь на отдель- ных аниматах. Аниматы — автономные создания с искусственным телом, находя- щиеся в виртуальном мире. Перед программистами, разрабатывающими средства ИИ, стоит задача предоставить аниматам уникальные навыки и возможности, по- зволяющие им взаимодействовать со своей средой. Настоящая книга посвящена описанию того, как создавать подобные автоном- ные персонажи, основанные на использовании средств ИИ, и заставлять их интел- лектуально реагировать на происходящие события. В качестве испытательной пло- щадки применяется реалистичная трехмерная игра, а не программы, запускаемые из приглашения к вводу команд или основанные на использовании простых миров в виде координатной сетки. В этой книге представлен ряд методов, позволяющих достичь удовлетворительных уровней интеллектуальности и реалистичности, в том числе современные методы ИИ (такие, как нейронные сети, деревья решений, генетические классификаторы и мето- ды обучения с подкреплением), а также описаны стандартные механизмы управления, которые в течение многих десятилетий находились в центре внимания игровой инду- стрии (такие, как системы, основанные на правилах, и конечные автоматы). При опи- сании каждого метода кратко представлены теоретические основы, приведены нагляд- ные примеры, а также даны формальные пояснения на основе математических выкла- док. В книге рассматриваются практические приложения, в которых применяются реалистичные несобственные персонажи (NonPlayer Character— NPC), представ- ляющие собой наглядную иллюстрацию излагаемых абстрактных понятий. После та- кого описания теоретических и практических аспектов с помощью упражнений пока- зано, что методы ИИ могут применяться также для решения других задач. Опираясь исключительно на навыки программирования, мы подготовим ряд ме- тодологий создания автономных персонажей и исследуем процесс разработки средств ИИ от самых его основ. С использованием примеров мы сможем получить представление о тех проблемах, с которыми обычно сталкиваются создатели игро- вых средств ИИ, а также определить, как должен быть организован формальный подход к решению этих проблем. Книга Искусственный интеллект в компьютерных играх: как обучить виртуальные персонажи реагировать на внешние воздействия представляет собой уникальное соче- тание теоретических основ, практических рекомендаций и определений основных понятий, относящихся к области разработки средств ИИ. В частности, оказалось достаточно трех глав, чтобы описать нейронные сети, научить боты расстреливать друг друга ракетами и сделать выводы о том, как в целом следует подходить к анали- зу проблем ИИ. Но настоящая книга не только может послужить ценным учебным пособием, но и является очень интересной!
Введение 35 Необходимость в использовании обучения и активизируемых форм поведения Со временем сложилось полное понимание того, что интеллектуальные формы поведения должны быть воплощены в подлинных созданиях, и на основе этого по- нимания зародился подход, предусматривающий применение аниматов. Из этого следует, что важно, прежде всего, заниматься разработкой средств ИИ, а не просто программированием и оптимизацией классических алгоритмов. Люди, посвятившие свою жизнь созданию игровых средств ИИ, должны уделять равное внимание всем направлениям своей деятельности. Этот подход (условно названный нами разработкой современных игровых средств ИИ) показывает, как воплотить на практике новейшие теоретические достижения в области игровых средств ИИ в сочетании с технологией, завоевавшей признание пользователей. По мере того как перед разработчиками игровых средств ИИ встают все новые и новые задачи (в связи с растущей потребностью в обеспечении интел- лектуальности, эффективности и реалистичности), становится все более важным за- имствование достижений других сложившихся научных дисциплин. Подход к созда- нию игровых средств ИИ, описанный в настоящей книге, может рассматриваться как совместное использование результатов следующих трех областей исследования. > Новейшие исследования по искусственному интеллекту, которые направлены на изучение воплощенных систем, действительно находящихся в реалистич- ных мирах (таких, как игровые персонажи). > Работы по созданию активизируемых архитектур, обеспечивающих управле- ние компонентами, распределенными в среде, которые немедленно реагируют на изменение обстановки. > Методики обучения, используемые для моделирования адаптивных форм по- ведения, которые позволяют искусственным созданиям приобрести интеллек- туальные возможности. Эта книга показывает, что современные игровые средства ИИ могут служить приложением этих современных идей к компьютерным играм. Мы полагаем, что эти идеи могут применяться к играм в четырех направлениях (как описано в следующих подразделах), и это будет способствовать повышению правдоподобности и упроще- нию разработки. ПРИМЕЧАНИЕ Разумеется, этот подход характеризуется некоторыми недостатками по сравнению со “стандартным” подходом к созданию игровых средств ИИ. По возможности, мы будем представлять оба подхода, что позволит проще решить, в каких случаях желательно применять современный подход к разработке игровых средств ИИ и в каких это не столь желательно. Особенно следует обратить внимание на то, что в книге показаны способы объединения алгоритмов обучения с другими сложившимися алгорит- мами, позволяющие эффективно решать задачу воплощения. Это дает возможность использовать идеальное сочетание технологий для создания наиболее подходящих средств ИИ применительно к не- собственным персонажам, объединяя преимущества обоих подходов.
36 Введение Применение способов воплощения для создания более полноценных синтетических сущностей, что способствует повышению правдоподобия Поведенческие исследования показывают, что правдоподобности нельзя достичь без точного моделирования движений тела синтетических созданий, особенно при их взаимодействии со средой. Соблюдение таких биологически правдоподобных ог- раничений применительно к восприятиям и действиям позволяет достичь реали- стичности как побочного продукта применения средств ИИ в качестве мозга для синтетических созданий. Это означает, что исключается необходимость при осуще- ствлении проекта моделировать каждый нюанс, и при этом аниматы остаются прав- доподобными даже вне той области применения, для которой они предназначены. Применение несобственных персонажей, способных реагировать на ситуацию, что позволяет упростить их разработку и реализовать преимущества обучающихся средств ИИ Наиболее адекватно реагировать на непосредственно окружающую их среду спо- собны именно воплощенные системы. Используя средства восприятия, воплощенные системы собирают только необходимую им локальную информацию, по аналогии с тем, как люди или животные взаимодействуют со своей средой. Благодаря этому появ- ляется возможность автоматически отфильтровать менее релевантную информацию, что весьма способствует упрощению задачи разработки интеллектуальных форм пове- дения, как в теории, так и на практике. Процесс вычисления действия на основе вос- принятой ситуации становится почти прямолинейным. По той же причине повышает- ся эффективность применения методик обучения, что способствует уменьшению по- тенциальных проблем и повышению продуктивности труда разработчиков. Применение активизируемых архитектур ИИ, идеально приспособленных для управления игровыми персонажами Как и живые существа, аниматы должны реагировать на стимулы, поступающие из внешней среды. Возникающие ситуации относятся к разным типам, поэтому ча- ще всего целесообразно использовать для выработки реакций разные компоненты средств ИИ. Эти независимые компоненты, отдельно взятые, могут быть организо- ваны в виде активизируемой архитектуры, что позволяет расширить их возможно- сти. Количество всевозможных типов архитектур весьма велико, но для управления интеллектуальным поведением в большей степени подходят активизируемые, благо- даря их надежности и простоте, поэтому такие архитектуры часто служат в качестве фундамента для более сложных методик.
Введение 37 Возможность перехода к конвейерной разработке игровых средств ИИ на основе методологий, используемых для создания воплощенных сущностей Воплощение предусматривает отделение компонентов, представляющих мозг, от компонентов, представляющих тело. Применительно к игровой машине это означа- ет, что должны быть проведены явные различия между средствами ИИ и игровой логикой, и даже должно быть отдельно организовано моделирование самого мира игры, а это чрезвычайно способствует упрощению проектных решений. Что же каса- ется разработки, то создание аниматов обычно осуществляется инкрементно, и при этом каждый раз проводится проверка системы с помощью экспериментов. Это — превосходная методология, обеспечивающая реалистичность и надежность. Нако- нец, активизируемые архитектуры по самой своей сути являются модульными, что позволяет организовать работу по принципу “разделяй и властвуй” и в процессе реализации, и в ходе тестирования. Для кого предназначена эта книга Книга Искусственный интеллект в компьютерных играх: как обучить виртуальные персонажи реагировать на внешние воздействия предназначена для читателей, кото- рые стремятся приобрести знания о средствах ИИ и применить эти знания на прак- тике для создания игр. Эта книга будет особенно интересной для перечисленных ниже категорий людей. > Энтузиасты применения средств ИИ, которые намереваются изучить эту область наилучшим возможным способом — с использованием компьютерных игр. Большинство людей способны разобраться в том, что лежит в основе приме- нения средств ИИ, только одним способом — на практике. Синтетические персонажи в компьютерных играх представляют собой реальное воплощение средств ИИ, обладающих явно выраженным поведением. В этой книге мы по- старались скрыть все сложности устройства игровой машины, чтобы вынести на передний план саму суть игровых средств ИИ, а такой подход является иде- альным с образовательной точки зрения. > Разработчики, для которых создание игр является собственным увлечением, желающие ввести интеллектуальные создания в контекст своих предпочти- тельных игр (или даже самостоятельно разрабатываемых игр). В настоящей книге представлены универсальные интерфейсы между средст- вами ИИ и игровыми машинами. Переход к использованию другой реализа- ции этих интерфейсов позволяет легко обеспечить интеграцию средств ИИ с играми, создаваемыми самим пользователем. К большинству видеоигр при- менимы все демонстрационные версии, относящиеся к данной книге, и все методики ИИ. > Программисты, заинтересованные в использовании современных методов и методологий ИИ для создания синтетических сущностей.
38 Введение Чтобы иметь возможность создать правдоподобные и реалистичные формы по- ведения, недостаточно просто владеть навыками программирования. В книге Искусственный интеллект в компьютерных играх: как обучить виртуальные пер- сонажи реагировать на внешние воздействия описано, как использовать методы ИИ и в теории, и на практике, а также продемонстрированы преимущества рас- сматриваемого подхода. Обсуждается также методология, применяемая при конвейерном создании продукции, относящейся к категории средств ИИ. > Профессиональные разработчики игр, стремящиеся опробовать новые подхо- ды к созданию средств ИИ для усовершенствования своих несобственных персонажей. С началом разработки игровых средств ИИ приходится сразу же сталкиваться с двумя новыми понятиями — обучение и воплощение. Во всей книге тща- тельно исследуется применимость таких понятий для создания не только ак- тивизируемых систем, но и коммерческих игр. Обсуждаются основы общих навыков в инженерии игровых средств ИИ, а не только описания алгоритмов. Читатели, которые хотели бы использовать прилагае- мый к книге код, должны иметь определенный опыт работы с языком C++; сущест- венным преимуществом при конкретизации этих идей применительно к самостоя- тельно разрабатываемым играм должно стать знание структуры игровой машины. Но последнее требование не является обязательным, поскольку предоставляется также игровая инфраструктура. Как организована книга Книга Искусственный интеллект в компьютерных играх: как обучить виртуальные персонажи реагировать на внешние воздействия состоит из частей, глав, разделов, предложений и слов; несмотря на то что в ней изложено много новаторских идей, в самой структуре книги нет ничего революционного! Но в связи с тем, что все об- ласти разработок игровых средств ИИ “пронизаны” духом практической направ- ленности, в каждой части этой книги рассматриваются различные аспекты создания несобственных персонажей, такие как организация движения или ведение боя. Воз- можности синтетических созданий наращиваются шаг за шагом, достигая наивыс- шего развития в форме готовых средств ИИ, способных обучаться борьбе на выжи- вание в игре со стрельбой от первого лица. Продвигаясь к этой цели, мы будем рас- сматривать понятия, лежащие в основе разработки, и анализировать уроки, которые окажутся буквально неоценимыми для тех, кто желает стать независимыми инжене- рами — разработчиками игровых средств ИИ. Главы, приведенные в каждой части, соответствуют последовательным этапам создания средств ИИ, как описано ниже. 1. Анализ платформы. 2. Понимание задачи. 3. Проектирование спецификации. 4. Реализация простого прототипа.
^aiaHaus,^. Введение 39 5. Исследование теоретических основ создания рассматриваемого средства ИИ. 6. Разработка модульного компонента. 7. Применение выбранной методики для решения задачи. 8. Проведение экспериментов с полученными результатами. 9. Проверка готового решения. 10. Оптимизация модели. Такова основная схема каждой части, хотя в ходе изложения материала данной книги допускаются отклонения от этой схемы, продиктованные требованиями лите- ратурного изложения. Web-узел книги Для размещения материала к этой книге предусмотрен отдельный Web-узел, http: / /AiGameDev.com/. Этот узел представляет собой ценный оперативный ре- сурс, который во многом дополняет содержимое книги, благодаря чему она стано- вится поистине мультимедийным произведением. Весь исходный код рассматри- ваемой инфраструктуры доступен в оперативном режиме, наряду с демонстрацион- ными версиями и дополнительным материалом, включая указанное ниже. > Поэтапные руководства для каждой демонстрационной версии. > Упражнения с подсказками и решениями. > Форум специалистов по игровым средствам ИИ. > Списки рассылки, предназначенные для публикации объявлений. Инфраструктура, поддерживающая демонстрационные версии, разрабатывается в рамках проекта с открытым исходным кодом, получившего название FEAR (Flexible Embodied Animat ’Rchitecture — гибкая архитектура воплощенного анима- та). В ходе осуществления этого проекта был создан превосходный фундамент, по- зволяющий уменьшить объем подготовки, требуемой для реализации средств ИИ и проверки функционирования аниматов. База исходного кода проекта развивается быстро, но за тем, как протекает его разработка, можно следить с помощью страни- цы Web-узла SourceFoige по адресу http: / /fear. sf.net/. Мы настоятельно ре- комендуем всем принять участие в разработке проекта и будем благодарны за любой вклад в эту инициативу. FEAR уже стала эталонной инфраструктурой игровых средств ИИ с открытым исходным кодом, но представьте себе, каких высот она мог- ла бы достичь с вашим участием! Необходимое программное обеспечение Основной операционной системой, предназначенной для работы с данной кни- гой, является Windows, причем может применяться любая ее новейшая разновид- ность. Более важным требованием является то, что для получения возможности до-
40 Введение поднять демонстрационные версии и выполнять упражнения требуется компилятор C++. Подходящими являются оба распространенных варианта, и Visual C++ 6.0, и C++ в составе .NET, но предусмотрена также возможность компилировать код с по- мощью Dev C++ (предоставляемая без ограничений среда разработки). Рекомендуемой игровой платформой для средств ИИ является Quake 2 компании Id Software. Выполнение примеров возможно с использованием информационных активов только из демонстрационной версии Quake 2 (которые предоставляются бесплатно), но возникают некоторые ограничения, касающиеся возможностей визу- ального представления. Для получения возможности рассматривать все отображе- ния, текстуры и объекты необходимо приобрести полную версию игры.
^lataHaus^. Часть I Общие сведения Глава 1 Значение средств ИИ в компьютерных играх Глава 2 Проблемы проектирования интеллекта Глава 3 Подход, основанный на реакциях Глава 4 FEAR: платформа для экспериментов

^ataHaus,^. Глава 1 ЗНА ЧЕНИЕ СРЕДСТВ ИИ В КОМПЬЮТЕРНЫХ ИГРАХ В ЭТОЙ ГЛАВЕ- • Общие сведения о средствах ИИ • Компьютерные игры и средства ИИ • Текущий уровень развития игровых средств ИИ • Проектировщики или специалисты по ИИ? • Система ИИ с точки зрения программирования игры С самых первых дней зарождения игровой ин- дустрии, начиная с таких игр, как Pong и Рас- Мап, средства ИИ стали неотъемлемой частью практически любой компьютерной игры. Безус- ловно, в настоящее время разработчики не уде- ляют столько времени созданию игровых средств ИИ, но без них все еще невозможно обойтись при создании развлекательных игр. А в связи с тем, что сегодня иные аспекты современных игр (например, графика или звук) достигли удиви- тельной степени совершенства, внимание разра- ботчиков все больше и больше сосредоточивается на усовершенствовании средств ИИ. В последние годы наблюдается взрывообразный рост интереса к вопросам разработки игровых средств ИИ, при- чем в новейших игровых программах такие сред- ства даже выдвигаются на передний план. В этой главе описывается роль средств ИИ в играх, а также значение этих средств для раз- работки игр. В частности, в этой главе рассмат- риваются следующие темы. > Общее определение средств ИИ. > Область применения средств ИИ в играх. > Возможности упрощения разработки с по- мощью средств ИИ. > Основные проблемы создания средств ИИ. В последующих разделах мы подробно рассмот- рим взаимосвязь между средствами ИИ и проек- тированием, а также попытаемся прояснить, ка- кую роль играют указанные средства в этой взаи- мосвязи.
44 Часть I. Общие сведения Общие сведения о средствах ИИ Для подавляющего большинства людей искусственный интеллект— это мозг могущественных киборгов. Это не удивительно, ведь именно в таком контексте ис- пользуется этот термин в фантастических фильмах. Для программистов искусствен- ный интеллект — набившее оскомину модное выражение, используемое для обо- значения технологии, которая на протяжении XX века вновь и вновь не оправдывала возлагаемые на нее ожидания. Для ученых искусственный интеллект — неисчер- паемый источник интересных задач, открытий и научных степеней. А какое отношение имеет искусственный интеллект к разработчикам игр? Следует понимать, что термин искусственный интеллект, который часто для краткости заменяют аббревиатурой ИИ, строго говоря, имеет два разных значения. > В первом значении ИИ — это форма интеллектуальности, искусственно вос- производимая с помощью машин. > Во втором значении ИИ — это набор академических методик, методов иссле- дования и задач, которыми занимается отдельное научное направление. Машинный интеллект С исторической точки зрения термином “интеллектуальный” человек описывает сам себя. Именно наличием интеллекта человек отличается от животных и растений. В наши дни слово “интеллект” используется для описания одной из отличительных черт людей; если кого-то называют “высокоинтеллектуальным”, то под этим подра- зумевается человек, особенно развитый в умственном отношении. Универсальная способность С концептуальной точки зрения, вне всякого сомнения, существует универсаль- ная форма интеллектуальности. И люди, и животные обладают небольшой долей этой способности и обнаруживают в себе конкретные проявления универсальной интеллектуальности. По-видимому, мы, люди, унаследовали большую часть этой универсальной способности. Но в связи с тем, что в основе нашей интеллектуально- сти лежит биологическая природа, мы лишены некоторых характеристик универ- сальной интеллектуальности (например, полноты и нейтральности). Большинство исследователей в области компьютерных наук считают, что био- логическая интеллектуальность доступна для воспроизведения и что интеллект не является исключительно атрибутом человека. Из этого предположения по существу следует вывод, что часть универсальной интеллектуальности можно перенести и на машину. Таким образом, ИИ — это искусственно созданный аналог интеллектуаль- ности, вырабатываемой мозгом человека как биологического существа. Очевидно, что развитие технических средств приводит к получению иных результатов, чем био- логическая эволюция, и в этом состоит объяснение того факта, что искусственный интеллект характеризуется другими свойствами по сравнению с человеческим ин- теллектом (например, доскональностью во всем). Таким образом, искусственный интеллект — это еще одно проявление универсальной интеллектуальности.
Глава 1. Значение средств ИИ в компьютерных играх 45 Нелегко дать определение такого абстрактного понятия, как универсальная ин- теллектуальность, особенно в связи с тем, что количество действительно вырази- тельных примеров ее проявления невелико. Но можно попытаться составить опре- деление человеческого интеллекта. Определение интеллекта Ввиду отсутствия лучшего определения, будем полагать, что интеллект — это набор умений и навыков, которые позволяют людям решать задачи в условиях огра- ниченности ресурсов. К этим умениям и навыкам относятся способность к обуче- нию, абстрактное мышление, умение планировать, воображение и творчество. Именно они и составляют самые важные аспекты человеческого интеллекта. Учитывая, сколь широка палитра умений и навыков, образующих интеллект, мы не можем сформулировать проблему, решение которой можно было бы использо- вать в качестве теста интеллекта. Так, элементы интеллекта проявляют даже живот- ные: они умеют, например, самостоятельно выживать в естественных условиях и управлять своим временем. Колонии насекомых также умеют быстро адаптиро- ваться к изменениям среды обитания для защиты своих гнезд. Даже популярные тес- ты IQ измеряют, скорее, не столько уровень интеллекта, сколько уровень трениро- ванности и умение сдавать подобные тесты. Иными словами, такие тесты измеряют интеллект лишь в его узком смысле. Для решения любой задачи нужен не весь набор умений и навыков, образующих интеллект, а лишь какая-то его часть. Поэтому мы ограничимся только одной зада- чей, которая может оказаться удивительно сложной, — моделированием автоном- ного поведения в виртуальной среде, близкой по своим проявлениям к реалистич- ной среде. Решение этой задачи тем более важно, что для ведения современных игр недостаточно просто обладать физической силой и проявлять элементарные реф- лексы! Интерес к играм вызван тем, что большинству людей нравится преодолевать препятствия, которые возникают перед ними в ходе игры. А компьютерным игровым средствам ИИ приходится решать в ходе игры такие же за- дачи, что и людям, но с применением методов ИИ. Средства ИИ управляют персонажа- ми компьютерных игр, успешно добиваясь создания иллюзии целенаправленной дея- тельности, а это означает, что отпадает необходимость нанимать для участия в игре акте- ров и массовку (тогда как на съемках фильмов без них невозможно обойтись). Именно такую интерпретацию первого значения термина “искусственный интеллект” мы будем рассматривать как определение понятия интеллекта несобственных персонажей (Non- Player Character — NPC); под словами “несобственный персонаж” подразумевается пер- сонаж игры, действующий под управлением машинного интеллекта и отличный от того (“собственного”) персонажа, который представляет в игре человека-игрока. Научное направление Согласно второй интерпретации, искусственный интеллект — это набор опреде- ленных технологий и методик. Самое лучшее определение термина “искусственный интеллект” в такой интерпретации за последние годы приведено на узле Al Depot (http: //www.ai-depot.com/).
46 Часть I. Общие сведения Искусственный интеллект— это научное направление, изучающее методы решения с помощью машин сложных задач, подобные методам, которые используются для решения таких задач людь- ми. Как правило, эти методы сводятся к моделированию характеристик биологического интеллекта и применению полученных моделей в виде алгоритмов, воспроизводимых на компьютерах. Алгоритмы ИИ можно применять для решения практически любых задач, а не только для моделирования человеческого интеллекта. Например, они могут исполь- зоваться для управления производственной линией в промышленности или для рас- познавания образов в медицине. Эти методы становятся частью научного направле- ния, посвященного исследованию задач ИИ, в связи с наличием общих характерных особенностей в методах ИИ и в биологическом интеллекте (например, способности к обучению или абстракции). Искусственный интеллект, как научная дисциплина, находится на пересечении многих других дисциплин (например, компьютерных наук, психологии и математи- ки). Каждая из них, в свою очередь, опирается на огромный пласт накопленных че- ловечеством знаний об окружающей нас природе и о нас самих. Учитывая столь об- ширный круг вопросов, сопутствующих моделированию ИИ, очень сложно сказать, что принадлежит к области научных интересов ученых, занимающихся этой темой, а что — нет. Круг научных интересов специалистов по искусственному интеллекту постоянно расширяется, вторгаясь в другие области человеческих знаний; это свиде- тельствует о зрелости данного научного направления и соответствии его научного аппарата другим естественно-научным теориям. Исторически сложилось так, что ученые, занимающиеся проблемами ИИ, как правило, сосредоточиваются на достаточно узких проблемах и методах, привязан- ных к конкретной проблемной области. Такая узкая специализация делает задачу изучения (а равно и практического воплощения) возможных решений относительно несложной. Подобные узкоспециализированные решения получили название сла- бого ИИ (weak AI), поскольку их очень трудно применить где-либо за пределами проблемных областей, для которых они разработаны. Подобная слабость ИИ постепенно стала чем-то вроде лежащего на дороге валу- на, который нельзя ни обойти, ни объехать. Во многих проблемных областях методы ИИ зарекомендовали себя с самой лучшей стороны, однако при этом для их кор- ректного применения в подавляющем большинстве случаев требуется наличие чело- века-эксперта. Когда же предпринимаются попытки собрать эти методы воедино для решения более крупномасштабных проблем, становится понятно, что эти мето- ды слишком специализированы. Именно поэтому нам нужно заниматься подготовкой инженеров, специализи- рующихся в области ИИ. Если бы теоретические основы ИИ были совершенными, в программистах вообще не было бы необходимости. Однако до наступления этого момента еще, как минимум, несколько десятилетий, поэтому мы по-прежнему при разработке технических систем нуждаемся в людях. Все это относится и к реализа- ции технологий ИИ в компьютерных играх. Так что программисты могут быть спо- койны за свое будущее — в ближайшие двадцать-тридцать лет они без работы не ос- танутся!
Глава 1. Значение средств ИИ в компьютерных играх 47 Компьютерные игры и средства ИИ Итак, мы рассмотрели две интерпретации термина “искусственный интеллект”. С какой же из них мы имеем дело, когда говорим о “компьютерных игровых средст- вах ИИ”? Иными словами, что подразумевается под средствами ИИ в мире компью- терных игр? Не требует пояснения желание пользователей видеть в игре персонажей, ведущих себя разумно, поскольку это повышает удовольствие от игры и улучшает игровую обстановку. Более того, применение в игре несобственных персонажей, обладающих достаточной интеллектуальностью, позволяет разрабатывать игры для одного игро- ка, создающие такое впечатление, что количество участников в них весьма велико, и не требующие привлечения реальных (биологических) людей-игроков. Итак, нам нужны надежные напарники; достойные противники для поединков в борьбе на выживание; враги, которые не дают себя расстрелять, как куропаток; второстепенные персонажи, украшающие своим присутствием игру и углубляющие ее сюжетную линию. Независимо от жанра игры, будь то стратегия реального време- ни, игра со стрельбой от первого лица или крупномасштабная многопользователь- ская сетевая игра, наличие несобственных персонажей с интеллектуальным поведе- нием в современных играх является непреложным требованием. Только в этом слу- чае у игрока может возникнуть ощущение реальности игровой атмосферы. Во всех перечисленных примерах мы так или иначе говорили о синтезированных персонажах. Поскольку суть проблемы сводится к созданию одного несобственного персонажа, очевидно, что начать изучение проблемы создания виртуальных миров, наполненных такими персонажами, лучше всего именно с этой задачи. Сосредото- чившись на создании одного синтезированного персонажа, мы сможем сэкономить значительный объем вычислительных ресурсов и ускорить процесс подготовки тес- товых прогонов для проведения различных экспериментов. ПРИМЕЧАНИЕ В искусственном интеллекте обладающая интеллектом сущность называется агентом (agent). Система, ; которая координированно управляет более чем одним игровым персонажем, называется мультиа- ? гентной (multi-agent system). Если необходимо ввести в игру многочисленные агенты, то приходится ; понижать интеллектуальные способности несобственных персонажей, чтобы задача увеличения их I количества стала осуществимой. По существу, для этого требуется создать более простые средства ИИ, потребляющие меньше оперативной памяти и вычислительных ресурсов, что само по себе до- ’ вольно сложно! С точки зрения игрока, достаточно, чтобы несобственный персонаж демонстри- ровал лишь определенный уровень интеллектуальности. В этом состоит один из важнейших критериев; компьютерные игровые средства ИИ оцениваются по конеч- ному результату. Игроку совершенно не интересно знать, как именно достигается интеллектуальность несобственных персонажей, если их поведение в игре правдо- подобно. Поэтому не стоит рассматривать технологию ИИ с этой точки зрения, по- скольку с помощью стандартных методов разработки игрового программного обес- печения (например, с помощью сценариев) можно добиться практически такой же иллюзии разумного поведения.
48 Часть I. Общие сведения Текущий уровень развития игровых средств ИИ Помните те дни, когда в играх только начала появляться трехмерная графика? Только некоторые компании в то время захотели ввязаться в бой. Некоторые вышли из этой схватки победителями, однако получившиеся в результате игры изобиловали дефектами. Тем не менее прошли годы, и визуальные артефакты постепенно ушли с экранов, став скорее исключением, чем правилом. Сегодня подключение новых технологических ре- шений проходит совершенно гладко и незаметно как для пользователей, так и для разра- ботчиков, занимающихся не наоадкой интерфейсов с оборудованием, а созданием соб- ственно игр. Это объясняется как возросшим мастерством специалистов игровой инду- стрии, так и хорошо налаженными связями с производителями аппаратных средств. Од- нако в том, что касается ИИ, мы по-прежнему топчемся на месте. Сегодняшние технологии ИИ мало отличаются от тех, которыми мы пользовались много лет назад. Куда ни глянь, мы видим все те же сценарии и А*-поиск пути — тех- нологические решения, которые можно сравнить с двухмерной графикой. Конечно, справедливости ради необходимо отметить, что обе упомянутые технологии достигли значительного совершенства. В большинстве современных систем ИИ персонажи, управляемые сценариями и использующие А*-поиск пути, практически не совершают очевидных ошибок. Остается только поздравить их создателей — в некоторых играх подобные технологии ИИ выглядят просто потрясающе (например, в Unreal Tournament2003 и Return to Castle Wolfensteiri). Однако все же на повестке дня стоит вопрос о настоящей революции в разработке игр, которую должны вот-вот произвести настоящие системы ИИ (обоих типов). Уже сегодня технологии ИИ вовсю меняют подходы к разработке, обогащая идеями не только программистов, но и проектировщиков игр. Технологическая революция Некоторые компании уже успешно занимаются применением передовых техно- логий, основанных на достижениях в области ИИ (например, деревья решений или обучение с подкреплением). В подобных приложениях использование передовых систем ИИ позволяет достичь не менее передовых целей (с точки зрения изменения облика получаемых продуктов). Например, в игре Colin McRae Rally 2 используются обучение и нейронные сети, что означает отсутствие необходимости программиро- вать средства ИИ вручную. Помимо изменений в проектировании игровой обста- новки, нужно вносить изменения и в игровую машину. Кроме того, неизбежно из- меняется производственный цикл создания игры (обычно в сторону уменьшения объема работ, связанных с написанием сценариев). Так выглядит технологическая революция ИИ с точки зрения передовой разработки игр. Тем не менее, в сообществе разработчиков все еще нередко можно услышать и скеп- тические высказывания. Этот скепсис понятен. Действительно, так ли нам нужны более развитые технологии ИИ? Позволят ли они улучшить процесс разработки игр, создавае- мых при стандартных подходах к их проектированию? Ответ на подобные вопросы со- стоит в том, что технологии ИИ — это не самоцель. Нет никакой необходимости в ис- пользовании новых технологий д ля получения точно такой же игровой обстановки! Кро- ме того, разработчики могут вообще обходиться без каких-либо средств ИИ. Фактиче-
ftataHausiiiik Глава 1. Значение средств ИИ в компьютерных играх 49 ски, любой профессиональный программист обладает квалификацией, достаточной для того, чтобы при желании создать полноценную игру без применения в ней средств ИИ. Однако внедрение передовых технологий ИИ все же необходимо и оправдано. Они позволят не только улучшить производственный цикл, повысив эффективность разработки, а также ускорив этапы проектирования и макетирования, но и значи- тельно повысить качество конечного продукта (при условии, конечно, надлежащего использования таких технологий в соответствующем контексте). Именно этим про- блемам мы и посвятим оставшуюся часть этой книги, обучаясь на примерах успеш- ных проектов и на собственных ошибках. Революция в проектировании Сегодня уже появляются игры, в которых с помощью современных средств ИИ ин- теллектуальность несобственных персонажей значительно превышает средний уро- вень, достигаемый с помощью “стандартных” систем ИИ (т.е. сценариев и средств по- иска пути). Это убедительно доказывает, что объединение мощных методов ИИ со свежими проектными решениями позволяет значительно улучшить игровую обста- новку компьютерной игры любого жанра. Так, например, вся игровая обстановка игры Black & White построена на взаимодействии интеллектуальных персонажей, обладаю- щих способностями к обучению. В целом, игры с более интеллектуальными несобственными персонажами при- ветствуются как компьютерной прессой, так и конечными пользователями (не гово- ря уже об энтузиастах ИИ). Такое внимание к подобным играм могло быть вызвано только оригинальными проектными решениями, основанными на использовании передовых систем ИИ. Этот процесс, который только-только выходит на авансцену разработки игр, можно назвать настоящей революцией в проектировании средств ИИ. Большинство специалистов по ИИ уверены в том, что “золотой век” в создании систем ИИ для несобственных персонажей еще впереди, несмотря на мнение некото- рых скептиков, не видящих побудительных мотивов для развития таких систем. В ча- стности, ими высказывается сомнение в том, что революция в области создания средств ИИ будет развиваться под давлением проектировщиков, нуждающихся в све- жих идеях. Возможно, они отчасти правы. Поскольку прогресс в системах ИИ позво- ляет значительно повысить эффективность производственного цикла, это приведет к появлению конкурентного рынка игр, основанных на передовых системах ИИ. Та- кой рынок — это вполне достаточная движущая сила для любого развития. Строго говоря, технологии, которые могут произвести подобную революцию в про- ектировании игр, существуют уже много лет, если не десятилетий. Правда, для их вне- дрения в практику разработки компьютерных игр не хватало ни вычислительной мощ- ности аппаратных средств, ни опыта разработчиков. Лишь недавно состояние дел в этой области начало меняться в лучшую сторону. Сегодня большинство крупных компаний-разработчиков переходят на промышленные методы создания игр, а вычис- лительная мощность практически перестала быть проблемой. В этой книге мы всесто- ронне изучим технологии ИИ, реализация которых позволит внедрить в практику раз- работки игр принципиально новые проектные решения.
50 Часть I. Общие сведения Проектировщики или специалисты по ИИ? Как же более мощные технологии ИИ и полученные на их основе интеллектуаль- ные несобственные персонажи повлияют на проектные решения игр ближайшего бу- дущего? Очевидно, что улучшение в области ИИ поднимет проектирование игр на но- вый уровень, недостижимый в рамках современных технологий. В ближайшем буду- щем мы увидим, как проектирование игр, взяв на вооружение новые технологии ИИ, выйдет на “высокую орбиту”. Однако создание интеллектуальных несобственных персонажей неизбежно отра- зится на методах проектирования игр. В этом разделе мы вкратце остановимся на связанных с этим проблемах, которые могут стать источником трений среди разра- ботчиков. Подобные трения всегда возникают, даже в самых лучших коллективах, поэтому мы должны постараться выяснить возможные причины их возникновения. Препятствия Если не рассматривать технические подробности, основная проблема проектиро- вания игр, в которых должны присутствовать интеллектуальные несобственные пер- сонажи, вытекает из двух следующих противоречий. > Интеллектуальные несобственные персонажи действуют в мире игры автономно. > Проектировщики игр должны иметь средства для контроля поведения несоб- ственных персонажей. Не удивительно, что многие проектировщики, столкнувшись с этими противоре- чиями, задаются вопросом: а так ли нужны нам развитые системы ИИ? Специалисты по ИИ, в свою очередь, ставят вопрос так: если у нас будет передовая система ИИ, то зачем нам вообще проектировщик? На самом деле истина, как всегда, посередине. Не- обходимо искать компромисс между потребностями проектировщиков и возможно- стями систем ИИ. Но, как бы там ни было, легко догадаться, что достаточно интеллек- туальный несобственный персонаж может показать, что при его создании можно обойтись без проектировщика средней руки! Два типа игр Из различных подходов к проблеме контроля поведения вытекает два различных направления в создании компьютерных игр. Проектировщики, которые являются сторонниками первого типа игр, реализуют свои идеи по методу сверху вниз, контро- лируя в игре все до последней мелочи. Такой принцип получил название проектиро- вание с явным контролем (explicit design). Обычно он используется при создании игр с линейным сюжетом (Doom 3, Unreal 2). При высокой степени детализации проекта, например в играх, рассчитанных ис- ключительно на одного игрока, для использования сложных технологий ИИ места практически не остается. В принципе, в подобных играх можно даже поставить вопрос о том, нужны ли вообще в них сколько-нибудь “интеллектуальные” несобственные персонажи? (Действительно, эти персонажи всякий раз проделывают одни и те же операции, независимо от изменений ситуации. Так зачем же им тогда “интеллект”?)
Глава 1. Значение средств ИИ в компьютерных играх 51 Для таких проектов вполне достаточно стандартных методов программирования или создания сценариев. И только в том случае, когда степень детализации проекта растет, а сюжет становится нелинейным, возникает необходимость в более сложных техно- логиях ИИ. Игры второго типа создаются по методу снизу вверх. В таких играх интересные иг- ровые возможности порождаются (emerge) в результате взаимодействия системы ИИ и игровой среды. Ключевой особенностью таких игр является отсутствие жестко прописанного сценария. Суть таких игр сводится к взаимодействию в игровом мире всех персонажей (как представляющих живых игроков, так и управляемых компью- тером). Сюжет подобных игр (например, Pizza Tycoon) порождается в результате именно такого взаимодействия. Такой принцип проектирования называют проектированием с неявным контролем (implicit design). Это название обусловлено тем, что поведение несобственных пер- сонажей в играх, построенных на этом принципе, не определяется заранее проекти- ровщиком. (Хотя, конечно, общие поведенческие характеристики каждого отдель- ного несобственного персонажа прорабатываются и задаются явно на низком уров- не.) Если несобственные персонажи по-настоящему интеллектуальны, а не управ- ляются сценариями, тогда в распоряжении проектировщика остается лишь контроль над игровой средой! Можно привести много примеров игр, построенных на принципе проектирова- ния с неявным контролем. В частности, именно к этой категории игр относятся та- кие блестящие игры, как SimCity и Transport Tycoon. Сюжет подобных игр всецело за- висит от решений, принимаемых игроком. Проектирование таких игр — задача не- простая, поскольку проектировщик не может заранее предусмотреть, как взаимо- действие ИИ и несобственных персонажей повлияет на игровую обстановку. Одной из насущных проблем современных исследований в области применения технологий ИИ в играх является определение компромисса между двумя описанны- ми выше подходами к проектированию игр. Некоторым разработчикам (например, в игре Grand Theft Auto IfI) удается достигнуть вполне удачного баланса между ними, чередуя явный контроль (с помощью фрагментов, образующих сюжетную линию) с неявным (путем предоставления игроку полной свободы действия). При подобном комбинированном подходе во время воспроизведения анимационных вставок пове- дение несобственных персонажей прописывается жестко, а во всех остальных игро- вых ситуациях оно полностью определяется автономной системой ИИ. В чем суть конфликта Разделение игр на две описанные выше категории позволяет несколько умень- шить рассогласование между системой ИИ и потребностями проектировщиков. При традиционном подходе проектировщик отвечает за детальную проработку всей архи- тектуры игры, начиная от низкоуровневого определения поведенческих характери- стик персонажей и заканчивая разработкой сюжетной линии в целом. Естественно, при таком проектировании никак нельзя обойтись без персонажей, управляемых с помощью анимацйи. Однако от системы ИИ в подобных играх требуется немно- го — управлять поведением несобственных персонажей строго в соответствии с за- мыслом проектировщика и разработанным им сюжетом.
52 Часть I. Общие сведения Но если проектировщик попытается применить такой же подход, основанный на явном контроле, к интеллектуальным несобственным персонажам, то неизбежно получит конфликт. В таком случае система ИИ должна выполнить конкретное дей- ствие в определенной ситуации в соответствии с указанием. Конечно, в какой-то степени этого конфликта можно избежать, используя традиционные методы явного управления системой ИИ (например, в анимационных вставках). Как не трудно догадаться, с помощью принудительного отключения ИИ пробле- му не решить (иначе вместо игры вы получите компьютерный видеофильм). И здесь проектировщик, использующий традиционные подходы, может оказаться в тупике. Иными словами, создавая игру с интеллектуальными несобственными персонажа- ми, проектировщик не может сказать им: “Идите туда-то и сделайте то-то”, по- скольку персонажи могут “не захотеть” лезть под пули или прыгать с десятого этажа вниз головой. Таким образом, традиционные подходы к проектированию в подобных играх не позволяют породить нужную сюжетную линию. В этом как раз и заключается суть конфликта. Вот почему проектировщики игр с четко прописанным сюжетом испы- тывают, мягко говоря, затруднения с неявным контролем, не понимая того, что часть своих проблем им нужно просто переложить на специалиста по ИИ. В подоб- ных случаях нужно всегда четко идентифицировать игровую ситуацию и решить, ка- кой тип контроля в ней нужен. При этом можно руководствоваться простым, но всегда работающим правилом — контроль должен быть неявным в тех случаях, ко- гда нужно выполнить более одной операции. Например, если мы хотим, чтобы за дверями после их открытия оказался другой игрок (любой; неважно, какой), — это явный контроль. Здесь задача сводится лишь к инициализации новой сущности в игровом мире. Однако для того, чтобы за дверя- ми оказался именно ваш напарник Марвин, требуется применить неявный кон- троль. Суть проблемы в том, что ваш напарник должен “захотеть” подойти к двери и реализовать это желание в заданное время, преодолевая все препятствия, возни- кающие у него на пути. Если мы просто перенесем Марвина в нужную нам точку, это разрушит внутреннюю логику мира игры. Таким образом, этому персонажу для достижения нужного нам результата следует выполнить несколько операций — в та- ких случаях не обойтись без неявного контроля. Решение конфликта заключается в том, чтобы проектировщик сначала согласовал со специалистом по ИИ все типичные ситуации, в которых требуется использование неявного контроля. Только после такого согласования проектировщик может по мере необходимости использовать во всех остальных ситуациях явный контроль. Идея со- стоит в том, что для разработки средств ИИ нужно заранее знать, какие “рычаги” по- надобятся проектировщику для организации неявного контроля, поскольку с органи- зацией явного контроля в современном производстве игры проблем не возникает. Подобное согласование позволит разработчикам ИИ получить свободу действий, нужную им для создания системы ИИ. Проектировщики же, в свою очередь, смогут задействовать развитую систему ИИ, не теряя контроля над игрой. Оба эти фактора в совокупности позволят в максимальной степени использовать возможности со- временных технологий ИИ для значительного улучшения игровой обстановки.
4\ataHausiiik Глава 1. Значение средств ИИ в компьютерных играх 53 Система ИИ с точки зрения программирования игры На практике назначение системы ИИ в игровой машине сводится к управлению всеми аспектами поведения несобственных персонажей. Например, в типичной ком- пьютерной игре (причем вовсе не обязательно в игре со стрельбой от первого лица) система ИИ должна решать следующие задачи. > Простейшие поведенческие реакции. Подбор предметов, нажатие переключате- лей, использование объектов, выполнение определенных жестов и т.д. > Перемещение. Обеспечение передвижения персонажа в игровой среде с обхо- дом препятствий, открытием дверей, прыжками на возвышения и т.п. > Принятие решений. Выбор одного из возможных типов поведения и (или) одной из возможных операций с целью выполнения стоящей перед несобственным персонажем задачи, а также определение приоритетности таких операций. Для разработки системы, обеспечивающей контролируемое решение всех пере- численных задач, вполне достаточно несложных технологических решений. Такие решения можно создать на базе стандартных методов программирования, получив в результате “псевдо-ИИ”. Однако если такую же систему создать на основе методов и технологий, взятых из области “чистого” ИИ, полученная в результате система бу- дет обладать следующими дополнительными преимуществами. > Получение достаточно изящных решений в тех случаях, когда нужно органи- зовать явный контроль. > Эффективная поддержка на высоком технологическом уровне ситуаций с не- явным контролем. Кроме того, в сравнении со стандартными технологиями, основанными на обра- ботке сценариев, “чистые” технологии ИИ более эффективны с точки зрения про- изводительности аппаратных средств. Это означает, что на одних и тех же вычисли- тельных ресурсах, используя передовые технологии ИИ, можно получить более ка- чественно реализованные поведенческие реакции персонажей. Это достигается благодаря различным аспектам ИИ, которые мы будем обсуждать далее в этой книге. > Технологии ИИ предоставляют разработчикам такие функциональные воз- можности, как управление моторными реакциями, распознавание образов, предсказание или аппроксимация. > Компоненты системы ИИ можно реализовать в виде шаблонов проектирования (desing pattern), что значительно облегчает их интеграцию в архитектуру игры, а также повышает степень повторного использования кода. > Работоспособность методов, на которых основывается функционирование системы ИИ, была неоднократно апробирована в реалистичных средах. Таким образом, технологии и методы ИИ — это не академические забавы, при- годные лишь для создания синтезированных персонажей в лабораторных условиях, а вполне работоспособные инструменты, которые можно и нужно применять с успе- хом на практике при разработке игр. Все игры обладают рядом особенностей, кото- рые обязательно следует учитывать при проектировании и создании реальных сис- тем ИИ. В частности, две из них имеют исключительно важное значение в играх.
54 Часть I. Общие сведения > Развлекательность. Следует всегда помнить, что система ИИ будет состязаться с интеллектом реальных игроков. Это означает, что эта система должна обладать возможностью ставить перед игроками достаточно сложные задачи и проверять их различные умения и навыки, причем сложность заданий и проверок должна все время возрастать. Кроме того, для повышения развлекательного аспекта система ИИ должна воздействовать и на эмоциональную сферу игрока — во- одушевлять его, проводя через сложные задания, или же, например, волновать игрока, создавая в игре тревожную атмосферу. > Достоверность. Персонажи, управляемые системой ИИ, могут повышать дос- товерность игры (при условии, конечно, что они не отвлекают своим поведе- нием внимание игрока от основной задачи). Для достижения реализма систе- ма ИИ может настраивать поведение каждого отдельного несобственного пер- сонажа так, чтобы оно соответствовало реакциям аналогичного персонажа, управляемого человеком. Подводя краткий итог, можно сказать, что основное назначение системы ИИ в иг- рах состоит в управлении поведением несобственных персонажей с целью увеличения развлекательной составляющей игры, а также повышения ее достоверности или реа- лизма. В следующей главе речь пойдет о решении этой задачи.
^atattaus,^. Гпава 2 Проблемы ПРОЕКТИРОВАНИЯ ИНТЕЛЛЕКТА В ЭТОЙ ГЛАВЕ. • Инженерный взгляд • Традиционный подход • Перспективный подход • Требуемый уровень подготовки • Производственный цикл создания системы ИИ • Резюме В этой главе мы “заглянем под капот” игровых машин и постараемся выяснить, как системы ИИ помогают воплощать в жизнь идеи проекти- ровщиков. Как нетрудно догадаться, разработка подобных систем, позволяющих обеспечить ин- теллектуальное поведение несобственных персо- нажей, управляемых компьютером (NPC — Non- Player Character), — это чисто инженерная задача. В разделах этой главы мы вкратце рассмотрим следующие вопросы. > Как перейти от проекта игры к разработке системы ИИ. > Традиционный подход к созданию систем ИИ в играх. > Отличающийся от традиционного подход, основанный в большей степени на обуче- нии и воплощении. > Базовый уровень подготовки, которым дол- жен обладать разработчик, чтобы справиться с реализацией подобной системы ИИ. > Важнейшие этапы процесса разработки сис- темы ИИ. Представленные в этой главе принципы и под- ходы являются базовыми для остального материа- ла книги. Инженерный взгляд Наличие хорошо продуманного и прорабо- танного эскизного проекта игры— это очень важный аспект для ее разработчиков. Однако для
56 Часть I. Общие сведения создания системы ИИ одного лишь эскизного проекта недостаточно. Нужно что-то более практичное и приземленное. Не будет преувеличением сказать, что основными целями для разработчиков игр является обеспечение реализма и развлекательности их творений. Фактически, на практике эти цели часто становятся идолами, возносимыми на пьедестал в ущерб всем остальным целям. Подобное отношение к важным, но не единственным целям разработки в большинстве случаев не ведет ни к чему хорошему, поскольку любые предложения наталкиваются на комментарии вида: “Нам не нужна игровая возмож- ность х, поскольку мы стремимся к развлекательности” или “Сначала сделай это, а потом я посмотрю, насколько это будет реалистично”. Подобный взгляд на игру больше годится для игрока, но он никак не способству- ет улучшению сотрудничества между участниками рабочей группы проекта! Отно- шение к развлекательности и реализму как к Священному Граалю в подавляющем большинстве случаев не улучшает, а ухудшает взаимопонимание между участниками проекта. Поскольку человеческая речь в достаточной степени неоднозначна, опери- рование такими неопределенными терминами, как развлекательность и реализм, никак не способствует взаимопониманию. Но если участники рабочей группы (в том числе и инженеры по системам ИИ) не сделают хотя бы попытку дать формальное определение этих терминов, они обрекут себя на длительные сверхурочные часы, которые будут проходить в мучительных поисках трюков, с помощью которых мож- но было бы хоть как-то создать иллюзию реальности. Поэтому проектировщики игры и программисты систем ИИ должны поставить себе следующую задачу: поместить все цели разработки на “операционный стол” и “препарировать” их на составляющие. Такие “атомарные” концепции гораздо проще идентифицировать и анализировать, а это позволяет точно разобраться в том, что скрывается за расплывчатыми терминами развлекательность и реализм. Инже- нерный подход заключается в переходе от качественной формулировки целей к ко- личественной. Иными словами, если мы сможем устранить из этих формулировок все разночтения и неопределенности, то получим точный проект поведения кон- кретных несобственных персонажей. Только в этом случае рабочая группа проекта сможет добиться максимальной производительности. Традиционный подход Как сегодня в большинстве случаев разработчики подходят к решению этой про- блемы? На сегодняшний день создание игровых средств ИИ — это процесс, весьма далекий от формализованного производственного цикла, изрядная доля которого приходится на вносимые “на ходу” модификации и длительные эмпирические эта- пы тестирования. Если учесть, что игровая индустрия в плане формализации сама по себе еще далека от совершенства, то можно без преувеличения сказать, что разра- ботка систем ИИ — это, пожалуй, наиболее отсталая в этом направлении область. До недавнего времени код типичной системы ИИ насчитывал лишь несколько сот строк, которые “на живую нитку” подгонялись одна к другой за пару месяцев до выпуска игры. Однако в новом веке системы ИИ внезапно вышли на авансцену раз- работки, став в некоторых проектах чуть ли ни ключевым звеном.
^latattaus^. Глава 2. Проблемы проектирования интеллекта 57 Анализируя типичный подход к созданию игровых средств ИИ, можно выделить несколько основных аспектов: интеграция с игровой машиной, архитектура системы и основные принципы ее создания. Интеграция и архитектура Исторически сложилось так, что игровые агенты (in-game agent) создавались как часть игровой логики. При этом двухмерные координаты персонажей обновлялись на каждой итерации, например, как в игре Рас-Man. И хоть с тех времен прошло достаточно много времени, сам подход к созданию систем ИИ изменился незначи- тельно. Кто-то может заметить, что сегодня программный код ИИ уже, как правило, отделен от игровой логики. Это так, однако в подавляющем большинстве игр агент обычно имеет прямой доступ к данным игры, всегда получая ту информацию, кото- рая ему нужна. Иными словами, такое “разделение” — это не более чем разнесение практически цельной логики по разным программным модулям. Это упрощает управление исходным кодом, но не является кардинальным решением задачи. Коль речь зашла о программной архитектуре, можно отметить, что подсистемы ИИ часто выполняются в виде отдельных библиотек (например, для управления пе- редвижениями). Понятно, что подобные библиотеки могут создаваться на основе разных принципов, основанных на различных подходах к разработке. К сожалению, наиболее распространенный подход заключается в “ручной сборке”, при которой интерфейс игры и вся требуемая функциональность создаются разработчиками для каждого нового проекта, что называется, “с нуля”. Приверженцам классических ме- тодов проектирования программных систем столь “индустриальный” подход может показаться анахронизмом, однако современная бизнес-среда игровой индустрии, нацеленная на получение быстрого результата, способствует применению на прак- тике именно таких методов разработки. Помимо проблемы разбивки на модули, существует также опасность того, что код системы ИИ, слишком разрастаясь, может стать трудно управляемым. Обычно это происходит из-за недооценки разработчиками сложности задачи или под давле- нием угрозы срыва сроков сдачи проекта. Например, в системе ИИ игры Return to Castle Wolfenstein для имитации конечного автомата использовались функции языка С, возвращавшие указатели, а когда объем кода достиг некой критичной отметки, разобраться в нем уже не мог никто, кроме его создателя. Принципы создания Учитывая ограниченность всех ресурсов, единственным по-настоящему важным принципом создания системы ИИ является поиск обходных путей везде, где это мож- но, с целью повышения эффективности работы. При этом ответственность за реали- стичность поведения персонажей возлагается на саму систему ИИ. Как, за счет чего и какой ценой достигается эта реалистичность — никого не волнует. И хотя теория ИИ изобилует научными методами, которые с успехом можно применять на практике, в реальных проектах эти методы используются крайне редко. Все традиционные прие- мы, задействованные в классических системах ИИ (например, алгоритмы поиска и сценарной поддержки), в подавляющем большинстве случаев основываются не на теории ИИ, а на методах вычислительной математики и компьютерных наук.
58 Часть I. Общие сведения Часто комбинация двух основных требований (эффективности и реализма) при- водит к применению простых решений проблемы ИИ, таких как использование сценариев. Такой подход вполне оправдан в том смысле, что он не только решает проблему, но и позволяет легко управлять параметрами системы ИИ проектиров- щикам, не обладающим высокой квалификацией в области программирования. Обсуждение Описанный выше типичный подход к созданию систем ИИ в современных играх за годы существования игровой индустрии был настолько отработан и оптимизиро- ван, что сегодня с его помощью можно получать вполне приемлемые по качеству ра- боты системы. Или, говоря иными словами, уровень качества систем ИИ в играх не уступает уровню качества самих игр. Но хотя разработчики при таком подходе выиг- рывают за счет простоты реализации в таких вопросах, как проектирование систем ИИ и их интеграция с игровой механикой, все же современный подход в целом нельзя назвать ни совершенным, ни удобным во всех отношениях. Во-первых, традиционная “вольность” систем ИИ в том, что касается прямого доступа к любым данным игры, не только избыточна, но и опасна. Во-вторых, руч- ная “доводка” поведения персонажей, управляемых средствами ИИ, сводится к многочасовой рутинной работе по примитивному программированию, которая от- рицательно сказывается как на сроках создания игр, так и на их бюджете. Иными словами, традиционный подход, вне всякого сомнения, может и должен быть пересмотрен, что косвенно подтверждают значительно улучшенные системы ИИ нескольких последних игр. Эти разработки — не исключение из общего прави- ла, а, скорее, “первые ласточки” формирующейся тенденции к инновациям и пере- смотру традиционных методов создания ИИ. Перспективный подход В со ггнстстнии со сложившейся традицией, система ИИ рассматривается как не- кий специализированный фрагмент кода, манипулирующий определенными данны- ми. Соответствующие небольшие программные системы в терминах ИИ называются агентами (agent). Архитектура агентов подобна архитектуре обычных программных систем — иными словами, они реализуются в виде уровней (layer). Процессор получает информацию, обрабатывает ее, выбирает оптимальное решение, а затем выполняет определенные операции. Таким образом, управляя персонажем вместо человека, аген- ты решают те или иные специфичные проблемы примерно с таким же качеством, как и человек. Однако применительно к большим системам с высоким уровнем интеллекта та- кой взгляд на архитектуру систем ИИ оказывается достаточно поверхностным и не- адекватным сложности задачи. В подавляющем большинстве случаев узкоспециали- зированные теории очень плохо под даются масштабированию и с трудом передают- ся из лабораторий в реальные программные системы. Современные специалисты по ИИ решительно отбрасывают такой узкий взгляд на системы ИИ и утверждают, что по-настоящему интеллектуальная система должна уметь решать задачи реального мира, а не находить частные решения по специально подготовленным данным.
Глава 2. Проблемы проектирования интеллекта 59 В 1980-е годы робототехника пережила настоящую революцию, волна которой постепенно докатилась и до устоев теории ИИ. В соответствии с идеями, выдвину- тыми Родни Бруксом (Rodney Brooks) в 1986 и 1991 годах, были разработаны более современные модели интеллекта и интеллектуального поведения, на основе которых стало возможным создание прогрессивных методик моделирования ИИ [10, 11, 12]. Новый взгляд на проблему моделирования ИИ привел к изучению сложных сис- тем, находящихся в реалистичной среде (например, роботов или персонажей игр). Стало ясно, что проблемы, встречающиеся на практике, требуют новых подходов к созданию систем ИИ (например, поведенческих моделей). По мнению Брукса, центральный процессор не должен заниматься просчетом каждого движения. Вместо этого систему следует представить в виде комбинации поведенческих реакций, которые проявляются в соответствии с теми или иными факторами окружающей среды. В соответствии с таким подходом, основанным на реакциях, создание сложной системы происходит в виде итеративного процесса с последовательным тестированием каждого нового добавляемого компонента. Под влиянием все еще продолжающейся революции в теории ИИ сформирова- лась группа исследователей, сосредоточившихся на изучении и моделировании адаптивного поведения (Simulation of Adaptive Behavior— SAB). В 1990 году эта группа провела свою первую конференцию, организованную международным сооб- ществом International Society for Adaptive Behavior [76]. Каждые два года конференция Animals to Animats Conference собирает под одной крышей ис- следователей этологии, психологии, экологии, искусственного интеллекта, искусственной жиз- ни, робототехники, инженерии и других смежных областей, стремящихоя продвинуться дальше в понимании поведенческих реакций и лежащих в их основе механизмов, которые позволяют ес- тественным и синтетическим агентам (аниматам) адаптироваться к неопределенной среде и вы- живать в ней. Анимат (animat) — это термин, используемый для обозначения исключительно синтетических созданий, “живущих” в виртуальной среде. Поскольку аниматы во- площены (embodied) в этой среде, то взаимодействуют с окружающим миром только через свои виртуальные тела, что позволяет сделать их полностью автономными сущностями. Кроме того, аниматы могут адаптироваться к окружающей среде с по- мощью различных алгоритмов обучения. Но возникает вопрос — насколько подоб- ный подход к моделированию ИИ подходит для компьютерных игр? Аниматы в играх Многие игроки (да и разработчики) считают, что только аниматы позволяют создать “подходящую” систему ИИ для несобственных персонажей. Действительно, игра, в ко- торой каждый бот ведет себя как существо, обладающее интеллектом, не может не при- влекать внимания. Поэтому, когда речь идет о методах создания систем ИИ д ля компью- терных игр, прогрессивный подход к ИИ начинает преобладать над стандартным. Годятся ли аниматы для компьютерных игр? Сегодня основной целью разработчиков является обеспечение правдоподобности игры в целом, а не точности моделирования тех или иных элементов и явлений ре- ального мира. С этой точки зрения аниматы, конечно же, представляют интерес для
60 Часть I. Общие сведения игровой индустрии. Если виртуальные создания моделируются с высокой степенью точности, то разработчикам не придется тратить лишних усилий на “ручную довод- ку” несобственных персонажей. Кроме того, поскольку система ИИ, построенная на аниматах, будет достаточно интеллектуальной, то сможет сама находить выход из ситуаций, не предусмотренных проектировщиками. Подобные идеи уже реализуются в игровой индустрии, хотя и в достаточно упро- щенной форме. Современные тенденции в разработке систем ИИ развиваются в на- правлении к воплощению аниматов. Примеры подобных решений мы видим, в ча- стности, в виде имитации сенсорных систем (Thief), добавления шумов к некоторым действиям (Quake 3) и даже достоверности ощущений (Black & White). Выполнив экстраполяцию этих тенденций, мы придем к выводу о неизбежности реализации в ближайшем будущем полностью воплощенных аниматов. От этого мо- мента нас отделяет буквально несколько лет, хотя пока трудно предсказать, будет ли это через три года или десять лет. Проведенные к настоящему времени предвари- тельные исследования показывают, что реализация такого свойства аниматов, как воплощение, приведет к более интеллектуальному поведению, что, в свою очередь, значительно повысит правдоподобность компьютерных игр [7,40]. Если говорить об играх как о программных системах, то подход, основанный на использовании аниматов, принесет немало новых возможностей и проектировщи- кам игр. Воплощение — это весьма изящный метод моделирования роли системы ИИ в игровой механике. Формальное определение интерфейсов между телом и мозгом — это сам по себе хороший подход к проектированию (хотя бы потому, что он позволяет отделить систему ИИ от логики и моделирования игрового мира). В том, что касается разработки поведенческих моделей для системы ИИ, исследования аниматов и систем, основывающихся на поведенческих реакциях, открыли много направлений для экспериментов, позволяющих итеративно развивать системы ИИ. Можно ли реализовать анимат с высокой эффективностью? Но как столь радикальные идеи будут выглядеть при их воплощении в игровой машине? Можно ли их вообще реализовать в условиях достаточно жестких времен- ных рамок и с учетом ограниченности вычислительных ресурсов? Факты говорят о том, что аниматы более чем подходят для реализации, поскольку реализация их различных аспектов уже неоднократно была продемонстрирована в современных популярных играх. И это очень важно, так как наша задача сводится лишь к инте- грации свойств аниматов в виде стандартной архитектуры системы ИИ. Создание такой архитектуры позволит безболезненно перейти от традиционного подхода к разра- ботке систем ИИ к подходу, основанному на аниматах. Конечно, к настоящему времени в коммерческих продуктах пока не реализован ни один полноценный анимат. Однако это не означает, что подобная реализация заставит себя долго ждать. Некоторые натурные макеты аниматов сегодня уже приближаются по уровню интеллекта к стандартным игровым ботам. Более того — в некоторых слу- чаях такие макеты даже проявляют более надежное и реалистичное поведение, чем обычные игровые боты. Эффективность аниматов может превосходить эффективность стандартных иг- ровых агентов во многих отношениях. Поскольку все взаимодействия анимата с ок- ружающей средой формализованы, его программный код можно оптимизировать
Глава 2. Проблемы проектирования интеллекта 61 с целью получения наиболее подходящего формата обмена данными с программным кодом игровой машины (передача сообщений, вызовы функций, совместно исполь- зуемые переменные и т.п.). Кроме того, способность аниматов к обучению позволяет снизить вычислительную нагрузку при выполнении аниматом типичных операций. Разумный компромисс В том, что касается способности к обучению или воплощению, использование аниматов сулит разработчикам немало преимуществ, среди которых, в частности, улучшение качества проектов игр и повышение эффективности производственного цикла. Понятно, что по-настоящему качественно реализованные аниматы могут действовать в играх очень эффективно (собственно, проблемам создания таких ани- матов и посвящен основной объем данной книги). Однако цель данного обсужде- ния — не восхваление аниматов, а выявление тех областей, в которых их примене- ние в играх может оказаться неадекватным или нецелесообразным. Выяснив это, мы сможем лучше понять, как использовать достоинства аниматов и как избежать свя- занных с их реализацией недостатков. В оставшихся разделах этой главы мы попробуем изучить поднятые выше про- блемы более глубоко. Для этого рассмотрим две основные характеристики аниматов (воплощение и обучаемость) по отдельности и постараемся выявить не только их достоинства, но и недостатки. Воплощение Воплощение — это совершенно новый подход к моделированию игровых персо- нажей. В типичной современной игре несобственные персонажи— это обычные агенты, т.е. “умные” программы, которые манипулируют теми или иными данными по заранее определенным правилам, наподобие чатботов (chatbot) или Web-сканеров (web spider). Такие сущности являются сугубо виртуальными, в отличие от вопло- щенных агентов, которые “живут” в виртуальном мире и имеют “полноценное” синтезированное тело. Независимо от того, представлено ли это тело двухмерным спрайтом или сложной трехмерной моделью, оно так или иначе ограничивает воз- можности воплощенного агента. С другой стороны, такое виртуальное тело полно- стью подвержено воздействию физических законов мира, в котором оно существует. Определение Воплощенным агентом (embodied agent) называется автономное существо, на которое могут воздействовать ограничения его среды обитания. Поскольку тело анимата физически ограничено, ограничены и возможности его мозга. В общем случае, все возможные операции, которые могут быть выполнены телом (а значит, и системой ИИ), ограничены набором тех действий, которые допус- тимы в рамках физических законов виртуального мира. Это означает, что некоторые операции, которые анимат мог бы выполнить, так сказать, с технической точки зре- ния, в условиях виртуального мира, в котором он существует, будут невыполнимы- ми. Однако воплощение само по себе не ограничивает возможностей системы ИИ — оно ограничивает лишь то, как эти возможности проявляются.
62 Часть I. Общие сведения Некоторые персонажи игр представляют живых игроков, управляющих телами этих персонажей. Однако в типичной современной игре, как правило, используется гораздо больше синтетических персонажей, поведение которых управляется компьютером. Поэтому систему ИИ нужно рассматривать как некий аналог мозга, который взаимо- действует с физикой и логикой игры посредством подконтрольного ему тела. Рассмотрим классический пример: стандартный агент может сам изменить свои координаты и тут же оказаться в любой точке игрового мира. Воплощенный же ани- мат должен предпринять какие-то операции для того, чтобы добраться к нужной ему точке, преодолевая при этом все встречающиеся ему препятствия. Иными словами, у анимата возможность мгновенного перемещения в пространстве отсутствует как таковая. В современных играх подобный подход к реализации несобственных пер- сонажей находит все более широкое применение, что является простейшей формой реализации воплощения. Настоящая имитация тела позволяет разработчикам привносить во взаимодействие анимата со средой биологически оправданные ошибки. Такие ошибки могут возни- кать как при выполнении аниматом операций, так и при получении им информации об окружающей среде. Например, анимат может испытывать затруднения при распо- знавании типа персонажа, который находится на значительном удалении от него. В движениях перемещающегося анимата могут присутствовать параметрические шу- мы, в результате чего он не всегда сможет вести безошибочно, скажем, прицельную стрельбу (как и человек). Привнесение подобных биологически допустимых погреш- ностей позволяет несобственному персонажу действовать более реалистично. Мотивация В современных играх агенты, имеющие полный доступ ко всем данным, все больше и больше становятся неприемлемыми. Отсутствие ограничений на чтение и запись внутренних данных игры часто приводит к тому, что соответствующие структуры данных игровой машины превращаются в некое хаотичное нагроможде- ние. Поскольку при таком подходе начйсто отсутствует сколько-нибудь формализо- ванный интерфейс, проектировщики всю ответственность за получение информа- ции возлагают на клиента (в нашем случае — на систему ИИ). Однако в процессе разработки программисты, в свою очередь, налагают дополнительные ограничения, не предусмотренные проектировщиками, чтобы сократить объем информации, дос- тупной системе ИИ (например, чтобы боты не могли видеть сквозь стены). При создании больших игр (например, распределенных многопользовательских Интернет-игр) невозможно интегрировать систему ИИ, созданную по традицион- ной технологии, с игровой машиной без подобных уловок. Понятно, что использо- вание формализованных интерфейсов для таких игр — это очень важный вопрос. Наличие таких интерфейсов позволит применить распределенные серверы, чтобы программный код агентов мог выполняться не на центральном сервере, а на разных компьютерах, если это необходимо. Это, в свою очередь, позволяет полностью отде- лить систему ИИ от игровой логики и от системы эмуляции физики игрового мира. Поэтому роль и значимость формализованных интерфейсов, подобных тем, ко- торые сегодня пытается разработать комитет Al Interface Standards Committee [1], все больше и больше возрастают. Нужно ли заниматься стандартизацией таких интер- фейсов — это уже другой вопрос. Однозначно можно сказать, что подход к реализа-
Глава 2. Проблемы проектирования интеллекта 63 ции системы ИИ на основе воплощенных аниматов позволяет сформулировать ос- новные принципы для разработки частных интерфейсов, определяющих протокол обмена информацией между мозгом и телом. По таким интерфейсам данные, полу- чаемые от сенсоров, поступают от тела к мозгу, а в обратном направлении идут управляющие воздействия. В этой книге мы будем также следовать общей тенденции, заключающейся в ис- пользовании формализованных интерфейсов. В терминах программирования слож- ных систем это позволит нам получить значительно улучшенные результаты за счет разделения процессов получения данных и их интерпретации. Кроме того, исполь- зование принципа воплощения часто позволяет не только упростить разработку, но и повысить эффективность путем оптимизации потоков данных. Технологии Имея в своем распоряжении формализованный интерфейс, инженер может без особых усилий определить наиболее подходящий формат обмена данными с систе- мой ИИ, используя для этого практически прозрачные механизмы обмена инфор- мацией (сообщения, обратные вызовы, вызовы абстрактных методов, совместно ис- пользуемые переменные и т.п.). Если же интерфейс при этом еще и стандартизован, то его реализация, скорее всего, будет оптимизирована по скорости с помощью со- ответствующих механизмов. Для эффективной реализации воплощения требуется применение нескольких общеизвестных технологий. Именно за счет этих технологий формализованные ин- терфейсы позволяют достичь более высокой производительности системы ИИ, чем при использовании прямого доступа к данным. > Отложенная (щенка (lazy evaluation). Информация о внешнем мире не собира- ется до тех пор, пока не будет явно затребована системой ИИ. Это позволяет снизить объем ненужных вычислений. > Событийно-управляемые механизмы (event-driven mechanism). При использо- вании подобных механизмов системе ИИ не нужно выполнять периодическую проверку наличия необходимых ей данных. Как только соответствующая ин- формация становится доступной, система ИИ извещается об этом тем или иным способом. > Внедрение определений функций в код (function inlining). Эта технология позво- ляет разделять интерфейсы, при этом (в случае необходимости) обеспечивая их оптимизацию компилятором. Данная технология лучше всего подходит для небольших функций, однако для разделения интерфейсов могут использо- ваться и функции с достаточно объемным кодом. > Частная оптимизация (custom optimization). Нередко используется для ускорения обработки запросов. Например, если мир игры разделить на несколько участ- ков, то при прорисовке сцен нужно будет проверять видимость не всех объектов игрового мира, а лишь тех, которые относятся к нескольким участкам. > Пакетирование (batching). Данная технология означает накопление несколь- ких запросов или операций, с тем чтобы они впоследствии могли быть выпол- нены все сразу, а не по отдельности. Метод выполнения зависит от реализа- ции игровой машины. Как правило, он выбирается так, чтобы можно было обеспечить оптимальное использование памяти.
64 Часть I. Общие сведения При надлежащем применении описанные выше технологии позволяют значи- тельно снизить накладные издержки, связанные с обменом информацией между системой ИИ и игровой машиной, а также облегчить применение формальных ин- терфейсов и “подготовить почву” для реализации воплощения аниматов. Обучаемость Обучаемость — это второе свойство аниматов и вторая важная характеристика перспективных систем ИИ. Это свойство позволяет освободить проектировщика от ручной настройки поведения анимата, автоматизируя этот процесс с помощью спе- циальных методик адаптации и оптимизации. Определение Живые существа, независимо от того, как они ведут себя в реальном мире, посто- янно получают достаточно большой поток данных от сенсоров. Биологические суще- ства обладают способностью накапливать эту информацию и использовать ее с целью адаптации своего поведения. Поэтому нет никаких причин для того, чтобы подобная способность к обучению отсутствовала у аниматов, поскольку они также получают по- ток информации из внешней среды, которую они могут интерпретировать. Обучаемость — это способность к приобретению новых знаний и навыков. В соответствии с этим определением, существует две разновидности обучаемости: информационная и поведенческая. Эти два вида различаются между собой по конеч- ному результату, хотя различия эти не очень существенны. Действительно, очень часто полученные знания проявляются в виде определенных поведенческих реакций, а по- веденческие реакции могут проявляться в виде знаний. Поэтому, по большому счету, если смотреть только на конечные проявления, обе разновидности обучаемости можно рассматривать как одно и то же свойство. Однако с практической точки зрения удобнее различать эти две разновидности. Выражаясь техническим языком, у анимата имеется часть, которая не подвергается изменениям, — филогенетическая (phylogenetic) и изменяемая часть, способная при- спосабливаться к условиям окружающей среды, — онтогенетическая (ontogenetic). Ес- ли во время работы программы происходит динамическое изменение самой системы ИИ, адаптация называется прямой (direct), а если нет — косвенной (indirect) [50]. (Как и в предыдущем случае, граница, разделяющая эти два понятия, достаточно условна.) Мотивация Использование обучаемости в компьютерных играх может идти по одному из двух возможных сценариев. При этом обучаемость (т.е. способность анимата к обу- чению) в каждом случае обознача ется отдельным термином; первый больше подхо- дит для стадии разработки, а второй — к собственно игровому процессу. > Оптимизация (optimization) имеет место в тех случаях, когда нужно найти но- вое решение уже известной задачи. Особенно часто она используется для уп- рощения процесса разработки, поскольку благодаря обучаемости можно по- лучить лучшее решение за меньшее время, чем при ручной “подгонке”.
Глава 2. Проблемы проектирования интеллекта 65 > Адаптация (adaptation) связана с обучением в незнакомой ситуации и с поис- ком любого более или менее приемлемого решения. Адаптация требует, чтобы система ИИ постоянно себя обновляла (например, для того чтобы приспосаб- ливаться к различным стилям игры разных пользователей). По большому счету, оба эти сценария также можно рассматривать как два прояв- ления одной и той же проблемы! Действительно, одну и ту же задачу можно решить как по первому сценарию, так и по второму. Тем не менее эти два сценария исполь- зования обучаемости лучше применять каждый в своей проблемной области. При проектировании системы ИИ эти различные сценарии использования и реа- лизации обучаемости, конечно же, можно и нужно учитывать. Оптимизацию чаще всего проще интегрировать в производственный цикл в качестве полезного инстру- мента, облегчающего создание достоверных персонажей. Адаптация, в свою оче- редь, в более значительной степени зависит от архитектуры игры, поэтому к ее реа- лизации необходимо подходить с большей осторожностью. Технологии Для реализации обоих сценариев моделирования обучаемости аниматов в играх могут использовать различные технологии, основанные на теории ИИ: нейронные сети (neural network), деревья принятия решений (decision tree), генетические алго- ритмы (genetic algorithm), обучение с подкреплением (reinforcement learning), систе- мы классификаторов (classifier systems) и т.д. Все эти технологии в той или иной сте- пени будут рассмотрены в этой книге. С концептуальной же точки зрения можно выделить лишь четыре категории алгоритмов. > Контролируемое обучение (supervised learning) может осуществляться в том слу- чае, если соответствующим алгоритмам предоставляются необходимые при- меры. Помимо накопления фактов или поведенческих реакций, такие алго- ритмы умеют распознавать типовые образы или шаблоны в предоставленных для обучения примерах. В результате происходит обобщение (generalization), благодаря которому на определенном этапе алгоритмы начинают успешно справляться с корректной обработкой незнакомых им примеров. > Обучение с подкреплением (reinforcement learning) происходит в том случае, ес- ли каждое действие анимата оценивается по определенной шкале без предос- тавления каких-либо конкретных примеров. Полученные оценки используют- ся для организации обратной связи, которая позволяет со временем адаптиро- вать то или иное правило к конкретной ситуации. > Эволюционные подходы (evolutionary approach) сводятся к получению скаляр- ной оценки за определенную последовательность действий. Иными словами, при их использовании выполняется оценка не конкретного действия или движения, а всего эпизода в целом. > Свободное обучение (unsupervised learning) не связано с непосредственным обучением как таковым. Вместо этого проектировщик создает высокоуровне- вые цели, например оценку достигнутых результатов. Естественно, все перечисленные выше категории алгоритмов можно интегриро- вать между собой или даже можно использовать алгоритмы одной категории д ля ре- шения задач, относящихся к реализациям алгоритмов другой категории (например,
66 Часть I. Общие сведения обучение с самоконтролем). Выбор конкретных категорий алгоритмов и их комби- наций происходит после того, как на этапе проектирования четко сформулирована проблема, которую эти алгоритмы должны решать. Любой алгоритм обучения (независимо от наличия или отсутствия контроля) можно применить к анимату несколькими различными способами. > Преподавание (teaching) — обучение с участием человека, предлагающего ряд примеров, которые помогают анимату сформировать у себя нужные препода- вателю устойчивые поведенческие реакции. > Подражание (imitation) — обучение, при котором анимат копирует действия другого игрока (обычно человека). Иными словами, анимат может обучиться основным поведенческим реакциям на основе стороннего опыта. > Формирование (shaping) — обучение идет в виде решения задач, уровень слож- ности которых постепенно возрастает. Когда анимат начинает справляться с простыми задачами, ему предлагают более сложные. > Метод проб и ошибок (trial and error) — анимат помещается в естественную среду обитания, где он должен самостоятельно обучиться правильным пове- денческим реакциям, используя все доступные ему подходы. Каждый из перечисленных выше методов можно применить как на этапе разра- ботки, так и в ходе собственно игры. В этой книге они часто используются для ре- шения различных практических проблем без акцентирования особого внимания на том, что тот или иной метод относится к методам обучения. Тем не менее, глава 35, “Проектирование обучающихся средств ИИ”, посвящена исключительно вопросам проектирования и технической реализации систем, использующих эти методы. Для скептиков Ключевым фактором интеграции обучаемости в игры является разумное отноше- ние к этому свойству, поскольку некоторые навыки и поведенческие реакции плохо подходят для обучения. Иными словами, потребность в некой “статичной” системе ИИ никогда не исчезнет, даже если она будет играть всего лишь роль соединитель- ной ткани между адаптивными компонентами. Тем не менее, достоинства обучаемости неоспоримы! Способность анимата к обу- чению не только позволяет разработчику сэкономить немало времени, но и повышает привлекательность игры за счет реализации интересных проектных решений. С другой стороны, реализация обучаемости достаточно проблематична с точки зре- ния обеспечения требуемой производительности программного кода игры. Но здесь мы можем воспользоваться таким замечательным свойством методов обучения, как их органичное соединение с другими решениями. Это позволяет проектировщику моди- фицировать результаты, полученные в ходе обучения, а также просто подменять их нужными значениями. В этой книге используются подходы, позволяющие применять неявный контроль к обучению и явный контроль к его результатам. Наконец, тот факт, что упомянутые выше методы могут применяться для обуче- ния определенным знаниям или поведенческим реакциям (как в ходе разработки, так и в процессе самой игры), а также наличие широкой палитры различных методов реализации обучения, вне всякого сомнения, означает, что для любой задачи можно подобрать вполне адекватное решение, основанное на обучаемости аниматов.
Глава 2. Проблемы проектирования интеллекта 67 Требуемый уровень подготовки Прежде чем переходить к обсуждению процесса создания аниматов в играх, сле- дует немного поговорить о том, какими знаниями и навыками должны обладать раз- работчики систем ИИ. Эта книга была написана для читателей, имеющих опыт не- скольких лет разработки программного обеспечения. Однако умения программиро- вать для создания систем ИИ недостаточно, поскольку такие системы находятся где- то между основной игровой машиной и данными ИИ. Кроме того, инженер по сис- темам ИИ должен общаться на равных как с другими программистами, так и с про- ектировщиками, нередко выступая в роли арбитра при решении сложных вопросов. Программирование Умение программировать — это, конечно же, очень важный навык для разработ- чика систем ИИ. Чем глубже познания разработчика в теории и практике програм- мирования, тем проще ему будет найти решение в сложных задачах, которые могут возникнуть при создании системы ИИ. Большинство программистов смогут создать рудиментарный код, управляющий несобственным персонажем, даже без знания теории ИИ. Иными словами, вряд ли для кандидата на должность разработчика ИИ навыки программирования будут “узким местом”. . ПРИМЕЧАНИЕ > С целью упрощения понимания все примеры, иллюстрирующие в данной книге теоретические вы- $ кладки, приведены на псевдокоде. Это позволяет реализовать их практически на любом современном языке программирования. Однако поскольку подавляющая часть программного кода, находящегося 4 на Web-узле книги, написана на языке C++, большинство программных конструкций псевдокода заим- ; ствовано именно из этого языка. Компьютерные науки Как правило, у большинства программистов практические навыки программиро- вания основываются на более или менее обширных знаниях теории компьютерных наук. Если кандидат на должность разработчика системы ИИ свободно владеет тех- никой работы со структурами данных (например, списками, деревьями и графами), а также знает соответствующие алгоритмы, это в значительной степени облегчит ему решение стоящей перед ним задачи. Однако если у вас подобных знаний и навыков нет, не волнуйтесь — всю необходимую теорию и примеры ее практического ис- пользований вы найдете в этой книге. Математика Математика — это очень важная область знаний д ля программиста ИИ. Подобно тому, как программист движков трехмерной графики должен знать геометрию, что- бы выжать все из соответствующего графического API, так и программист ИИ, сво- бодно оперирующий математическими формулами, сможет интегрировать в своей системе все передовые идеи, почерпнутые из академической среды. Кроме того, знание математики поможет ему не только в реализации, но и в оптимизации теоре- тических аспектов каждого алгоритма. Конечно, можно, не вдаваясь в детали, про-
68 Часть I. Общие сведения сто реализовать примеры, приведенные в виде псевдокода. Однако если вы хотите по-настоящему разобраться в теме, вам не стоит избегать погружения в теорию. Эта книга для увлеченных читателей представляет собой настоящий кладезь знаний, ко- торый позволит им не только разобраться в современных теориях ИИ, но и внести в их развитие личный вклад. Инженерия программного обеспечения Проектирование интеллектуальной системы, предназначенной для управления существом в сложном трехмерном мире, — задача не из легких. Поэтому чем больше общеупотребительных шаблонов проектирования (design pattern) будет применено для решения этой задачи, тем проще будет создать проект системы. В этой книге описы- ваются шаблоны проектирования, которые чаще всего используются в системах ИИ, а также способы их модификации для решения различных задач. Архитектура игровой машины Прежде чем начать работу над системой ИИ, нужно выполнить некоторые пред- варительные приготовления. В подавляющем большинстве случаев подготовитель- ная фаза сводится к созданию архитектурного проекта игровой машины с указанием взаимосвязи этой машины с системой ИИ. Как правило (особенно в тех случаях, когда в игре решены вопросы поддержки персонажей, представляющих игроков- людей), последняя задача не представляет особой сложности. Если на начальных этапах разработки было создано хорошее каркасное программное окружение (software framework), вполне можно получить программный код ИИ, не об- ладая глубокими познаниями нюансов работы основной игровой машины. В главе 4, “FEAR: платформа для экспериментов”, представлено такое каркасное окружение, ко- торое будет использоваться в качестве основы в последующих главах настоящей книги. Это каркасное окружение будет очень хорошим подспорьем для тех читателей, кото- рые только изучают основы создания систем ИИ или хотят поэкспериментировать с различными аспектами таких систем. В профессиональных игровых проектах архитектура игры создается группой разра- ботчиков на подготовительной стадии, еще до начала написания программного кода. Поэтому начинающий программист систем ИИ всегда может рассчитывать на помощь более опытных коллег, которые подскажут ему, как лучше спроектировать и реализо- вать такую систему. Чем интенсивнее будет взаимодействие между разработчиком сис- темы ИИ и другими участниками рабочей группы проекта, тем более качественным получится результат. Иными словами, если вы лишь недавно занялись созданием сис- тем ИИ — не стесняйтесь обращаться к коллегам по мере необходимости. Производственный цикл создания системы ИИ Разработка системы ИИ (да и всей игры в целом) в большинстве современных игровых проектов организована, мягко говоря, по неформальным принципам. По- этому даже если разработчики такой системы вначале горят желанием создать код, опирающийся на строгие научные принципы, и в конце получают безупречно рабо-
^laiattaus,^. Глава 2. Проблемы проектирования интеллекта 69 тающую систему, нередко оказывается, что в этом коде наука уступает место импро- визациям (особенно на стадиях экспериментирования). Фактически сложилось так, что многие разработчики, единожды выработав для себя какой-то один подход, применяют его с незначительными модификациями во всех разработках, не особен- но задумываясь о теории и научных принципах. Если вспомнить о том, что различ- ные задачи требуют для своего решения различных научных методов, не удивитель- но, что системы ИИ во многих играх “хромают на обе ноги”. На рис. 2.1 представлена попытка формализации производственного цикла соз- дания системы ИИ. В показанной на этом рисунке схеме изображены типичные производственные операции, необходимые для моделирования одной уникальной поведенческой реакции. В процессе производства неизбежно возникают ситуации, в которых разработчикам приходится возвращаться назад и повторять все сначала, поэтому на рис. 2.1 показаны лишь самые важные переходы, обеспечивающие при производстве обратную связь. Рис. 2.1. Организация типичного производственного цикла при создании системы ИИ Конечно, модель организации производства, представленная на рис. 2.1, далека от совершенства, но лучше уж такая модель, чем вообще никакой! Во всяком случае, в книге материал будет излагаться именно в соответствии с этой моделью. В после- дующих главах мы разберем каждый этап более детально, а пока лишь бегло прой- демся по ним с целью ознакомления с процессом создания системы ИИ в целом. Основные этапы производства В начале производственного цикла создания системы ИИ выполняются два не- формальных подготовительных этапа.
70 Часть I. Общие сведения > Этап анализа, на котором описываются имеющиеся архитектурно-проектные решения, а также определяются особенности базовой аппаратно-программной конфигурации (платформы), которые могут повлиять на решение общей задачи. Эти решения и особенности описываются в терминах ограничений и техниче- ских условий. > Этап разработки технических предложений, на котором четко формулируется проблема, подлежащая решению в ходе разработки, а также вырабатываются высокоуровневые критерии оценки качества полученной системы, которые впоследствии будут применяться в ходе тестирования. Затем наступает черед двух формальных подготовительных этапов. > Этап эскизного проектирований предназначен для определения интерфейса МвЖДУ системой ИИ и игровой машиной. Этот интерфейс используется в ка- честве “черного ящика”, в котором будет скрыта механика системы, реали- зующая найденные решения. > Этап исследований нужен для анализа существующих методов реализации ИИ, а также выработки новых методов на основе теории ИИ в форме, которую можно использовать в производстве (программный код, блок-схемы, доку- ментация и т.п.). По завершении подготовительных этапов начинаются этапы программирования. > Этап разработки заключается в реализации теории в виде технического проекта (техзадания), в соответствии с которым создается программный модуль ИИ. > На этапе апробации полученный в ходе разработки программный модуль ис- пользуется для решения проблемы на основе определенного в эскизном про- екте интерфейса и с учетом выработанных технических требований. Затем начинается основный цикл тестирования. > На этапе экспериментирования работающую систему последовательно прого- няют через ряд неформальных тестов, позволяющих выявить недостатки, со- хранившиеся в программном коде или логике из предыдущих итераций. > Этап тестирования состоит из формальных тестов, предназначенных для тща- тельного изучения работоспособности системы, достигшей в ходе итерацион- ных экспериментов состояния кандидата на релиз. После создания релиза системы начинается завершающий этап постпродакшн. > Этап оптимизации предназначен для внесения несущественных изменений в ре- лиз системы, улучшающих качество его работы. Еще раз отметим, что данную схему организации производственного цикла не стоит рассматривать как единственно правильную и незыблемую, поскольку создание несобственного персонажа — это сложный и подчас непредсказуемый процесс. Поэтому следует воспринимать приведенную выше разбивку на этапы не как догму, а как руково- дство к действию, внося в нее изменения в со.гглтспши с конкретной ситуацией. Однозначно можно сказать лишь одно — любая попытка формализации произ- водственного цикла приводит в конечном итоге не только к снижению стоимости проекта и длительности его реализации, но и к повышению его качества [71].
Глава 2. Проблемы проектирования интеллекта 71 Итерации Как видно из рис. 2.1, создание системы ИИ (как, впрочем, и любой другой про- граммной системы) основано на итеративном принципе. Использование итераций неизбежно, учитывая сложность самой задачи, однако их количество можно умень- шить как за счет хорошо продуманной архитектуры всей игры в целом, что позволит получить достаточно гибкий интерфейс с системой ИИ, так и за счет правильной организации производственного цикла. Следует отметить, что вся приведенная на рис. 2.1 схема относится к моделиро- ванию одной поведенческой реакции. Однако в реальных играх нередко приходится иметь дело с моделированием нескольких таких реакций! Что ж, в таких случаях нужно повторить весь процесс сначала, а также добавить еще один цикл итераций на более высоком уровне, на котором происходит объединение полученных реакций в одной модели. Такой подход применяется при создании всех современных игр с системами ИИ. Его, конечно же, можно улучшить, применив, например, метод кон- вейерного программирования (software factory), о котором рассказывается в [71], а так- же используя улучшенный архитектурный проект системы ИИ, о чем пойдет речь в следующей главе. Резюме В данной главе мы увидели, что разработка систем ИИ — это типичная инженер- ная задача. При этом мы установили, что в настоящее время решение этой задачи характеризуется следующими факторами. > Требования к системе и цели проектирования должны быть выражены в ко- личественных показателях. > Системы ИИ, создаваемые при традиционном подходе, являются жестко рег- ламентированными и очень тесно интегрированными с игровой машиной. Последние достижения в создании систем ИИ, продемонстрированные в ряде новых игр, используют значительно больше методик из области теории ИИ, чем при традиционном подходе. Основной тенденцией развития таких систем является соз- дание воплощенных аниматов, способных к обучению. > Надлежащим способом реализованное воплощение позволяет улучшить пове- денческие реакции аниматов и снизить потребность в их “ручной доводке”. > Воплощение, кроме того, позволяет формализовать интерфейсы между телом анимата и его мозгом, что, в свою очередь, предоставляет разработчику воз- можность отделить ИИ от движков логики и имитации. > Обучаемость может реализовываться в различных формах, каждая из которых может применяться к разным ситуациям. > Обучение может быть как контролируемым, так и свободным. Однако реализовать перспективный подход, вкратце рассмотренный в этой главе, как выясняется, достаточно сложно.
72 Часть I. Общие сведения > Разработчиков должны обладать довольно обширными знаниями и навыками. В частности, в этой книге подразумевается, что ее читатели достаточно хоро- шо владеют навыками программирования. > Общая схема организации производственного цикла при создании системы ИИ понятна, однако она представляет собой лишь некий образец, нуждаю- щийся в подгонке под конкретные задачи. > Производственный цикл создания системы ИИ, как и создания самой игры, должен быть организован в виде последовательных итераций с обязательным тестированием достигнутого результата по окончании очередной итерации. В следующей главе речь пойдет об архитектуре системы ИИ и лежащих в ее осно- ве методах моделирования, основанных на реакциях. Прочитав эту главу, вы узнае- те, как использование таких методов позволяет улучшить конечный результат при разработке игр.
^aiattaus,^. Гпава 3 Подход, ОСНОВАННЫЙ НА РЕАКЦИЯХ В ЭТОЙ ГЛАВЕ, • Определения • Поведение: планирование или моделирование реакций • Использование методов, основанных на рефлексах • Архитектурные решения • Резюме Все описанные в этой книге технологии ИИ и методы моделирования поведения аниматов обладают одной общей чертой — все они основа- ны на использовании реакций. Подход, основан- ный на реакциях, идеален для компьютерных игр, поскольку он одновременно и прост, и эффекти- вен. Кроме того, предсказуемость поведения пер- сонажей, получаемого при подобном подходе, это также еще одно достоинство, значение которого для проектирования и тестирования трудно пере- оценить. Следует заметить, что, вопреки распро- страненному мнению, системы ИИ, основанные на реакциях (которые называют также активизи- руемыми системами ИИ), вполне могут проявлять недюжинную компетентность, во многих случаях преобладая над системами, основанными на пла- нировании. В этой главе рассказывается о том, как спроектировать систему ИИ, объединяющую в себе компоненты, которые реализуют подход, основанный на реакциях. В разделах этой главы рассматриваются сле- дующие вопросы. > Определение термина основанный на реак- циях (reactive) с точки зрения математики и практики создания игр. > Различие между методами, основанными на реакциях, и методами, основанными на планировании, а также два разных подхо- да к решению одинаковых проблем. > Преимущества использования в играх ак- тивизируемой системы ИИ. > Архитектура, основанная на реакциях, ко- торая объединяет различные технологии и методы моделирования поведения.
74 Часть I. Общие сведения Технологии, основанные на реакциях, позволяют при моделировании ИИ до- биться впечатляющих результатов, что было уже неоднократно продемонстрировано в целом ряде лучших компьютерных игр. Однако прежде чем перейти к рассмотре- нию достоинств и недостатков этого подхода, сначала нужно понять, в чем состоит суть активизируемой системы ИИ. Определения Дать определение термину основанный на реакциях (reactive) можно двумя спосо- бами. Первое определение более академичное и формальное, которое, несмотря на его теоретическую строгость, сложно применить на практике. Второе определение представляет собой расширенный вариант трактовки первого. Хотя во втором случае мы слегка отклоняемся от строгой теории, но зато получаем возможность ее практи- ческого применения. Академическое определение Все компоненты системы ИИ, независимо от их природы, воспринимают вход- ные сигналы, или просто вход (input), и выдают выходные сигналы — выход (output). В активизируемых системах ИИ выход обладает одним важным свойством, а имен- но: для каждого конкретного входа он всегда остается неизменным. Это чем-то напоминает математическое определение функции (рис. 3.1): каждой конфигурации элементов множества определений (вход) соответствует только одна конфигурация элементов множества значений (выход). Конечно, функции могут принимать разные величины входа и возвращать разные величины выхода, однако суть от этого не меняется — имеется однозначное соответствие конфигураций эле- ментов входа и выхода. Детерминированное отображение Входные Выходные конфигурации конфигурации Рис. 3.1. Однозначное соответствие выхода входу — основное свойство активизируемых систем ИИ. Это соответствие является детермини- рованным, поскольку оно исключает любую неопределенность. Каждому входу соответствует только один выход, но любой выход может иметь несколько входов (функциональная зависимость вида “многие к одному”)
Глава 3. Подход, основанный на реакциях 75 Часто в литературе можно встретить обозначение подобной разновидности функ- циональных зависимостей как многие к одному (many-to-one). Но поскольку каждому входу соответствует один и только один выход, любая неопределенность исключена. Иными словами, мы можем полностью предсказать реакцию выхода, зная вход. По- добные компоненты называются также детерминированными (deterministic). С практической точки зрения поведение, основанное на реакциях, сводится к вы- полнению одних и тех же операций при повторении одной и той же ситуации. Компо- нент, основанный на реакциях, всегда принимает одни и те же решения и генерирует один и тот же выход, а^тветствующий каждому конкретному входу. Как легко понять, такое поведение как нельзя лучше подходит для использования в компьютерных играх, поскольку проектировщикам (не говоря уже о продюсерах) всегда хочется видеть пред- сказуемый результат. Практическое определение Итак, как было показано в предыдущем разделе, с теоретической точки зрения к ком- поненту, основанному на реакциях, неприменимо такое понятие, как состояние (state). Это объясняется тем, что такие компоненты (опять-таки, с точки зрения теории) не об- ладают памятью. Если бы они сохраняли информацию о состоянии, тогда соотношение между множеством определений и множеством значений не было бы детерминирован- ным. Иными словами, если выход зависит от значения переменных состояния, то одно- му и тому же входу могут в общем случае а >ттветстовать разные выходы. Не вдаваясь в подробности, попутно заметим, что то же самое относится и к ком- понентам с внутренней обратной связью — с теоретической точки зрения они не яв- ляются компонентами, основанными на реакциях. Действительно, если предыдущее выходное значение используется для определения последующего выходного значе- ния, тогда один и тот же вход может в результате дать разные выходы. Таким обра- зом, в обоих случаях (компоненты с состоянием и компоненты с внутренней обрат- ной связью) мы имеем дело с недетерминированностью. Однако, применив небольшое допущение, мы можем рассматривать все подоб- ные системы как активизируемые системы (рис. 3.2). Суть этого допущения сводит- ся к тому, чтобы рассматривать внутреннее состояние или обратную связь как до- полнительный вход. И мы тут же получаем соответствие, основанное на реакциях! Это небольшое ухищрение позволяет нам избавиться от неоднозначности, делаю- щей компоненты недетерминированными. Поэтому на практике компоненты с несколькими состояниями или с обратной связью можно также рассматривать как компоненты, основанные на реакциях. Бо- лее того, это допущение распространяется даже на те компоненты, у которых соот- ветствие входов и выходов определяется с небольшим влиянием вероятностных фак- торов — для этого случайную величину нужно просто представить в виде дополни- тельного входа.
76 Часть I. Общие сведения Внутреннее состояние Состояние < Входы< ► Выходы Рис. 3.2. Недетерминированный компонент можно рассматривать в качестве компонента, основанного на реакциях, если переменные внутреннего состояния представить как часть входа. При этом состояние можно также обновлять на основании реакций Поведение: планирование или моделирование реакций Существует одна довольно интересная теория о том, что биологический интеллект, в том числе даже у людей, практически не использует планирование [37]. Во всяком случае совершенно точно можно сказать, что ни животные, ни насекомые заранее не планируют своих действий. В подавляющем большинстве случаев иллюзия интеллек- туального поведения живых существ создается на основе их реакций на внутренние или внешние условия. Именно так эволюция научила их бороться за существование. Конечно, нетрудно доказать, что люди на самом деле умеют планировать. Однако, как ни странно, способность к планированию мы используем гораздо реже, чем следо- вало ожидать. Последние исследования убедительно доказывают, что даже при игре в шахматы или го интуиция используется значительно чаще, чем планирование [4,16]! Целевое планирование Если смотреть с теоретических позиций, то в чем состоит разница между запла- нированными действиями и действиями, осуществляемыми в качестве реакции на определенную ситуацию? Ответ очевиден — при планировании мы должны все за- ранее продумать и предусмотреть само возникновение такой ситуации. Планирование в общем рассматривается как недетерминированный процесс. Сово- купность алгоритмов планирования, которые также иногда называют алгоритмами выбо- ра решения (deliberative algorithms), позволяет из множества различных действий в кон- кретной ситуации выбрать те, которые соответствуют определенным факторам, напри- мер, текущей цели. Алгоритм планирования, перебирая возможные варианты, находит последовательность действий, которая наилучшим образом сос.ггветствует цели. Таким образом, планирование по определению является недетерминированным процессом, поскольку в нем присутствует цель. Но что если мы включим цель в саму
^ialaHauslJk Глава 3. Подход, основанный на реакциях 77 ситуацию, как мы делали с внутренними факторами, рассматривая их в качестве до- полнительных входов? В таком случае мы можем применить методики, основанные на реакциях, и получить точно такие же результаты, как и при планировании. Подобное использование методик, основанных на реакциях, д ля расчетов планов называется планированием, основанным на реакциях (reactive planning). Данный подход отличается от стандартного подхода к планированию, основанного на выборе решения (deliberative planning), при котором с помощью того или иного алгоритма поиска пере- бираются все возможные решения. В общем случаем можно сказать, что под планиро- ванием часто подразумевается именно какой-то алгоритм поиска (рис. 3.3). Рис. 3.3. Планирование позволяет достичь задан- ной цели путем перебора различных вариантов Планирование в играх Существует множество различных методик, позволяющих создавать планы для самых разных ситуаций и областей применения. Однако, как мы выяснили, с теоре- тической точки зрения различия между этими методиками и методиками, основан- ными на реакциях, несущественны и состоят лишь в разных формулировках одной и той же проблемы. Таким образом, оправдывать использование планирования тем, что методики, основанные на реакциях, не позволяют моделировать целенаправ- ленное поведение, по меньшей мере, некорректно. В таком случае возникает вопрос — а нужно ли вообще использовать планирова- ние в играх? Конечно, да. Существует ряд практических проблем, решать которые лучше всего именно с помощью планирования. В частности, планированию следует отдавать предпочтение в тех случаях, когда задача сводится к достижению большого количества целей. Если заменить такие цели дополнительными входами, это приве- дет к резкому увеличению количества входных конфигураций. При использовании методов, основанных на реакциях, применительно к очень сложной задаче придется удерживать в памяти весь комплекс проблем. В подобных случаях лучше применить планирование, в котором для нахождения решения акцент делается не на использо- вание памяти, а на вычисления. Именно к такому классу задач относятся задачи, связанные с перемещениями персонажей в игровом мире. Разработчики игр давным-давно выяснили, что задача так называемого поиска пути (pathfinding) лучше всего решается с помощью методов планирования. Соответствующие алгоритмы позволяют находить на заданной пло- щадке оптимальный маршрут для персонажа. В данном примере компонент, отвечающий за планирование, в действительности обладает полной информацией о площадке. Совокупность соответствующих данных
78 Часть I. Общие сведения часто называют моделью игрового мира (game world model). Как уже отмечалось, нет никаких технических препятствий для применения к этой модели методов, осно- ванных на реакциях. Однако в общем случае такие методы используют очень не- большой объем памяти (т.е. практически не сохраняют информации о состоянии), поэтому компонент, который содержит модель игрового мира, не может быть (во всяком случае, с позиций чистой теории) компонентом, основанным на реакциях. Замена планирования подходом, основанным на реакциях Тем не менее, случаев, когда планирование действительно необходимо, на удив- ление, не так уж много. Во многих ситуациях решения, выносимые на основе реак- ций, получаются очень интеллектуальными (особенно высокоуровневые тактиче- ские решения). Удивительно, что такие “инстинктивные” решения очень близки к тем решениям, которые в повседневной жизни принимают большинство людей. Для того чтобы воспользоваться решениями, основанными на реакциях, а не на спе- циальных алгоритмах выбора, необходимо свойства ситуации использовать в каче- стве входа, а требуемое решение рассматривать в качестве выхода. Фактически даже управление перемещениями можно смоделировать с помощью ме- тодов, основанных на реакциях. Проблему в данном случае следует сформулировать, на- пример, как необходимость избежания препятствий. Затем, используя комбинацию ин- формации о препятствиях и цели перемещения, анимат сможет во многих ситуациях правильно выбрать нужный маршрут. Конечно, в общем случае такой метод моделиро- вания не столь надежен, как метод, основанный на планировании, поскольку алгоритмы поиска пути используют глобальную информацию о всей площадке, а не только о ло- кальных препятствиях. Тем не менее подход, основанный на реакциях, может во многих случаях быть не менее эффективным, чем подход, основанный на планировании. Несмотря на некоторые оговорки, в целом можно сказать, что методы моделиро- вания поведения, основанные на реакциях, представляют собой чрезвычайно на- дежные решения. В комбинации с обучаемостью они могут значительно снизить по- требность в планировании. В тех же немногих случаях, когда алгоритмы выбора ре- шения действительно необходимы, последние также можно улучшить с использова- нием методов, основанных на реакциях, повысив как производительность, так и точность находимых решений. Итак, если польза от повсеместного использования алгоритмов планирования весьма сомнительна, то польза от применения в играх и системах ИИ описываемых в этой книге методов, основанных на реакциях, несомненна. Использование методов, основанных на рефлексах Методы, основанные на рефлексах, или рефлексивные (reflexive) методы, облада- ют целым рядом преимуществ. Фактически, рефлексивные методы в системах ИИ присутствовали в большинстве игр еще с самого начала развития игровой индуст- рии. Как уже было показано выше, эти методы часто расширялись для обеспечения недетерминированности, однако такие расширения несложно привести к форме де- терминированного соответствия.
Глава 3. Подход, основанный на реакциях 79 Применение в стандартных системах ИИ Основное преимущество рефлексивных методов моделирования систем ИИ заклю- чается в том, что они полностью детерминировании. Поскольку для каждой входной конфигурации заранее известна выходная конфигурация, это позволяет в максималь- ной степени оптимизировать нижележащий программный код и структуры данных. Процесс отладки также становится тривиальным, поскольку в случае ошибки найти ее источник достаточно просто. При этом время получения выхода в таких системах практически не зависит от их сложности. Это объясняется тем, что решение представляет собой простую рефлек- торную реакцию, получаемую чуть ли не мгновенно без размышлений и перебора возможных вариантов. Именно поэтому такие активизируемые системы являются практически идеальными для использования в играх. Сегодня известно достаточно много примеров успешной практической реализации подобных систем, причем не только в компьютерных играх. Но, конечно, наибольшее применение такие системы нашли именно в играх, как только в них начали предприни- маться первые попытки моделирования ИИ. Исторически сложилось так, что традици- онные системы ИИ в играх используют одну или несколько следующих технологий. > Машины обработки сценариев (scripts engine) — небольшие программы (как пра- вило, основанные на реакциях), результаты вычислений которых зависят от входных параметров. Обычно для упрощения задачи языки сценариев представ- ляют собой подмножество “настоящих” языков программирования. > Системы, основанные на правилах (rule-based system), представляют собой набо- ры операторов вида if ... then, манипулирующих значениями переменных. Хотя возможности таких систем более ограничены, чем у движков обработки сценариев, они имеют свои преимущества. > Конечные автоматы (finite-state machine) — это основанные на правилах сис- темы, которые можно применять к строго ограниченному набору ситуаций (так называемых состоянии). Условия перехода из одного состояния в другое строго определяются структурой конечного автомата. Эти стандартные технологии создания систем ИИ на практике доказали свою жизне- способность. Особенно часто для решения проблем моделирования ИИ применяются машины обработки сценариев (подробнее об этом говорится в главе 25, “Сценарная поддержка тактических решений”), поэтому их можно с успехом использовать в подоб- ных задачах. Системы, основанные на правилах, (описываются в части II) и конечные автоматы (им посвящена часть IV) также можно создать на основе сценариев. Однако ес- ли подходить к ним с учетом особенностей, присущих таким системам, при их использо- вании можно извлечь дополнительные преимущества. Применение в аниматах Рефлексивный подход позволяет извлечь дополнительные преимущества и при его применении к аниматам, значительно улучшая обучаемость последних, а также упрощая обработку ситуаций, связанных с их воплощением.
80 Часть I. Общие сведения Воплощение При воплощении (embodiment) подавляющее большинство информации, обрабаты- ваемой аниматом, воспринимается им из окружающей среды. Понятно, что для при- нятия интеллектуальных решений эту информацию нужно определенным образом ин- терпретировать. С задачей такой интерпретации локальной информации об игровом мире как раз очень хорошо справляются рефлексивные поведенческие модели. Если предоставить анимату больше информации об окружающей среде, уровень компетенции рефлексивной поведенческой модели можно еще больше повысить. С другой стороны, благодаря хорошо развитым органам чувств, люди весьма успеш- но действуют в своей среде обитания, даже не обладая детальной информацией о ней. Поэтому вместо создания развитой системы ИИ можно пойти по пути предоставле- ния анимату высокоуровневой информации об окружающей среде, как это происхо- дит при получении человеком информации с помощью его органов чувств. Иными словами, таким образом мы повышаем “интеллектуальность” среды, а не сущест- вующих в ней аниматов. Обучаемость Большинство методик обучения базируется на рефлексивных соответствиях спо- собности к обучению. Поэтому если нам нужно по-настоящему воспользоваться обучаемостью, необходимо представить проблему так, чтобы можно было рассмат- ривать ее, как основанную на реакциях. Кроме того, во многих ситуациях оказывается очень удобным, когда систему ИИ можно обучать по образцам: “В такой-то ситуации выполнять такое-то действие”. Для этого лучше всего подходят основанные на реакциях, рефлексивные поведенче- ские модели. Архитектурные решения Проектирование системы ИИ (в том числе и игровой) сводится к увязыванию во- едино нескольких компонентов, каждый из которых не способен справиться с по- ставленной задачей в одиночку. Такие компоненты, предоставляя один другому до- полнительную функциональность и взаимодействуя между собой, все вместе реша- ют поставленную задачу. Схема таких компонентов и их взаимодействия называется архитектурным решением или просто архитектурой (architecture). В тех случаях, когда система управляется сенсорными входами, а ее выходы де- терминированы, можно говорить о том, что она рефлексивна (т.е. основана на реак- циях). Подобные архитектурные решения часто встречаются в системах, которые должны быстро реагировать на внешние запросы или стимулы внешней среды (например, промышленные роботы или бытовые посудомоечные машины). Компоненты Компонент можно представить в виде некоего “черного ящика”, в котором ка- ким-то непостижимым образом работает механика системы ИИ. Еще один метод получения компонентов заключается в объединении в одну подсистему более низко-
EVgtalfagsgit Глава 3. Подход, основанный на реакциях 81 уровневых компонентов. Компоненты взаимодействуют один с другим через интер- фейсы, используя входы и выходы. Как уже отмечалось выше, с теоретической точки зрения не существует различия во внутренней организации компонентов, перебирающих возможные варианты, и рефлексивных компонентов. Интересно также и то, что это правило распростра- няется и на их интерфейсы! Такой подход позволяет заменить любой компонент, основанный на выборе решения, на рефлексивный. Поскольку вся необходимая компонентам информация и в том, и в другом случае передается через интерфейсы, при такой замене изменяется лишь нижележащее технологическое решение. Это очень большое преимущество с точки зрения проектировщика, поскольку он на этапе разработки технического предложения и эскизного проекта игры может не учитывать особенности реализации системы ИЙ. Иными словами, если в процессе разработки окажется, что по каким-то причинам рефлексивный подход себя не оп- равдывает, вместо него можно использовать подход, основанный на выборе реше- ния, не изменяя всего проекта в целом. Еще одним следствием практического применения парадигмы “черного ящика” является то, что во время реализации можно применять компоненты, вложенные один в другой, словно русские матрешки. Это очень важное средство обеспечения модульности системы ИИ. Организация Нетрудно догадаться, что существует великое множество способов объединения разрозненных компонентов в единую систему. Собственно, для выбора наилучшего способа в каждой конкретной ситуации и существует такая дисциплина, как про- граммная архитектура, поскольку взаимоотношения между компонентами зависят от выбранного архитектурного решения. На рис. 3.4 показаны три варианта таких решений с различной внутренней организацией многокомпонентной системы. Рис. 3.4. Различные архитектурные реше- ния для различных типов внутренней орга- низации системы > Система с монолитной архитектурой (monolithic architecture) состоит из еди- ного компонента. > Простая архитектура (flat architecture) системы означает, что такая система со- стоит из нескольких параллельных (т.е. слабо связанных между собой) компо- нентов. > Если компоненты вложены один в другой, тогда мы говорим об иерархической архитектуре (hierarchical architecture).
82 Часть I. Общие сведения В качестве примера реализации иерархической архитектуры в играх можно при- вести модель работы мозга, представляющую собой набор поведенческих реакций (например, охота, бегство, патрулирование), имеющих вид отдельных компонентов. В свою очередь, каждая из таких форм поведения может зависеть от компонентов перемещений и стрельбы. Таким образом, мы получаем трехуровневую иерархию, на верхнем уровне которой находится компонент, моделирующий мозг анимата. Как правило, выбор того или иного архитектурного решения зависит от сложности решаемой проблемы. Для простых проблем можно обойтись монолитной архитекту- рой, для проблем средней сложности уже лучше прибегнуть к простой архитектуре, ну а проблемы высокой и очень высокой сложности лучше решать с использованием сис- темы, основанной на иерархической архитектуре, поскольку только такой подход по- зволит выполнить декомпозицию сложной проблемы на составляющие ее подзадачи. (Соответствующие вопросы более глубоко рассматриваются в главе 21, “Приобретение знаний о задаче”, и главе 28, “Понимание сути решения”.) Декомпозиция Итак, вместо того чтобы пытаться осмыслить сложную проблему в целом (и вы- страивать архитектуру снизу вверх, складывая ее из отдельных компонентов), мы можем попробовать разделить ее сначала на крупные блоки, затем каждый из них разбить на несколько мелких блоков и так далее, превращая каждый из блоков в от- дельный компонент архитектуры. Именно такой подход, который в подавляющем большинстве случаев является стержневым для разработки систем ИИ, и называется декомпозицией (decomposition). Декомпозиция может выполняться разными методами, однако суть их одна — разделение общей сложной проблемы на более простые, частные проблемы по опре- деленным критериям. Критерии, естественно, выбираются такими, чтобы в макси- мальной степени упростить решение задачи. Этот подход зарекомендовал себя как очень надежный как при проектировании обычных программных систем любой сложности, так и при создании систем ИИ игрового программного обеспечения. > При структурной декомпозиции (structural decomposition) разделение проблемы происходит в соответствии с функциональностью каждого компонента. > Поведенческая декомпозиция (behavioral decomposition) означает, что разделе- ние системы на компоненты выполняется по типам действий, проявляемых системой. Применительно к системе ИИ компьютерных игр такими дейст- виями могут быть охота, бегство, поиск оружия или празднование победы. При проведении поведенческой декомпозиции каждой поведенческой реак- ции соответствует отдельный компонент. > При целевой декомпозиции (goal decomposition) в качестве критерия разделе- ния системы на компоненты используется их вклад в достижение основной цели этой системы. В игровых средствах ИИ цели часто зависят от поведенче- ских реакций (например, для того чтобы раздобыть оружие, необходимо за- няться его поиском). Хотя цели не всегда позволяют получить строгие правила для декомпозиции, они все же могут использоваться в качестве основного критерия при принятии решений о разделении системы на компоненты [46].
^ialatiaus^l Глава 3. Подход, основанный на реакциях 83 Естественно, декомпозиция на разных уровнях иерархии может проводиться по разным критериям. Например, для основной проблемы сначала можно применить поведенческую декомпозицию. Затем каждую отдельную поведенческую реакцию можно “разложить” по функциональности, используя при этом разные критерии. Такая декомпозиция называется гибридной (hybrid decomposition) в противовес чис- той декомпозиции (pure decomposition), которая для всей архитектуры выполняется по единому критерию. В наибольшей степени задачам, стоящим перед системами ИИ для компьютерных игр, ссютвстстнует поведенческая декомпозиция. Кроме того, в таких системах часто используется структурная, или функциональная, декомпозиция, поэтому мы ей также уделим внимание в этой книге, когда будем говорить об общих возможностях, исполь- зуемых всеми несобственными персонажами, которыми управляет система ИИ. Арбитраж Допустим, мы выполнили декомпозицию системы на базовые компоненты. Это, конечно, в чем-то упрощает задачу создания такой системы, поскольку разработать отдельный компонент проще, чем всю систему в целом. Однако при практическом применении декомпозиции возникает вопрос: а как связать эти компоненты один с другим? Или, если выражаться техническим языком, как нужно интерпретировать выходы всех компонентов, чтобы из них был сформирован выход всей системы в це- лом? В подавляющем большинстве случаев арбитраж при интерпретации выходов выполняется по одной из следующих четырех схем. > При независимом суммировании (independent sum) выход каждого компонента представлен соотзетствующими выходами всей системы в целом. В таком слу- чае никаких конфликтов вообще не возникает. > Наложение (combination) имеет место в тех случаях, когда все выходы различ- ных компонентов складываются. Получившийся в результате выходной сиг- нал является выходом системы. > Если определенные компоненты обладают более высоким приоритетом, чем другие компоненты, то выходы последних игнорируются. Такой метод арбит- ража называют подавлением (suppression). > При последовательном арбитраже (sequential arbitration) выход системы образу- ется путем периодического использования выходов разных компонентов. Среди перечисленных выше методов арбитража нет ни заведомо правильных, ни заведомо неправильных. Каждый из методов имеет право на использование в ком- пьютерных играх. Примеры На практике “чистые” архитектурные решения встречаются довольно редко. Го- раздо чаще приходится сталкиваться с архитектурами, представляющими собой комбинации нескольких “классических” архитектурных решений. На рис. 3.5 пока- заны две довольно распространенные архитектуры, которые позволяют проиллюст- рировать смешанный подход на практических примерах.
84 Часть I. Общие сведения Архитектура обобщения Рис. 3.5. Две распространенные архитектуры рефлексивных систем Точка Независимые Система голосования Архитектура обобщения Архитектура обобщения (subsumption architecture) получается в результате приме- нения поведенческой декомпозиции. По сути дела, такая архитектура представляет собой частный случай простой архитектуры с подавлением выходов неприоритетных компонентов [11]. Систему, имеющую архитектуру обобщения, можно рассматривать как набор гори- зонтальных уровней. Чем выше уровень, тем больше приоритет компонента. При этом выходы высокоуровневых компонентов подавляют выходы нижележащих компонентов. Эту архитектуру мы рассмотрим подробнее в главе 45, “Реализация интеллектуальных тактических форм поведения”, применительно к поведенческим реакциям, проявляю- щимся в поединках. Система голосования Для создания системы голосования (voting system) следует применить функцио- нальную декомпозицию, а затем в получившейся простой архитектуре использовать наложение выходов. В главе 25, “Сценарная поддержка тактических решений”, сис- тема голосования описывается применительно к задаче выбора оружия. Такую систему можно интерпретировать как набор распределенных компонентов, каждый из которых подключен к небольшому специализированному компоненту, от- вечающему за подсчет полученных голосов. Выход компонента, который набрал мак- симальное количество голосов, представляется в качестве выхода всей системы. Резюме В этой главе рассмотрены основные теоретические положения и некоторые об- щие характеристики подходов к проектированию активизируемых систем ИИ, на- зываемых также рефлексивными. > Рефлексивный компонент обладает детерминированностью соответствия ме- жду входом и выходом.
4\atatiaus^k Глава 3. Подход, основанный на реакциях 85 > Компоненты, обладающие небольшой внутренней памятью, также можно рас- сматривать как рефлексивные, хотя с теоретической точки зрения это не совсем корректно. > Недетерминированные компоненты (т.е. обладающие внутренним состояни- ем) можно представить в виде рефлексивных компонентов, используя для этого дополнительные входы. Кроме того, мы рассмотрели, в чем заключается разница между планированием и использованием рефлексивных поведенческих реакций. > Алгоритмы планирования по своей природе являются недетерминированны- ми, поскольку их выход зависит от цели. > Системы, основанные на планировании, обычно имеют доступ к внутренней модели игрового мира, тогда как активизируемые системы, как правило, та- кого доступа не имеют. > Для ряда задач лучше применять планирование, поскольку оно больше осно- вано на вычислениях, чем на использовании памяти. В этой главе также приведены аргументы в пользу применения рефлексивного подхода к созданию системы ИИ. > Рефлексивные поведенческие реакции лучше соответствуют потребностям ком- пьютерных игр благодаря своей высокой эффективности, надежности и пред- сказуемости. > Рефлексивные поведенческие модели идеальны для аниматов, поскольку они улучшают не только реализацию воплощения последних, но и их обучаемость. > В основе многих сложных систем лежат именно рефлексивные принципы организации. Наконец, в этой главе затронуты особенности иерархических архитектурных ре- шений для многокомпонентных рефлексивных систем. > Компоненты рассматриваются как “черные ящики” с одинаковыми интер- фейсами, независимыми от их внутренней реализации. При этом также счита- ется, что вложенность компонентов прозрачна д ля разработчика. > Системы с рефлексивной архитектурой нужно применять в тех случаях, когда требуется быстрая реакция на внешние запросы или стимулы внешней среды. > Существуют различные методы проведения декомпозиции проблемы для полу- чения архитектуры, упрощающей разработку системы применительно к кон- кретной ситуации. > Существует несколько подходов для интерпретации выхода многокомпонент- ной системы. В следующей главе речь пойдет о том, как все изложенные в этой и предыдущих главах идеи применить на практике с тем, чтобы значительно упростить задачу соз- дания несобственных персонажей.

^lataMaus,^. Гпава 4 FEAR: платформа ДЛЯ ЭКСПЕРИМЕНТОВ В ЭТОЙ ГЛАВЕ, • Технические сведения • Интерфейс с внешним миром • Модули • Гибкая архитектура • Создание анимата • Резюме Создание игровых средств ИИ — как правило, задача не из легких. Однако основная слож- ность заключается не столько в реализации мето- дик моделирования ИИ, сколько в интеграции уникальных алгоритмов конкретной задачи (или даже покупного интерфейсного программного обеспечения) с игровой механикой и соответст- вующим программным кодом. Эти сложности яв- ляются неизбежным следствием современных под- ходов к разработке архитектуры игровых машин. Поэтому решение данной проблемы лежит не столько в улучшении подходов к проектированию и реализации собственно системы ИИ, сколько в улучшении подходов к проектированию всей иг- ры в целом. В этой книге рассматривается пример создания реальной игры, что позволяет увидеть все пробле- мы, связанные с разработкой системы ИИ на прак- тике. Этот пример не имеет ничего общего с систе- мами, блестяще демонстрирующими технологиче- ские прорывы “в искусственной среде”, или чисто академическими игровыми системами, позволяю- щими “насладиться” игровой механикой, работая в командной строке. Для решения столь амбици- озной задачи, как исследование реальной совре- менной системы ИИ, используется проект с от- крытым программным кодом FEAR. Созданная на его основе система ИИ интегрируется с коммерче- ской игровой машиной со стрельбой от первого лица (First-Person Shooter— FPS). На рынке име- ется немало достаточно неплохих игр, созданных по подобной технологии, однако они уступают рас- сматриваемому в данной книге примеру с точки зрения гибкости настройки системы ИИ. В част- ности, программная среда FEAR предоставляет разработчику следующие возможности.
88 Часть I. Общие сведения > Интерфейсы взаимодействия с внешним миром, которые позволяют системе ИИ обмениваться информацией с игровой машиной (в частности, подсисте- мами имитации физики игрового мира, а также игровой логики). > Модули, которые реализуют функциональность ИИ как без привязки к дру- гим модулям, так и на основе других модулей. > Гибкая архитектура, позволяющая инженерам собирать единую систему из разрозненных компонентов. > Инструменты для создания аниматов с соотвегствуклцими исходными программ- ными файлами, что позволяет свести к минимуму ручное программирование. И этим перечень возможностей платформы FEAR далеко не исчерпывается. Та- ким образом, FEAR — это идеальная “учебно-производственная база” для примеров данной книги, которая вполне может использоваться не только для обучения, но и для создания как минимум натурных макетов вполне серьезных игровых проектов. Технические сведения Итак, эта книга базируется на использовании программной среды FEAR (Flexible Embodied Animat 'Rchitecture). Разработка этой среды ведется по принципам созда- ния открытого исходного кода, что обеспечивает возможность достаточно простого переноса создаваемых на ее основе систем ИИ на другие платформы, а также инте- грацию их в игровые проекты. Весь программный код, представленный в этой книге (как код модулей ИИ, так и код примеров готовых аниматов), компилировался исключительно на платформе FEAR. На Web-узле этой книги (http: / /AuGameDev. com) содержатся подробные указания о том, как установить программную среду FEAR на компьютер. Следует заметить, что эта книга является учебником по проектированию систем ИИ, а не техническим руково- дством по использованию FEAR. Поэтому, если вам нужна более подробная информа- ция о нюансах функционирования FEAR или если вы хотите поинтересоваться ходом этого проекта в целом, обращайтесь по адресу http: / / fear. s f. net. В основу программной среды FEAR положены многие принципы, описанные в этой книге, а также ряд других базовых принципов разработки архитектуры про- граммного обеспечения. Поэтому среду FEAR можно рассматривать как наглядное представление одного из возможных методов реализации этих теоретических прин- ципов на практике. Спецификации Для описания всех аспектов системы ИИ в программной среде используются высо- коуровневые спецификации [24]. Для этих целей в FEAR задействован проблемно- ориентированный язык (domain-specific language) начального уровня, основанный на XML. Поскольку в основе любой системы ИИ лежит манипуляция данными на разных уровнях, с<х»тветствующие операции формализованы по трем следующим категориям.
Глава 4. FEAR: платформа для экспериментов 89 > Интерфейсы предоставляют набор доступных для вызова функций (с помощью входов и выходов), передаваемых сообщений, определений типов и объявлений констант. > Модули представляют собой реализацию интерфейсов. Большинство интер- фейсов подключается во время выполнения (иными словами, они реализова- ны на C++), однако хранение постоянных данных можно также рассматри- вать как интерфейс с файловой системой (например, запись бинарных файлов во время завершения работы). Для формализации взаимозависимостей между модулями каждый модуль снабжается интерфейсами импорта и экспорта. > Архитектурные решения создаются на основе низкоуровневых компонентов (экземпляров модулей), собранных в иерархической модели. В основе такой иерархии, как правило, находится мозг (brain) анимата. Эти высокоуровневые определения обрабатываются специальным набором инст- рументов для получения заготовок исходных файлов по заранее подготовленным шаблонам. Такой подход получил название метапрограммирования (также известен под названием метода автоматической генерации кода). Это позволяет программи- сту, подготовив новые спецификации (например, модули и интерфейсы), тут же подключить их к FEAR с минимальными потерями времени на кодирование вруч- ную, поскольку все работы по созданию модулей и привязке их к имеющейся про- граммной среде уже автоматизированы. Программная среда Назначение программной среды (framework) — реализация спецификаций. Строго говоря, FEAR не представляет собой некую программную среду в полном смысле этого термина, а предоставляет программисту простой интерфейс API, которым ему рекомендуется пользоваться при создании системы ИИ [23]. Таким образом, разра- ботчик может создавать систему в соответствии со своими предпочтениями (например, статическую или динамическую либо придерживаясь того или иного стиля программирования на C++). Подобная гибкость обеспечивается за счет пред- ставления отдельных частей программной среды в виде шаблонов (template), обраба- тываемых инструментами генерации исходного кода. Таким образом обеспечивается получение нестандартной системы на уровне заготовок модулей и интерфейсов. Описываемую программную среду можно привязать практически к любой ситуа- ции. В настоящее время рабочая группа проекта FEAR занимается созданием дина- мической программной среды C++, что обеспечивает высокую гибкость при ини- циализации. В данной книге описана именно эта программная среда, поскольку она идеально подходит для обучения и создания экспериментальных натурных макетов. Это позволит настроить и загрузить рассматриваемый в книге код демонстрацион- ных аниматов с минимальными затратами времени на перекомпиляцию или вообще без таковых. Статическая программная среда C++ будет отличаться от динамической тем, что в статической среде будет отсутствовать вся настройка во время выполнения с целью повышения скорости работы. На момент написания данной книги рабочая группа проекта FEAR работает над такой статической программной средой, которая будет полностью совместима с API и шаблонами проектирования (design templates), исполь-
90 Часть I. Общие сведения зуемыми в динамической среде. Отличие состоит лишь в том, что архитектурные решения и модули будут жестко связаны между собой в программном коде с целью сведения к минимуму накладных расходов, вызванных поздним связыванием на этапе выполнения. Ход разработки Проект РЕАК'был запущен в начале 2002 года. На первых порах он предназна- чался лишь для поддержки других проектов по созданию аниматов. Однако вскоре стало понятно, что этот проект вполне заслуживает того, чтобы перевести его из вспомогательной категории в категорию независимых проектов. За прошедший пе- риод проект пережил три существенные переработки, и на момент написания дан- ной книги подавляющая часть всех работ (как исследовательских, так и производст- венных) уже закончена. Иными словами, программный код проекта можно считать достаточно зрелым для использования, как минимум, в учебных и исследователь- ских целях. Целью проекта FEAR является получение универсальной программной среды для создания систем ИИ в современных компьютерных играх. Разработчики проекта будут рады выслушать любые замечания, пожелания и комментарии, а также с удовольствием примут в свои ряды всех, кто захочет внести свой вклад в развитие этого проекта. Если сказанное выше относится к вам, свяжитесь с нами по адресу http: / /fear. sf. net или по электронной почте. Интерфейс с внешним миром Обмен информацией с внешним миром — это весьма важная часть системы ИИ. Если говорить конкретно об аниматах, то такое взаимодействие должно реализовы- ваться в форме интерфейсов между мозгом и телом. В терминах потоков информа- ции это взаимодействие реализуется интерфейсами двух следующих типов. > Сенсоры обеспечивают получение информации от окружающей среды. > Эффекторы позволяют мозгу управлять телом для действий анимата во внеш- нем мире. Хотя при реализации можно разделить эти два типа интерфейсов, в FEAR такой подход не используется. Это объясняется тем, что строгое соблюдение указанных соглашений о специализации интерфейсов приводит к чрезмерному усложнению кода, не предоставляя никаких особых преимуществ. С точки зрения практической пользы гораздо удобнее сгруппировать интерфейсы взаимодействия с внешним ми- ром по функциональности. > Интерфейсы управления оружием. Позволяют запрашивать состояние оружия, менять и перезаряжать его, а также, естественно, применять по назначению. > Интерфейсы управления перемещениями. Обеспечивают движение вперед, на- зад и в стороны, а также развороты.
Глава 4. FEAR: платформа для экспериментов 91 > Физические интерфейсы. Позволяют анимату определять свое состояние в ок- ружающей среде (находится ли он в воде, в воздухе или же сталкивается, на- пример, со стенами и т.п.). Этот подход в общем случае уменьшает объем программного кода, который нуж- но создать для реализации интерфейсов. Кроме того, указанное разделение по функциональности позволяет разработчикам импортировать нужную им функцио- нальность непосредственно из программной среды в систему ИИ. Реализация интерфейсов взаимодействия с внешним миром (с точки зрения раз- работки системы ИИ) называется базовой поддержкой (backend). Программную среду FEAR можно подключить к любой платформе (например, к игровой машине), кото- рая реализует базовую поддержку соответствующих интерфейсов. В настоящее время рекомендованной программной платформой для FEAR являет- ся Quake 2. Эта игровая машина предоставляет разработчику возможность создания аниматов для широкого класса игр: поединков, однопользовательских и командных игр. Графический движок, реализованный с использованием низкоуровневого про- граммирования, оставляет системе ИИ достаточно много свободных вычислительных ресурсов. Кроме того, у этой игры имеется обширное сообщество пользователей и раз- работчиков, создавших множество дополнительных уровней и инструментов. Нако- нец, немаловажно и то, что исходный код Quake 2 полностью открыт. Одного этого факта было бы достаточно, чтобы выбрать эту платформу в качестве базы для разра- ботки экспериментальных систем ИИ. Модули Модули (modules)— это и есть собственно реализация технологий ИИ в виде программного кода. При этом конкретная реализация в коде экземпляров модуля в соответствии с требованиями архитектуры программной системы называется ком- понентом (component). Например, в программном коде игры может быть лишь одна реализация поведенческой системы, основанной на правилах (модуль), однако не- сколько подсистем для разных типов поведенческих реакций, обеспечивающих раз- личные виды перемещений и принятия тактических решений (компоненты). Интерфейсы Интерфейсы модулей преднамеренно делаются высокоуровневыми. Иными сло- вами, такие интерфейсы предоставляют разработчику лишь базовую функциональ- ность (например, запросы на перемещения). Подробный подход вполне соответст- вует назначению модуля, что упрощает понимание программного кода и проектиро- вание всей системы в целом. Кроме того, такой принцип создания интерфейсов дает разработчику много пре- имуществ в смысле модульной структуры программного кода (точно так же, как и в разработке “серьезного” программного обеспечения). Самое главное из них заклю- чается в том, что реализация может быть полностью абстрагирована от конкретных компонентов, что резко снижает количество взаимозависимостей отдельных частей программного кода.
92 Часть I. Общие сведения Указанным подходам соответствует много методик построения систем ИИ, таких как распознавание образов (pattern recognition), предсказание (prediction), аппроксима- ция функций (function approximation) и т.д. Подобную функциональность, как прави- ло, очень легко представить в виде одного достаточно простого интерфейса, на ос- нове которого создаются различные реализации, учитывающие конкретные области применения. Загрузка данных Для обеспечения сохранения данных на диске и загрузки их в игру разрабатыва- ются специализированные интерфейсы. Эти интерфейсы также имеют в архитектуре формализованные спецификации, по которым инструменты метапрограммирова- ния автоматически создают функции записи данных на диск и загрузки их с диска. Таким образом, разработчик освобождается от необходимости учета низкоуровне- вых деталей механизма хранения данных на диске. Это позволяет ему полностью со- средоточиться на обработке загруженных с диска данных и их подготовке к даль- нейшему использованию игровой механикой. Взаимозависимости Каждый модуль может импортировать какие-то конкретные интерфейсы. С кон- цептуальной точки зрения это означает, что модуль для обеспечения предоставляе- мой им функциональности зависит от других реализаций. На этапе выполнения данная концепция представляется в виде вложенных компо- нентов (nested component). Иными словами, в тех случаях, когда это нужно для полу- чения конечного результата, выполняется вызов внутренних компонентов. Напри- мер, вложенные компоненты могут использоваться при реализации архитектуры обобщения (subsumption architecture) для навигации или даже в системах управления боем на основе системы голосования (voting system), как это описывалось в предыду- щей главе. Гибкая архитектура Как уже отмечалось, программная среда FEAR поддерживает программные сис- темы, построенные на основе единой архитектуры, определенной в виде иерархий компонентов. Иерархия — это наиболее часто встречающийся тип архитектуры, по- скольку монолитную и простую архитектуру можно рассматривать как частный слу- чай иерархической. Каждый компонент в такой архитектуре имеет доступ к своим дочерним компо- нентам. Такой доступ называется подконтрольной областью (scope) компонента. Ди- намическая программная среда FEAR, основанная на механизмах языка C++, авто- матически инициализирует компоненты во время инициализации программы, что освобождает разработчика от необходимости ручного написания стандартного кода импорта интерфейсов (как при использовании DirectX, например).
Глава 4. FEAR: платформа для экспериментов 93 На момент написания данной книги была реализована поддержка всех форм ар- битража: независимой (independent), подавляющей (supression), комбинированной (combination), последовательной (sequence), поэтому разработчик может реализовать каждый модуль в соответствии со своими предпочтениями. Создание анимата Процесс создания анимата в FEAR состоит из трех описанных ниже этапов. Описание архитектуры На этом этапе создается файл с описанием архитектуры. В этом файле указывает- ся, какие компоненты нужны для мозга анимата, а также какие компоненты, в свою очередь, нужны этим компонентам. Генерация исходного кода Для создания всех файлов проекта необходимо с помощью специальных инстру- ментов обработать все файлы описаний архитектуры. На выходе получатся заготов- ки исходного кода анимата, которые должны компилироваться без написания ка- кого-либо дополнительного кода. Иными словами, после генерации исходного кода и его компиляции мы должны получить полностью готовый к работе анимат, ли- шенный одного — мозга! Для добавления “разумного” поведения остается лишь дописать программный код в нескольких файлах (обычно в тех, в которых имеются комментарии ТО DO). Содержимое остальных файлов, генерируемых автоматически, полностью определя- ется инструментальным набором (хранится в папке Generated) проекта. Это со- держимое не стоит менять вручную, поскольку при последующей повторной генера- ции все внесенные вручную изменения пропадут. Связь кода с основным кодом игры Скомпилированные файлы должны быть доступны основному движку игры. Это означает, что в соответствующий каталог нужно скопировать библиотеку DLL (Dynamic Link Libraiy), реализующую мозг анимата, а также все вспомогательные файлы, с помощью которых программная среда FEAR получает информацию о тре- буемой архитектуре. Кроме того, необходимо поместить в каталог данных анимата все подготовленные файлы данных. | ЗАМЕЧАНИЯ ПО УСТАНОВКЕ 1 Работая с этой книгой, вы можете получать из Интернета как каждый анимат по отдельности, так и все , аниматы в одном пакете. Кроме того, на Web-узле книги имеется весь исходный код, а также откомпили- 1 рованные демоверсии. Для того чтобы “почувствовать” платформу и ее возможности, лучше всего начать - именно с запуска демоверсий. Подробные инструкции по установке инструментальных средств и по- 3 строению каждого анимата приведены на Web-узле по адресу http: / /AiGameDev. com.
94 Часть I. Общие сведения Резюме В этой главе вы ознакомились с кратким обзором программной среды FEAR и ее возможностей. Более подробному изложению методов применения соответствующих инструментов и процедур, необходимых для создания на основе этой программной среды аниматов и моделей ИИ, посвящена оставшаяся часть книги. Кроме того, в не- скольких главах книги освещаются вопросы создания интерфейсов для взаимодейст- вия с конкретными игровыми мирами, а также реализации конкретных систем ИИ. Если вы интересуетесь более сложными методиками применения FEAR или вопро- сами проектирования и реализации систем, выходящими за рамки этой программной среды, обратитесь к документам Technical Overview [26] и Library Reference [25], каждый из которых можно получить по адресу http: / / fear. s f. net.
^aiattaus,^. Часть II Управление перемещениями Эта часть посвящена вопросам создания подвижного игрового персонажа, который обладает всей необходимой функциональностью, связанной с перемещениями (огибает препятствия, двигается вдоль стен и т.п.)- В этой части раскрываются ос- новные концепции организации перемещений аниматов, а также показаны приме- ры двух различных решений (по одному для каждого типа поведения). Кроме того, в главах этой части излагаются сведения о системах, управляемых правилами, и рас- сматриваются первые этапы процесса разработки системы ИИ. Но самое главное — к концу проработки материала этой части вы получите базовую систему ИИ. Мотивация Даже самые простейшие живые организмы умеют перемещаться, не говоря уже о том, что соответствующие навыки для большинства из них являются жизненно не- обходимыми. Поэтому игра, в которой несобственные персонажи не умеют реали- стично перемещаться в игровом мире, уже не может претендовать на звание совре- менной. Прочитав эту часть, вы научитесь создавать такие несобственные персона- жи, поведение которых будет напоминать поведение “массовки” в голливудских блокбастерах! С технической точки зрения, перемещения — это навыки, которые смоделировать относительно несложно. Конечно, для того чтобы добиться полной реалистичности, над совершенствованием перемещений нужно немало потрудиться, однако начинать обучение моделированию ИИ проще всего именно с перемещений. Освоив азы, вы всегда сможете заняться улучшением имеющей модели, стараясь достичь полного соответствия оригиналу. Кроме того, более сложные модели поведения (например, охота или сбор предметов) практически всегда базируются на простых перемещениях. Поэтому лучше не браться сразу за моделирование боев мастеров восточных единоборств, а потратить некоторое время на то, чтобы научить анимат шагать, поворачиваться и приседать. К тому времени, когда вы создадите достаточно сложную систему ИИ, у вас уже будет необходимый опыт для того, чтобы взяться за моделирование более сложных перемещений.
Краткое содержание части Эта часть состоит из восьми глав, каждая из которых представляет собой опти- мальную смесь теории, практики и описания концепций (во всяком случае, опти- мальную с точки зрения моделирования перемещений). Глава 5, “Перемещения в игровом пространстве’’, посвящена анализу окружаю- щего пространства игрового мира. Важность этого анализа трудно переоценить, по- скольку в некоторых играх “выживание” в игровом мире — это задача, сложная даже для игроков, не говоря уже о системе ИИ. Также в этой главе мы коснемся вопросов организации управления игровыми персонажами на уровне игровой машины. Глава 6, “Проявление способностей к перемещениям”, рассматривает проблему на- вигации в компьютерных играх на основе анализа поведения людей в подобных си- туациях. В результате этого анализа выявляются некоторые поведенческие реакции, которые можно позаимствовать для системы ИИ. В главе способность к перемеще- ниям рассматривается с достаточно высокой степенью детализации, а также приво- дятся критерии оценки перемещений аниматов. Глава 7, “Системный анализ и разработка технических требований”. Прежде чем переходить непосредственно к моделированию перемещений, уделим некоторое время двум важным этапам производственного цикла создания системы ИИ — сис- темному анализу и разработке технических требований. Хотя мы будем их рассматри- вать в контексте моделирования перемещений, следует подчеркнуть, что эти два этапа очень важны при разработке любых систем вообще и систем ИИ в частности. Глава 8, “Формализация модели перемещений”. В этой главе мы снова возвраща- емся к моделированию перемещений и приступаем к разработке на основе сформу- лированных технических требований технического предложения и эскизного проек- та программного кода, предназначенного для решения этой проблемы. В результате мы получим набор интерфейсов, обеспечивающих взаимодействие с окружающей средой игрового мира, и эскизный проект исходного кода. Этого вполне достаточно для того, чтобы на последующих этапах реализовать качественное решение постав- ленной проблемы. Глава 9, “Разработка технического проекта и представление знаний”. В этой главе освещается очень важный этап — создание технического проекта системы, которая предназначена для решения проблемы. Кроме того, поскольку в процессе разработ- ки архитектурной части технического проекта интенсивно используется теория представления знаний, мы посвятим часть этой главы краткому описанию основных принципов этой теории. В конце главы изложены основные стадии процесса техни- ческого проектирования. Глава 10, “Изменение направления движения при огибании препятствий”. Процесс разработки системы в этой части книги рассмотрим на примере решения проблемы огибания препятствий. За основу возьмем теоретические исследования в области искусственной жизни, поскольку их проще всего применить на практике. Рассмот- рев некоторые теоретические принципы моделирования поведения, позволяющего изменять направление движения, перейдем к созданию простого анимата, который умеет избегать столкновений. Реализовав его, мы выявим несколько дополнитель- ных проблем, поэтому нам потребуется провести некоторые исследования для нахо- ждения лучших вариантов решения.
Глава 11, “Системы, основанные на правилах”. Одним из таких вариантов являют- ся системы, основанные на правилах, поэтому в данной главе мы ознакомимся с со- ответствующими теоретическими сведениями, а также с некоторыми практически- ми приемами реализации таких систем, выработанными при их реализации в ком- пьютерных играх. Глава 12, “Синтез перемещений в системах, основанных на правилах”. В этой главе мы поговорим об экспертных системах, а также о том, как их применять для модели- рования еще одной проблемы, связанной с перемещениями, — проблемы движения вдоль стены. Мы рассмотрим не только теоретические сведения, но и практические вопросы реализации соответствующих систем. В заключение мы выполним не- сколько упражнений, которые позволяют применить на практике все знания, полу- ченные в этой части. Предположения Эта часть посвящена практическим вопросам, поэтому она не выдвигает к чита- телю каких-либо серьезных требований. Тем не менее нужно отметить, что автор рассчитывает на то, что у читателя имеется доступ к следующим инструментам и программам. > Игровая машина, на основе которой можно тестировать поведение персона- жей, управляемых ИИ. Под игровой машиной здесь понимается некое про- граммное решение, обеспечивающее минимально приемлемую физическую систему и систему анимации. В данном случае мы находимся в выгодном по- ложении, поскольку такая машина у нас уже есть. На практике же система ИИ часто создается параллельно с игровой машиной. Тем не менее методы анали- за, описанные в книге, можно применить и при создании системы ИИ не только для имеющейся машины, но и для машины, который еще находится в разработке. > Достаточно широкий набор различных типов окружающей среды игрового мира. Все эти типы окружающей среды нам понадобятся для разработки и тес- тирования способностей аниматов к перемещениям. Такой набор может (и должен) представлять собой набор уровней, предназначенных для использо- вания живыми игроками. > Производственная программная среда, обеспечивающая разработку системы ИИ. Как уже отмечалось в части I, в качестве такой среды мы будем использо- вать FEAR. В заключение следует добавить, что эти простые предположения будут использо- ваться и при изложении материала остальных частей книги. Если по ходу чтения книги вам понадобится что-то еще, вы будете извещены об этом отдельно.

^aiaHaus,^. Глава 5 Перемещенияв игровом ПРОСТРАНСТВЕ В ЭТОЙ ГЛАВЕ- • Окружающая среда и игровое пространство • Типы игровых миров • Управление перемещениями • Предположения • Условия тестирования • Резюме Прежде чем начинать размышления о реализа- ции интеллектуальных несобственных персо- нажей, неплохо бы проанализировать платформу, для которой мы будем разрабатывать систему ИИ. (Под платформой в данном контексте подразумева- ется игровая машина и архитектура игрового про- странства.) К счастью, эта книга основана на про- граммном коде уже существующей и хорошо спро- ектированной игры, поэтому можно считать, что эскизный проект и технические задания у нас уже есть! На практике в ШАдаяляющем большинстве случаев на данном этапе разработки говорить о технических заданиях вообще не приходится, да и эскизный проект, как правило, далеко не всегда как следует проработан. Тем не менее, если не в эс- кизном проекте, то, как минимум, в техническом предложении требования к системе ИИ, а также к ее взаимодействию с персонажами, управляемыми игроками (НРС— Human Player Character), или собственными персонажами, должны быть обозна- чены достаточно четко. Таким образом, цель ана- лиза состоит в выявлении тех составляющих архи- тектуры игры, которые можно повторно использо- вать (возможно, с небольшими изменениями) при создании системы ИИ. Выявив и задействовав в системе ИИ такие составляющие, мы тем самым обеспечим соответствие программного кода систе- мы ИИ остальному программному коду, создавае- мому остальными разработчиками проекта (в част- ности, с точки зрения эффективности его работы или обеспечения реализма).
100 Часть II. Управление перемещениями В этой главе рассмотрены следующие темы. > Общее определение окружающей среды игрового мира с точки зрения ее не- явного влияния на типы перемещений на всех уровнях детализации, а также ограничений, которые она налагает на аниматы. > Методы обеспечения поддержки в игровых мирах различных типов перемеще- ний, а также полученные на основе их анализа предположения, которые будут использоваться при разработке эскизного проекта и технических заданий. > Методы обеспечения целостности игрового мира на уровне игровой машины с акцентом на имитацию всего игрового мира в целом. > Описание идеальной окружающей среды игрового мира, формулировка усло- вий и методик проведения тестирования, направленных на обеспечение реа- листичности перемещений. В результате проведенного в этой главе анализа создается раздел эскизного про- екта, на основе которого впоследствии будут разработаны технические задания на создание интерфейса игрового мира. Эти интерфейсы должны определять методы управления перемещениями. Помимо этого, проведение такого анализа облегчает понимание того, как поведение связано с перемещениями. Окружающая среда и игровое пространство Итак, давайте для начала посмотрим на игровой мир в целом, в котором происхо- дят перемещения персонажей. Окружающая среда игрового мира придумывается про- ектировщиками, создается с помощью инструментов моделирования художниками, а отображается на экране и перерисовывается с помощью игровой машины, созданной программистами. И хотя на всех этапах производственного цикла создания игрового мира может быть задействовано много различных методик, технологий и инструмен- тов, подавляющее большинство из них, с точки зрения создания системы ИИ, мало- интересно. Подлинный же интерес для нас представляет информация, которая хранится в иг- ровом мире в неявной форме. Под неявной формой здесь подразумевается тот факт, что в большинстве случаев в компьютерных играх окружающую среду разделяют на две крупные категории: структура и деталировка. Сначала мы поговорим о них по отдель- ности, а затем обсудим, как они объединяются в единое целое в игровом пространстве. Две составляющие единого целого Итак, как мы уже сказали, всю информацию, которая предоставляется игрокам об окружающей среде, можно условно разделить на две большие подгруппы: струк- туру и деталировку. Следует заметить, что такое разделение продиктовано не каки- ми-то абстрактными академическими интересами, а самыми что ни на есть практи- ческими соображениями. Дело в том, что в подавляющем большинстве современных игровых машин соответствующие элементы игрового мира всегда разделяются на указанные подгруппы из соображений обеспечения эффективности работы про-
Глава 5. Перемещения в игровом пространстве 101 граммного кода. Система имитации физики обеспечивает корректную обработку структуры, а деталировкой занимается система рендеринга графики. Конечно, в ре- альном мире провести грань между структурой и деталировкой гораздо сложнее (если вообще возможно), поэтому нам остается порадоваться тому, что мы занима- емся созданием виртуальных игровых миров, а не реального мира! > Структура (structure) — это часть окружающей среды игрового мира, которая мо- жет оказывать физическое воздействие на перемещения. Нетрудно догадаться, что элементами структуры являются полы, стены, двери помещений; кресла, столы и другая мебель; деревья, дороги, мосты, столбы, дорожные знаки и т.д. Этот пере- чень далеко не исчерпывающий; к структуре можно отнести все элементы игро- вого мира, которые остаются статическими (проще говоря, те, которые персонаж, управляемый игроком, не может отправить в полет пинком ноги). > Что касается деталировки (detail), то к ней относятся все “косметические” эле- менты окружающей среды: предметы, “нарисованные” на стенах и других эле- ментах структуры (книги на полках, кухонная утварь, пища и т.п.), с которыми персонаж игрока не может столкнуться. Возможно, что с некоторыми элемен- тами деталировки персонаж сталкивается, но такое столкновение влияет на его перемещения незначительно (кусочки пищи, трава, кусты и т.п.). Здесь следует отметить о наличии одного важного исключения из приведенных выше определений. Это исключение касается живых персонажей и других подвижных элементов. Хотя такие элементы не всегда создаются с помощью тех же инструментов, что и остальные элементы игрового мира, они, вне всякого сомнения, являются важ- ной составляющей его окружающей среды. Более того, можно пойти дальше и заявить, что игровые персонажи обладают свойствами как структуры, так и деталировки. Одна- ко некоторые разработчики (а также исследователи в области робототехники) считают, что структуру и деталировку ни в коем случае нельзя смешивать, поскольку их элемен- ты относятся к совершенно разным по своей природе сущностям. На практике это за- канчивается тем, что в одних играх подвижные персонажи относят к структуре, а в других — к деталировке. Другие разработчики в одной и той же игре относят к разным категориям разные виды персонажей. Например, персонажи, управляемые живыми игроками, могут быть отнесены к деталировке (т.е. они будут игнорироваться при пе- ремещениях), а несобственные персонажи — к структуре (в этом случае при переме- щениях нужно будет учитывать их физические характеристики). Понятно, что суть проблемы заключается в том, как объединить все три компо- нента в единой окружающей среде так, чтобы у игрока создалось ощущение целост- ности пространства игрового мира. Конечно, каждый игрок понимает, что игровой мир — это иллюзия, но при этом каждый хочет, чтобы игровое пространство было как можно более реалистично и обеспечивало естественные перемещения. Поэтому если рассматривать подвижные сущности игрового мира только как элементы дета- лизации или только как элементы структуры, это может негативно сказаться на вос- приятии естественности перемещений, особенно в тех случаях, если подобные про- блемы выявляются на поздних стадиях создания игры. К счастью, мы с вами, в отличие от большинства других разработчиков (не говоря уже об игроках), можем и должны принимать решения о том, как управлять подвиж- ными персонажами, поскольку именно мы занимаемся разработкой системы ИИ.
102 Часть II. Управление перемещениями Например, когда игра находится в режиме борьбы за выживание (deathmatch), при перемещениях можно игнорировать остальные аниматы — если персонаж стоит на пути, его можно убрать с дороги одним выстрелом из гранатомета! Однако если нам нужно обеспечить игру в кооперативном режиме, нужно создать отдельную катего- рию для несобственных персонажей, чтобы они могли учитывать перемещения друг друга при прокладке собственных маршрутов. Наконец, если в игре встречаются большие группы персонажей, то персонажей других игроков можно рассматривать как обычные препятствия. Окружающую среду можно представить в любой из этих трех интерпретаций, од- нако выбор той или иной интерпретации оказывает соответствующее влияние на восприятие игрового пространства, что имеет самое непосредственное отношение к системе ИИ несобственных персонажей. Определение игрового пространства С фундаментальной точки зрения игровое пространство (space) определяется игро- вым миром. При формировании окружающей среды важную роль играет структура, поскольку с точки зрения физического движка все перемещения определяются струк- турой. Однако как собственные персонажи, управляемые живыми игроками, так и несобственные персонажи, управляемые ИИ, не всегда обладают знаниями о физи- ческой природе элементов игрового пространства. Задача предоставления им такой всеобъемлющей информации об игровом пространстве очень сложна в реализации. В некоторых случаях, когда достаточно простой игровой мир хранится в явно заданной форме (например, в виде д вухмерной сетки), обработка данных о нем в режиме реального времени — задача более или менееприемлемой сложности. Но по мере возрастания степе- ни реалистичности игрового мира и его размера (например, в современных трехмерных иг- рах) многие элементы этого игрового мира начинают взаимодействовать совершенно не- предсказуемо даже для разработчиков. Поэтому как бы ни была четко определена окру- жающая среда и как бы ни были точны физические правила, их проявление в игре далеко не всегда может быть предсказуемо как для собственных, так и для несобственных персонажей (что, в общем-то, хорошо с точки зрения игровой обстановки). Собственные персонажи должны ориентироваться в окружающей среде на осно- ве не всегда четкой и однозначной визуальной информации. Поэтому для них боль- шое значение имеет детализация окружающей среды, поскольку она улучшает ее ви- зуальное восприятие. Несобственные персонажи, управляемые системой ИИ, обычно перед запуском игры уже имеют упрощенное представление о игровом мире. Конечно, оно также да- леко от идеального, а информация, имеющаяся у таких персонажей, часто бывает ори- ентировочной (например, точки изменения маршрута). Существует и другой подход, при котором несобственные персонажи получают и интерпретируют информацию об окружающей среде в ходе игры (примерно так же, как и живые игроки). Учитывая все сказанное выше, можно сделать заключение о том, что игровое пространство — это некая абстрактная концепция, основным свойством которой является то, что она воспринимается неоднозначно в той или иной степени. Степень этой неоднозначности зависит от выбранной методики моделирования игрового пространства, но главное в том, что такая неоднозначность присутствует всегда. Это свойство игрового пространства нужно воспринимать не как проблему, а как объек-
Глава 5. Перемещения в игровом пространстве 103 тивную реальность, поскольку точность и однозначность представления даются в игре слишком дорогой ценой! Специалисты по робототехнике давно пришли к такому выводу, в результате чего были созданы роботы с современными системами ИИ. После того как персонаж с той или иной степенью точности получил информа- цию об игровом пространстве, он может сделать вывод о том, где находится свобод- ное пространство, а где — непроницаемые объекты. На основе этих выводов прини- маются решения о том, какие перемещения возможны, а какие — нет. Только после этого можно приниматься за выполнение собственно осмысленных перемещений. Типы игровых миров Возможно, вы удивитесь, но в основе огромного количества игр лежит именно концепция перемещений. Все остальное — только надстройка. Уберите из этих игр перемещения, и эти игры “рассыплются”, как карточный домик. Причем это утвер- ждение касается игр самого широкого класса, начиная от стратегических и логиче- ских игр, таких как Chess или Diplomacy, и заканчивая более “подвижными” играми вроде Horses или Downfall. Естественно, это касается и игр для платформы ПК: без концепции перемещений невозможно представить подавляющее большинство игр со стрельбой от первого лица (FPS — First-Person Shooter), стратегий реального вре- мени (RTS — Real Time Strategy) и даже ролевых игр (RPG — Role-Playing Game)! При этом игровые миры в этих играх могут быть устроены по самым разным принципам. В частности, они могут иметь разное количество измерений (двухмерные или трехмерные), иметь разные размеры и разный уровень точности позиционирования объектов. Некоторые игровые миры основываются на сетках (дискретные миры), а другие не имеют никаких ограничений для перемещений (непрерывные миры). С концептуальной точки зрения, все это разнообразие игровых миров нужно рас- сматривать как совершенно различные сущности, которые, в конечном итоге, ока- зывают очень большое влияние на восприятие игры и игровую обстановку. Но более существенно то, что каждому варианту концептуального представления игрового мира соответствует собственный подход к оперированию структурами данных и реа- лизации различных эффектов на уровне игровой машины. Однако нас интересует, естественно, то, как они проявляются применительно к системе ИИ. Влияние трехмерности Существует немало игр, игровые уровни которых представлены как двухмерные миры с видом сверху {Warcraft II, например). В других играх применяется вид сбоку с перемещением камеры и плавным скроллингом {Super Mario Brothers). Альтерна- тивный метод заключается в создании полноценного трехмерного мира, в котором в зданиях имеются несколько этажей {Half Life) или даже туннели {Descent 3). Важно заметить, что количество измерений игрового мира не имеет прямого отно- шения к процедуре рендеринга. Например, в первой версии игры Doom игровой мир был фактически двухмерным, а различные этажи представляли собой простые “плоские” уровни. Поскольку даже самые современные трехмерные игры со стрельбой
104 Часть II. Управление перемещениями от первого лица все еще сохраняют много общего с Doom, из этого можно сделать вы- вод о том, что и базовые свойства их игровых миров очень похожи. Так оно и есть — многие технологии, лежащие в основе современных игр со стрельбой, с успехом мож- но применять как в двухмерных, так и в трехмерных игровых мирах. Многие академические исследовательские проекты исследуют вопросы модели- рования управления перемещением с помощью ИИ для двухмерных игровых миров с видом сверху, например [73] (отличный обзор последних исследований в этой об- ласти). Поэтому многие иллюстрации, приведенные в этой книге, созданы при ис- пользовании подобного подхода: предметная область в них представляется с видом сверху. Объяснение тому очень простое — моделировать двухмерные перемещения гораздо проще, чем трехмерные. Часто в качестве аргумента в пользу такого подхода можно услышать, что “двух- мерный мир — это частный случай трехмерного”, поэтому, мол, нет ничего плохого в том, чтобы заниматься исследованием более простого явления. Так оно и есть — в подавляющем большинстве случаев, если найден хороший “плоский” алгоритм, переделать его для учета еще одного измерения не составляет большого труда! (Конечно, с той лишь оговоркой, что нужно учитывать дополнительные факторы, обусловленные наличием еще одного измерения.) При моделировании перемещений в полноценных трехмерных играх такое упро- щение также можно применять с успехом. Например, в реалистичных игровых мирах важную роль в перемещениях играет гравитация. Поэтому, как правило, персонажи игры большинство времени перемещаются на плоскости, что позволяет почти всегда снизить порядок сложности задачи с трех измерений до двух. Оговорка “почти” обу- словлена тем, что часто в современных играх поверхности, имитирующие пол, улицы и подобные элементы структуры, не идеально плоские: они могут иметь возвышения, впадины или даже представлять собой “псевдоплоские” элементы (классический пример — винтовая лестница). Такие игровые миры часто называют мирами 2.5D, чтобы акцентировать внимание на то, что они занимают промежуточное положение между двухмерными (2D) и трехмерными (3D) игровыми мирами. При применении решений, найденных для двухмерных игровых миров, в полностью трехмерных игровых мирах следует учитывать ряд возможных “подводных камней”. > В окружающей среде сложного игрового мира могут существовать элементы, необычные для плоских миров (например, трамплины или лифты). > Во многих случаях проще не пытаться “подогнать” двухмерный алгоритм к трехмерному миру, а найти какое-то обходное, частное решение проблемы. Оба эти фактора следует всегда учитывать при поиске наилучшего решения. Дискретность и непрерывность игрового мира Еще одним важным свойством игрового мира является точность его представления, как в смысле времени, так и в смысле координат. Как уже отмечалось, существуют два разных подхода к этой проблеме: в соответствии с первым все события в игровом мире являются непрерывными (continuous) во времени и пространстве, а в соответствии со вторым — дискретными (discrete), как показано на рис. 5.1.
^alaiiaus^ Глава 5. Перемещения в игровом пространстве 105 Рис. 5.1. Два типа игровых миров, представленных с видом сверху. Слева игровое пространство является непрерывным, а справа — дискретным, поскольку оно основывается на использовании сетки А. Непрерывная среда С концептуальной точки зрения, моделирование непрерывной предметной об- ласти несколько отличается от моделирования дискретной. Однако при достижении высокой степени дискретизации существует некий порог, по достижении которого дискретная модель воспринимается так же, как и непрерывная. Проблема модели- рования дискретных моделей с высокой степенью дискретизации, конечно же, за- ключается не в сложности математических выкладок, а в ограничениях современных аппаратных средств, которые часто попросту не справляются с “обсчетом” таких моделей. Поэтому современное программное обеспечение при представлении не- прерывных игровых миров должно реализовывать дискретную модель с максималь- но возможной (но не всегда идеальной) степенью дискретизации. Рассматривая примеры реализации пространства и времени в игровых мирах, можно сделать вывод о том, что эта реализация не только влияет на вид и архитекту- ру игры, но и является фундаментальным фактором для системы ИИ. (Причем фак- тором, который для системы ИИ является внешним, а не внутренним.) Пространство Позиционирование элементов окружающей среды игрового мира может ограни- чиваться ячейками сетки. Если количество таких ячеек жестко задано, игровой мир является дискретным. В непрерывных окружающих средах, не привязанных к сетке, позиционирование элементов игрового мира ничем не ограничено. Кроме того, для хранения координат игрового мира необходимо выбрать подхо- дящий формат данных. Обычно координаты хранятся в виде чисел с плавающей точкой одинарной точности. Таким образом, дискретизацию соответствующих ко- ординат можно выполнить с точностью в 32 бит. Хотя при использовании чисел двойной точности (64 бит) можно получить дополнительные преимущества с точки зрения позиционирования элементов игрового мира, все же в подавляющем боль- шинстве игр 32 бит вполне достаточно, чтобы у игроков возникало ощущение не- прерывности игрового мира.
106 Часть II. Управление перемещениями Время События в игровом мире могут быть дискретными не только в пространстве, но и во времени. Например, во многих играх, таких как пошаговые стратегии, требуется, чтобы определенные события происходили через четко заданные интервалы време- ни. Другие игры, в частности игры жанра экшн, идут в масштабе реального времени. Как и в случае с пространством, временные координаты также можно предста- вить в виде чисел с плавающей точкой одинарной точности. Однако здесь выбор формата представления времени не столь прост и однозначен, как при выборе фор- мата представления координат. Суть проблемы заключается в том, что игрок не мо- жет “манипулировать” временем с такой же легкостью, как он это делает с коорди- натами игрового пространства. Концептуально эта проблема объясняется тем, что однопроцессорный компьютер может в каждый момент времени выполнять только один логический процесс (несмотря на то, что атомарные операции процесса совре- менные процессоры могут выполнять параллельно). В этой связи процессор не мо- жет выполнять обработку всех объектов игрового мира одновременно. Единственное, что может сделать компьютер в такой ситуации, — это аппроксимация, при которой тот или иной фрагмент кода определяет, какие события произошли с момента по- следнего обновления (например, через каждые 0,1 с). Поэтому, несмотря на очень высокую точность представления времени, далеко не во всех играх обязательно ис- пользовать числа с плавающей точкой — частенько можно обойтись более простыми типами данных, как показано на рис. 5.2. События 0 АВ CD EFG Н . |----1—1--------1----1----Н—I-------1---- 2,3 6,6 9,2 А. Непрерывный временной график 0 A/В C/D E/F G Н . |.---1.-----4-----1--------4-----4---- 2 4 6 8 10 12 Б. Дискретный временной график Рис. 5.2. Вверху приведен временной график событий непре- рывного времени, когда эти события могут возникнуть в лю- бой момент. Под ним находится такой же график, но для дискретного времени. Как легко увидеть, во втором случае время возникновения каждого события округляется до бли- жайшего двухсекундного отсчета Преобразования Строго говоря, учитывая то, что компьютерные вычисления по определению яв- ляются дискретными, все перечисленные выше измерения можно по умолчанию также считать таковыми (даже если они кажутся непрерывными). Для преобразова- ния непрерывных данных в дискретные и обратно используются соответствующие
^alattaus»^. Глава 5. Перемещения в игровом пространстве 107 алгоритмы, основанные на масштабировании, преобразовании в целое путем округ- ления и обратном масштабировании. Эти алгоритмы позволяют провести дискрети- зацию с необходимым уровнем точности. На практике вполне можно выполнять дискретизацию элементов игрового мира по одной методике, а дискретизацию для нужд системы ИИ — по другой. Например, при- менив дискретизацию с нужной степенью точности, мы можем получить данные в таком виде, которые позволят нам использовать уже имеющиеся алгоритмы систем ИИ (на- пример, стандартные методы поиска пути А*, основанные на сетках). Конечно, по тем или иным причинам мы вполне можем отказаться от какой бы то ни было дискретиза- ции (например, из-за снижения реалистичности поведения персонажа или реалистично- сти игровой среды). Окончательное решение о том, выполнять или не выполнять дис- кретизацию, остается за разработчиками системы ИИ. Управление перемещениями Мы рассмотрели вопросы дискретизации потому, что тип окружающей среды иг- рового мира оказывает непосредственное воздействие на поведение населяющих его персонажей. Более того, можно смело сказать, что именно окружающая среда навя- зывает персонажам тот или иной тип перемещений. Независимо от того, является ли окружающая среда двухмерной или трехмерной, управление перемещениями выполняется по подобным алгоритмам. Хотя организо- вать такое управление можно самыми разными способами, все они сводятся примерно к одному подходу: расчет очередной итерации основного цикла, интеграция и обнару- жение столкновений. Детальное изложение этого подхода интересно скорее с точки зрения разработки игровой машины, чем системы ИИ, однако немного позднее мы все же ознакомимся с основными принципами этого подхода, чтобы иметь о них пред- ставление. Игровая машина должна уметь обрабатывать запросы на перемещение от всех собственных и несобственных персонажей, существующих в игровом мире. За раз- решение конфликтов при столкновениях с элементами окружающей среды, а также с другими персонажами отвечает физическая подсистема игровой машины. После проведения расчетов все структуры данных, представляющие объекты игрового ми- ра, должны быть обновлены в соответствии с новыми значениями скоростей, коор- динат и ориентации в пространстве. Подсистемы анимации современных игровых машин обеспечивают управление персонажами путем комбинирования низкоуровневых анимационных примитивов (low-level limb control), например ходьба и бег. Конкретный набор анимационных примитивов выбирается на основе высокоуровневых управляющих воздействий, за- даваемых игроком. Таким образом, персонажи в играх на самом деле не ходят (т.е. не проявляют активного осмысленного поведения), а просто прорисовываются путем анимации (т.е. являются пассивными объектами управления). Для того чтобы не разрушать эффект реальности (например, если происходит ходьба на месте при столкновении со стеной, бег в воздухе и т.п.), подсистема анимации должна полу- чать соответствующую информацию от физической подсистемы.
108 Часть II. Управление перемещениями По ряду причин низкоуровневые аспекты перемещений абстрагируются от того, кто управляет персонажами (в первую очередь, с целью упрощения задачи). Скггвстствую- щий базовый уровень управления называется уровнем локомоций (locomotion layer). Бла- годаря наличию этого уровня его вполне могут использовать и несобственные персона- жи. На практике в современных играх так и происходит — управление всеми персонажа- ми, как собственными, так и несобственными, реализуется на основе одного и того же базового кода. Это позволяет уменьшить количество программного кода, необходимого для создания системы ИИ, путем простого наследования классами системы ИИ соответ- ствующих классов, созданных для управления собственными персонажами (проще гово- ря, путем использования в обоих случаях одних и тех же функций просчета локомоций). Возможно, в ближайшем будущем системы ИИ смогут избавиться от использова- ния низкоуровневых анимационных примитивов и начнут обеспечивать полноценные динамические методы управления. Что касается собственных персонажей, для них системы управления вряд ли изменятся, поскольку их движения могут быть очень сложными. Конечно, можно будет поручить системе ИИ управлять и собственными персонажами, но тогда проблема возникнет с инерцией мышления живых игроков — им придется привыкнуть к тому, что ногами их персонажей управляет ИИ! Теоретиче- ски, система ИИ может управлять не только перемещениями, но и всеми телодвиже- ниями несобственных персонажей, успевая при этом обрабатывать и высокоуровне- вые запросы на выполнение локомоций. Однако выделение управления локомоциями в отдельную подзадачу дает разработчикам дополнительные преимущества (в частно- сти, упрощение программного кода при незначительном увеличении его избыточно- сти). По-видимому, такое разделение задачи управления персонажами на отдельные подзадачи сохранится и в ближайшем будущем. Предположения Итак, основываясь на базовом знании методов работы игровой механики, давайте сделаем некоторые предположения. В игровой машине существует физическая под- система, которая отвечает за применение управляющих команд к структурам данных, представляющим персонажи игры. Будем считать, что она выполняет это с учетом всех законов кинематики, обеспечивая реализм перемещений. Кроме того, физическая подсистема разрешает все конфликты, возникающие во время просчета взаимного расположения объектов игрового мира. Таким образом, выполнение собственно ло- комоций не входит в круг задач, возлагаемых на систему ИИ. Все низкоуровневые аспекты выполнения перемещений также решаются не сис- темой ИИ, а системой анимации. В частности, перемещение отдельных конечностей (limb) и просчет соответствующих анимационных примитивов выполняются про- зрачно для системы ИИ. Очень важно, чтобы информация, возвращаемая интерфейсами, которые могут использоваться аниматами, соответствовала физике окружающей среды игрового мира. Поэтому мы будем считать, что низкоуровневая реализация этих интерфейсов зависит отданных, вычисляемых для имитации перемещений.
^alatiaus,^!. Глава 5. Перемещения в игровом пространстве 109 Условия тестирования Поскольку мы ставим перед собой задачу создания современной интеллектуальной системы управления несобственными персонажами, нас не удовлетворит никакое иное решение, кроме полноценного сложного трехмерного игрового мира, подобного тому, с которым мы имеем дело каждый день в реальной жизни. Подчеркнем, что этот игровой мир должен быть как можно ближе к реальности, а не представлять собой примитивный натурный макет, предназначенный лишь для академических исследова- ний вопросов реализации ИИ. Установив “планку” требований на уровне лучших со- временных игровых миров, при применении впоследствии на практике созданной системы ИИ мы столкнемся с гораздо меньшим количеством проблем, чем в том слу- чае, когда изначально будем исходить из упрощенных начальных условий. Чем слож- нее будут “тестовые” уровни и сценарии, тем больше подобных проблем мы выявим на этапе разработки системы ИИ. Поэтому, выработав определенные требования к тестированию работоспособности системы, мы не должны отступать от них ни на шаг на всех этапах моделирования перемещений. В реалистичном игровом мире несобственные персонажи должны справляться с такими препятствиями, как двери и коридоры, ступеньки и лестницы, склоны и тупики, проломы и пересеченная местность, помещения и открытые пространства, трамплины и площадки для телепортации. Теперь, когда мы вкратце обсудили все, что относится к окружающей среде, мы готовы к тому, чтобы сосредоточиться полностью на собственно перемещениях. Как мы теперь знаем, игровой мир оказывает очень существенное влияние на перемеще- ния, однако игровые персонажи могут иёпользовать его особенности для получения тех или иных преимуществ при выборе методов и средств перемещения. Резюме Итак, в этой главе мы установили, что окружающая среда игрового мира играет очень важную роль при проектировании системы ИИ. Прежде всего, следует сказать о некоторых дополнительных ограничениях, которые требуется учитывать при про- ектировании системы ИИ. Эти ограничения носят следующий характер. > На перемещения непосредственное влияние оказывает структура окружаю- щей среды. > Эмуляция перемещений всегда происходит дискретно во времени, поэтому вычисления, выполняемые системой ИИ, ограничены продолжительностью кванта времени. Длительность этого кванта определяется частотой дискрети- зации времени. > В реалистичной игре система ИИ не имеет “лазеек” для получения абсолютно точной и полной информации об игровом мире. Кроме того, в этой главе мы выработали некоторые достаточно жесткие требова- ния, которые должны неукоснительно соблюдаться при разработке системы ИИ.
110 Часть II. Управление перемещениями > Благодаря наличию гравитации мы во многих случаях можем рассматривать игровой мир, как “плоский”. > Выбрав метод обработки столкновений с другими персонажами, нужно строго его придерживаться. (Поэтому решение о выборе такого метода должно быть взвешенным и обоснованным.) > Пространство игрового мира должно выглядеть непрерывным, но в реализа- ции системы можно применять дискретизацию. Наконец, мы выработали некоторые предположения о том, на какую платформу мы будем ориентироваться на этапе разработки эскизного проекта и технических заданий. > Низкоуровневая анимация (например, локомоции) абстрагирована от систе- мы ИИ. > Все конфликты между перемещениями персонажей и элементами окружаю- щей среды разрешаются на уровне движка физической системы. > Для обеспечения качественной имитации перемещений система ИИ может получать необходимую ей информацию об элементах окружающей среды от физического движка. Завершив эту практическую интерлюдию, мы направляемся к следующей главе, в ко- торой поговорим об искусстве ориентации в пространстве и навигации, а также о мето- дах его моделирования в системе ИИ. Практический пример Для наглядной демонстрации идей, изложенных в этой главе, вполне достаточно небольшого игрово- го уровня. Пример анимата под названием Dr. Spin можно найти на Web-узле этой книги по адресу http://AiGameDev.com. Там же находятся и указания о том, как запустить уже откомпилиро- ванный пример. Анимат Dr. Spin может лишь перемещаться и поворачиваться, часто стукаясь об сте- ны и упираясь в углы. Подобные ситуации наглядно демонстрируют то, насколько важно учитывать элементы структуры и свойства игрового мира при имитации перемещений.
^alaitaus^. Гпава 6 Проявление способностей К ПЕРЕМЕЩЕНИЯМ В ЭТОЙ ГЛАВЕ- • Искусство навигации • Игровые боты и их перемещения • Автономные навигации аниматов • Критерии оценки движений • Практический пример • Резюме Мы, люди, часто считаем, что способность пе- редвигаться— это нечто само собой разу- меющееся. Однако если задуматься, как много нужно знать и уметь, чтобы смоделировать реали- стичное передвижение человека в пространстве, становится понятно, насколько много различных базовых навыков скрывается за этой кажущейся простотой. Понять это может только ученый, за- нимающийся вопросами моделирования переме- щений, инженер, создающий искусственные уст- ройства, или человек, который из-за тяжелой трав- мы утратил соответствующие навыки. Но третий случай не входит в сферу наших интересов — в том смысле, что нам не придется специально рассмат- ривать подобные ситуации, чтобы лучше понять суть проблемы. Вместо этого в данной главе мы займемся анализом способностей, проявляемых при перемещениях, а также подумаем над тем, как их можно смоделировать в игровом мире. В частности, в этой главе мы будем рассматри- вать различные подходы к решению проблемы мо- делирования перемещений, придерживаясь сле- дующего порядка. > Изучение способностей людей и живот- ных к осуществлению целенаправленных перемещений в окружающей среде. > Исследование подходов, используемых иг- ровыми ботами для решения задач пере- мещений, и выявление задач, с которыми эти подходы позволяют справиться хорошо и для решения которых они не годятся.
112 Часть II. Управление перемещениями > Обсуждение того, как свойство воплощения аниматов позволяет решать ана-* логичные задачи. Рассмотрев проблему в целом, мы сможем выявить самые важные свойства пере- мещений, задача моделирования которых затем будет положена в основу техниче- ских заданий на создание соответствующих компонентов и модулей системы ИИ. В конце главы мы рассмотрим краткий практический пример моделирования пове- дения для огибания препятствий. Искусство навигации Навигация (navigation) — это процесс целенаправленного выбора маршрута объ- ектом, перемещающимся в физической среде. Навигация считается автономной, когда объект, или “система”, обладает способностью прокладывать маршрут само- стоятельно, без посторонней помощи (так, как это делает подавляющее большинст- во млекопитающих). Следует заметить, что навигация — это одна из возможных форм реализации перемещений. С точки зрения практических нужд моделирования поведения, навигация отличается от простого передвижения, которое представляет собой пассивное подчинение физическим правилам игрового (или реального) мира (например, скатывание объекта с горы). Для навигации человек или анимат должен выполнять определенные движения, направленные на осуществление перемещений. У биологических существ такие движения реализуются за счет сокращений различных групп мышц. В результате живые существа могут ходить, бегать или ползать, в зависимости от обстоятельств. При моделировании системы ИИ в большинстве случаев такой точности управления достигать не обязательно. Поэтому для моделирования поведения несобственных персонажей нам вполне достаточно лишь сосредоточиться на более простых движе- ниях, обеспечивающих основные типы поведенческих реакций. Однако одного только выполнения движений для целенаправленной навигации в мире, с учетом различных препятствий, явно недостаточно. Попробуйте, напри- мер, найти в высотном здании нужную дверь, перемещаясь по нему с закрытыми глазами и не прикасаясь к стенам. Если вы доберетесь до цели, это будет не прояв- лением интеллекта, а простым везением. Понятно, что для того, чтобы принимать те или иные решения при целенаправленной навигации, нам нужно сначала собрать некую предварительную информацию. В действительности большинство живых существ не только собирают такую ин- формацию, но и интерпретируют ее тем или иным образом, в результате чего в мозгу живого существа возникает “ощущение” окружающей его среды. Только обладая подобными знаниями о мире, мы можем принимать взвешенные решения о том, ка- ким будет наш следующий шаг. Сложность навигации биологических существ в значительной мере основывается на точности получения информации. Эта информация может поступать различными методами, в том числе и с использованием физических сенсоров (например, ощуще- ние контакта с полом, столкновений со стенами и тому подобное) или визуальных (например, попадание в поле зрения двери, лестницы или препятствия). В таких перцепциях содержатся предварительные представления об окружающей среде —
Глава 6. Проявление способностей к перемещениям 113 как о свободных областях, так и о непроницаемых. Подобные представления долж- ны быть сформированы в мозгу как человека, так и анимата, прежде чем они смогут принимать решения об осмысленных перемещениях. В результате эволюции биологические существа приобрели способность выпол- нять перемещения с максимально возможной эффективностью. Для этого потребо- вались миллионы лет. А инженеры по системам ИИ вынуждены решать задачу вос- создания аналогичных форм поведения за несравненно более короткое время. Игровые боты и их перемещения В большинстве современных компьютерных игр навигация практически никогда не выполняется на основе интерпретации информации об окружающей среде, по- ступающей от сенсоров. И это понятно — поскольку игровой мир виртуален, подоб- ная информация может храниться в памяти компьютера. Обычно тот или иной алго- ритм просто обрабатывает сведения об игровом мире и извлекает из них информа- цию о структуре. Для этого в игровом мире можно, например, расставить точки пе- ремены маршрута (ТПМ), как показано на рис. 6.1, или же выполнить обработку многоугольников, из которых состоят объекты игрового мира. Получив и обработав такую информацию, бот получает все необходимые ему сведения о площадке, на ко- торой ему предстоит действовать, еще до начала игры. Поскольку бот является частью игрового мира, которая действует не самостоятель- но, а под управлением игровой машины, его расположение точно известно последне- му. Естественно, расположение бота всегда известно также и системе ИИ. Это позво- ляет системе ИИ всегда точно знать, куда бот должен двигаться дальше. Именно по этой причине боты очень хорошо проявляют себя в глобальных перемещениях, напри- мер, когда нужно пересечь всю площадку. Если имеется полная информация об окру- жающей среде игрового мира, то стандартные алгоритмы определения маршрута, та- кие как А*-алгоритм, справляются с подобными задачами очень эффективно. V АЛГОРИТМ А*-ПЛАНИРОВАНИЯ < | А*-алгоритм - это алгоритм планирования, который позволяет проложить на площадке самый короткий - путь к заданной единичной цели. Поскольку тема планирования в данной книге не рассматривается, мы * не будем останавливаться подробно на описании принципов работы этого алгоритма. Если вам нужна | дополнительная информация по этому вопросу, обратитесь по адресу http: / /AiGameDev. com, где вы найдете перечень ресурсов, посвященных подобным алгоритмам. Однако, прокладывая маршрут, боты не “ощущают” игровой мир так, как люди или животные. Именно этим и объясняются наиболее типичные проблемы систем ИИ ком- пьютерных игр, про»шлющиеся в том, что боты пытаются “проломить” головой стену, застревают в дверных проемах или игнорируют динамически возникающие препятствия. Суть этих проблем сводится к тому, что боты ориентируются в пространстве только на основе заранее полученных данных об окружающей среде. Когда модель площадки вы- страивается на основе некоторых допущений, снижается точность ориентации ботов в пространстве. Если же окружающая среда игрового мира изменяется динамически, бо- ты часто оказываются не в состоянии справиться с подобными задачами.
114 Часть II. Управление перемещениями Рис. 6.1. Описание окружающей среды с помощью набора ТПМ (waypoints set) часто называют моделью площадки (terrain model). В подавляющем большинстве случаев мо- дели площадок создаются вручную проектировщиками на этапе разработки игры Автономные навигации аниматов Подход к проектированию систем ИИ, основанный на использовании аниматов, позволяет выполнять эмуляцию физического тела, предоставляя тем самым анимату способность ощущать и воспринимать окружающее пространство подобно тому, как это делают животные. Иными словами, при этом подходе данные не передаются на- прямую анимату, а активно воспринимаются им, причем не все данные подряд, а только те, в которых он заинтересован. Это позволяет резко увеличить эффектив- ность динамических ситуаций. Тем самым устраняется большинство проблем, имеющих место при использова- нии ботов, поскольку персонажи всегда получают актуальную информацию об ок- ружающих их объектах (рис. 6.2). Если игровой мир воспринимается, как непрерыв-
Глава 6. Проявление способностей к перемещениям 115 ный, задача идентификации динамически перемещающихся объектов становится тривиальной. Решая ее, персонажи могут автономно действовать в игровом мире, основываясь на своих восприятиях. Неизвестная область Область, на которую распространяется действие сенсоров Рис. 6.2. Использование эхо-сенсоров для восприятия окружающей среды. В области види- мости выявляются не только участки свободного пространства, но и препятствия Рассматривая вопросы создания перемещений в главе 10, “Изменение направления движения при огибании препятствий”, и главе 12, “Синтез перемещений в системах, основанных на правилах”, можно убедиться в том, что такой подход гораздо проще не только для понимания, но и для реализации! Действительно, проблему в этом случае можно свести к задаче обработки реакции на внешнее воздействие, что является од- ним из многочисленных преимуществ воплощения. Это позволяет получить очень эффективные решения, поскольку для их реализации не нужно прибегать к тщатель- ному планированию. Тем не менее, несмотря на то, что при применении такого современного подхода к проектированию систем ИИ можно улучшить многие аспекты навигации, некото- рые задачи все же лучше решать на основе обычных алгоритмов планирования. В ча- стности, подход, основанный на реакциях, не очень хорошо показывает себя в тех случаях, когда нужно обеспечить достижение заданной точки игрового мира. Отлич- но справляясь с задачами локальных навигаций, он частенько дает сбои при реше- нии задач перемещений на большие расстояния. Вкратце проанализировав существующие подходы к обеспечению навигации, можем сформулировать требования к ожидаемому поведению несобственных пер- сонажей в этом вопросе. Критерии оценки движений Основная сложность моделирования навигации состоит в том, как корректно сгенерировать последовательность весьма незначительных движений, в результате выполнения которых формируется перемещение по заданному маршруту. В частно- сти, перемещения человека обладают самым широким спектром свойств, которые
116 Часть II. Управление перемещениями делают их уникальными и интересными для моделирования. В идеальном случае наша задача заключается в том, как воссоздать эти перемещения с помощью систе- мы ИИ. Ниже перечислены некоторые из таких свойств, присущих движениям че- ловека. Моделирование таких свойств должно быть одной из приоритетных задач при создании системы ИИ, а их проявление в реальной жизни — критериями оцен- ки качества моделирования. > Реализм. Пожалуй, наиболее важное свойство перемещений несобственных персонажей, представляющих в играх людей или животных. Поскольку имен- но перемещения персонажей бросаются в глаза прежде всего, обеспечение реалистичности таких перемещений должно быть поставлено во главу угла при моделировании движений. > Эффективность. Разработчики компьютерных игр гордятся своим умением “выжимать” все возможное из программного кода, критичного по времени выполнения. Хотя подобное “вылизывание” кода для современных компью- теров далеко не всегда оправдано, однако моделирование перемещений — как раз тот случай, когда разработчикам следует проявить все свое мастерство для достижения максимальной эффективности. > Надежность. Как мы уже отмечали в предыдущем подразделе, персонаж ком- пьютерной игры может попадать в самые разные ситуации, не предусмотрен- ные ее создателями. Поэтому модуль, отвечающий за перемещения, должен быть настолько продуман, чтобы персонаж вел себя естественно и сообразно окружающей обстановке. > Целенаправленность. Хотя этот критерий указан в нашем перечне последним, это вовсе не означает, что он имеет самый низкий приоритет. Любое переме- щение в игровом мире должно быть осмысленным и целенаправленным. Соз- дание модуля ИИ, который не обеспечивает целенаправленность перемеще- ний, — это просто пустая трата времени и сил! Нетрудно догадаться, что обеспечение соответствия системы ИИ многим из пе- речисленных выше свойств приводит к возникновению противоречий. Именно по- этому задача разработки подсистемы навигации считается в создании системы ИИ самой сложной. Но иначе она не была бы такой интересной, не так ли? Поэтому во время проектирования и разработки инженерам по моделированию ИИ приходится постоянно искать компромиссные решения, отдавая предпочтение тем или иным свойствам. Именно поэтому и мы уделим несколько минут тому, чтобы поговорить о приоритетах в данной области. С точки зрения исторической перспективы, обеспечение эффективности про- граммного кода всегда было очень важной задачей для разработчиков игр, поэтому о ней можно даже не вспоминать. Что касается обеспечения надежности моделиро- вания, следует отметить, что несколько лет назад эта задача была весьма приоритет- ной в связи с постоянным возрастанием возможностей аппаратных средств. Резко увеличившиеся вычислительные ресурсы компьютеров позволяют проектировщи- кам создавать сложные игровые миры, что, в свою очередь, резко “поднимает план- ку” требований к надежности модуля навигации. Однако в настоящее время на пер- вый план уже выдвигается не столько надежность (приемлемый уровень надежности обеспечивается практически во всех современных компьютерных играх), сколько
^alatfaus^k Глава 6. Проявление способностей к перемещениям 117 реализм перемещений. Что касается целенаправленности перемещений, то здесь уста- новить универсальный приоритет достаточно сложно, поскольку в разных играх ИИ может управлять самыми разными персонажами — от простых пехотинцев до элитных подразделений спецназа. Поэтому приоритетность обеспечения целенаправленности в современных играх определяется в зависимости от нужд конкретной игры. В других областях применения ИИ, связанных с моделированием перемещений, например в робототехнике, могут применяться другие подходы к приоритетности оценки критериев движений (как правило, в них на первое место выдвигается на- дежность). Поскольку разработчики игр много лет использовали результаты, дос- тигнутые учеными и инженерами, которые специализируются в “серьезных” облас- тях использования ИИ, мы, по мере необходимости, также будем говорить о наибо- лее важных результатах, достигнутых в этой области в науке и промышленности. Практический пример Как нетрудно догадаться, важнейшей способностью персонажа, которую должна обеспечивать подсистема навигации, является умение огибать препятствия. В про- явлении этой способности в той или иной степени задействованы все описанные выше свойства. Кроме того, моделирование соответствующего умения — это весьма неплохая задача для начала обучения методам разработки игровых систем ИИ, по- скольку огибание препятствий является сравнительно несложной задачей. Для того чтобы понять, как именно следует моделировать огибание препятствий, имеет смысл провести анализ соответстнук)щих поведенческих реакций человека в различных ситуациях. Ниже перечислены все соотвстстнующие состояния, которые могут иметь отношение к поведению персонажа компьютерной игры. Для каждого из сценариев приведено краткое описание сценария, а также нужного исхода (рис. 6.3). А. Полный поворот в углу Б. Частичный поворот около стены В. Препятствия отсутствуют, движение вперед Рис. 6.3. Три различные ситуации, которые требуют трех различных методов реагирования— начиная от полного разворота и заканчивая направленным движением вперед
118 Часть II. Управление перемещениями > Когда в непосредственной близости от анимата нет видимых препятствий, он может двигаться вперед. Соответствующие поведенческие реакции могут быть направленными (straight) или хаотичными (wandering). > В тех случаях, когда с одной стороны движению анимата препятствует стена, он должен плавно и постепенно изменять направление движения, чтобы из- бежать столкновения с этой стеной. > Когда перед аниматом возникает препятствие, он должен развернуться так, чтобы препятствие находилось не перед ним, а сбоку. > В тех ситуациях, когда анимат упирается в угол или попадает в тупик, он мо- жет предпринимать более кардинальные повороты, вплоть до разворота в сто- рону, противоположную предыдущему направлению движения. Приведенный выше перечень состояний и реакций на них, а также перечень кри- териев оценки движений представляют собой методическую базу для формулирова- ния требований к созданию системы огибания препятствий. Резюме Итак, что же нового мы узнали из этой главы о перемещениях, а также о разных методах их моделирования? > Навигация — это проявление способности к целенаправленному выбору мар- шрута и перемещению по нему в физической среде. > Биологические существа достаточно хорошо справляются с задачей навига- ции, поскольку они постоянно воспринимают информацию об окружающей их среде и действуют сообразно обстановке. > Игровые боты, как правило, используют статическую информацию об игро- вом мире, причем нередко в упрощенной форме. Такой упрощенный подход к моделированию перемещений часто приводит к возникновению проблем с поведением игровых ботов в современных играх, особенно в тех случаях, когда окружающее пространство игрового мира изменяется динамически. > Аниматы по определению могут воспринимать информацию об окружающей среде, поэтому могут перемещаться в динамической среде. Однако этот под- ход сам по себе не дает преимущества при моделировании перемещений, по- скольку, в отличие от традиционного подхода, аниматы не обладают глобаль- ной информацией об игровом мире. В следующей главе мы немного вернемся назад и поговорим о процессе создания системы ИИ в целом. Необходимость такого отступления продиктована тем, что прежде, чем приступать к моделированию автономных перемещений, мы должны представить, какое место процесс моделирования перемещений занимает в произ- водственном цикле создания системы ИИ. Первым этапом этого производственного цикла должен быть анализ проблемы, на основе которого создается эскизный про- ект системы, который, в свою очередь, является основой для подготовки техзаданий на разработку конкретных компонентов ИИ.
Mtitiausjlk Глава 6. Проявление способностей к перемещениям 119 Для чтобы заинтересовать вас в изучении следующей главы, автор подготовил небольшой пример. На Web-узле этой книги по адресу http://AiGameDev.com в разделе Demos вы найдете анимат Bouncer, а также указания о том, как запустить откомпилированный код этого анимата. Анимат Bouncer может самостоятельно перемещаться по игровому миру. Если в результате движения вперед столкновение становится неизбежным, анимат начинает поворачиваться на произвольный угол, пока не выберет новое направление, позволяющее двигаться вперед. Исходный код анимата, который на- ходится на Web-узле вместе с аниматом, очень прост для понимания.

^alaHaustiik Глава 7 Системный анализ И РАЗРАБОТКА ТЕХНИЧЕСКИХ ТРЕБОВАНИЙ В ЭТОЙ ГЛАВЕ. • Проблемная область • Этап системного анализа • Этап разработки технических требований • Общие рекомендации по разработке технических требований • Резюме При создании любой серьезной системы ИИ инженерам нужно пройти через два этапа: этап системного анализа (analysis) и этап разра- ботки технических требований (understanding). Эти два этапа являются основополагающими для остальных работ по созданию системы ИИ, поскольку после их выполнения становится яс- но, что мы имеем в распоряжении, какую систе- му нам нужно создать и как (в общих чертах) мы это намереваемся сделать. Такой подход можно (и нужно) применять при создании любых про- граммных систем, однако для системы ИИ его использование особенно важно, поскольку по- лучение необходимого поведения несобствен- ного персонажа — это более сложная задача, чем создание обычной программной системы. На этапе системного анализа изучается мо- дель окружающей среды игрового мира, игровой машины, а также программных систем, которые будут использоваться в процессе разработки (все это в совокупности обычно называют платфор- мой). Когда разработка игровой машины идет параллельно с разработкой системы ИИ, этап системного анализа выполняется на основе эс- кизного и (или) технического проекта игры. В та- ком случае все отраженные в проекте свойства и особенности разрабатываемого движка рассмат- риваются в контексте требований системы ИИ. На этапе разработки технических требований выполняется постановка задачи создания систе- мы ИИ в терминах теории и практики ИИ и без
122 Часть II. Управление перемещениями привязки к особенностям игровой машины. В большинстве случаев оба этапа проте- кают неформально, поскольку после их завершения мы получаем словесные описа- ния и формулировки требований к моделируемой системе. Но несмотря на такую неформальность, очень важно не пренебрегать этими дву- мя этапами, поскольку ошибки и неверные предположения, допущенные из-за по- верхностно проведенных этапов анализа и разработки технических требований, мо- гут свести на нет все дальнейшие усилия. Обычно на этом этапе разработки все ре- зультаты сохраняются в письменном виде (лучше всего — в виде электронных доку- ментов на внутреннем Web-узле группы разработки). Создание формальной документации, в которой содержатся выводы, полученные в ходе системного анали- за, а также формулируются технические требования, не обязательно (хотя и жела- тельно). Главное, чтобы полученные результаты были зафиксированы хотя бы в ка- кой-нибудь форме (например, в виде раздела в журнале разработки). Важность со- хранения этих результатов в письменном виде трудно переоценить. Выполнив такую работу, вы сэкономите время (и деньги) в ходе дальнейшей разработки игры. В данной главе рассмотрены следующие вопросы. > Краткое описание проблемной области системы ИИ, реализуемой в виде программной системы, с выделением основных составляющих. В начале этой главы мы рассмотрим важные аспекты системы ИИ, которые нужно учесть на первых двух этапах разработки. > Описание этапа системного анализа, т.е. изучение платформы с целью форму- лировки предположений, ограничений и указаний по реализации. > Описание этапа разработки технических требований: выявление критериев, по которым будут оцениваться результат разработки, а также постановка задачи. В целом, в этой главе собрано все, что может помочь вам успешно выполнить эти неформальные этапы и извлечь из них максимальную пользу для дальнейшей рабо- ты над системой ИИ. Проблемная область Для того чтобы лучше понять назначение этапов системного анализа и разработ- ки технических требований в создании программной системы, реализующей ИИ, а также связь этих этапов с последующими этапами разработки, нужно представить компонент ИИ как некую абстрактную программную систему. Как показано на рис. 7.1, процесс создания такого компонента связан с реализацией самых разных концепций и технологий. В случае навигации основной целью является моделирование соответствующего поведения. В приведенном ниже перечне кратко описаны соответствующие концеп- ции на примере задачи огибания препятствий. > Платформа (platform). Программно-аппаратная конфигурация, на которую нужно ориентироваться в ходе разработки системы ИИ (например, тип игро- вого мира, тип игровой машины, возможности графического адаптера и т.п.).
Глава 7. Системный анализ и разработка технических требований 123 Рис. 7.1. Схема, представляющая роль программных ре- шений системы ИИ в рамках выбранной платформы. На схеме выделены различные уровни этой платформы, взаимодействующие с создаваемой системой ИИ > Задача (task). Концептуальное описание целей создания системы ИИ в рамках выбранной платформы (например, распознавание локальных особенностей игрового мира для предупреждения столкновений). > Информация (information). Описание наборов данных, существующих в рам- ках выбранной платформы, которые могут использоваться для решения по- ставленной задачи (например, структура и деталировка окружающей среды). > Исход (outcome). Результаты, которые должны быть достигнуты в ходе реше- ния задачи для данной платформы, а также возможные побочные эффекты (например, траектория движений без каких-либо столкновений). > Вход (input). Подмножество всей существующей информации, представленное в аютветствующем формате (например, ближайшие препятствия). Вход и выход образуют в совокупности базис (scaffolding) решения. > Выход (output). Получаемая неявно в рамках выбранной платформы совокупность действий, которые могут быть выполнены для генерации желаемого исхода. > Контекст (context). Неявное состояние, которое содержит информацию о за- даче, определяя действие выходов и ограничивая входы (например, переме- щения, порождающие моторные реакции). > Проблема (problem). Описание модуля ИИ, в котором определяется соответст- вие между информацией входов и выходов (например, огибание отдельных препятствий). > Решение (solution). Конкретный компонент ИИ, предназначенный для реше- ния проблемы и обеспечивающий получение желаемого исхода с соблюдени- ем всех требований (например, целенаправленное перемещение). Эти концепции будут использоваться на различных этапах производственного цикла по созданию системы ИИ. Поначалу вы, вполне возможно, будете путаться в формулировках и областях применения тех или иных концепций. Для того чтобы вы побыстрее приобрели необходимый опыт, мы будем пояснять все эти концепции для каждой новой проблемы в последующих частях данной книги.
124 Часть II. Управление перемещениями Этап системного анализа На этапе системного анализа выполняется не разбор какого-то конкретного ре- шения, а проводится исследование общих принципов организации системы. Круг рассматриваемых в ходе анализа вопросов можно разделить на две большие группы. > Постановка задачи (general task). Универсальный навык, который мы должны обеспечить с помощью системы ИИ (например, навигация). > Подготовка платформы (platform). Различные аспекты архитектурно-проектных (например, окружающая среда игрового мира) и инженерно-программных ре- шений (например, уровень достоверности при имитации физических процессов в игровой машине), влияющие на методы решения поставленной задачи. Основная идея состоит в том, чтобы в ходе анализа получить количественные оценки элементов указанных выше групп, которыми можно было бы пользоваться в ходе разработки системы ИИ. Результаты анализа можно разделить по трем основ- ным категориям: технические условия, ограничения и условия реализации (рис. 7.2). Каждая из категорий представляет собой словесное описание с необходимым уров- нем детализации. Рис. 7.2. Роль этапа системного анализа в производственном цикле создания сис- темы ИИ состоит в изучении платформы и задачи, в результате которого долж- ны быть выработаны технические условия, ограничения и условия реализации Технические условия Технические условия (assumption) представляют собой перечень характеристик платформы, для которой будет создаваться система ИИ. Этот перечень затем ис- пользуется для разработки технических требований к создаваемой системе. Для выработки этого перечня нужно с достаточной степенью детализации описать окружающую среду игрового мира, в которой предстоит действовать системе ИИ, а
^utallaus^k Глава 7. Системный анализ и разработка технических требований 125 также соответствующую часть игровой машины. В большинстве случаев такое описа- ние сводится к созданию аннотированного перечня интерфейсов, которые будут пред- ставлены игрокам. Как правило, управление системой ИИ осуществляется примерно так же, как и управление собственными персонажами. Например, в том, что касается перемещений, мы можем исходить из того, что в иг- ре перемещения осуществляются под управлением физического движка, который бе- рет на себя разрешение всех конфликтов и столкновений. Кроме того, мы можем рас- считывать на наличие системы анимации, обеспечивающее низкоуровневое управление конечностями (low-level limb control), которую обычно называют системой локомоций (используемой также и для анимации собственных персонажей). Обычно для подготовки технических условий нужно потратить некоторое время. На данном этапе эскизный проект игры в целом уже, как правило, близок к заверше- нию. Иными словами, вносить в него кардинальные коррективы уже не стоит. Поэто- му проектировщик системы ИИ должен принять решение о том, что можно “выжать” из платформы, чтобы получить систему ИИ требуемого качества. Кроме того, он дол- жен решить, насколько эта система должна быть интегрирована в код всей игры в це- лом. Как правило, нужно в максимальной степени увеличивать объем повторно ис- пользуемого кода, а также как можно больше увязывать систему ИИ с интерфейсом собственных персонажей. Особенное внимание нужно уделить потенциально опасным аспектам платфор- мы (в качестве примеров можно назвать конфликты уже принятых проектных реше- ний с потребностями системы ИИ или недостаточно проработанные компоненты, архитектура и реализация которых еще не совсем ясны, и т.п.). Формулировки тех- нических условий должны прояснять ситуацию и предлагать возможные пути реше- ния выявленных проблем. Ограничения Ограничения (restrictions) — это аспекты архитектурных или программных реше- ний, которые влияют на возможность практической реализации задачи. При этом ограничения влияют скорее на методы решения проблемы, чем на технические тре- бования к системе, реализующей эти методы. Поэтому они должны приниматься во внимание на последующем этапе разработки технических требований, в ходе кото- рого исследуется проблемная область. В частности, мы должны описать те части игровой машины, которые могут ус- ложнять решение проблемы (это и есть ограничения). Какие же аспекты имитации процессов игрового мира могут влиять на те или иные методы решения проблемы? В случае имитации перемещений в качестве ограничений выступает структура иг- ровой площадки, поскольку она ограничивает определенные типы перемещений. Кроме того, существуют ограничения на уровне модели окружающей среды (самое главное из них — невозможность моментального получения точной и исчерпывающей информации обо всем игровом мире). Кроме того, имитация сама по себе может быть ограничивающим фактором, поскольку она подразумевает, что система ИИ для вы- полнения перемещений должна использовать дискретные кванты времени.
126 Часть II. Управление перемещениями Условия реализации Под условиями реализации (guidelines) понимаются отдельные аспекты архитек- турно-проектных решений и платформы, которые необходимо принимать во вни- мание на этапе реализации системы. Условия реализации имеют форму различных формализованных процедур, которых нужно неукоснительно придерживаться в процессе разработки системы. В большинстве случаев разработчикам ставятся те или иные условия реализации всего проекта в целом (например: “Документировать весь создаваемый программный код” или “При выполне- нии технического задания выделять не менее 20 минут на разработку документации”). Однако в данном случае мы говорим не об общих условиях реализации, а об условиях реализации в рамках поставленной задачи на разработку системы ИИ. В этой связи не- возможно сформулировать общие условия реализации, поскольку в данном случае они должны отображать конкретную специфику конкретной системы. Тем не менее, когда эти условия сформулированы, их нужно соблюдать так же неукоснительно, как и общие условия реализации всего проекта, поскольку их основное назначение — улучшать про- цесс разработки и способствовать его успешному завершению. Например, в главе 5, “Перемещения в игровом пространстве”, говоря об окру- жающей среде игрового мира, мы затронули проблему тестирования создаваемой системы. В частности, было сказано, что для тестирования системы ИИ следует ис- пользовать реальные уровни игры, а не упрощенные макеты. Кроме того, систему ИИ следует тестировать не на каком-то одном уровне, а на как можно большем ко- личестве уровней, завершенных к моменту тестирования. Это и есть пример кон- кретных условий реализации, которые следует соблюдать при разработке подсисте- мы, отвечающей за навигацию. Тем не менее, следует также учитывать и тот факт, что выработать конкретные ус- ловия реализации до начала собственно процесса разработки можно далеко не всегда. Как показывает практика, чтобы точно сказать, какие конкретные процедуры могут понадобиться, нужно обладать немалым опытом организации производственного цикла игровых проектов. Поэтому в тех случаях, когда такой опыт недостаточен, лучше не заниматься теоретическими изысканиями в данной области, а приступать к самой работе, наметив базовые условия реализации, основанные на здравом смысле. Конеч- но, это вовсе не означает, что следует всегда пренебрегать выработкой условий реали- зации перед началом разработки. Идея состоит в том, что никогда не поздно, столк- нувшись с проблемой, сформулировать условия реализации уже на этапе разработки. Главное в том, чтобы, выработав такие условия, в дальнейшем неукоснительно их придерживаться. Проще говоря, заниматься формализацией производственного цик- ла, если она действительно способствует процессу разработки, никогда не поздно! По- добный подход (например, постоянное улучшение производственных процессов и ос- воение новых методов и технологий) очень важен для разработки систем ИИ, характе- ризующихся значительной сложностью моделируемой области и трудно предсказуе- мым поведением модели.
'XalaUausf'k Глава 7. Системный анализ и разработка технических требований 127 Этап разработки технических требований Этап разработки технических требований относится к одной конкретной задаче (например, огибание препятствий). На протяжении этого этапа осуществляется сло- весная формулировка методов решения поставленной задачи. На этапе разработки технических требований учитываются три основных фактора. > Цели (goal). Формулировка того, чего мы хотим достичь с помощью создавае- мой системы ИИ, в терминах общего описания необходимого исхода. > Потребности (requirements). Перечень вопросов, которые следует учесть при формулировке проблемы, для чего потребуется привлечение других участни- ков рабочей группы проекта. > Ограничения (restrictions). Особенности платформы (ее архитектуры, реализа- ции и т.п.), которые также могут повлиять на решение проблемы. Назначение этапа разработки технических требований заключается в формулиров- ке стоящей перед разработчиками задачи или, во всяком случае, в достаточно четком ее определении. Это подразумевает сопоставление целей этапа с соответствующим им требуемым исходом, а затем выполнение декомпозиции общей задачи с целью итера- тивного определения методов достижения этого исхода, как показано на рис. 7.3. Рис. 7.3. Роль этапа разработки технических требований в производственном цикле создания системы ИИ состоит в анализе потребностей, возникающих у других участ- ников рабочей группы, и формулировке проблемы в первом приближении на различных уровнях реализации
128 Часть II. Управление перемещениями Как видно из рис. 7.3, процесс разработки технических требований во многом подобен этапу анализа. Как и в последнем случае, мы начинаем с анализа имеюще- гося “задела”, чтобы понять, какие методы решения подобных проблем применя- лись ранее. Затем мы вырабатываем предварительный перечень критериев, по кото- рым можно будет выполнить качественную и количественную оценку полученного исхода. После этого рассматриваем примеры, с помощью которых выполняем де- композицию исхода на базовые операции. Критерии и желаемый исход Первое, что нужно сформулировать, — это поведение, которое должно быть по- лучено в результате создания системы ИИ. В идеальном случае формулировка ре- зультата решения проблемы должна быть исчерпывающей (именно в получении та- кой формулировки, собственно, и состоит цель этапа разработки технических тре- бований). Иными словами, цель этого этапа заключается в детальном анализе пред- метной области и создании на его основе как можно более полного описания требуемого исхода и методов его достижения. Обычно такое описание создается в форме перечня высокоуровневых критериев. Для оценки исхода любого решения всегда можно создать более или менее исчерпы- вающий список подобных критериев. Теоретически, получив такой список, можно расставить приоритеты и, таким образом, отсортировать их по приоритетности. Од- нако ранжирование критериев далеко не всегда является простой и однозначной за- дачей, поскольку отдать предпочтение одному критерию перед другим в общем слу- чае бывает достаточно затруднительно. Поэтому на практике в тех случаях, когда нужно провести ранжирование критериев, следует выполнять такое ранжирование, основываясь не на одном, а на двух или более факторах. (Например, вторым факто- ром может быть частная приоритетность одного критерия относительно другого.) Выбор конкретных критериев, как правило, определяется конкретной пробле- мой, поэтому описывать их следует в контексте той или иной проблемы. И хотя при разработке систем ИИ некоторые критерии (например, надежность, эффективность, реалистичность, гибкость или даже уровень компетентности системы) присутствуют практически всегда, все же для каждой подсистемы нужно вырабатывать конкрет- ный перечень критериев и соответствующих приоритетов. В частности, при создании подсистемы, которая должна решать рассматриваемую в главе 6, “Проявление способностей к перемещениям”, проблему огибания препятст- вий, мы можем позаимствовать часть критериев из описания перемещений человека: реалистичность, эффективность, надежность и целенаправленность. Остальные кри- терии должны обеспечить соотнетстние подсистемы глобальным целям моделирования перемещений, общим требованиям к системе ИИ, а также ограничениям платформы. В частности, мы должны учесть тот факт, что аниматы не должны совершать по- ступательных перемещений, которые могут привести к столкновениям. Любые кон- такты с препятствиями допускаются только в том случае, если анимат остается не- подвижным или уклоняется от ранее возникшего контакта. На следующем этапе уточнения критериев мы можем принять решение о том, что скорость разворота анимата на месте с целью огибания препятствия не должна превышать 20°/с при ус- ловии, что в радиусе 4 шагов отсутствуют препятствия, а во всех остальных случаях она не должна иметь ограничений.
Глава 7. Системный анализ и разработка технических требований 129 Формулировка проблемы Во всех случаях, когда это возможно, на этапе разработки технических требова- ний следует предпринимать декомпозицию желаемого исхода на базовые последова- тельности действий, которые нужно предпринять для решения соответствующей проблемы. Такая декомпозиция позволяет разбить одну общую проблему на не- сколько частных, уровень сложности решения которых гораздо ниже, чем уровень сложности решения общей проблемы. Обычно для формулировки проблемы можно использовать уже существующий образец (например, поведение человека). Для этого следует описать все возможные ситуации и сформулировать для каждой ситуации конкретный результат. При аль- тернативном подходе, основанном на проектировании с неявным управлением, соз- даются описания ключевых аспектов поведения, в том числе примеры общего пове- дения и поведения в исключительных ситуациях. В этом случае, не прибегая к соз- данию детальных сценариев всех возможных ситуаций, мы можем описать (причем в более естественной и понятной для нас форме) желательное поведение и поведение, которого следует избегать. Моделируя поведение, основанное на реакциях, мы подготовили (см. главу 6, “Про- явление способностей к перемещениям”) короткий перечень ситуаций с ожидаемыми действиями анимата. Этот перечень, естественно, не является исчерпывающим, по- скольку задача относительно проста. Тем не менее, мы описали все управляющие воз- действия, определяющие угловую скорость поворотов, а также углы поворота и разворо- та. Естественно, в случае более сложной проблемы этап разработки технических требо- ваний занял бы гораздо больше времени. Общие рекомендации по разработке технических требований Как уже было сказано, роль этапа разработки технических требований заключа- ется в четкой формулировке проблемы. При этом следует избегать очень распро- страненной ошибки, когда в технические требования включаются те или иные по- ложения, навязывающие какие-то конкретные методы решения проблемы. Следует прилагать усилия к тому, чтобы технические требования носили как можно более выраженный описательный характер и содержали лишь общие формулировки, что- бы свести к минимуму их влияние на конкретные архитектурно-проектные решения создаваемой системы ИИ. Конечно, подготавливая технические требования, мы уже можем представить, как будем решать тот или иной аспект проблемы. Однако при этом нужно воздержаться от соблазна отражать эти предварительные соображения непосредственно в технических требованиях. Главная причина применения такого подхода состоит в том, что решения, которые на этапе разработки технических тре- бований нам кажутся блестящими и единственно верными, на поверку часто оказы- ваются непригодными к реализации и (или) неэффективными. При этом не следует рассматривать этап разработки технических требований как некий сверхсложный мыслительный процесс, с которым могут справиться лишь из- бранные. Подготовка технических требований — это достаточно простая и интуитив-
130 Часть II. Управление перемещениями но понятная задача, с которой справится любой человек, имеющий достаточный опыт использования и разработки компьютерных игр и владеющий десятком-другим соот- ветствующих терминов. Для изложения на бумаге вполне приемлемых технических требований нужно лишь потратить некоторое время на исследование и анализ задачи, а также учесть общий контекст проекта, для которого будет создана система ИИ. За- тем, как рассказано в двух предыдущих разделах этой главы, нужно формализовать по- лученные результаты и выводы и изложить их в письменном виде. Следует заметить, что на этом этапе очень важно ознакомиться с потребностями других разработчиков, которые необходимо учесть в будущей системе, а также с проблемами, которые волну- ют художников или проектировщиков (будьте готовы к тому, что формулировки этих проблем могут оказаться весьма расплывчатыми и нечеткими). Как правило, получившийся перечень технических требований оказывается в той или иной степени неоднозначным. С одной стороны, это неизбежный результат применения текстовых описаний, для которых характерна неоднозначность тракто- вок и интерпретаций. Однако с другой стороны, можно рассматривать эту неодно- значность как преимущество, поскольку она позволяет впоследствии, не меняя тех- нических требований, гибко изменять решение, если в этом возникает необходи- мость. Конечно, следует учитывать и оборотную сторону такой гибкости, которая заключается в неверной трактовке или недопонимании технических требований, что может привести к нарушению технических условий и поставить под угрозу срыва весь игровой проект в целом. Поэтому особое внимание следует уделять тем крите- риям, которые в значительной степени связаны с другими аспектами архитектурно- проектных решений игры, стараясь в формулировках таких критериев избегать не- однозначности настолько, насколько это возможно. Резюме Подводя итог, следует отметить, что системный анализ общей задачи и платфор- мы, для которой ее нужно решить, — это очень важный подготовительный этап производственного цикла, поскольку в его результате вырабатывается ряд докумен- тов, на которых будут базироваться все последующие стадии разработки. > Технические условия, отражающие специфику платформы, используются на этапе разработки эскизного и технического проектов для создания формали- зованной модели системы. > Условия реализации используются на этапе создания собственно программ- ного кода разрабатываемой системы ИИ. > Ограничения позволяют учесть особенности архитектурно-проектных решений, положенных в основу всего проекта игры в целом, а также игровой среды. На этапе разработки технических требований анализируются ограничения, сфор- мулированные на этапе системного анализа, потребности других участников рабочей группы проекта, которые должна удовлетворять создаваемая система, а также цели, вытекающие из проекта игры. В результате выполнения этого этапа должно быть по- лучено словесное описание, состоящее из двух разделов.
yatallaus'ei!. Глава 7. Системный анализ и разработка технических требований 131 > Формулировка проблемы. Обычно излагается в форме примеров, которые по- казывают, каким должно быть ожидаемое поведение в тех или иных обстоя- тельствах. Это описание является чем-то вроде эталона, который должен быть достигнут системой после завершения ее реализации. > Определение критериев. Формализованные методы оценки исходов различных ситуаций, перечисленных в разделе “Формулировка проблемы” технических требований. Перечень критериев впоследствии будет использован для разра- ботки методик тестирования и экспертиз. Подготовка указанных двух разделов словесного описания — это не лишняя тра- та времени, как может показаться некоторым нетерпеливым разработчикам, кото- рым не терпится поскорее заняться написанием программного кода. Вооружившись правильными критериями на самых ранних этапах разработки системы, вы сможете впоследствии, выявляя те показатели, которые в наименьшей степени соответствуют этим критериям, сосредоточить усилия по усовершенствованию найденных реше- ний на самых критичных участках. Поэтому, рассмотрев описанный ниже практический пример, в следующей главе мы перейдем к разработке эскизного проекта интерфейса, на основе которого в д альнейшем будет реализован анимат, обладающий способностью автономного перемещения. Анимат Tobor обладает способностью получения базовой информации об окружающей среде. У него имеются тактильные сенсоры, обеспечивающие его информацией о выявленных физических контак- тах с препятствиями. Анимат Tobor реагирует на столкновения так, как это обычно делают роботы, — останавливается и начинает механистически поворачиваться, пока не сможет двигаться дальше. От- компилированный программный и документированный исходный код анимата можно найти на Web- узле этой книги ПО адресу http: / /AiGameDev. com.

^alaHaus^k Глава 8 Формализация модели перемещений В ЭТОЙ ГЛАВЕ, • Анализ существующих решений • Разработка технического предложения • Уточнение возможных решений • Разработка эскизного проекта • Резюме Как уже отмечалось в предыдущих главах, на- чальные этапы производственного цикла соз- дания системы ИИ, как правило, протекают не- формально, на интуитивном уровне. Тем не менее они позволяют создать хорошее основание для пе- рехода к последующим этапам. Однако завершение этих этапов вовсе не означает, что наступила пора приступить к написанию программного кода необ- ходимого компонента ИИ (в нашем случае — ком- понента, обеспечивающего навигацию). Сначала нужно разработать технический проект этого ком- понента (в нашем случае, поскольку компонент достаточно прост, этот проект будет представлен одним техническим заданием). А д ля этого, в свою очередь, нужно подготовить техническое предло- жение и эскизный проект, который представляет собой программный интерфейс, учитывающий особенности платформы. В техническом предло- жении приводятся описания разрабатываемого анимата, информации, которую он получает об ок- ружающей среде, а также его реакций на эту ин- формацию, обеспечивающих ему перемещение. Эти описания преобразуются в форму, выражен- ную в терминах входов (inputs), выходов (outputs) и контекста (context) проблемы. В данной главе рассмотрим следующие ста- дии этапа формализации модели перемещений. > Исследование уже имеющихся подходов к обеспечению навигации. > Формулировка возможных решений в ви- де технического предложения. > Выбор оптимального решения из всех воз- можных.
134 Часть II. Управление перемещениями > Разработка эскизного проекта, в котором на более низком уровне детализации описывается выбранное решение. > Выбор представлений входов и выходов. По окончании эскизного проектирования получим программный интерфейс, ко- торый затем останется лишь наполнить соответствующим программным кодом. Анализ существующих решений К счастью, для всех нас моделирование навигации — это достаточно заурядная задача. Существует множество успешных решений этой задачи, поэтому мы можем сэкономить массу времени, просто изучив имеющиеся проекты в смежных областях. (Кроме того, вы должны понимать, что в начальных частях книги мы, так сказать, по определению не можем рассматривать сложные задачи, — самое интересное автор всегда приберегает напоследок!) > В робототехнике системы навигации получают информацию об окружающих предметах с помощью ультразвуковых или лазерных сенсоров, которые позво- ляют им судить о расстоянии до препятствий. Как правило, эта информация используется по прямому назначению, т.е. для того, чтобы определять на- правление дальнейшего движения (хотя существуют модели роботов, которые умеют интерпретировать поступающую информацию с помощью сложных алгоритмов). После принятия решения о выборе направления осуществляется навигация путем отправки соответствующих команд моторам, которые управ- ляют колесами (например, для таких роботов, как AuRA, Rhino и SSS). > В такой научной дисциплине, как исследования в области искусственной жиз- ни (A-life — artifical life), моделируется и изучается поведение искусственных существ (обычно в составе группы). При этом достаточно важным направле- нием в A-life является изучение перемещений, особенно коллективных (например, по типу птичьих стай и рыбьих косяков). Некоторые из подобных исследований (в частности, поведение при выборе направления [66]) можно применить и к моделированию поведения индивидуальных существ. При этом каждый агент снабжается искусственными датчиками, которые и обнаружи- вают препятствия в радиусе их действия. Эта информация учитывается в виде линейных и угловых скоростей в математических выражениях для расчета усилий, которые следует прилагать для выбора направления. > Существует также огромное количество других академических проектов, кото- рые просто невозможно описать двумя-тремя фразами. Единственное, что их объединяет, — это то, что в подавляющем большинстве академических (т.е. не находящих конкретных реализаций в виде робототехнических систем) проек- тов исследования ведутся в области двухмерной навигации. При этом акцент делается либо на практическое применение абстрактных алгоритмов, либо на разработку небольших модульных компонентов, предназначенных для ис- пользования в более крупных системах (например, компоненты машинного зрения или локализации объектов).
ftalaHausiiik. Глава 8. Формализация модели перемещений 135 > В системах ИИ компьютерных шр в силу сложившейся исторической традиции задача навигации всегда упрощается настолько, насколько это возможно, что- бы снизить накладные расходы, связанные с дополнительными вычисления- ми. Для этого, в частности, применяются предварительные вычисления зна- чений структур данных с последующей их передачей системе ИИ в наиболее оптимальном формате. Это позволяет обновлять координаты каждого несоб- ственного персонажа в режиме реального времени, тем самым создавая иллю- зию того, что перемещения непрерывны, а не дискретны. Каждый из перечисленных выше подходов “срабатывает” в тех обстоятельствах, для которых он предназначается. Нам остается лишь выбрать тот подход, который лучше всего соответствует нашим условиям. При этом нам придется сразу же вы- черкнуть из круга рассматриваемых методов те, которые не соответствуют определе- нию воплощения, приведенному в главе 2, “Проблемы проектирования интеллек- та”. Среди остальных методов мы должны выбрать те, которые более удобны для практического применения в системе ИИ компьютерной игры, а также те, которые мы можем использовать если не целиком, то во всяком случае частично. Разработка технического предложения Прежде чем двигаться дальше, мы должны провести анализ возможных методов решения всех аспектов стоящей перед нами проблемы, стараясь при этом сделать круг возможных вариантов решения как можно шире. На этом этапе можно не вда- ваться в детали реализации, поскольку в результате мы получим лишь техническое предложение. Уточнение и детализация будут проведены позднее, на этапе эскиз- ного и технического проектирования. Техническое предложение на создание под- системы навигации представляется в виде короткого документа, содержащего три основных раздела: “Контекст”, “Моторика”, “Сенсоры”. Контекст Основной вопрос, который нужно продумать, — как модель анимата позициони- руется в пространстве. Понятно, что когда мы говорим о перемещениях в общем смысле этого слова, расположение и ориентация анимата — это достаточно важная информация для игровой механики в целом. Однако если речь идет о системе ИИ, то ей, в общем-то, координаты и ориентация анимата не так уж и нужны. Иными сло- вами, анимат, даже не владея информацией о своем расположении и (или) ориента- ции в игровом мире, может вполне успешно справляться с поставленными перед ним задачами, полностью полагаясь лишь на те данные, которые он получает как ре- зультат восприятия окружающей среды. Действительно, контекст может неявно воз- действовать как на входы, так и на выходы анимата. Разница между неявным и яв- ным позиционированием заключается лишь в разных форматах представления дан- ных, как проиллюстрировано на рис. 8.1.
136 Часть II. Управление перемещениями Объект (0,0) Начало мировой (6,1) Положение в абсолютной системе координат системы координат А. Абсолютные координаты Начало собственной системы координат " х ч Объект Х (3,-2) Положение в собственной системе координат Б. Относительные Координаты Рис. 8.1. Агент и объект представлены абсолютными координатами относи- тельно начала мировой системы координат (вверху) и относительными коорди- натами относительно начала собственно системы координат агента (внизу) Таким образом, атрибуты, соответствующие координатам и ориентации анимата, можно представлять в разных форматах. При этом следует учитывать, что выбор того или иного формата повлечет за собой соответствующие изменения в архитектуре системы ИИ, поскольку в каждом случае движок будет сохранять эту информацию по-разному. > Абсолютные векторы выражаются в виде глобальных координат, отсчитывае- мых от начала мировой системы координат (МСК). > Относительные координаты определяются в собственных системах координат (ССК) аниматов и в значительной степени зависят от свойств, поведения и опыта каждого конкретного анимата. Поэтому в общем случае они далеко не всегда совпадают даже для аниматов одного и того же типа. Кроме того, следует учитывать и тот факт, что одни и те же количественные пока- затели могут быть также представлены в различных форматах (об этом мы уже гово- рили в главе 5, “Перемещения в игровом пространстве”). > Дискретные величины позволяют представлять аналитически вычисленные зна- чения с той или иной степенью погрешности. Например, при выборе угла пово- рота во многих случаях можно обойтись четырьмя дискретными величинами, определяющими в игровом мире направление на север, юг, запад или восток. > Непрерывные величины по определению не привязываются к каким бы то ни было конечным значениям и поэтому могут с высокой степенью точности опи- сывать игровые миры, в которых не существует ограничений на перемещения.
Глава 8. Формализация модели перемещений 137 Подобными свойствами обладают также моторика и сенсоры (как показано, на- пример, в следующем подразделе на рис. 8.2), поскольку эти свойства присущи со- ответствующим базовым концепциям. Моторика Моторика (motor actions) необходима для того, чтобы представлять перемещения на разных уровнях абстракции. Например, должны ли средства ИИ управлять переме- щениями анимата шаг за шагом, каждый раз определяя направление следующего ша- га, или же сразу прокладывать ему маршрут к заданной точке? На нижнем уровне абст- ракции находятся простые команды, такие как “повернуть налево” или “сделать шаг вперед”. Они могут быть представлены в программном коде простыми функциями с С(кугветстнующими именами (TurnLeft (), StepForward ()) или же более слож- ными, неявно выраженными функциями, получающими соотнегстнующие параметры (MotorAction (Turn, Left), MotorAction (Step, Forward)). На верхнем уровне абстракции моторика должна обеспечивать целенаправленные действия по типу “подойти к такому-то объекту” или “повернуть в направлении такого-то объекта”. Можно спроектировать анимат таким образом, чтобы он перемещался в игровом пространстве, не применяя поворотов. Такой подход можно реализовать в неявной форме в функции перемещения (в этом случая сама функция будет выполнять пово- рот автоматически, если этого требует ситуация) или же путем применения посто- янной ориентации в одном направлении. Понятно, что второй вариант сильно усту- пает первому по реалистичности, однако выигрывает по простоте реализации. Как показано на рис. 8.2, дискретные перемещения характеризуются ограничен- ным набором направлений и длин шагов, а дискретные повороты — ограниченным набором углов поворотов, кратных 90°. При использовании непрерывной модели, перемещения могут выполняться на любое расстояние (естественно, с учетом мак- симально возможного радиуса) и в любом направлении, а повороты могут выпол- няться на произвольный угол. Непрерывные движения Повороты Рис. 8.2. Различные методы моделирования моторики
138 Часть II. Управление перемещениями Естественно, на практике всегда приходится искать компромисс между просто- той реализации (чем сложнее модель, тем хуже для игровой машины) и простотой использования (чем больше “умеет” модель, тем лучше для системы ИИ), поэтому в каждом конкретном случае уклон в одну или другую сторону при кодировании иг- ровой машины или модуля ИИ неизбежен. Проблема выбора уровня абстракции представления моторики в чем-то подобна проблеме принятия архитектурно-проектного решения о наборе команд, предостав- ляемых собственным персонажам. Так, чтобы организовать управление собствен- ным персонажем от первого лица, обычно требуется найти сбалансированное реше- ние, которое, с одной стороны, обеспечивает гибкость управления, а с другой, — является интуитивно понятным. Теоретически, интерфейс, отвечающий за переме- щения и обеспечивающий взаимодействие системы ИИ с игровой машиной, лучше всего вырабатывать с использованием тех же подходов, которые применяются для разработки интерфейса управления собственными персонажами. Это позволяет зна- чительно снизить объем работ, необходимых для интеграции системы ИИ в про- граммный код игры. Сенсоры Как уже отмечалось выше, для навигации необходимо, чтобы анимат обладал способностью воспринимать информацию об участках свободного пространства. Если в игре не используется упрощенный подход, при котором информация об ок- ружающем пространстве подготавливается и передается анимату перед запуском собственно игрового процесса, анимат может получить такую информацию одним из двух следующих способов. > С помощью функций запроса контента точки (point content), которые могут воз- вращать сведения о типе материала в точке с заданными координатами. Такие функции могут возвращать значение, говорящее, например, о том, что в задан- ной точке находится пустое пространство, монолитный объект, жидкость и т.п. > С помощью функций отслеживания лучей (line trace), которые могут использо- ваться для выявления первого пересечения заданного сегмента со структурой игрового мира. Такой упрощенный подход позволяет идентифицировать об- ласти свободного пространства. Получив с помощью одного из этих способов необходимую информацию, анимат уже может принять решение, куда двигаться дальше. При этом для упрощения зада- чи принятия решения он может использовать дополнительные запросы на получе- ние информации об окружающей среде (например, “прощупать” путь впереди, ос- новываясь на предварительно выбранном направлении движения). С другой сторо- ны, в каких-то случаях можно использовать более простые типы сенсоров или же комбинировать перечисленные выше сенсоры с простыми. В частности, к простым сенсорам относятся сенсоры следующих типов. > Детекторы столкновений (collision detector). Позволяют выявить ситуации, при которых анимат должен столкнуться с препятствием любого типа (стены, ле- стницы или другие персонажи).
yatallaus^ Глава 8. Формализация модели перемещений 139 > Одометры (odometer). Могут использоваться для определения пройденного расстояния относительно текущего состояния. > Датчики поворотов (proprio-sensor). Позволяют отслеживать относительные угловые перемещения анимата вокруг своей оси. Например, с помощью методов запроса контента точки и (или) отслеживания лу- чей можно, не прибегая к перемещениям, собрать достаточно полную информацию об окружающей среде, тогда как при использовании детекторов столкновений (рис. 8.3) придется провести обучение анимата. Естественно, передвижение по площадке с це- лью обучения методом проб и ошибок выглядит значительно менее реалистично, чем целенаправленное перемещение анимата, уже обладающего какой-то информацией. Как легко заметить, снижение реалистичности вызвано недостатком, присущим само- му методу использования детекторов столкновений: они очень часто позволяют вы- явить препятствие лишь в тот момент, когда избежать столкновения уже нельзя. Контент точки • :х; • • XX; • •: х! • :х: 4 .• X Попадание • Промах Отслеживание лучей — Попадание ---Промах Обнаружение столкновений Рис. 8.3. Использование трех различных методов получения информации об окружающей среде Исторически сложилось так, что разработчики систем ИИ для компьютерных игр для обнаружения столкновений просто используют относительные перемещения по следующей схеме: если персонаж не может продвинуться в заданном направлении, значит, имеет место столкновение с препятствием. Однако здесь мы имеем дело не столько с желанием достичь высокой эффективности программного кода, сколько с нежеланием заниматься проектированием интерфейса. Действительно, физиче- ский движок и так владеет информацией о произошедшем столкновении, однако нерадивые разработчики прибегают к различным трюкам и уловкам, чтобы снова ус- тановить этот факт уже внутри программного кода системы ИИ. Именно для этого нужно придерживаться всех стадий процесса проектирования — от разработки тех- нических требований и технического предложения до создания технического проек- та на основе эскизного проекта. В таком случае еще на этапе проектирования можно предусмотреть, чтобы уже имеющаяся в физическом движке информация просто передавалась через специально предусмотренный для этих целей интерфейс в игро- вую машину системы ИИ.
140 Часть II. Управление перемещениями Уточнение возможных решений На принятие решения о выборе конкретной модели, которую затем нужно отразить в эскизном проекте, влияет много различных факторов из описанных в техническом предложении. Прежде всего, выбранная модель должна соответствовать концепции воплощения, описанной в главе 2, “Проблемы проектирования интеллекта”, что по- зволит системе ИИ в полной мере использовать преимущества этой концепции. Это, в свою очередь, означает, что сенсоры и моторика рассматриваются относительно по- ложения тела анимата в игровом пространстве. В данном случае это не создает ника- ких особых трудностей, поскольку огибание препятствий, как это было описано в раз- деле “Формулировка проблемы” технических требований, может выполняться ло- кально. Иными словами, для получения удовлетворительных поведенческих реакций мы можем применить прямое сопоставление входов и выходов. При выборе правильного интерфейса между системой ИИ и окружающей средой основное внимание следует уделить следующим трем вопросам. > Соответствие информации. Информация об окружающем пространстве, пре- доставляемая анимату, должна соответствовать тому, что действительно про- исходит в игровом мире. Если различие между поступающей информацией и происходящими событиями и явлениями слишком велико, это может при- вести либо к тому, что поведение анимата может выглядеть бессмысленным (например, бег в направлении стены), либо к тому, что накладные расходы на просчет алгоритмов ИИ окажутся неприемлемо большими. С другой стороны, умышленное внесение ошибок, эмулирующих погрешность восприятия био- логическими существами (например, ошибки при определении расстояния до удаленных препятствий), может добавить определенный шарм отлаженной и надежно работающей системе. > Гибкость. На этапе проектирования следует предусмотреть, чтобы эскизный проект системы был как можно более легко настраиваемым и мог впоследст- вии применяться для решения сходных проблем (например, перемещения вдоль стен). Это позволит использовать однажды созданный интерфейс для решения целого круга задач. Чем пожертвовать, свободой выбора или свобо- дой применения, нужно решить еще на этапе проектирования. > Эффективность. Если речь идет о перемещениях, обеспечение оптимальной производительности — это очень важная проблема. Это означает, что обмен данными нужно свести к минимуму (например, предоставлять данные только о свободном пространстве). Кроме того, нужно минимизировать количество запросов, что, в свою очередь, означает, что они должны характеризоваться высокой степенью оптимизации. Приступая к эскизному проектированию входов и выходов, нужно искать ком- промиссы, учитывая перечисленные выше факторы. Как правило, это вполне дос- тижимая цель, которая позволяет обеспечить приемлемое качество моделирования.
Глава 8. Формализация модели перемещений 141 Разработка эскизного проекта Подготовив техническое предложение и сузив количество возможных решений до оптимального минимума с учетом конкретных технических требований, можно при- ступить к проработке эскизного проекта подсистемы управления перемещениями. Итак, для управления моторикой нужно предоставить две базовые функции: Move () и Turn (). Этого вполне достаточно для обеспечения гибкости с сохранени- ем простоты. Действительно, более сложные функции (например, MoveTo () или TurnToward ()) можно без особого труда построить на основе этих двух функций. Кроме того, мы будем рассматривать эти функции и соответствующие им операции как непрерывные, поскольку это в наибольшей степени соответствует уровню слож- ности игровой среды, в которой будет оперировать разрабатываемый нами анимат. Что касается сенсоров, мы будем обеспечивать несколько уровней получения информации. На самом низком уровне анимат будет воспринимать физические ре- акции при столкновениях. Чтобы сделать такие столкновения скорее исключением, чем правилом, мы обеспечим, чтобы анимат воспринимал визуальную информацию об окружающей обстановке. Для этого будем использовать отслеживание лучей, с помощью которого анимат сможет получить информацию о препятствии, которое расположено ближе всего к центру его ССК. Этот подход является достаточно гиб- ким, поскольку он позволяет, в случае необходимости, расширить алгоритм отсле- живания лучей для более точной имитации перемещений (например, обнаружение лестниц и т.п.). В качестве механизма передачи информации будем применять активные запро- сы, направляемые системой ИИ игровому миру. Этот метод называется получением информации по требованию (information pull). Достоинством такого метода является то, что система ИИ может по своему усмотрению решать, какая часть сведений о структуре площадки ее интересует. При рассмотрении моделей объектов окружаю- щей среды в части V, вы ознакомитесь с иным методом, суть которого заключается в пассивном получении минимальных объемов данных, рассылаемых игровым ми- ром. Этот метод называется получением информации по рассылке (information push). Интерфейсы Поскольку в нашем случае исходный код уже существует, мы не станем делать вид, что начинаем его проектирование с нуля. Однако при этом мы не будем разби- рать строка за строкой множество не самого лучшего в мире исходного кода, а по- смотрим лишь на самые важные его фрагменты (полную документацию и заголо- вочные файлы интерфейсов можно найти на Web-узле этой книги). Итак, интерфейсы с окружающей средой игрового мира состоят из трех частей. Эти части не только концептуально различны, но и реализованы по отдельности. Сначала рассмотрим выходы, определенные в модуле Motion. void Move( const Vec3f& direction ); void Turn( const Vec3f& orientation ); При каждом вызове функции Move () предпринимается попытка выполнить шаг в направлении, заданном относительно текущего состояния. Функция Turn () выпол- няет вращение в заданном направлении, также выраженном относительно текущего состояния.
142 Часть II. Управление перемещениями Теперь рассмотрим физический интерфейс, определенный в модуле Physics. bool CollisionO; Эта функция возвращает значение true в том случае, если анимат столкнулся с препятствием. Альтернативный (и более эффективный) подход заключается в оп- ределении простой функции обратного вызова OnCollision (), которая будет по- лучать в подобных ситуациях соответствующее извещение. Наконец, нужно обеспе- чить имитацию визуального интерфейса, чтобы попытаться выполнить огибание ближайших препятствий, столкновение с которыми можно предвидеть. Эта задача решается в модуле Vision. float Tracewalk( const float angle, const float steps = 4.Of ) const; Эта функция выполняет предварительный прогноз движения анимата от текущей начальной точки в заданном секторе. Возвращаемое ею значение представляет собой расстояние, которое анимат сможет пройти до первого столкновения с препятствием. В последующих главах мы будем возвращаться к представленной выше функцио- нальности, дорабатывая ее по мере необходимости. Эскизный проект исходного кода Для того чтобы задействовать перечисленные выше интерфейсы, нужно просто организовать вызовы соответствующих функций. Конкретная реализация зависит от выбранного подхода к моделированию ИИ, но даже сейчас можно представить эс- кизный проект исходного кода, в котором будут представлены все такие вызовы. void Think() ( // Проверка контакта bool col = physics->Collision(); // Выявление препятствий прямо по курсу float front_obstacle = vision->TraceWalk( O.Of ); // Принятие решения о том, какую моторику использовать motion->Move( Forward ); if (col || front_obstacle < 2.Of) motion->Turn( orientation ); } На стадии разработки технического проекта и его реализации мы примем реше- ние о том, нужны ли нам все эти функции, а также рассмотрим, как они соотносятся с выбранными методами моделирования ИИ. Резюме Мы проделали достаточно большую подготовительную работу, но теперь в нашем распоряжении имеется хорошо продуманный эскизный проект интерфейса подсис- темы перемещений с игровой машиной. При этом мы установили несколько важных моментов.
^ataUausj^ Глава 8. Формализация модели перемещений 143 > Существует много различных методов формального решения задачи навигации. > Очень важно рассматривать определение состояния анимата в игровом про- странстве (т.е. в текущем контексте). > Входы предоставляют системе ИИ информацию об игровом пространстве, хо- тя система не обязана использовать эту информацию. > Выходы позволяют системе ИИ управлять перемещениями и тем самым гибко воздействовать на получаемый исход. > При выборе конкретной модели мы должны учитывать высокоуровневые формулировки, изложенные в технических требованиях. > В результате эскизного проектирования необходимо создать эскизный проект исходного кода, который не будет привязан к конкретной проблеме (т.е. будет пригоден для моделирования перемещений любого типа). Итак, в этой главе мы рассмотрели процесс эскизного проектирования. Это очень важный этап производственного цикла создания системы ИИ, поскольку в ходе эс- кизного проектирования конкретизируется стоящая перед разработчиками пробле- ма и устанавливается информация, которая должна предоставляться системе ИИ. Понятно, что некачественно проведенное эскизное проектирование может на фи- нальных этапах привести к “развалу” всего проекта. Верно также обратное утвер- ждение: при качественно проведенном эскизном проектировании собственно разра- ботка системы ИИ может оказаться достаточно тривиальной задачей. В следующей главе мы уделим внимание следующему этапу — техническому проектированию, а также поговорим о методах представления знаний, которые нужны при моделиро- вании систем ИИ. Как всегда, прежде чем ознакомиться с теоретическими постулатами очередной концепции, вы мо- жете посмотреть, как выглядит их реализация на практике. Среди демонстрационных примеров, при- веденных на Web-узле этой книги по адресу http://AiGameDev.com, имеется анимат Pinbot. (Его выполняемый и исходный коды находятся в разделе примеров части II.) На Web-узле вы найдете подробные указания о том, как подключить его к коду игры. Анимат Pinbot обладает способностью при столкновении со стеной определять ее ориентацию в пространстве. Этот анимат умеет по на- правлению столкновения определять направление рикошета, что позволяет ему отскакивать от стены подобно бильярдному шару. Как и в предыдущих примерах, этот анимат не представляет собой ниче- го необычного — скорее, это своего рода развлечение перед тем, как мы перейдем к разговору о техническом проектировании и представлении знаний.

'NalaUaus^k Гпава 9 Разработка ТЕХНИЧЕСКОГО ПРОЕКТА И ПРЕДСТАВЛЕНИЕ ЗНАНИЙ В ЭТОЙ ГЛАВЕ, • Общие сведения о сути технического проектирования • Теория представления знаний • Формализация представления знаний • Основные этапы технического проектирования • Необходимость технического проектирования • Резюме В предыдущей главе мы рассмотрели этап эс- кизного проектирования системы ИИ на при- мере создания эскизного проекта подсистемы пе- ремещений. В этой главе мы пойдем дальше и рас- смотрим, как необходимо подходить к разработке архитектуры и технического проекта соответст- вующих программных модулей на основе имею- щегося эскизного проекта. Как вы видите, мы продвигаемся к этапу реа- лизации постепенно: начинаем с неформального этапа анализа, затем переходим к этапу разработ- ки технических требований, после чего, отталки- ваясь от полученных высокоуровневых техниче- ских требований, создаем техническое предложе- ние. На следующем этапе мы уточняем это техни- ческое предложение и получаем в первом приближении эскизный проект будущей системы. Теперь нам предстоит выполнить технический проект: формальное описание архитектуры созда- ваемой системы и (или) программных структур данных. Многие программисты относятся к идее о необходимости строго придерживаться описан- ных этапов, мягко говоря, с прохладцей. Однако только при неукоснительном соблюдении этой (как считают некоторые разработчики) “бюро- кратии” можно получить по-настоящему гибкую и масштабируемую систему ИИ.
146 Часть II. Управление перемещениями В этой главе мы сосредоточимся на этапе технического проектирования, а также посвятим некоторое время ознакомлению с теорией представления знаний и ее применению в разработке игр. В этой главе рассмотрены следующие темы. > Особенности технического проектирования систем ИИ с использованием про- цедурного подхода. > Значение теории представления знаний (ТПЗ) и ее основные положения. > Использование формального языка ТПЗ в исследованиях проблем ИИ. > Краткое описание всех стадий технического проектирования на основе языка ТПЗ. > Место и роль этапа технического проектирования в производственном цикле создания системы ИИ. Эту главу нельзя назвать ни чисто теоретической, ни чисто практической. Между тем она является одной из самых важных глав книги, поскольку ознакомление с ос- новами ТПЗ поможет вам повысить уровень знаний не только в области проектиро- вания систем ИИ, но и компьютерных игр в целом. Общие сведения о сути технического проектирования В общем смысле технический проект представляет собой совокупность формаль- ных документов, содержащих окончательные технические решения и дающих пол- ное представление об архитектуре создаваемой системы, образующих ее программ- ных интерфейсах и их логике работы, а также структуре данных, представленных в компьютерных форматах. Тот факт, что эти документы являются формальными, го- ворит о том, что они были официально утверждены всеми заинтересованными сто- ронами, а их содержимое приведено в соответствии с другими частями разрабаты- ваемой компьютерной игры. В общем случае технический проект состоит из описания архитектуры и отдель- ных модулей, технических заданий на разработку этих модулей и плана-графика вы- полнения работ. В рассматриваемом примере создания подсистемы перемещений технический проект сводится к одному-двум техническим заданиям, поэтому в не- которых случаях в дальнейшем изложении будем применять термины “технический проект” и “техническое задание” как синонимы, хотя это и не совсем корректно. Можно сказать, что технический проект является “мостом” между описательным эскизным проектом и реальным программным кодом действующей системы ИИ. Именно на этапе технического проектирования должны быть приняты окончатель- ные решения относительно выбранных интерфейсов, методов и архитектуры систе- мы. При таком подходе реализация системы в программном коде пройдет в соответ- ствии с намеченным планом и будет выполнена с заданным уровнем качества. Процедурный подход к проектированию системы ИИ При проектировании системы ИИ очень часто бывает полезно рассматривать эту систему в целом или отдельную ее подсистему как некую процедуру или функцию, которой передаются значения определенных параметров и которая возвращает ре-
Глава 9. Разработка технического проекта и представление знаний 147 )ультат в том или ином виде. В языке C++ предварительное объявление функции называется прототипом (prototype). Создав такой прототип, остается лишь фор- мально определить входы и выходы, используя для этого ключевые слова C++, ко- торые предназначены для описания структур данных. Однако прежде чем приступать к реализации функции, необходимо установить, как она соотносится с уже имеющимися внешними переменными. Для этого следует выяснить, как ведет себя внешний по отношению к создаваемой функции про- граммный код. Проработав в техзадании прототип и описание контекста, в котором он используется, мы тем самым на порядок снижаем уровень сложности задачи по написанию конкретного программного кода, реализующего это техзадание. Именно для этого мы и применяем этап технического проектирования: для максимального упрощения этапа реализации путем формализации всех аспектов задачи. Цель технического проектирования Как уже было сказано, в результате технического проектирования мы должны получить формализованную модель создаваемой системы, которая бы соответство- вала разработанному на предыдущем этапе эскизному проекту интерфейсов и струк- тур данных. При этом основное внимание в ходе формализации мы уделяем контек- сту, входам и выходам (подробнее см. главу 7, “Системный анализ и разработка технических требований”). Затем по полученной формальной модели, описываю- щей программную архитектуру будущей системы, мы должны создать технические задания на разработку соответствующих модулей. Для решения последней задачи существует множество различных методологий, подавляющее большинство которых можно с успехом применить для создания системы ИИ, так сказать “в лоб”. Однако существует и некоторая специфика, связанная с природой систем ИИ, учет которой может существенно упростить задачу разработки техзаданий и их реализации в кон- кретном программном коде. Для этого, в частности, и предназначена теория пред- ставления знаний, с основными концепциями которой вы ознакомитесь в следую- щем разделе. Теория представления знаний Теория представления знаний (KR — Knowledge Representation) — это научная дис- циплина, изучающая принципы выражения информации в компьютерных системах. С фундаментальной точки зрения, задача определения интерфейса также является ча- стным случаем применения ТПЗ. Эту задачу можно сформулировать следующим обра- зом: “В какой форме должна быть представлена информация, передаваемая модулям системы ИИ?” К счастью для нас с вами, применение ТПЗ в области моделирования систем ИИ уже достаточно хорошо исследовано в таких работах, как [14], [18] и [89], поэтому мы можем не заниматься “изобретением колеса”, а просто воспользоваться готовыми результатами. С формальной точки зрения, представление знаний — это некий “слепок” с ре- альной информации, а не сама эта информация (иными словами, занимаясь пред- ставлением знаний в компьютерных системах, мы всегда имеем дело с суррогатом
148 Часть II. Управление перемещениями той или иной степени достоверности и никогда — с оригинальным продуктом). Это означает, что даже если мы создадим полностью подконтрольный нам виртуальный мир, никогда не сможем предоставить системе ИИ полную, достоверную и исчерпы- вающую информацию о нем. Таким образом, основная проблема в ТПЗ заключается в том, как обеспечить представление минимального объема информации с мини- мальными искажениями реальной картины. Для формализации такого представления в ТПЗ используются специальные языки представления знаний (ЯПЗ). Эти ЯПЗ обладают такой характеристикой, как вырази- тельность (expressiveness), которая показывает, насколько хорошо конкретный ЯПЗ справляется с задачей представления знаний в целом. При этом информация на этих ЯПЗ может быть представлена как в нотационной форме (т.е. задана в виде начальных условий), так и в инференциальной (т.е. выводимой на основе имеющихся знаний). Основной же характеристикой ЯПЗ с точки зрения систем ИИ является их эф- фективность. Это связано с тем, что на практике всегда приходится искать компро- мисс между нотационными аспектами (ограничения, налагаемые объемом свобод- ного дискового пространства) и инференциальными (ограничения, налагаемые ко- нечной вычислительной мощностью процессоров). Поскольку описания, создаваемые на ЯПЗ, обладают свойством инференциально- сти, этим языкам также присущи такие характеристики обычных языков, как син- таксис (структуризация фраз) и семантика (смысловое значение фраз). Кроме того, ЯПЗ, как и любой другой язык, должен быть целостным (consistent), чтобы постро- енные на нем фразы были пригодными к использованию, а заключения, сделанные на их основе системой ИИ, имели бы под собой основание. Еще одной характеристикой ЯПЗ является его полнота (completeness), показы- вающая, насколько хорошо на этом языке можно представить те или иные знания. Расширяемость (extensibility) ЯПЗ — еще одна важная характеристика, определяю- щая, насколько легко его адаптировать к какой-то частной проблеме (как вручную, так и автоматически). Следует также отметить, что некоторые ЯПЗ более естествен- ны (natural), чем другие. Это означает, что их легче понять или записать в понятной человеку форме при ведении диалога человека с компьютером. Задача разработки интерфейса с точки зрения ТПЗ имеет очень много общего с задачей вывода умозаключения на основе рассуждений. Выбор того или иного пред- ставления — это, фактически, онтологическое заключение (имеющее дело с приро- дой сущностей и их взаимосвязями). Именно такие заключения и накапливаются постепенно, находя свое конечное выражение в архитектурном проекте. Однако при использовании формализованного подхода ТПЗ мы всегда можем перейти от одной формы представления к другой (естественно, с той или иной сте- пенью точности). Поэтому применение концепций ТПЗ на этапе технического про- ектирования интерфейса дает разработчику гораздо большую свободу, чем исполь- зование обычных умозаключений, поскольку мы всегда можем преобразовать фор- мальное представление в вид, который лучше всего подходит для конкретного слу- чая реализации.
Глава 9. Разработка технического проекта и представление знаний 149 Формализация представления знаний Итак, как мы уже отмечали, для высокоуровневого представления знаний можно создать специальный язык, с помощью которого обеспечивается формализация такого представления. Поскольку знания могут относиться к самым разным областям, не удивительно, что существует множество различных ЯПЗ. Кроме того, знания могут быть представлены как в виде коротких фраз, так и в виде сложных конструкций, со- держащих как фразы на естественном языке, так и математические формулы. Нако- нец, не следует забывать и о существовании так называемых метазнаний (т.е. знаний о знаниях) и сложных ассоциациях или (если вам это ближе) об иерархиях классов и наследовании. Конечно, формализация представления знаний — это только высокоуровневая концепция, для практического применения которой необходимо использовать низ- коуровневое программирование. Однако описанные ниже формальные представле- ния с успехом можно выразить в виде конструкций языка программирования C++. Символы Отдельные факты с точки зрения ТПЗ являются символами (symbol). Символ может представлять собой некий объект (текст, букву или число). Таким образом, в качестве символов можно использовать любой примитивный тип данных (например, целые числа, числа с плавающей точкой, данные логического типа или массив символов). [left_obstacle_distance 4.0] [гight_obs taele "unknown"] Фактически, для человека представление знаний в виде символов является доста- точно естественной формой записи. Основная сложность такого подхода к пред- ставлению знаний состоит в том, что для каждой концепции в рамках рассматривае- мой проблемы необходима отдельная переменная. Объект-атрибут-значение Парадигма объект-атрибут-значение (object-attribute-value) позволяет разрешить это противоречие путем предоставления возможности объектам или концепциям иметь несколько ассоциированных с ними переменных. Таким образом, если объект О имеет атрибут А со значением V, это записывается в виде А (О, V). distance(left_obstacle, 4.0) presence(гight_obstaele,"unknown”) При такой форме представления каждая концепция может иметь несколько ат- рибутов, что существенно сокращает количество объектов. Концептуально именно так и определяются структуры и классы языка C++.
150 Часть II. Управление перемещениями Фреймы Фрейм (frame) определяет объект по его текущему состоянию и во взаимосвязи с дру- гими фреймами. Для этого используются так называемые слоты (slot), содержащие атри- буты или ссылки, которые часто называют заполнителями (filler). frame-left-obstacle: distance: (4.0) present: (true) entity: (frame-fred) С помощью этого метода получение доступа к информации о любой концепции осуществить очень просто. С другой стороны, несколько усложняется модификация этих концепций, поскольку при этом необходимо обеспечивать целостность всех фреймов. В языке C++ фреймы можно представить с помощью указателей или ссы- лок на другие экземпляры классов. Семантические сети Семантическая сеть (semantic network) обеспечивает сохранение информации между объектами в виде графа. Каждый узел соответствует одной концепции, а свя- зи представляют собой взаимоотношения (рис. 9.1). Рис. 9.1. Семантическая сеть, которая увязывает символы вместе. В этом примере символы представляют сущности окружающей среды В качестве примера типичных взаимосвязей можно привести следующие: “является”, “имеет”, “экземпляр” и т.п. Однако эти взаимосвязи могут быть любыми, поскольку формальных ограничений на их типы не существует. С помощью семантических сетей, в частности, можно представить такие концепции C++, как наследование или взаимоза- висимости.
Глава 9. Разработка технического проекта и представление знаний 151 Сила интроспекции В языке C++ имеются конструкции, аналогичные всем формальным конструк- циям ЯПЗ. Однако подход, используемый в C++, в общем случае статичен, поэтому высокоуровневые знания на этапе компиляции устраняются. Например, в откомпи- лированном коде на языке C++ невозможно узнать имя переменной или даже полу- чить информацию об иерархии классов, образованной с помощью наследования. Для того чтобы извлечь максимальную выгоду из использования формальных конструкций ЯПЗ, необходимо, чтобы они были реализованы с поддержкой интрос- пекции (introspection), обеспечивающей динамический запрос характеристик знаний со стороны системы ИИ. В языке C++ такую поддержку можно реализовать только путем использования дополнительных переменных, в которых в явной форме хра- нится соответствующая информация. В этом случае использование описанных в этом разделе формальных конструкций ЯПЗ может принести ощутимую выгоду. Основные этапы технического проектирования Вообще говоря, разработка технического проекта — это процесс итерационный, поскольку, как правило, требуется несколько “проходов” для того, чтобы найти и ис- править все изъяны. Сначала выполняется предварительный отбор всех возможных ва- риантов реализации интерфейсов, представленных в эскизном проекте. Как правило, эта стадия протекает неформально. Затем выполняется уточнение отобранных вариан- тов реализации путем проверки их соответствия внутренним требованиям системы ИИ и внешним требованиям, выдвигаемым к этой системе другими системами. После этого происходит формализация двух-трех оставшихся вариантов и их представление в виде компьютерных спецификаций с использованием ЯПЗ. На финальной стадии мо- жет понадобиться еще одно уточнение д ля выбора лучшего решения, поскольку выбор ЯПЗ может повлиять на соответствие полученной модели техническим требованиям. Только после того как не останется никаких сомнений в том, что полученная модель является оптимальной, можно переходить к реализации ее в программном коде. Предварительный отбор Как правило, чем больше будет рассмотрено вариантов реализации функцио- нальности, определенной в эскизном проекте, тем лучше. Эти варианты могут пред- ставлять собой как детально проработанные модели, в том числе на уровне входов и выходов, так и идеи на уровне общей концепции либо идеи по реализации какого- то конкретного аспекта. На первых порах идеи могут быть не очень четко сформули- рованы, поскольку на детализацию нужно потратить много времени, а для нас важ- нее не столько качество, сколько количество рассмотренных вариантов. Если какое- то решение будет найдено подходящим, его детализацию можно будет выполнить на более поздних стадиях.
152 Часть II. Управление перемещениями Роль предварительного отбора Как уже отмечалось выше, занимаясь предварительным отбором возможных вари- антов решений, мы должны помнить о трех аспектах проблемы. Ниже приведены не- которые практические рекомендации, которые могут помочь вам не сбиться с пра- вильного пути. > Контекст. Принимая решения, связанные с контекстом проблемы, часто при- ходится учитывать архитектуру и техническую реализацию остального про- граммного кода игры. Иными словами, прежде чем искать решение, нужно понять, как работает игровая механика, скрытая за теми или иными интер- фейсами. Поскольку игры в подавляющем большинстве случаев имеют иерар- хическую архитектуру, необходимо представлять, что происходит на более вы- соких уровнях: с какими переменными мы можем работать напрямую и как можно снизить сложность решения, которое нам предстоит найти? > Входы. На этой стадии мы выбираем входы, имеющие отношение к стоящей перед нами задаче. Для этого достаточно часто можно рассматривать проблему с точки зрения человека: какая информация понадобилась бы человеку в по- добной ситуации? Альтернативный подход заключается в том, чтобы исходить из номенклатуры переменных, необходимых программисту для решения зада- чи в программном коде. > Выходы. К выбору выходов можно применить те же критерии, что и к выбору входов. Различие заключается в том, что выбор выходов, как правило, провес- ти гораздо проще, чем выбор входов, поскольку в подавляющем большинстве случаев декомпозиция проблемы на последовательность примитивных опера- ций — задача тривиальная. Если это не так, значит, мы не до конца разобра- лись в том, что же мы хотим смоделировать! Поскольку все три перечисленных компонента взаимосвязаны, мы можем рас- сматривать их на этой стадии по отдельности, чтобы упростить задачу предваритель- ного отбора вариантов. Источники идей По мере накопления практического опыта задача предварительного отбора раз- личных идей будет упрощаться, однако на первых порах вы, возможно, будете испы- тывать затруднения на этой стадии. Ниже перечислены некоторые источники новых идей или более лучших вариантов решений. > Основной источник информации — это активные исследования. Читайте ака- демические журналы или материалы научно-практических конференций по ин- тересующей вас теме, ищите соответствующие руководства и статьи в Web и т.п. > Одним из лучших альтернативных источников информации являются мате- риалы об игровой индустрии, публикуемые в СМИ. Старайтесь быть в курсе всех новостей, которые можно узнать из интервью с разработчиками и постре- лизных анализов завершенных проектов. Из подобных статей вы сможете уз- нать, какие решения принимали в подобных ситуациях ваши коллеги. В этом случае вы будете абсолютно правы, называя “работой” путешествие по Web- узлам профессиональных и специализированных СМИ.
Nataftausiiify. Глава 9. Разработка технического проекта и представление знаний 153 > Еще одним источником информации могут быть инициативные разработки, свя- занные с интересующей вас темой. Изучая программный код ахтгветствующих проектов с открытым исходным кодом, а также программный код SDK, можно найти немало отличных примеров реализации в смежных областях. > Заимствование идей из других проблемных областей (любимый метод автора). Конечно, это не всегда возможно, но в тех случаях, когда такое заимствование удается, результат, как правило, оказывается более чем удовлетворительным. Поскольку при предварительном отборе вариантов требуется рассмотреть много вопросов, эта стадия может занять достаточно продолжительное время. В некоторых случаях бывает полезным отставить проблему в сторону на некоторое время, чтобы впоследствии, вернувшись к ней, посмотреть на нее, так сказать, “свежим взглядом”. Формализация На этапе предварительного отбора мы подготовили несколько вариантов возмож- ных решений, провели анализ преимуществ и недостатков каждого из них, разобра- лись в их внутренней логике и механике их взаимодействия с остальным программным кодом. Таким образом, теперь мы готовы выработать оптимальное решение и разрабо- тать на его основе полный архитектурный проект. Для этого, в случае необходимости, можно применить синтез нового решения на основе уже имеющихся частных решений (например, из одного решения взять какой-то вход, а из другого — выход). Синтези- ровав модель и получив архитектуру проектируемой системы, можно приступать к формальному описанию ее технической реализации. В том случае, если это ваша пер- вая разработка, вам придется все создавать “с нуля”. Если же проект не первый, може- те облегчить работу, воспользовавшись уже имеющимися “заготовками”. По завершении стадии формализации должен быть разработан технический про- ект, готовый к официальному утверждению. В нем должна быть полностью описана выбранная архитектура системы с обоснованием принятых решений по поводу вы- бранного ЯПЗ, а также должны приводиться форматы данных входов, выходов и кон- текста. После утверждения архитектурной части технического проекта на его основе можно создать технические задания и план-график выполнения работ, а также другую необходимую документацию (например, требования по оформлению и документиро- ванию программного кода, методики тестирования и т.п.). Все эти документы являют- ся неотъемлемой частью технического проекта и должны храниться вместе с вноси- мыми дополнениями и изменениями до завершения всего проекта по созданию игры. Представление знаний и структуры данных На этой стадии нужно выбрать ЯПЗ, полнота которого достаточна для представ- ления окружающей среды игрового мира. Кроме того, этот ЯПЗ должен быть гиб- ким, расширяемым и обладать необходимой эффективностью. Однако выбор ЯПЗ — это только одна часть формализации, поскольку нам не нужно забывать о низкоуровневом представлении получаемых структур на языке C++. Здесь мы имеем дело с задачей, которую можно отнести к категории задач, связанных с проектированием структур данных. Как показано в табл. 9.1, данные могут быть представлены с помощью базовых типов (int, float, bool, char), сложных типов (std: : vector, std: :map, std: :list) или даже с помощью ка- ких-то экзотических типов (boost: : any).
154 Часть II. Управление перемещениями Таблица 9.1. Пример структур данных, выбранных для представления знаний на уровне языка C++ Уровень ЯПЗ Структуры данных уровня языка C++ СИМВОЛЫ bool метод_класса Нечетко определенные символы vsctor<f ioat> Пары “атрибут/значение” mapcstring, boost:: any> Для моделирования с использованием более сложных конструкций ЯПЗ (фрей- мов или концептуальных графов) требуется достаточно хорошее знание языка С++ (как минимум, основ объектно-ориентированного программирования). Процесс формализации Поскольку выходов обычно меньше, чем входов, и поскольку выходы, как прави- ло, проще входов, провести формализацию выходов в большинстве случаев также проще, чем формализацию входов. Помимо этого, формализация выходов позволяет в значительной степени прояснить саму проблему. Следует заметить, что если фор- мализация начинается с выходов, мы считаем, что все входы определены корректно, а система ИИ функционирует безукоризненно. Затем нужно выполнить формализацию входов, после чего оставшаяся часть работ по формализации становится, как говорится, дело техники. Однако формализация входов сама по себе — это один из самых сложных аспектов процесса формализации (и, как правило, один из основных источников ошибок, неожиданно “выплывающих” на этапе реализации или тестирования). Поэтому к формализации входов нужно отне- стись со всей серьезностью. На финальной стадии процесса формализации выполняется моделирование вспо- могательных переменных контекста. Следует заметить, что эти переменные также могут неявно воздействовать как на входы, так и на выходы. Однако контекст в большинстве случаев определяют скорее абстрактно, чем явно, поскольку этого вполне достаточно для формализации и создания архитектуры системы, решающей поставленную проблему. Уточнение На стадии уточнения необходимо тщательно проверить, насколько выбранное ре- шение соответствует техническим требованиям. Конечно, можно эти требования по- ложить в основу технического проектирования, сразу же отбрасывая любое возможное решение, если оно хоть в чем-то не соответствует требованиям. Однако при таком под- ходе, как правило, резко снижается творческая составляющая процесса проектирова- ния, в результате чего принимается простое, но не очень удачное решение, а велико- лепное, но сложное отбрасывается на самых ранних стадиях. Поэтому если критиче- ский анализ решений вынесен в отдельную стадию, в ходе предварительного отбора ва- риантов разработчик сможет раскрыть весь свой творческий потенциал. На стадии уточнения следует рассмотреть несколько важных аспектов каждой модели, причем все эти аспекты равноценны. > Позволяет ли модель применить ее в примерах использования, описанных в раз- деле “Формулировка проблемы” технических требований? > Насколько модель соответствует другим требованиям (например, требовани- ям, выдвигаемым аппаратно-программной платформой)?
Глава 9. Разработка технического проекта и представление знаний 155 > Соответствует ли технический проект системы ИИ (в частности, предложенные интерфейсы и иерархические зависимости) архитектуре и техническому проекту всей игры в целом? Если нет, то насколько сильно и как это можно исправить? > Являются ли предложенные интерфейсы достаточно гибкими, чтобы их мож- но было применить для разных случаев реализации? Если нет, то можно ли их применить, по крайней мере, в подобных случаях? По большому счету, на каждый из этих вопросов нужно дать односложный ответ: “Да” или “Нет”. В случае отрицательного ответа необходимо выполнить дополни- тельные исследования проблемы для выяснения причины, а затем провести еще од- ну итерацию для ее устранения. С другой стороны, следует помнить, что некое несо- вершенство модели далеко не всегда является недостатком! Создать идеальную -во всех отношениях модель практически невозможно, поэтому необходимо знать, когда можно подвести черту и прекратить доводку модели, чтобы перейти к следующим этапам. Небольшие недостатки вполне можно на последующих этапах превратить в достоинства, придающие поведению анимата реалистичность. Необходимость технического проектирования Хотя некоторым нетерпеливым разработчикам такое “топтание” вокруг технического проекта может показаться пустой тратой времени, в действительности важность этапа технического проектирования трудно переоценить! Если он будет выполнен небрежно или некорректно, система ИИ может стать “камнем на ногах” всей игры. Гибкость интерфейса позволяет значительно упростить эксперименты с полу- ченной моделью. Если улучшение внутреннего устройства функций-прототипов не требует переработки интерфейса, существенно снижается количество необходимых итераций в процессе реализации и тестирования системы. Но кроме практических соображений, в выполнении технического проекта имеется также и ряд преиму- ществ с точки зрения архитектуры системы. > Высокоуровневое представление. Архитектурная часть технического проекта представляет систему ИИ в виде “черного ящика”, отделяя собственно проект от его реализации. Это позволяет не только увидеть место проектируемой сис- темы в общем проекте игры, но и выполнить теоретический анализ модели- руемых процессов. > Абстракция. Если имеется формальное описание входов и выходов, гораздо проще представить проблему в виде частного случая более общей проблемы (например, распознавание образов или аппроксимация функций). После этого мы можем использовать наработки из соответствующей области знаний для создания нужной нам системы. > Возможность сравнения. Можно реализовать несколько различных модулей с одинаковым интерфейсом, а затем попробовать, как каждый из них ведет себя в игре. В таком случае еще на этапе натурного макетирования можно оценить, какое из решений лучше подходит для данной проблемы. Все эти преимущества, как правило, перевешивают те сложности, которые со- пряжены с необходимостью выполнять формальное проектирование системы.
156 Часть II. Управление перемещениями Резюме Если говорить кратко, то этап разработки технического проекта предназначен для достижения следующих целей. > Описание контекста проблемы. > Формализация входов и выходов. Эти цели достигаются в результате итерационного выполнения следующих ста- дий процесса технического проектирования. 1. Предварительный отбор всех возможных вариантов реализации. 2. Уточнение выбранных решений с точки зрения внутренней логики и соответ- ствия техническим требованиям. 3. Формализация выбранной модели с помощью ЯПЗ и соответствующих струк- тур данных. По мере накопления опыта процесс технического проектирования упрощается, однако в ходе этого процесса всегда нужно неукоснительно придерживаться сле- дующих принципов. > Начинать формализацию с выходов, поскольку это значительно упростит за- дачу формализации остальных частей модели. > Задача формализации входов сводится к выявлению информации, которая нуж- на для решения проблемы. Часто можно рассматривать эту задачу с позиций программиста, поскольку такие же данные, как правило, нужны и системе ИИ. > Всегда следует стремиться обеспечивать максимальную гибкость решений, за- крепленных в техническом проекте. Это позволит избежать существенной пе- ределки проекта в том случае, если в него придется внести изменения на этапе разработки. Вооружившись хорошо проработанным техническим проектом, можно смело браться за решение любой проблемы. В следующей главе будет показано, как на основе техниче- ского проекта подсистемы перемещений создать работающий натурный макет, который может перемещаться в комплексных динамически изменяющихся игровых мирах, само- стоятельно изменяя, по мере необходимости, направление движения. Практический пример Мы все дальше и дальше погружаемся в мир моделирования перемещений. Теперь вам предлагается рассмотреть пример анимата Sir Tank. Этот анимат управляется поведением, основанным на реакци- ях, и умеет, налетая на препятствие, огибать его. Анимат Sir Tank отличается от всех рассмотренных ранее тем, что его перемещение никак не связано с его ориентацией в пространстве. Это позволяет отделить перемещение от других способностей, например от прицеливания, что, как вы увидите из последующих частей, нам еще не раз пригодится. Как всегда, выполняемый и исходный коды анима- та можно найти на Web-узле этой книги по адресу http: / /AiGameDev. com.
Nalaftautfik Г.пава 10 Изменение направления ДВИЖЕНИЯ ПРИ ОГИБАНИИ ПРЕПЯТСТВИЙ В ЭТОЙ ГЛАВЕ. • Общие сведения о теории искусственной жизни • Алгоритм • Разработка технического задания • Анализ выбранного алгоритма • Резюме При качественно проведенной декомпозиции интерфейс с игровым миром, отвечающий за перемещения, позволит реализовать соответст- вующую систему на основе любого решения из области теории ИИ. Однако начинать лучше всего с самого простого решения из всех возмож- ных. Во-первых, это позволит быстро проверить на практике, насколько хорошо был проработан интерфейс, и, при необходимости, внести соот- ветствующие изменения в эскизный и техниче- ский проекты. Во-вторых, если впоследствии бу- дет принято решение о реализации более слож- ного алгоритма, полученный программный код можно будет использовать в качестве эталонного натурного макета. В-третьих, у вас под рукой всегда будет работающий демонстрационный пример, который можно показать руководству или другим участникам рабочей группы. Для решения проблемы навигации на основе реакций можно применить теорию моделирова- ния поведения, заключающегося в изменении на- правления движения (steering behavior), изложен- ную в [67]. К настоящему времени разработано множество различных методов моделирования с.кггаетствующего поведения, которые позволяют управлять персонажами как по отдельности, так и в составе группы. Эти модели представлены в форме относительно несложных уравнений, одно из которых представляет для нас особый инте- рес— это уравнение перемещений с огибанием препятствий.
158 Часть II. Управление перемещениями В этой главе рассмотрены следующие темы. > Основные концепции моделирования поведения, позволяющего изменять направление движения, позаимствованные из теории искусственной жизни. > Внесение небольших модификаций в алгоритм огибания препятствий с целью приведения его в соответствие нашим требованиям и имеющейся программной среде. > Обсуждения преимуществ и недостатков теоретических принципов и практи- ческой реализации выбранного решения. Выбранный подход позволит нам создать на удивление “смышленый” анимат, который будет обладать способностью избегать стен и перемещаться по игровому миру достаточно реалистично. Общие сведения о теории искусственной жизни Теория искусственной жизни (AL — Artificial Life) занимается изучением поведе- ния отдельных существ, которые объединяются в большие группы сложной структу- ры, как это происходит в реальной жизни. Как было установлено в ходе исследова- ний, взаимодействие простых компонентов может привести к возникновению неве- роятно сложных ситуаций. Ярким примером таких исследований является моделирование поведения, по- зволяющего изменять направление движения, описанного Крейгом Рейнольдсом (Craig Reynolds) в [66]. Он доказал, что, определяя перемещения в терминах находя- щихся по соседству существ или ближайших препятствий, можно смоделировать очень сложные феномены, такие как птичьи стаи или стада животных. Для имита- ции поведения больших групп несобственных персонажей в сложной среде исполь- зуются комбинации нескольких типов поведения, позволяющего изменять направ- ление движения. В последующих разделах этой главы рассмотрим основные компоненты, необхо- димые для моделирования такого поведения. Однако сначала нужно уделить время для ознакомления с некоторыми низкоуровневыми принципами, на которых зиж- дется изменение направления движения. Исходные предположения При моделировании изменения направления движения считается, что существует низкоуровневый движок, который полностью берет на себя задачу имитации базовых операций. Такие операции называются локомоциями (locomotion) персонажей. Следует заметить, что локомоции — это далеко не только анимация: движок локомоций позволя- ет выяснить координаты каждого персонажа в пространстве, а также его скорость. Обычно в компьютерных играх при моделировании перемещений используются достаточно грубые упрощения. В частности, как только игрок отпускает клавишу или кнопку, скорость персонажа практически мгновенно снижается до нуля. Таким образом, во многих случаях с помощью нажатия клавиш игрок управляет не ускоре- нием, а непосредственно скоростью персонажа.
ftatallausf'k Глава 10. Изменение направления движения при огибании препятствий 159 В модели автономных персонажей, используемой Рейнольдсом [67], скорость существует постоянно, а управляющие воздействия (steering force) лишь изменяют ее. Таким образом, управляющие воздействия могут рассматриваться как ускорение, применяемое системой ИИ. Имитация физических процессов при таком подходе выполняется как обычно (например, с помощью интегрирования по методу Эйлера), за исключением того, что ускорение и скорость перед вычислением новой координаты нормируются по максимально допустимым значениям. В листинге 10.1 представлен алгоритм, с помощью которого можно выполнять расчет скорости по- сле вычисления новых значений управляющих воздействий. Листинг 10.1. Алгоритм вычисления скорости по новым значениям управляющих воздействий # Обеспечение того, чтобы управляющее воздействие # не было слишком большим. truncate( steering_force, max_force ) # Вычисление скорости путем добавления управляющего воздействия, velocity += steering force # Применение ограничений максимальной скорости, truncate( velocity, max_speed ) # Использование интерфейса для имитации перемещения. Move( velocity ) С точки зрения ИИ, для устранения конфликтов между имитацией перемещения и интерфейсом с имеющимся игровым миром, мы должны постоянно подсчитывать текущую скорость в системе ИИ. Эта “идеальная” скорость отличается от “реальной”, которая рассчитывается в физическом движке, поскольку при ее использовании кон- фликты отсутствуют. Кроме того, необходимо отметить также, что скорость — это векторная величи- на, поэтому в общем случае она представляет также направление движения. Если умение персонажа выполнять повороты не связано с умением перемещаться, его на- правление может отличаться от направления вектора скорости. Подход и отход Подход (seeking) и отход (fleeing) — это проявления поведения, заключающегося в изменении направления движения. Эти проявления означают, соответственно, движение в направлении к заданной цели и в направлении от заданной цели. Если цель перемещается, то соответствующие проявления этого поведения называются погоней (pursuit) и бегством (evasion). С точки зрения моделирования этих двух типов проявлений рассматриваемого поведения, во втором случае, перед тем как приме- нить расчет управляющих воздействий для подхода или отхода, мы сначала вычис- ляем прогнозируемое расположение цели. Подход смоделировать достаточно просто. Основная идея заключается в том, что мы должны рассчитать такое значение управляющего воздействия, которое бы развер- нуло анимат по направлению к цели. В идеальном случае мы должны рассчитать ско- рость, которая бы развернула анимат прямо на цель, независимо от его начального по- ложения. Однако после вычисления этой идеальной скорости (и после ее нормирова- ния по максимально допустимому значению) определяется, каким образом нужно из- менить текущую скорость. Это изменение и используется в качестве управляющего воздействия. Окпъстствующие вычисления приведены в листинге 10.2. Моделирова-
160 Часть II. Управление перемещениями ние отхода выполняется в противоположном направлении: это означает, что нам нуж- но вычисленное значение скорости учитывать с отрицательным знаком. Анимат при этом будет “сломя голову” уноситься прочь от цели. Листинг 102. Вычисление управляющего воздействия для моделирования подхода # Вычисление вектора идеальной скорости в направлении цели. desired_velocity = truncate( position — target, max_speed ) # Расчет управляющего воздействия как разности между # текущим и вычисленным значениями скорости, steering force = desired_velocity — velocity Способность выполнять подход и отход является базовой для моделирования бо- лее сложных типов изменения направления движения (например, продвижение по заданному маршруту или движение в составе группы). Для моделирования таких ти- пов перемещений нам нужно лишь вовремя и корректно задавать координату цели. Таким образом, если в нашем распоряжении имеется алгоритм, который вычисляет координаты цели, решение задачи становится тривиальным: мы просто применяем алгоритм подхода к этой цели или отхода от нее. Однако поскольку, как мы отметили вначале, скорость всегда имеется, то в ре- зультате моделирования подхода наш анимат, подойдя к цели, сначала “проскочит” мимо нее, а затем начнет бесконечно кружиться вокруг нее. Для того чтобы замед- лить движение персонажа при подходе к цели, нужно определить периметр вокруг нее, за пределами которого используется полное значение скорости. После пересе- чения периметра это значение постоянно уменьшается по линейному закону. Рей- нольдс называет такое поведение прибытием (arrival). Другие типы поведения, предназначенного для изменения направления движения Иные типы рассматриваемого поведения связаны с моделированием перемеще- ния групп персонажей. Однако в нашем случае (моделирование перемещений от- дельных аниматов) мы вполне можем обойтись без этих методов, сводя в соответст- вующих случаях все расчеты к описанным выше типам. Следует заметить, что для моделирования других типов поведения, предназна- ченного для изменения направления движения, требуется дополнительная инфор- мация. Например, для моделирования выравнивания (alignment) и неоднородностей (cohesion) необходимо обладать информацией не только и не столько об окружаю- щих препятствиях, сколько о расположении и ориентации в пространстве других персонажей группы. Но для того, чтобы в случае необходимости учесть подобную информацию, нам потребуется внести небольшие изменения в эскизный и техниче- ский проекты (в определение входов). Алгоритм Предложенный Рейнольдсом алгоритм огибания препятствий (obstacle avoidance) применим к препятствиям определенной формы (если говорить прямо — к окружно- стям). При использовании этого алгоритма следует полагать, что все остальные формы
Глава 10. Изменение направления движения при огибании препятствий 161 препятствий аппроксимируются окружностью соответствующего радиуса. Поскольку форма препятствия заранее известна системе ИИ, это позволяет ей огибать такие пре- пятствия очень эффективно. Конечно, понятно, что такое допущение далеко не всегда может быть приемлемым, особенно в современных компьютерных играх с их сложными структурами игрового мира. В частности, если в алгоритме используется аппроксимация препятствий окружностями, задача моделирования перемещений может стать сложной (например, при моделировании перемещений в д линных и прямолинейных коридорах). Именно по этой причине на практике лучше применять универсальный алгоритм огибания препятствий (generalized obstacle avoidance). Однако, к сожалению, он слишком зависит от математически точной информации о препятствиях (в частно- сти, об ориентации поверхности препятствия, точнее о нормали к этой поверхно- сти). В случаях, когда структура окружающей среды достаточно проста или выпол- няется предварительный просчет структуры игрового мира для системы ИИ, уни- версальный алгоритм можно использовать. Если же эти условия невыполнимы (например, отсутствует информация о нормалях или при создании структуры не бы- ли соблюдены соглашения о нормалях), этот алгоритм нуждается в некоторой дора- ботке. Поэтому в следующем разделе сначала рассмотрим сам универсальный алго- ритм огибания препятствий, а затем его улучшенную версию. Разработка технического задания Строго говоря, в данном случае, в соответствии с [67], мы занимаемся моделиро- ванием перемещения в замкнутом пространстве (containment). Тем не менее, алго- ритмы, рассмотренные в данном разделе, основаны на идеях, которые содержатся в специализированном алгоритме огибания препятствий, который, в свою очередь, основывается на алгоритме подхода (все они рассмотрены в указанной выше статье). В листинге 10.3 приведен псевдокод, который обеспечивает управление целенаправ- ленным перемещением персонажа в сложной среде с произвольной структурой. Для определения участков свободного пространства в алгоритме используется нормаль к поверхности, вычисляемая в точке столкновения. После вычисления направления вектора нормали выполняется расчет управляющего воздействия и поворот персо- нажа в соответствующем направлении. Листинг 10.3. Универсальный алгоритм огибания препятствий function avoid_obstaeles рассчитать координату на следующем шаге, используя текущую скорость if возникает столкновение найти свободное пространство в направлении нормали к _ поверхности, проходящей через точку столкновения вычислить угол разворота, чтобы избежать столкновения end if if препятствие находится на критическом расстоянии пропорционально увеличивать усилие _ торможения (для замедления или полной остановки) end if end function
162 Часть II. Управление перемещениями Для реализации этого алгоритма мы используем модель подхода, которая была рассмотрена в предыдущем разделе. В алгоритме, представленном в листинге 10.3, мы используем эту модель для поиска свободного пространства, который выполня- ется в том случае, если в результате расчетов выясняется, что на следующем шаге произойдет столкновение, как проиллюстрировано на рис. 10.1. Рис. 10.1. Универсальный алгоритм огибания препятствий позволяет, определив расчетное расположение анимата на следующем шаге, использовать нормаль к поверхности пре- пятствия для определения свободного пространства При таком подходе применение корректирующих и тормозящих воздействий не представляет собой проблемы, поскольку выходы нашего интерфейса (функции Turn () и Move ()) поддерживают подобные операции. Конечно, это не самый показа- тельный случай, поскольку такие команды используются практически во всех играх, однако даже на столь тривиальном примере легко убедиться, что правильно выпол- ненный этап проектирования позволяет сэкономить время на последующих этапах! Если задуматься о входах, то их выбор не покажется таким тривиальным, как в слу- чае выходов. Рассмотренный алгоритм полагается на информацию об окружающей среде, на основании которой он и выполняет проверку возникновения ситуации столкновения с известными ему препятствиями. Когда столкновение обнаружено, в алгоритме для обнаружения свободного пространства используется нормаль к по- верхности, которая проходит через точку расчетного положения. В некоторых случаях предоставить всю необходимую информацию для проведения описанных расчетов не- возможно, что в результате сказывается на реалистичности моделируемого поведения (например, повороты в неправильном направлении и т.п.). Улучшенный алгоритм Поскольку мы моделируем анимат, основанный на концепции воплощения, можно воспользоваться этим обстоятельством для сбора информации об окружающей среде с помощью сенсоров, а не полагаться на данные о нормалях. К счастью, система ИИ может выявлять ситуации будущих столкновений, основываясь исключительно на ре- зультатах сканирования свободного пространства. В соответствии с рассмотренными на предыдущих этапах подходами, для этого можно использовать отслеживание лучей, когда анимат словно “прогуливается” в том или ином направлении.
NataHaus^ Глава 10. Изменение направления движения при огибании препятствий 163 При таком подходе информация о нормалях, даже если она поступает, в алгоритме просто игнорируется. Это даже дает нам дополнительное преимущество, поскольку использование нормалей для поиска открытого пространства — это слишком грубый метод, вероятность успешного применения которого резко снижается в окружающей среде со сложной структурой. Если же мы используем сенсоры, то такие проблемы для нас становятся несущественными — мы можем определить разворачивающие воздей- ствия по данным, полученным от сенсоров. В примере, рассмотренном в уже упоминавшейся работе Рейнольдса, моделиру- ется бесцельное перемещение в условиях, когда не нужно избегать столкновений. Этот алгоритм можно слегка изменить, в результате чего анимат будет за шаг до пре- пятствия изменять направление движения, избегая столкновения. Для этого мы бу- дем проверять данные, поступающие от боковых сенсоров, и в случае выявления не- избежного столкновения в буквальном смысле будем уходить от потенциальной проблемы (рис. 10.2). Новый вариант алгоритма приведен в листинге 10.4. Рис. 10.2. Огибание препятствий с использованием сенсоров по- зволяет выявлять области свободного пространства без исполь- зования информации о нормалях к поверхностям препятствий Листинг 10.4. Улучшенный алгоритм огибания препятствий, основанный на информации, получаемой от сенсоров function avoid_obstacles2 проверить наличие свободного пространства спереди, слева и справа if возникает лобовое столкновение определить расстояние до ближайшего препятствия слева и справа определить сторону, с которой препятствие находится дальше вычислить нужный угол разворота в сторону свободного пространства end if if препятствие прямо по курсу находится на критическом расстоянии пропорционально увеличить усилие _ торможения (для замедления или полной остановки) end if if имеется препятствие слева пропорционально изменить направляющее усилие _ для ухода вправо end if if имеется препятствие справа пропорционально изменить направляющее усилие _ для ухода влево end if применить направляющие и тормозящие усилия end function
164 Часть II. Управление перемещениями В таком виде техническое задание можно передавать на реализацию. Для того чтобы получить программный код, нужно лишь записать алгоритм на языке C++. Конечно, необходимо также выбрать соответствующие значения, которые будут ис- пользоваться для каждого параметра по умолчанию (например, расстояния, весовые коэффициенты и т.п.). Однако точную настройку алгоритма можно отложить до этапа тестирования. Дальнейшее улучшение алгоритма Для повышения реалистичности моделируемого поведения проще всего сделать перемещения более целенаправленными. (Кстати, это не такая уж и простая задача для системы ИИ, построенной на реакциях.) Описанные ниже подходы к моделированию целенаправленных перемещений, возможно, и не являются шедеврами, однако они все же лучше, чем подход, при котором анимат постоянно стукается головой о стену! Свободное перемещение В том случае, если на пути анимата отсутствуют препятствия, он должен, время от времени (но не очень часто) изменяя направление движения, свободно переме- щаться по всей площадке так, чтобы сохранилась иллюзия того, что он прогуливает- ся. Как раз обеспечение того, чтобы эти изменения не были ни слишком частыми, ни слишком редкими, — это самое сложное в реализации свободного перемещения. Одним из самых удачных подходов является применение детерминированной функции, которая, несмотря на детерминированный характер, возвращает непред- сказуемый результат. В частности, к классу таких функций относится функция шума Перлина (Perlin noise), которая является комбинацией функций параметрических шумов разной частоты [21, 57, 58]. Поскольку эта функция полностью детерминиро- вана, она хорошо поддается интерполяции. С другой стороны, поскольку она очень сложна, получаемые с ее помощью результаты являются непредсказуемыми. Таким образом, используя эту функцию шума, можно определять направляющее усилие как функцию времени. Альтернативный метод заключается в использовании сложения накопительной переменной с неким выбираемым по случайному закону значением (что-то вроде броуновского движения). В этом случае для определения направляющего усилия можно применить функцию синуса, что в результате будет нам давать с одинаковой вероятностью отрицательные и положительные значения. Таким образом, отклоне- ния от начального направления перемещения, оставаясь случайными, не будут вы- глядеть, как шараханье из стороны в сторону. Принудительное продвижение в заданном направлении Основная проблема методов моделирования огибания препятствий, основанных на реакциях, заключается в том, что у них практически никак не учитывается основ- ное направление движения. Часто, например, нужно, чтобы анимат, встретив пре- пятствие, не разворачивался в противоположном направлении (кроме тех случаев, когда в этом действительно есть необходимость).
Глава 10. Изменение направления движения при огибании препятствий 165 Одним из методов решения этой проблемы является учет направления, образо- ванного несколькими последними перемещениями. При вычислении управляющих воздействий они будут выбираться таким образом, чтобы анимат, огибая препятст- вие, активно уклонялся от этого направления. С целью экономии памяти можно просто использовать один-единственный вектор, обозначающий направление, из которого анимат пришел в текущую точку. Короче говоря, суть метода заключается в том, чтобы не давать анимату двигаться в направлении, из которого он пришел. При реализации этого метода удобно применять так называемое скользящее сред- нее (moving average). Предположим, что у нас имеется вектор provenance, указы- вающий на несколько предыдущих положений анимата. Для учета последнего поло- жения мы можем постоянно пересчитывать этот вектор по следующей формуле. provenance = previous * 0.1+ provenance * 0.9 Понятно, что значения коэффициентов (а = 0.1 и Ь = 0.9) прямо влияют на то, как долго мы хотим сохранять предыдущее направление. Соотношение этих коэффици- ентов можно изменять, при условии что будет выполняться равенство а + b = 1. Ма- лые значения а означают, что превалирующее значение имеет не направление на преды- дущем шаге, а то направление, которого анимат придерживался ранее. Точно так же большие значения а означают, что направление, которого анимат придерживался ранее, не столь существенно, как направление на предыдущем шаге. Целеуказание Последнее улучшение, которое мы рассмотрим в этом разделе, заключается в том, чтобы, устанавливая по случайному закону цели, располагать их впереди анимата на- столько далеко, насколько это возможно. Если рассматривать анимат как некую мо- дель служебной собаки, то такой подход к целеуказанию можно сравнить со швыряни- ем мяча. После того как “собака” доберется до “мяча”, вы “швыряете” его снова и т.д. На практике это можно реализовать путем поиска места для цели в случайном на- правлении. Если такое место найдено (причем достаточно далеко), анимат отправляет- ся в соответствующую точку. Такой подход позволяет сделать перемещение очень реа- листичным (следует заметить, что, несмотря на кажущуюся простоту, этот метод дает очень хорошие результаты). Тем не менее необходимо предусмотреть в системе ИИ дополнительный механизм, который проверял бы, достижима ли выбранная аниматом цель. В том случае, если по каким-то причинам цель является недостижимой, анимат об этом должен извещаться, чтобы он мог выбрать другую цель. Анализ выбранного алгоритма Для того чтобы провести анализ выбранного алгоритма, следует реализовать его в программном коде и некоторое время понаблюдать за поведением анимата. Затем, зная его внутреннее устройство, а также обладая некоторой долей конструктивного скепсиса, мы легко сможем идентифицировать как преимущества, так и недостатки выбранного решения.
166 Часть II. Управление перемещениями Практический пример Анимат, демонстрирующий рассматриваемые в этой главе принципы, называется Marvin. Как всегда, выполняемый и исходный коды анимата, а также инструкции по его компиляции можно найти на Web-узле этой книги по адресу ht tp: / /AiGameDev. com. Анимат Marvin использует сенсоры для распознавания препятствий и обладает умением огибать препятствия, основанным на реакциях. Кро- ме того, он может перемещаться по площадке, используя для этого описанные выше методы, улуч- шающие основной алгоритм. Преимущества Основные преимущества рассмотренного решения являются следствием прин- ципов, положенных в его основу. > Простота. Начиная с анализа эталонных ситуаций, взятых из жизни в качестве примеров, и заканчивая собственно написанием программного кода, реализа- ция данного подхода является чрезвычайно простой. Даже псевдокод, содер- жащийся в техзадании, можно понять без дополнительных комментариев. Пожалуй, найти более простое решение — задача не из легких. > Надежность. Поскольку задача проста, мы можем в технических требованиях идентифицировать практически все возможные ситуации, которые могут воз- никнуть в реальной игре. Для устранения каких-то небольших шероховато- стей вполне достаточно проверить готовый модуль в игровой среде произ- вольной структуры. > Предсказуемость. Еще одно большое преимущество рассматриваемого подхода состоит в его предсказуемости. Во-первых, это избавляет нас от неоднозначно- сти (как и должно быть при моделировании основанного на реакциях, т.е. реф- лексивного поведения). Во-вторых, то, что каждое правило прописано в явном виде, означает, что совокупность этих правил понятна разработчику. > Эффективность. Из простоты выбранного решения вытекает еще одно важное следствие — полученная система не является требовательной к вычислитель- ным ресурсам. По этой причине основное время, уходящее на выполнение про- цедуры, тратится на опрос сенсоров. Но даже использование сенсоров можно минимизировать с помощью тривиальных приемов. Так, в тех случаях, когда впереди анимата нет никаких препятствий на достаточно большом расстоянии, на протяжении нескольких фреймов можно не выполнять опрос фронтального сенсора. Боковые сенсоры можно опрашивать еще реже (или вообще не опра- шивать до выявления угрозы столкновения). Недостатки Итак, как мы отметили, рассматриваемое решение является простым. Однако можно сказать, что в некоторых случаях оно оказывается слишком уж простым. Эта чрезмерная простота чревата следующими недостатками. > Тупиковые ситуации. В общем случае окружающая среда игрового мира может быть какой угодно, в том числе и очень сложной (представьте себе, например как может выглядеть машинный зал реактора атомной станции после неболь-
Глава 10. Изменение направления движения при огибании препятствий 167 шого взрыва). Поэтому в таких случаях задача огибания препятствий может стать слишком сложной. В подобных ситуациях, например при попадании в тупик или в глухой угол, анимат может безнадежно “застревать” (то же самое может происходить и в менее сложной структуре, но при не очень точных сен- сорах). Если такое явление возникло, это означает, что анимат, поворачиваясь в одну сторону, тут же принимает решение о том, что предыдущее направле- ние лучше текущего. Для устранения подобных ситуаций необходимо тща- тельно провести этап тестирования (например, вычисляя разворачивающий момент по методу скользящего среднего). > Тестирование. Тупиковые ситуации — это лишь одна из возможных, проблем, с которыми можно столкнуться на этапе тестирования. Хотя, как уже отмеча- лось, набор правил достаточно краток и прост, все же для получения безу- пречно работающего кода нужно настроить немало различных параметров. Соблюдение этого условия обычно приводит к увеличению времени, необхо- димого на разработку, а несоблюдение — к получению плохо работающей системы ИИ и, следовательно, несобственных персонажей со странным и не- предсказуемым поведением. > Реалистичность. Поскольку система базируется на жестко прописанных пра- вилах, все, что мы можем от нее ожидать, — это “роботоподобные” переме- щения по ломаным маршрутам. Однако это далеко не всегда так плохо, как может показаться на первый взгляд: используя линейную интерполяцию для коррекции управляющих усилий, а также учет моментов инерции на уровне локомоций, можно получить вполне убедительные перемещения (хотя, с дру- гой стороны, не всегда идеальные). Эта проблема связана с рефлексивной природой используемого подхода, который в очень малой степени использу- ется человеком (наши перемещения обычно базируются не на рефлексах, а на высокоуровневом предвидении и планировании). > Масштабируемость. Для модификации поведения мы просто добавили не- сколько строк в проект алгоритма, составляющего основу технического зада- ния. В данном случае такой метод модификации вполне работоспособен, од- нако по мере возрастания объема задачи он может в какой-то момент стать слишком сложным. В тех же случаях, когда для моделирования сложного по- ведения нужно запрограммировать 10, 20 или более ситуаций, применение метода “вырезания и вставки” не сулит ничего хорошего. Резюме Итак, мы убедились в том, что с помощью теории искусственной жизни мы мо- жем получить если не блестящее, то вполне работоспособное решение интересую- щей нас проблемы. И хотя мы не рассматривали все остальные поведенческие реак- ции, базирующиеся на этой теории, и их свойства, можно сделать вывод о том, что данное решение используется повсеместно вполне обоснованно. Действительно, оно представляет собой некий компромисс между простотой и универсальностью. Вместе с тем, при практическом применении этого решения для огибания препятст- вий возможно возникновение некоторых проблем, связанных с его простотой.
168 Часть II. Управление перемещениями Часть из рассмотренных проблем не связана с конкретным решением, однако одна из них имеет явное отношение к его базовым принципам. Эта проблема — плохая масштабируемость решений, основанных на практическом применении теории искус- ственной жизни. Как мы убедились на примере выработанного алгоритма, реализация этой теории сводится к набору операторов if, количество которых при увеличении сложности задачи может становиться необозримым. Подобные проблемы являются предметом изучения еще одного направления теории ИИ — теории систем, основан- ных на правилах. Ознакомившись с основными принципами этой теории, мы сможем улучшить полученное решение и устранить присущие ему недостатки.
ftatalfausi^!. Гпава 11 Системы, основанные на ПРАВИЛАХ В ЭТОЙ ГЛАВЕ- • Общие сведения о теории систем, основанных на правилах • Краткий обзор компонентов • Теория RBS-систвм и представление знаний • Анализ RBS-решений • Резюме Как нетрудно догадаться, системы, основанные на правилах (RBS — Rule-Based System), или RBS-системы, представляют собой наборы опера- торов if ... then. Такие операторы очень хо- рошо подходят для программирования типичных ситуаций, подобных тем, с которыми мы имеем дело в повседневной жизни. В науке и технике для решения многих проблем экспертами приме- няются системы знаний, построенные на подоб- ных принципах. Понятно, что запись накоплен- ного практического опыта в виде программного кода позволяет получить автоматизированную экспертную систему, которая сможет решать ти- пичные проблемы с не меньшей (а нередко и большей) эффективностью. Применительно к компьютерным играм RBS- системы могут использоваться несобственными персонажами в двух направлениях: для решения задач (получение единственно правильного вы- вода на основе начальных фактов) или для управления (выполнение определенной последо- вательности операций с целью имитации задан- ных процессов). При использовании RBS-сис- темы для решения задач правила поясняют, как взаимосвязаны различные истинные утвержде- ния (например: “Если объект отсутствует, то кто-то его уже подобрал”), на основе которых система может прийти к единственно правиль- ному выводу. В случае, когда RBS-система при- меняется для управления, правила описывают действия, которые должны быть предприняты в каждой ситуации (например: “Если впереди стена, то нужно остановиться”). На практике использование RBS-систем вы- годно тем, что они позволяют отделить опреде- ления типов поведения от выполняемого кода.
HF’ г 170 Часть II. Управление перемещениями Конечно, подходов, которые основаны на управлении кодом с помощью данных и обладают подобными достоинствами, имеется немало. Однако RBS-системы выгод- но отличаются от остальных тем, что их проще всего разработать и что они показы- вают самые лучшие результаты с точки зрения производительности. Кроме того, RBS-системы очень гибки и легко расширяются в случае необходимости. В данной главе рассмотрены следующие темы. > Сравнение подходов, основанных на использовании RBS-решений для разра- ботки системы ИИ, с другими подходами. > Основные высокоуровневые компоненты RBS-системы: база правил, рабочая память и интерпретатор. > Методы, используемые в RBS-системах, в частности, методы получения и мо- делирования знаний. > Преимущества и недостатки RBS-решений, а также анализ типичных подхо- дов, применяемых разработчиками игр. К практическим вопросам реализации и применения RBS-систем мы перейдем в следующей главе, а в этой главе уделим некоторое время изучению основных теоре- тических принципов организации таких систем. Общие сведения о теории систем, основанных на правилах Как уже отмечалось, использование RBS-решений — это очень простая, но весь- ма эффективная технология построения систем ИИ. Она зародилась еще в середине XX века, когда теория ИИ делала первые шаги, пытаясь создать интеллектуальную систему на основе манипуляций информацией. Одной из ключевых проблем, с ко- торыми столкнулась в ту пору теория ИИ, была проблема представления знаний, на- шедшая свое отражение ц соответствующей теории (подробнее о ТПЗ мы говорили в главе 9, “Разработка технического проекта и представление знаний”). ТПЗ форму- лирует методы такого представления фактов об окружающем мире (или исследуемой проблеме), на основе которых можно было бы прийти к разумному заключению. Основываясь на результатах исследований в области психологии, специалисты по представлению знаний стали рассматривать здравый смысл и человеческую логику как особый вид поведения, представляющий собой обработку символьной информации. Это позволило заняться решением задачи моделирования этого поведения. В частно- сти, RBS-системы моделируют человеческую логику путем поэтапного решения про- блем, как это делают в подобных ситуациях эксперты. Такой подход позволяет хранить знания в неявно заданной форме. (Иными словами, это означает, что для получения многих фактов, даже достаточно простых, следует применять рассуждения.) Не удивительно, что столь простой подход быстро получил очень широкое рас- пространение. Его с успехом применяют для решения проблем в самых разных об- ластях знаний, начиная от медицины и заканчивая машиностроением, не говоря уже о компьютерной индустрии. Действительно, существует множество направлений науки и техники, в которых дедуктивные RBS-системы, манипулирующие данными в соответствии с набором заданных правил, позволяют получать весьма неплохие ре-
NataMausiiiik Глава 11. Системы, основанные на правилах 171 зультаты. Именно поэтому такие системы можно рассматривать в качестве одного из главных примеров успешного применения классических подходов к моделированию ИИ. Десятки тысяч подобных систем, существующих сегодня в мире, можно услов- но разделить на несколько различных категорий, как показано на рис. 11.1. на правилах созданные экспертами системы Рис. 11.1. Различные категории систем, основанных на знаниях, и место RBS-систем в этой классификации RBS-системы также часто называют продукционными системами (production sys- tems), но мы воздержимся от использования этого термина, поскольку он несколько непонятен и часто приводит к неправильному заключению о том, что такие системы можно применять лишь на производстве. В общем смысле слова RBS-системы пред- ставляют собой отдельную категорию систем, основанных на знаниях (knowledge- based system), которые специализируются на обработке информации (например, данных, поступающих от сенсоров). Строго говоря, примеры, рассмотренные в этой главе (равно как и большинство других RBS-систем, используемых на практике), представляют собой экспертные системы (expert system). Это означает, что правила, на которых основывается систе- ма, должны создаваться экспертом (expert) в соответствующей проблемной области. К сожалению, выражение “экспертная система” часто применяется неправильно для обозначения любой системы, в которой воплощен практический опыт, получен- ный человеком в той или иной области. Краткий обзор компонентов Как мы отметили в начале главы, с научной точки зрения [74] система, основан- ная на правилах, — это не столько набор операторов if ... then, сколько систе- ма, состоящая из трех основных компонентов: рабочей памяти, базы правил и ин- терпретатора (рис. 11.2).
172 Часть II. Управление перемещениями Символ Продукционное правило Рис. 11.2. Высокоуровневая архитектура RBS-систем образуется тремя взаимодействующими компонентами Рабочая память Рабочая память (working memory) — это набор фактов об окружающем мире или текущей проблеме, называемый также внутренним представлением (internal represen- tation). Обычно в рабочей памяти хранится несколько символов. Поскольку RBS- системы традиционно создаются для моделирования человеческой логики, объем рабочей памяти, как правило, выбирается небольшим. Давайте рассмотрим пример содержимого рабочей памяти для задачи уклонения от столкновения с препятствиями. В этом случае объем рабочей памяти достаточно выбрать таким, чтобы в нем хранилось всего два символа. Это означает, что могут быть истинными только два символа, а все остальные — ложны. Например, если справа нет препятствий, символ obstacle_right будет иметь значение false и, соответственно, не будет помещен в рабочую память. Во многих случаях в RBS- системах гораздо проще и эффективнее отбрасывать именно ложные символы. Та- ким образом, в определенный момент содержимое рабочей памяти RBS-системы, используемой для моделирования огибания препятствий, может иметь, например, следующий вид. [obstacle_left] [obstacle_front] Обычно RBS-системы применяются для решения задач. Это означает, что имеет- ся некая начальная конфигурация и конкретный желательный исход. И то, и другое можно представить в виде определенных состояний рабочей памяти. Однако если RBS-система применяется для управления, нас интересует не какое-то конкретное конечное состояние, а сам процесс имитации, поэтому символы в рабочей памяти постоянно изменяются. Именно организация рабочей памяти представляет собой базис для архитектуры всей RBS-системы. В частности, рабочую память можно реализовать как в виде про-
ftalaHaus1$} Глава 11. Системы, основанные на правилах 173 стого массива символов, так и в виде сложной подсистемы (например, базы дан- ных). Следует заметить, что хотя на практике нередко в качестве рабочей памяти применяются различные развитые подсистемы (например, хранилища фактов), од- нако базовая концепция при этом остается неизменной. База правил Второе место в архитектуре RBS-системы занимает база правил (rulebase), храни- мых внутри системы. Рабочие правила База данных представляет собой набор отдельных рабочих правил (production rule), которые иногда называют также операторами (operator). Эти правила имеют сле- дующий вад. IF <условие> THEN <операция> Первая часть правила представляет собой набор булевых выражений, который называют заголовком (head) правила, антецедентом или вводом (antecedent clause). Вторая часть правила — это набор операций, которые манипулируют символами в рабочей памяти. Эту часть называют также телом (body), консеквентом или выводом (consequent clause) правила. Обе части обычно представляются в виде комбинаций простых символов (например, “A and В”, “С or Б”ит.п.) Структура данных Основным аспектом базы правил является структура внутреннего хранения дан- ных. При использовании процедурного подхода повысить эффективность за счет ав- томатической реорганизации рабочих правил нельзя — это можно сделать только путем модификаций исходного кода с последующей его перекомпиляцией. Если же правила хранятся отдельно от системы, как это происходит при исполь- зовании декларативного подхода (declarative approach), их можно подгружать по мере необходимости прямо во время выполнения программы (это и есть управление ко- дом на основе данных). Например, если база правил представляет собой простой массив, для поиска условия, которое является в конкретной ситуации истинным, нужно применить линейный поиск соответствующего элемента массива. В более развитых системах организации правил для моделирования взаимосвязей между условиями используются древовидные структуры (рис. 11.3). Такой метод организации позволяет сгруппировать рабочие правила в виде логических блоков и тем самым значительно повысить эффективность программного кода, выполняю- щего поиск правил, подходящих к той или иной конкретной ситуации. В этом слу- чае поиск выполняется путем перемещения по ветвям дерева, каждый узел которого соответствует проверке одного символа. Если алгоритм проверки доходит до “листа” дерева, поиск завершается, а соответствующее значение возвращается в качестве ре- зультата.
174 Часть II. Управление перемещениями Рис. 11.3. Линейная структура хранения правил (слева) в сравнении с древовидной струк- турой иерархической проверки символов (справа) Такое дерево строится в два этапа: на первом выполняются проверки вида “истина- ложь” и в ахлъстствии с полученными результатами организуется дерево, а на втором отдельные ветви объясняются в виде общей структуры. Эта процедура во многом похо- жа на то, как создается дерево решений, о котором подробно рассказывается в главе 26, “Деревья классификации и регрессии”. Если вы не хотите ждать, пока мы дойдем до об- суждения этих вопросов, обратитесь к работе [27], в которой ахггвстствующая тема ос- вещена достаточно полно. Использование древовидных структур позволяет добиться значительной оптими- зации временных затрат, необходимых для поиска правил. В основном, это объясня- ется тем, что в случае возрастания количества правил для решения задачи в тот же период времени уже не возникает линейного роста требуемой вычислительной мощности. Таким образом, при использовании древовидных структур можно созда- вать очень большие RBS-системы, не заботясь о производительности. Расширения RBS-системы часто обладают интерфейсом для взаимодействия с внешними сис- темами. В качестве такой системы может использоваться то или иное физическое уст- ройство, имитационный стенд или, как в нашем случае, программный код. Примени- тельно к моделированию несобственных персонажей в контексте данной книги такой код имитирует тело анимата, которое, в свою очередь, взаимодействует с виртуальным миром. Во многих случаях возникает необходимость передать данные системе “тело анимата-RBS”, чтобы RBS-система могла на основе актуальной информации выпол- нить операции, нужные анимату. Стандартные декларативные правила позволяют обеспечить неявную поддержку сенсоров (входы) и эффекторов (выходы): в сенсоры перед их использованием поступают те или иные символы, а после обработки входной информации эффекторы проверяют содержимое рабочей памяти, чтобы выполнить
^lalaHausi^i Глава 11. Системы, основанные на правилах 175 соответствующие операции. Такой подход, в целом, можно считать приемлемым, хотя и не очень удобным из-за необходимости выполнять пре- и постпроцессинг. Эта проблема была предметом многих практических исследований, в результате которых было найдено решение, позволяющее воспользоваться преимуществами процедурного подхода, но только применительно к сенсорам и эффекторам (иными словами, в обоих случаях применяются вызовы функций). Таким образом, мы полу- чаем расширение классического RBS-решения, основанного на объявлениях. Воз- можны также компромиссные решения (например, в нашем случае), в соответствии с которыми моторика реализуется в виде процедурных операций, а символы по- прежнему устанавливаются автоматически в сенсорах (рис. 11.4). Это избавляет нас от необходимости в RBS-системе постоянно проверять сенсоры, реализованные по процедурному принципу, и при этом использовать без модификаций древовидные структуры правил. Сенсоры, связанные с внешним миром Рис. 11.4. Используемые на практике RBS-системы взаимодействуют с окружающей средой, используя комбинацию декларативных и процедурных подходов РАБОЧАЯ ПАМЯТЬ Упростить базу правил можно, обеспечив поддержку частичного соответствия пра- вил (т.е. рассматривая как возможные варианты те случаи, когда заданное условие яв- ляется истинным не полностью). С формальной точки зрения эти ситуации соответст- вуют использованию операции дизъюнкции (OR). В стандартных системах, в которых используется исключительно конъюнкция (and), подобного эффекта можно добиться, разделяя дизъюнкцию на отдельные компоненты, а затем дублируя тело правила. Дизъюнкция: IF <условие1> or <условие2> THEN <операция> Конъюнкция: IF <условие1> THEN <операция> IF <условие2> THEN <операция> Однако такой подход, конечно же, нельзя назвать ни изящным, ни эффективным, поскольку в нем используется дублирование тела правила. Поэтому если в RBS-сис- теме необходимо обеспечить частичное соответствие, нужно расширить ее, либо обес- печив поддержку дизъюнкции, либо разрешив использовать ссылки на операции (и, та- ким образом, избавиться от необходимости дублирования этих операций).
176 Часть II. Управление перемещениями Интерпретатор Интерпретатор (interpreter) — это компонент RBS-системы, который управляет ее работой, взаимодействуя с базой правил и рабочей памятью. Именно интерпрета- тор выявляет правила, которые соответствуют данному состоянию, а также опера- ции, которые нужно выполнять по этим правилам. Этот компонент RBS-системы часто называют также интерфейсным движком (interface engine), поскольку он отве- чает за выборку знаний из объявлений. В RBS-системах используется два типа механизма такой выборки, которые назы- ваются выборкой с прямым логическим выводом и выборкой с обратным логическим выводом. Эти механизмы определяют порядок применения правил к рабочей памяти в ходе решения проблемы. Выборка с прямым логическим выводом Система, в которой реализована выборка с прямым логическим выводом (forward chaining), при запуске имеет некоторый набор начальных предположений. Такая система постоянно пытается применить правила до тех пор, пока не достигнет же- лаемого результата. Этот метод называется управляемым данными (data-driven ap- proach), поскольку факты и правила объединяются для получения на их основе но- вых фактов. Например, исходя из начальных предположений о ситуации, RBS- система, основанная на выборке с прямым логическим выводом, может определить, какое оружие нужно использовать. Ниже описана последовательность работы интерпретатора, использующего вы- борку с прямым логическим выводом, на одном цикле. Этот цикл называют также циклом распознай-действуй (recognize-act). > Поиск соответствия. На этой стадии идентифицируются все правила, для ко- торых выполняется заданное условие, исходя из состояния базы правил. > Разрешение конфликтов. Если на предыдущем этапе было установлено, что ус- ловиям соответствует несколько правил, из них выбирается только одно. > Выполнение. На этом этапе выполняется тело правила, отобранного на преды- дущем этапе, в результате чего обычно изменяется содержимое рабочей памя- ти (явно или неявно). При имитации (т.е. при решении проблемы управления) такие правила применя- ются постоянно по мере необходимости, тогда как при решении проблем дедуктивным методом при достижении первого успешного выполнения заданного условия цикл прерывается (рис. 11.5). В первом случае это может приводить к тому, что интерпрета- тор зацикливается, а во втором — к тому, что он заходит в тупик. Методы решения этих проблем будут обсуждаться далее в подразделе “Управляющие стратегии”. I РАСШИРЕНИЯ МЕТОДА ВЫБОРКИ С ПРЯМЫМ ЛОГИЧЕСКИМ ВЫВОДОМ * Конечно, реализовать все три описанных выше этапа в одном цикле достаточно просто. Однако можно I применить и более изящные решения. Такие решения могут, в частности, обеспечивать более высокую 1 гибкость (например, частичное соответствие), организовать поддержку различных форм управления (например, сенсоры и эффекторы) или, в конце концов, просто повысить эффективность (например, ' хранение правил в виде древовидной структуры). Возможность реализации таких решений в значитель- ' ной степени зависит от того, как реализованы остальные компоненты системы. Именно поэтому необхо- димо иметь четкое представление об архитектуре и особенностях реализации RBS-систем.
’i\atuHaus(fy Глава 11. Системы, основанные на правилах 177 Рис. 11.5. Результат применения выборки с прямым логическим вы- водом (отброшенные правила изображены пунктирными линиями) Выборка с обратным логическим выводом Система, в которой реализована выборка с обратным логическим выводом (backward chaining), при запуске оперирует некими гипотезами, а в коде работы пытается под- твердить их, возвращаясь в текущее состояние. Такой подход называют также целена- правленным логическим выводом (goal-directed inference), поскольку для подтверждения антецедентов (antecedent clause) выполняется рекурсивная проверка консеквентов (consequent clause). Например, подобное поведение реализуется при оценке состояния противника. Цикл интерпретатора, основанного на методе выборки с обратным логическим выводом, по структуре этапов подобен рассмотренному выше циклу интерпретатора, который использует метод выборки с прямым логическим выводом. Этот цикл на- зывают также циклом предположи-проверь (hypothesize-test). Гипотезы, выдвигаемые для нахождения решения, создаются на каждой итерации, начиная от конца, как по- казан на рис. 11.6. Рис. 11.6. Выборка с обратным логическим выводом применяется от цели и до начального состояния (отброшенные правила изображены пунктир- ными линиями) > Поиск соответствия. На этой стадии идентифицируются все правила, для ко- торых тело правила соответствует текущему состоянию (т.е. определяются правила, которые могли привести к этому состоянию). > Разрешение конфликтов. Если на предыдущем этапе было установлено, что найдено несколько правил, из них выбирается только одно.
178 Часть II. Управление перемещениями > Обновление. В содержимое рабочей памяти вносятся изменения, отражающие выбранную гипотезу. Затем нам нужно определить, каким было предыдущее состояние, чтобы условие этого правила можно было применить. Выборка с обратным логическим выводом в реализации сложнее, чем выборка с прямым логическим выводом, поскольку интерпретатору, чтобы выстроить реше- ние от начального состояния, нужно отслеживать все примененные правила от кон- ца вывода. При этом повышается вероятность возникновения как тупиковых ситуа- ций (когда нет правил, которые можно было бы применить, на очередной итера- ции), так и бесконечных циклов (постоянно выбирается одна и та же последова- тельность правил). Решением обеих указанных проблем, как уже отмечалось, является применение управляющих стратегий. Управляющие стратегии В рассмотренных циклах обоих типов выборки имеется один этап, на котором интерпретатор должен принять то или иное решение. Этот этап состоит в разреше- нии конфликтов. Для выбора одного правила из нескольких отобранных можно применить самые разные методы, совокупность которых называется управляющими стратегиями (control strategies). Для получения требуемого алгоритма отбора можно применить один из следующих подходов или их комбинацию. > Выбрать первое рабочее правило, найденное во время проверки соответствия. > Выбрать лучший из вариантов, основываясь на приоритетах, установленных для каждого правила экспертом. > Применить наиболее конкретное правило. Таким правилом является то, у которого в условии используется максимальное количество выражений (а & в & С явля- ется более конкретным, чем С & D). > Система может отслеживать все предыдущие операции отбора, применяя ис- торический список для предотвращения повторного выбора одного и того же правила два раза подряд. > Наконец, может применяться случайный выбор (как ни странно, но этот метод часто оказывается очень эффективным). После того как вынесено решение о том, какое правило из всех возможных будет выбрано, остальные отобранные правила теоретически должны быть отброшены. Однако управляющая стратегия может определять, что на самом деле происходит с теми правилами, которые не были выбраны в качестве единственного решения очередной итерации цикла. Здесь нужно уточнить, что мы понимаем под процессом, который в предыдущих обсуждениях называли “циклом”: цикл может быть как ите- ративным (постоянно повторяться, отбрасывая альтернативные правила на каждой итерации), так и рекурсивным (иными словами, для каждого варианта осуществля- ется вызов очередной функции). В последнем случае (т.е. при рекурсии) все альтер- нативные правила сохраняются в стеке, что дает возможность, в случае необходимо- сти, выполнить “откат” и попробовать другой вариант. Такой подход гарантирует то, что будут перебраны все возможные варианты и, следовательно, что решение бу- дет найдено (если оно, конечно, вообще существует).
Глава 11. Системы, основанные на правилах 179 Процесс последовательного рассмотрения всех вариантов называется перебором (search) и, в свою очередь, также может быть организован по-разному. Рассказывать о гом, какие подходы применяются для контроля и реализации процесса перебора, а также для его оптимизации и повышения эффективности, можно очень долго. Однако столь сложные управляющие стратегии не так часто используются в RBS-системах, поэтому ci м > i всгстнующий круг вопросов выходит далеко за рамки этой книги. Дополнительная информация Помимо источников, перечисленных в приложении А, “Библиография”, автор предлагает ознако- миться со ссылками на материалы, посвященные вопросам теории и практики организации перебора в RBS-системах, которые можно найти на Web-узле, посвященном данной книге, в разделе с мате- риалами для главы 11, “Системы, основанные на правилах”. В частности, среди этих материалов вы найдете практические примеры, а также статьи, которые публиковались в академических изданиях. Гибридные интерпретаторы В завершение этого раздела отметим, что существуют стратегии двунаправленной выборки, которые поддерживают любой из двух описанных выше методов выборки. Использование выборки с прямым и обратным логическим выводом позволяет из- бавиться от ситуаций “зависания” интерпретатора, не используя механизма перебо- ра. Вместо этого в таких гибридных системах применяется случайный выбор то пря- мой, то обратной выборки до тех пор, пока не будет найдено решение! Применение выборки с обратным логическим выводом позволяет избавиться от тупиковых си- туаций во время выборки с прямым логическим выводом и наоборот. Конечно, ме- ханизмы перебора в подобных ситуациях более эффективны и надежны, однако двунаправленные интерпретаторы также могут быть вполне приемлемым решением при использовании RBS-систем для относительно несложных случаев. Теория RBS-систем и представление знаний В этом разделе мы поговорим не о конкретных алгоритмах, а об общих теоретических постулатах, на которых основывается работа RBS-систем. Ключевая концепция теории систем, основанных на правилах, заключается в том, что они базируются на представле- нии знаний. Поэтому мы сначала попытаемся разобраться в том, как приобретается опыт, а затем посмотрим, насколько RBS-системы соответствуют современным ЯПЗ. Это позволит нам лучше разобраться в том, что лежит в основе рабочей механики RBS-систем. С одной стороны, вы сможете увидеть потенциал подобных систем и области их возможного применения, а с другой — лучше понять не только их пре- имущества, но и присущие им недостатки. Накопление знаний Теоретически RBS-системы могут быть очень мощными и гибкими. Однако для того, чтобы возможности той или иной RBS-системы были реализованы на практике, нужно, чтобы в такой системе был отражен опыт, накопленный в конкретной про- блемной области. (Например, для огибания препятствий RBS-системе нужны соответ-
180 Часть II. Управление перемещениями ствующие правила.) Основной вопрос при этом состоит в том, как получить этот опыт, выраженный в форме конкретных знаний? К сожалению, эта проблема присуща не только RBS-системам, но и системам ИИ в целом. Однако в системах, основанных на знаниях, она проявляется особенно остро. Процесс получения таких знаний в опреде- ленной области получил название накопления знаний (knowledge elicitation). Конечно, RBS-системы во многом используют здравый смысл и найденные эм- пирическим путем правила, что несколько облегчает задачу преобразования экс- пертных знаний в рабочие правила. Однако в целом эта задача является, на удивле- ние, сложной, в связи с чем возникла научная проблема узкого места в получении знаний (knowledge acquisition bottleneck). Исследователи этой проблемы неоднократ- но пытались усовершенствовать соответствующий этап создания экспертных сис- тем, разрабатывая специальные инструменты и методологии, однако “узкое место” по-прежнему остается. В первых (т.е. созданных до 80-х гт.) системах, основанных на знаниях, предполага- лось, что эксперты будут программировать свои знания внутри самой системы, как это делают программисты. Такой подход привел к тому, что многие созданные в те годы сис- темы работали неустойчиво и были очень сложны в обслуживании (особенно сильно эти недостатки проявлялись в крупномасштабных системах). В результате в 1983 году воз- никла идея отделить систему от знаний путем их представления в декларативной форме. Это позволило отделить сами знания от их применения (рис. 11.7). Созданные по этому принципу системы получили название экспертных систем II поколения. А. Первое поколение RBS-системы Разработчик Б. Второе поколение RBS-системы Программист Рис. 11.7. Накопление знаний в RBS-системах. Сравнение процедурного и декларатив- ного подходов с указанием количества задействованных специалистов
Глава 11. Системы, основанные на правилах 181 Сегодня в качестве посредника между компьютерной системой и экспертами вы- ступает отдельный специалист — инженер по представлению знаний (knowledge engi- neer). Конечно, его роль может играть и один из экспертов, но, как правило, слож- ность возложенной на этого специалиста задачи настолько высока, что требует от него полной занятости, а также навыков владения специализированным инструмен- тарием. Должностные обязанности инженера по представлению знаний состоят в выполнении следующих задач. > Чтение литературы по соответствующей предметной области с целью овладе- ния базовыми концепциями и терминологией. > Постоянные встречи с экспертами с целью получения от них знаний о проблеме. > Обобщение и анализ собранной информации, организация фактов и ввод их в компьютерную систему после выбора наиболее подходящего формата. Типич- ные решения, которые нужно принимать на этом этапе, обсуждаются далее в этой главе. Сегодня такое использование экспертов, в котором принимает участие инженер по представлению знаний, является наиболее распространенным методом наполне- ния системы знаниями. Этот метод на практике зарекомендовал себя как чрезвы- чайно успешный, поэтому разработчикам систем ИИ для компьютерных игр следует отнестись к нему со всей серьезностью. Дополнительная информация Существуют автоматизированные методы накопления знаний, которые также можно применять для из- влечения правил из исходной информации. В этой книге мы рассмотрим два из таких методов. Первый из них, о котором речь идет в главе 26, “Деревья классификации и регрессии”, называется методом де- ревьев принятия решений (decision tree). Второй, которому посвящена глава 33, “Обучающиеся системы классификаторов”, именуется методом систем классификации (classifier system). Во многих случаях подходы, основанные на обучении, не позволяют достичь таких же высоких результатов, как подходы, основанные на экспертных оценках, однако они позволяют значительно снизить сложность разработки. Представление знаний Рабочие правила, на которых зиждется любая RBS-система, — это, по сути дела, часть ЯПЗ. Это означает, что их можно расширить, используя другие принципы ТПЗ. Действительно, поскольку RBS-система определяется как набор операторов if ... then, ей присуща очень высокая степень гибкости. Иными словами, для подстройки системы к конкретной проблеме всегда можно выбрать наиболее подхо- дящий формат заголовка и тела правил. Символы — это наиболее интенсивно используемая составляющая ТПЗ, однако их недостаток в том, что каждой концепции нужен отдельный символ. Принцип “объект-атрибут-значение” позволяет структурировать информацию в более удоб- ной для обработки форме (например, в виде полей класса). Фреймы удобно исполь- зовать для описания взаимосвязей между объектами (пример из C++ — указатели), а семантические сети — для представления высокоуровневых концепций (например, наследования). Все это позволяет снизить количество правил, необходимых для ре- шения сложных проблем. Перечисленные концепции ТПЗ повсеместно использу-
182 Часть II. Управление перемещениями ются в практике объектно-ориентированного программирования, однако для того, чтобы использовать их в RBS-системе, нужно представить эти концепции в явном виде (иными словами, разрешить интроспекцию). Дополнительная информация RBS-системы можно расширить для того, чтобы учитывать в них степень неопределенности правил. Для этого нужно использовать такие концепции, как факторы уверенности (confidence factor) или оп- ределенности (certainty factor). Когда факты рассматриваются с учетом их степени истинности, сис- тема RBS превращается в экспертную систему с нечеткой логикой (fuzzy expert system). Теория и практика построения таких систем подробно рассматривается в главе 30, “Нечеткая логика”. Анализ RBS-решений Теперь мы готовы к тому, чтобы описать основные преимущества RBS-систем, равно как и их недостатки. Этот анализ облегчит принятие решения о том, годятся ли RBS- системы для применения к проблемам моделирования ИИ в компьютерных играх. По- этому мы сначала рассмотрим основные характеристики RBS-решений вообще, а затем поговорим о том, насколько их можно использовать в игровых средствах ИИ. Преимущества Учитывая все сказанное выше о RBS-решениях, не удивительно, что они на сего- дняшний день являются одними из наиболее массовых методов моделирования ИИ. В частности, если рассматривать их с точки зрения разработки игр, нас могут инте- ресовать следующие свойства таких решений. > Простота. Отдельные правила имеют простой синтаксис и представляют знания в наиболее естественной форме. Благодаря этому экспертам легко разобраться в функционировании RBS-решений, базирующихся на принципах, которые ле- жат в основе человеческой логики. Представление знаний в таких системах так- же осуществляется в неявной форме, что позволяет сэкономить и время, и силы при их создании. > Модульное построение. Рабочие правила представляют знания в атомарной форме, а операторы можно (Уединять и редактировать независимо один от другого. Та- кой принцип построения RBS-решений обеспечивает простоту их расширения. > Гибкость. Поскольку знания в RBS-системах представлены в относительно неформализованном виде (в отличие от компьютерной логики), данными очень легко манипулировать для достижения нужного результата. Кроме того, очень легко поместить дополнительные символы в рабочую память или даже улучшить используемый ЯПЗ. > Широкая область применения. Поскольку многие задачи после формализации с помощью элементов ТПЗ (например, символов) представляются в очень удобном виде, RBS-решения часто являются наилучшим вариантом для соз- дания соответствующих систем. Именно поэтому область применения таких
Глава 11. Системы, основанные на правилах 183 решений очень широка: от имитации и моделирования физических процессов до решения научных и управленческих задач. Конечно, перечисленные преимущества RBS-решений не даются даром, поэтому с ледует учитывать и проблемы, которые могут возникать при их применении. Недостатки Следует понимать, что RBS-системы не являются панацеей. Поэтому для того, чтобы выбор в пользу таких систем был осознанным, необходимо четко представ- лять, какие последствия могут быть в случае их использования. > Экспрессивность. Поскольку в основе RBS-решений всегда лежит тот или иной ЯПЗ, такие решения по определению не обладают высокой экспрессив- ностью: небольшой объем знаний, представленный в записи или полученный путем заключений, может играть значительную роль для получения информа- ции. Это означает, что во многих случаях трудно предсказать поведение RBS- системы на основе изучения одних лишь правил. > Универсальность. Хотя однострочные рабочие правила позволяют обеспечить очень высокую гибкость, содержимое их тел часто ограничивается синтакси- сом выбранного ЯПЗ (например, присваивание символу значения). Кроме того, в выбранном ЯПЗ тело также нередко ограничено одним оператором (особенно часто это можно встретить в системах, основанных на выборке с обратным логическим выводом). Конечно, такие ограничения не позволяют рабочим правилам даже приблизиться по универсальности к таким современ- ным языкам программирования, как Java или C++. > Эффективность. В простых системах требования к необходимой вычислитель- ной мощности, как правило, растут по линейному закону при увеличении ко- личества правил. Обычно именно такую цену приходится платить за усложне- ния этапа поиска соответствия. Конечно, можно усовершенствовать алгорит- мы поиска и тем самым повысить эффективность, однако требования к памя- ти, необходимой для размещения большого количества правил, снизить гораздо сложнее. Кроме того, если в системе, основанной на RBS-решении, необходимо выполнять сложный перебор, эффективность такой системы час- то оказывается ниже эффективности систем аналогичного назначения, осно- ванных на других решениях. > Применимость. Хотя RBS-решения, как уже отмечалось, можно применять в раз- личных проблемных областях, это не значит, что они всегда являются лучшими и (или) единственно возможными. Например, символы не подходят для моделиро- вания некоторых проблем (в частности, аналогового управления или моделирова- ния последовательности операций). Кроме того, далеко не во всех случаях можно создать необходимые экспертные знания в соитзетствующей предметной области. В завершение отметим, что многие недостатки можно устранить или компенси- ровать тем или иным способом, хотя возможность (или невозможность) такой ком- пенсации часто во многом определяется конкретной проблемой.
184 Часть II. Управление перемещениями Оценка RBS-решений с точки зрения разработки игр В этом подразделе мы рассмотрим, насколько RBS-решения применимы в ком- пьютерных играх, а также обсудим отношение разработчиков игр к таким решениям. Проектирование и разработка На практике профессиональный разработчик систем ИИ для компьютерных игр часто является одновременно программистом, инженером по представлению знаний и экспертом в предметной области. Но даже если в рабочей группе проекта имеется специалист, квалификация которого позволяет выполнить все эти роли одновремен- но, все же лучше поручить их разным людям или, во всяком случае, разнести соответ- ствующие работы во времени. Для этого можно, например, разделить этапы создания содержимого системы ИИ и создания ее программного кода: прежде всего реализуется программный код системы, основанной на знаниях, а разработка правил экспертами переносится на более поздние этапы производственного цикла. В общем случае про- изводственный цикл по созданию игры представляет собой итеративный процесс, со- стоящий из написания программного кода и его тестирования. Поэтому отделение за- дачи по созданию механики системы ИИ от задачи по созданию представления знаний позволяет органично разделить процесс разработки системы на два этапа, с каждым из которых вполне может справиться один человек. При использовании RBS-систем в играх можно также отметить дополнительные преимущества, основанные на природе экспертных систем II поколения. > Повторное использование кода. Если RBS-система реализована в виде отдель- ного модуля, это позволяет применять ее д ля решения различных проблем. При использовании процедурного подхода, когда знания хранятся непосредственно в программном коде, возможность повторного использования резко снижается или вообще исчезает. Декларативный же подход позволяет подгружать знания из файла непосредственно на этапе выполнения программного кода системы. > Отладка. Если RBS-система применяется для моделирования поведения, а не для решения проблем, результаты ее работы становятся очевидны всем участ- никам рабочей группы проекта. Поэтому при выявлении ошибки любой раз- работчик может составить отчет с описанием точной ситуации, в которой она проявилась. Кроме того, для автоматизации этой задачи можно легко создать специальную процедуру, которая будет записывать текущее состояние рабо- чей памяти RBS-системы на диск. После получения такой информации об ошибке создание дополнительного правила, предназначенного для ее устра- нения, — задача тривиальная. Наличие даже самого простого пользователь- ского интерфейса позволит вносить изменения в базу правил практически любому участнику рабочей группы, независимо от его квалификации! Как это часто бывает, за подобную гибкость приходится расплачиваться сниже- нием скорости выполнения. Это, конечно, серьезный недостаток, о котором следует поговорить отдельно.
ftalaHausjtk Глава 11. Системы, основанные на правилах 185 Эффективность При выполнении программного кода систем, основанных на знаниях, максималь- ная вычислительная нагрузка приходится на обработку правил. Давайте проанализи- руем оба аспекта таких правил (условия и операции) в терминах процедурного (с жест- ким кодированием) и декларативного (управляемого данными) подходов. Процедурный подход (правила жестко записаны в программном коде): if (а && b && с) { d = true; } Декларативный подход (правила хранятся во внешнем файле): IF a AND b AND с THEN d С точки зрения одной лишь скорости выполнения, система с жестко запрограмми- рованными правилами всегда будет значительно опережать систему, построенную на любых других принципах (например, управляемую сценариями или интерпретирую- щую). Однако это вовсе не является основанием для отказа от декларативного подхода, поскольку система, построенная на процедурном подходе, не может применять высо- коуровневый анализ условий. С другой стороны, когда правила обрабатываются от- дельно от программного кода, система может не только прочесть, но и проанализиро- вать условия. Это позволяет R ВS-модулю реорганизовать рабочие правила в более оп- тимальной форме (например, в виде дерева или графа). Таким образом, система, осно- ванная на декларативном подходе, может минимизировать количество проверок соответствия каждого правила текущему состоянию. Поэтому в системах с очень большим количеством правил эффективность работы RBS-решений, основанных на декларативном подходе, не только не уступает эффективности аналогичных решений, основанных на процедурном подходе, но и часто превосходит ее. Что касается тела правила, то здесь картина также подобна описанной выше. Жест- ко закодированные операции выполняются более эффективно благодаря как прямому переводу их в машинный код, так и универсальности таких языков программирова- ния, как C++. С другой стороны, декларативный подход, обеспечивая немного больше гибкости во время выполнения, значительно отстает от процедурного по скорости, а также по ограничениям синтаксиса (обычно весь “синтаксис” сводится к установке значений символов в рабочей памяти системы). Если вам нужно применить выборку с обратным логическим выводом, то с этими недостатками придется мириться. Однако в случае использования выборки с прямым логическим выводом можно применить компромиссное решение, которое заключается в жестком кодировании операций, ис- пользуемых по умолчанию, с сохранением ссылок на них в небольшой базе данных. Затем создаются декларативные правила, которые, используя эту базу данных, вызы- вают соответствующие операции во время выполнения. Таким образом, мы получаем решение, использующее преимущества обоих подходов одновременно! Проблемы, для которых можно применять RBS-решения Учитывая уже упоминавшееся узкое место в получении знаний, при практическом применении RBS-решений нужно быть уверенным в том, что по соответствующей проблеме имеется необходимый объем экспертных знаний, или, как минимум, в том, что такие знания можно достаточно легко и быстро накопить. Если это усло- вие не выполняется, то получить работающую RBS-систему будет очень сложно.
186 Часть II. Управление перемещениями Кроме того, предметная область должна быть такой, чтобы ее было легко предста- вить с помощью символов, пригодных для обработки RBS-системой. При анализе некоторых проблем можно столкнуться с тем, что решение пред- ставляет собой длинные последовательности операторов if языка C++ (например, как в случае определения рефлексивного поведения при моделировании перемеще- ний). RBS-системы очень хорошо подходят для применения в подобных ситуациях, позволяя получать гибкие и расширяемые решения. Нередко оказывается также, что эти решения являются и весьма эффективными! Несколько хуже RBS-системы подходят для решения задач. Об эффективности в подобных случаях можно говорить только при условии, что к заданному состоянию может привести любое из альтернативных решений (иными словами, ни одно из решений не является тупиковым). В этом случае выбор единственного правила на этапе разрешения конфликтов становится не очень важным, не говоря уже об устра- нении необходимости использования сложного процесса перебора. Что касается задач управления, то RBS-системы справляются с ними достаточно хорошо только в том случае, если моделируемое поведение является рефлексивным, т.е. основанным исключительно на реакциях. Если RBS-система сталкивается с не- обходимостью получения дополнительного внутреннего символа с целью под держки недетерминированности, это часто оказывается проблематичным. (В следующей главе мы рассмотрим подобную ситуацию, когда будем обсуждать моделирование поведения при следовании вдоль стены.) Если же нужно смоделировать строго опре- деленную последовательность операций, то эффективность RBS-системы может упасть до катастрофического уровня. С подобными проблемами гораздо лучше справляются конечные автоматы, описанные в главе 38, “Конечные автоматы”. Резюме Подводя итог, можно отметить, что любая система, основанная на правилах, со- стоит из трех следующих компонентов. > База правил — единая база данных, в которой хранятся все правила системы. > Рабочая память — область, в которой отслеживаются все символы, представ- ляющие проблему. > Интерпретатор — компонент, который использует правила для манипулиро- вания символами в рабочей памяти. Интерпретаторы могут использовать три различных механизма получения иско- мых решений. > Выборка с прямым логическим выводом. Рабочий цикл, организованный по принципу распознай-действуй, начинается от текущего состояния. Этот под- ход является самым простым и наиболее часто используемым. > Выборка с обратным логическим выводом. Рабочий цикл, организованный по принципу предположи-проверь, начинается от теоретически возможного ко- нечного состояния. Этот подход сложнее в реализации и применяется гораздо реже, чем выборка с прямым логическим выводом.
^aiattaus,^. Глава 11. Системы, основанные на правилах 187 > Двунаправленная выборка. Представляет собой гибридное решение, позво- ляющее использовать преимущества и компенсировать недостатки двух базо- вых подходов. Сложность реализации при этом, конечно, гораздо выше, чем у каждого из подходов в отдельности. Самой большой проблемой при создании RBS-решений является накопление шаний, поскольку к созданию правил нужно привлечь экспертов. Для упрощения этого процесса можно использовать следующие формализованные процедуры орга- низации производственного цикла. > Отделение базы правил от кода интерпретатора на основе декларативного подхода. > Организация взаимодействия правил с системой с помощью процедурных эффекторов и сенсоров. Особенно хорошо RBS-системы справляются с задачами, в которых необходимо искать решение задачи на основе дедукции. Также они хорошо подходят для решения задач управления на основе рефлексивного поведения (однако в тех случаях, когда требуется использование внутренних символов или получение строго заданной по- следовательности выходов, RBS-системы становятся очень сложными). В следую- щей главе мы рассмотрим, как теорию RBS-систем применить на практике для мо- делирования поведения, проявляющегося в следовании вдоль стены. ПРАКТИЧЕСКИЙ ПРИМЕР Анимат, демонстрирующий применение на практике изложенных в этой главе теоретических основ RBS- систем, называется Brutus. Этот анимат ведет себя, как дрессированный пес, следуя за игроками или находя своего хозяина в толпе (комбинация различных типов поведения, проявляющегося в изменении направле- ния движения). Поскольку каждая операция записана в коде анимата в виде оператора if ... then языка C++, соответствующая RBS-система относится к экспертным системам I поколения, основанным на процедурном подходе. Выполняемый и исходный коды анимата Brutus, а также инструкции по его компиля- ции можно найти на Web-узле этой книги по адресу http: / /AiGameDev. com.

^aiaHausjiii Глава 12 Синтез перемещений В СИСТЕМАХ, ОСНОВАННЫХ НА ПРАВИЛАХ В ЭТОЙ ГЛАВЕ. • Пример проявления моделируемого поведения • Анализ проблемы • Технический проект RBS-модуля • Реализация • Тестирование • Оценка • Резюме • Краткие итоги части • Что дальше Теперь, когда вы ознакомились с теоретиче- скими принципами организации систем, основанных на правилах, или RBS-систем, рас- смотрим методы их практической реализации при моделировании перемещений. Однако по- скольку проблему огибания препятствий мы, можно сказать, решили (нам осталось лишь реа- лизовать техническое задание в программном коде), в этой главе займемся другой задачей. Для того чтобы расширить ваши познания в области моделирования систем ИИ, рассмотрим моде- лирование поведения, проявляющегося в следо- вании вдоль стены (wall-following behavior). Использование RBS-системы для моделиро- вания поведенческих реакций позволяет отделить собственно модель поведения от программного кода системы ИИ, что значительно упрощает за- дачу редактирования поведения. Формат рабочих правил очень прост и интуитивно понятен. Это упрощает как моделирование поведения несобст- венных персонажей вообще, так и моделирование следования вдоль стены в частности. В этой главе рассмотрены следующие темы. > Обязательный этап разработки техниче- ских требований, в которых, в частности, будет содержаться небольшой пример про- явления моделируемого поведения. > Интеграция технологий, включая принятие решения об архитектурных особенностях и технических методах реализации созда- ваемой RBS-системы.
190 Часть II. Управление перемещениями > Разработка технического задания на создание RBS-модуля, описание его ин- терфейса времени выполнения и используемых им данных. > Реализация модуля и его внутренних структур данных в виде программного кода. > Подключение RBS-модуля к программному коду игры для синтеза поведения, проявляющегося в следовании вдоль стены. > Анализ использованного RBS-решения и различных аспектов полученного поведения применительно к конкретной задаче. В конце главы получим RBS-систему, которая, кроме моделирования следования вдоль стены, будет успешно справляться с некоторыми задачами, характерными для поведения, проявляющегося в изменении направления движения (глава 10, “Изме- нение направления движения при огибании препятствий”). Пример проявления моделируемого поведения Итак, будем считать, что с моделированием огибания препятствий мы уже разобра- лись, и теперь попробуем заняться моделированием следования вдоль стен. Эти две проблемы достаточно похожи, поэтому большая часть подготовительной работы, уже проделанной нами при моделировании огибания препятствий, с успехом может быть применена и к моделированию следования вдоль стен. В частности, окружающая среда игрового мира, а также практически все технические требования и спецификации ин- терфейсов остаются столь же сложными, как и в уже рассмотренном случае. Отличаются лишь причины поведенческих реакций. В этой связи нам нужен но- вый пример проявления моделируемого поведения. Естественно, анимат должен сначала как-то установить, что находящееся перед ним препятствие является сте- ной, а затем следовать к ее наружному или внутреннему углу. 1. Если стены нет и анимат уже не следует вдоль нее, направление движения вы- бирается произвольно. 2. Если стена находится перед аниматом, он должен развернуться, независимо от наличия или отсутствия стен сбоку от анимата. 3. Если стена находится сбоку от анимата, он должен следовать вдоль нее. 4. Если перед аниматом нет стены и он не следовал вдоль нее, анимат должен повернуть в ту сторону, где последний раз была стена. С концептуальной точки зрения, основное отличие моделирования следования вдоль стен от моделирования огибания препятствий состоит в необходимости выполнения операций, зависящих от контекста. Действительно, при следовании вдоль стены отсутст- вие препятствия может приводить к выполнению двух разных операций, в зависимости от того, следовал ли ранее анимат вдоль стены или нет (ситуации 1 и 4). Поэтому получе- ние со» ггвстствия между показаниями сенсоров и выполняемыми операциями в данном случае — неоднозначная задача. Если мы попробуем применить д ля ее решения систему, основанную на реакциях, она всегда будет выбирать одно и то же правило, независимо от контекста. И здесь мы сталкиваемся с проблемой: если это правило будет предписывать
Глава 12. Синтез перемещений в системах, основанных на правилах 191 анимату всегда выполнять операцию turn, он будет отворачиваться от участков свобод- ного пространства; если же правило будет требовать от него выполнения операции moveForwards, он будет уходить от стены, которая поворачивает влево или вправо. Однако недетерминированность не представляет проблемы для RBS-систем, по- скольку при их использовании мы можем легко ввести дополнительный внутренний символ, который будет выполнять задачу распознавания контекста. Этот символ, означающий “всегда следовать вдоль стены”, позволит системе узнать, какое пове- ление от нее требуется (рис. 12.1). Стена отсутствует; анимат не следует вдоль стены ▲ 2 Стена впереди 3 Стена справа 4 Стена отсутствует; анимат следует вдоль стены Рис. 12.1. Четыре различные ситуации, которые могут возникать при мо- делировании следования вдоль стены, и соответствующие им операции Анализ проблемы Прежде чем погрузиться в обсуждение низкоуровневых деталей реализации, необ- ходимо проанализировать результаты наших предыдущих изысканий и архитектурных решений, чтобы понять, насколько они подходят одни к другим, а также к стоящей пе- ред нами проблеме. Нужно ли использовать RBS-систему? Основная сложность при создании компьютерной игры состоит в том, что разра- ботчикам постоянно приходится искать компромисс между объемом потраченных времени и сил и достигнутыми результатами. Иными словами, нам нужно решить, сколько времени мы можем инвестировать в разработку RBS-системы. На создание полнофункциональной RBS-системы нередко уходит от нескольких недель до не- скольких месяцев, что при необходимости решения относительно простой проблемы может оказаться большой роскошью. С другой стороны, простые в реализации реше- ния (например, поведение, проявляющееся в изменении направления) могут оказать- ся непригодными для решения других проблем, в том числе даже очень сходных. В этой главе мы спроектируем RBS-систему, построенную по модульному прин- ципу. Однако при этом, учитывая основные принципы работы RBS-систем, следует помнить, что при их использовании очень важной проблемой остается эффектив- ность. Кроме того, если нам нужно будет моделировать более сложные поведенче- ские реакции, не менее важными являются такие аспекты, как гибкость и расши- ряемость. Все эти факторы следует учитывать при принятии решения в пользу RBS- системы или системы, основанной на других принципах.
192 Часть II. Управление перемещениями Тип выборки Будем считать, что в нашем случае оптимальным решением является RBS- система, реализованная в виде модуля. Это означает, что нам нужно принять реше- ние, какой тип выборки будет использоваться этой RBS-системой. Учитывая осо- бенности различных типов выборки, описанные в главе 11, “Системы, основанные на правилах”, мы остановимся на выборке с прямым логическим выводом, исходя из двух следующих соображений. > Имитация поведения. Поскольку мы собираемся имитировать управление пове- дением, а не решение проблем, выборка с обратным логическим выводом яв- ляется не самым лучшим вариантом. > Процедурные операции. При выборке с прямым логическим выводом тела пра- вил не обязательно должны иметь декларативную форму. Иными словами, RBS-система может выполнять соответствующие операции, не владея инфор- мацией о том, в какой форме они записаны. Это позволит нам использовать жесткое программирование основных операций непосредственно в про- граммном коде. Таким образом, мы можем получить значительный выигрыш в гибкости и эффективности, обеспечиваемый с помощью программирования на языке C++. Основная цель, которую мы преследуем, используя выборку с прямым логиче- ским выводом, заключается в одновременной реализации жестко запрограммиро- ванных эффекторов (которые выполняют все операции в окружающей среде) и дек- ларативных (т.е. гибко определенных) условий, загружаемых из файла. Реализацию сенсоров мы обеспечим в неявной форме, используя препроцессинг для сбора ин- формации об окружающей среде. Упрощение правил Даже сложные правила с концептуальной точки зрения представляют собой довольно простые конструкции, однако в идеальном случае всегда нужно стремиться снизить уро- вень сложности до минимального (это касается как заголовков, так и тел правил). Кроме того, нужно минимизировать количество правил. Понятно, что если нам удастся решить эту задачу, мы в значительной степени упростим процесс накопления знаний. Если каждому правилу задать неявный рейтинг, это будет для интерпретатора сво- его рода подсказкой о том, какие правила следует выбирать прежде всего. Когда обра- ботка начинается с правил, имеющих более высокий приоритет, можно считать, вы- бирая последующие правила, что условия предыдущих правил истинны. Это позволяет упростить условия правил, снижая их сложность в соответствии с рейтингом. Кроме того, в телах разных правил одним и тем же символам часто назначаются одни и те же значения. Например, все правила, кроме одного, могут назначать сим- волу А значение true. Понятно, что явное включение такой операции в каждое пра- вило приводит к ненужной избыточности. Вместо этого мы можем использовать значения, присваиваемые по умолчанию (т.е. по умолчанию считать, что А присвое- но значение true, кроме тех случаев, когда А будет явно присвоено иное значение). Наконец, чтобы уменьшить количество правил, мы можем разрешить выполне- ние нескольких операций в теле одного правила. Это позволит нам избежать дубли-
Глава 12. Синтез перемещений в системах, основанных на правилах 193 рования правил, а также обеспечить поддержку атомарных операций. В некоторых случаях нам придется устанавливать в одном правиле значения двух символов сразу, чтобы не ждать выполнения второго оператора присваивания в очередном цикле ин- терпретатора. Технический проект RBS-модуля В этом разделе мы поговорим о том, как инициализировать RBS-модуль из файла данных, а также об интерфейсе, с помощью которого основной код системы ИИ бу- дет взаимодействовать с этим модулем. Инициализация Как уже говорилось в главе 4, “FEAR: платформа для экспериментов”, настройка модулей платформы FEAR выполняется на основе языка XML. В частности, в случае RBS-модуля этот подход позволяет получить гибкое и расширяемое описание сис- темы. Таким образом, продумав как следует архитектурную и техническую части проекта модуля, мы легко поймем, как реализовать его в виде программного кода. Рабочая память Как уже говорилось в главе 11, “Системы, основанные на правилах”, рабочая па- мять RBS-системы — это, по сути, символы, которые в ней хранятся. В начальном состоянии рабочая память содержит все символы, которым присвоены значения, ус- тановленные по умолчанию (за исключением, естественно, тех символов, которым явно заданы начальные значения). В листинге 12.1 приведен пример рабочей памяти RBS-системы, содержащий два символа, sideWall и following. Эти символы го- ворят о наличии стены сбоку от анимата и о необходимости отслеживать контекст, соответственно. (Обратите внимание на то, что символам присвоены как значения, используемые по умолчанию, так и начальные значения.) Листинг 12.1. Код на языке XML, описывающий организацию рабочей памяти с двумя символами <memory> <Symbol name="sideWall" /> <Symbol name="following" initial="true" default="false" /> <memory> Хотя символы объявляются одинаково, они тем не менее могут относиться к од- ному из двух разных типов. Внутренние (internal) символы используются только внутри RBS-системы (например, символ following). Внешние (native) символы со- ответствуют сенсорам или эффекторам, находящимся вне RBS-системы (например, leftwall). Это позволяет нам организовать неявное управление функциональны- ми расширениями путем автоматической установки внешних символов до начала очередного цикла интерпретатора.
194 Часть II. Управление перемещениями База правил База правил состоит из простого набора рабочих правил, определяемых в виде пар “условие-операция” (листинг 12.2). Условия (conditions) должны соответст- вовать символам, находящимся в рабочей памяти. Операции (action) также могут устанавливать символы, хотя в нашем случае, как уже отмечалось, система поддер- живает процедурные сенсоры, которые не объявляются в явной форме. Листинг 122. Простая база правил на языке XML, содержащая только одно правило, разделенное на условия и операции <rulebase> <Rule> <conditions> <Symbol name="sideWall" value="true" /> <Symbol name="frontwall" value="false" /> </conditions> <action> <Symbol name="moveForwards" value="true" /> </action> </Rule> <memory> Отдельное условие правила представляет собой конъюнкцию атомарных опера- торов. Иными словами, оператор and объединяет в виде единого условия отдельные символы, между которыми имеется неявное соответствие. Условия такого типа яв- ляются наиболее распространенными. Во всяком случае в рассматриваемой задаче нет необходимости прибегать к использованию операторов OR: в тех случаях, когда нам понадобится использовать дизъюнкцию (OR), мы вполне можем разбить условие на два. Такую работу можно выполнить как вручную (например, это может сделать инженер по представлению знаний), так и автоматически (с помощью специального программного инструмента). Интерфейс Интерфейс должен обеспечивать передачу данных в модуль во время выполнения программного кода. Для этого нужно сообщить системе, где хранится информация о внешних символах и как запускать соответствующие внешние операции. Тем самым будет обеспечиваться синхронизация данных, считываемых во время выполнения, со статическими объявлениями. В особых случаях можно также обеспечить возмож- ность динамического расширения системы: например, позволить установку или по- лучение значений символов либо добавление новых правил. Синхронизация Переменные можно регистрировать в модуле, передавая последнему указатели на них (первый параметр), а также их имена (второй параметр). Имя необходимо для того, чтобы обеспечить соответствие объявлениям переменных на языке XML. SetSensor( &SensorSideWall, "sideWall" );
ftaiatiausi^i Глава 12. Синтез перемещений в системах, основанных на правилах 195 Процедурные операции мы будем реализовывать в виде так называемых функто- ров (functor — классы, которые представляют собой хранилища функций [34]), по- скольку они создают удобный механизм для реализации на языке C++ функций об- ратного вызова (callback function). Конечно, мы могли бы реализовать каждую опе- рацию в виде отдельного класса, а затем просто перекрывать один метод, например Step (). При таком подходе RBS-система, когда ей нужно применить соответст- вующую операцию, просто вызывала бы эту виртуальную функцию. Однако исполь- зовать функторы удобнее, поскольку в этом случае каждой операции соответствует отдельный метод одного и того же класса. Кроме того, в этот же класс мы можем по- местить внешние переменные, что также удобно с точки зрения реализации. (Как исходный код функтора выглядит на практике, лучше всего понять, изучая соответ- ствующий практический пример.) Динамические расширения Объявления методов Set () и Get(), обеспечивающих доступ к внутренним символам, при использовании булевых значений выглядят тривиально. Первая функция (Set ()) может перекрываться для обеспечения работы с различными ти- пами данных (проще говоря, в случае необходимости можно ее скопировать и изме- нить тип последнего параметра). Вторую же функцию (Get ()) во избежание кон- фликтов в ситуациях, когда нужно работать с разными типами данных, лучше ско- пировать и переименовать (например, в GetBool ()). Конечно, другими способами гарантировать устранение угрозы возникновения ошибки, вызванной несоответст- вием типов, нельзя, поскольку функции для разных типов Get () различаются толь- ко типом возвращаемого значения. (На это обязательно укажет компилятор.) void Set( const string& symbol, const bool value ); bool Get( const string& symbol ) const; Хотя задача динамического добавления правил в систему не относится к разряду постоянно используемых, однако, в случае необходимости, ее также можно решить с помощью следующих двух методов. void AddCondition( const string& symbol, const bool value ); bool SetAction( const string& action ); Первый метод может вызываться несколько раз подряд, чтобы обеспечить конъ- юнкцию, а второй предназначен для проверки условия и назначения ему конкрет- ной операции. Реализация После того как мы определили формальный интерфейс, реализация RBS-системы — это, как говорится, дело техники. Для хранения базы правил и рабочей памяти можно предусмотреть повторное использование контейнеров из библиотеки STL, а остальной код реализуется также достаточно просто. Использование гибкого формата файлов (как, например, показано в пре.- ыдушем разделе) позволяет возложить задачу написания тех- нического задания на самого разработчика. В частности, задача упрощается еще и пото-
196 Часть II. Управление перемещениями му, что, благодаря использованию приоритетов правил, алгоритм работы интерпретатора может быть достаточно простым, при этом полностью соответствуя требованиям инже- нера по представлению знаний. Поскольку реализация выполняется прозрачно и скрыта за интерфейсом, расши- рение модуля, скорее всего, не нарушит работоспособности всей системы. Напри- мер, если мы захотим оптимизировать правила, можем построить дерево внутри сис- темы после загрузки правил (хотя при этом, возможно, придется игнорировать их рейтинги). Исходный код RBS-модуль, написанный на языке C++, находится на Web-узле этой книги по адресу http: / / AlGameDev.com. Кроме того, там же можно найти высокоуровневое описание этапов разработки этого модуля, а также весь исходный код, снабженный детальными комментариями о подробностях реализации. Структуры данных Одним из важнейших средств обеспечения эффективности реализации является представление символов не в виде строк, а в виде целых чисел. Поскольку все ин- терфейсы работают со строками (это обеспечивает интуитивность на этапе инициа- лизации), нужно создать внутренний механизм, выполняющий преобразование строк в соответствующие целочисленные символы. Когда это будет сделано, рабочую память можно представить в виде простого мас- сива, напрямую индексируемого целочисленными символами. Это позволит ассоции- ровать по целочисленному индексу эффекторы и сенсоры, хранящиеся в двух контей- нерах, с соответствующими внешними функциями, передаваемыми через интерфейс. Интерпретатар Как вы уже знаете, основной цикл интерпретатора разбит на три основных этапа. На первом этапе функция CheckSensors () выполняет вызов внешних функций для установки соответствующих символов. Выполнение этого вызова до перехода к этапу проверки соответствия гарантирует нам, что функция будет вызвана только один раз. Тем не менее мы можем, в принципе, пожертвовать небольшим объемом памяти и применить механизм предварительной оценки (например, проверяя бит gathered). В таком случае внешние функции будут проверяться при выборке правил только в том случае, если значение соответствующего символа не обновлено. Затем вызывается функция ApplyRules (), которая сканирует все правила в том порядке, в котором они были заданы. При этом последовательно проверяется вы- полнение условий, содержащихся в заголовке каждого правила. Если одно из усло- вий не выполняется, проверка прерывается и осуществляется переход к проверке следующего правила. Если все условия выполняются, символам назначаются значе- ния, заданные по умолчанию. Только после этого выполняется тело правила для пе- рекрытия значений, назначенных по умолчанию, а также для установки значений других символов. Если не будет найдено ни одно правило, применяются значения символов, заданные по умолчанию.
Глава 12. Синтез перемещений в системах, основанных на правилах 197 Наконец вызывается функция CheckEf fectors (), которая сканирует лишь символы эффекторов в рабочей памяти и, если находит символы, которые имеют значение true, вызывает соответствующие внешние функции. Поскольку мы ис- пользуем RBS-систему для управления, проверка эффекторов на каждой итерации является более приемлемым решением, чем при выполнении соответствующего правила, поскольку это позволяет снизить количество требуемых правил. Тестирование Теперь, когда у нас есть эталонный пример требуемого поведения, описанного в технических требованиях, разработана архитектура модуля и подготовлен техниче- ский проект, определен интерфейс с окружающей средой и имеется техническое за- дание, для реализации модуля в программном коде и его тестирования осталось сде- лать совсем немного! Процесс тестирования по определению носит итерационный характер. Самое главное — получить программный код, работающий надежно (т.е. без “зависаний” и исключительных ситуаций), и подключить его к основному программному коду игры. Если впоследствии при тестировании выяснится, что система не очень удачно справляется с той или иной ситуацией (визуально или с помощью инструментов от- ладки), проблему можно будет устранить на последующих итерациях. Рабочая память Самое первое, с чего нужно начать, — это выяснение того, какие символы со- держатся в рабочей памяти. Например, отметив, что следование вдоль стены всегда будет выполняться только с одной стороны (т.е. анимат будет следовать либо вдоль левой, либо вдоль правой стены, но никогда — вдоль обеих одновременно), мы тем самым снижаем количество требуемых символов. Первый символ, который мы должны определить, показывает, следует ли анимат в текущий момент вдоль стены (табл. 12.1). При инициализации он имеет значение false, но по умолчанию ему присвоено значение true, поскольку мы хотим быть оптимистами (в конце концов, мы же моделируем следование вдоль стены, а не пе- ремещение по открытому пространству). Таблица 12.1. Перечень символов, используемых для моделирования поведения, проявляющегося в следовании вдоль стены Символ Значение, назначенное по умолчанию Значение, назначенное при инициализации sideWall Определяется сенсором — frontwall Определяется сенсором — following true false moveForwards true — turnAway false — turnTowards false —
198 Часть II. Управление перемещениями Кроме того, нам нужны два символа для получения информации о наличии пре- пятствий: один — для препятствия спереди и второй — для препятствия сбоку. Символы, устанавливаемые по показаниям сенсоров, не нуждаются в значениях, на- значаемых по умолчанию, поскольку они постоянно обновляются. Иными словами, значения, задаваемые по умолчанию, нужны для упрощения выполнения операций, но не обеспечения работы сенсоров. Кроме того, нам нужны три символа для пред- ставления операций: один — для поворота в сторону стены, один — для разворота от стены и, конечно, еще один — для движения вперед. Фактически, именно это и происходит по умолчанию! База правил Определение правил RBS-системы сводится к представлению ситуаций, рас- смотренных в эталонном примере, в качестве правил. База правил, используемая системой, хранится в формате XML, поскольку пря- мое и обратное преобразование правил из внутренней формы в код XML является весьма несложным. До тех пор, пока анимат не найдет стену, он продолжает поиск с помощью при- меняемого по умолчанию движения вперед, установив значение символа, обозна- чающего следование, равным false. При обнаружении передней стены анимат по- ворачивает в сторону и переопределяет заданное по умолчанию движение вперед, чтобы осуществить замедление. Если боковая стена отсутствует, анимат останавли- вается и поворачивается в сторону первоначального местонахождения стены. В этом состоит четвертое неявно заданное правило, которое управляет движением вперед во всех остальных случаях (применяемое по умолчанию). Соответствующие конструкции приведены в листинге 12.3 (при создании после- дующих правил считается, что условия предыдущих не выполняются). Листинг 12.3. Правила, применяемые к рабочей памяти, для моделирования следования вдоль стены IF NOT following AND NOT frontwall AND NOT sideWall THEN following = false IF frontwall THEN' turnAway = true AND moveForwards = false IF NOT sideWall THEN turnTowards = true AND moveForwards = false Из этих описаний легко понять, насколько важно использовать символы, значе- ния которых устанавливаются по умолчанию. Без них база правил была бы гораздо сложнее: во-первых, нужно было бы добавить четвертое правило; во-вторых, в теле каждого правила нужно было бы устанавливать неиспользуемые эффекторы равны- ми false; в-третьих, во всех правилах, кроме первого, нужно было бы устанавли- вать значение символа following равным true. Приоритетность правил позволяет сначала обработать поведение “поиск стены”, поэтому поведение “следование вдоль стены” (правила 2 и 3) моделируется исходя из того, что стена найдена. Кроме того, использование нескольких операций в теле правил позволяет избавиться от необходимости дублирования правил.
^alatlaits^k Глава 12. Синтез перемещений в системах, основанных на правилах 199 Сенсоры и эффекторы Сенсоры и эффекторы, используемые при моделировании следования вдоль стены, очень похожи на сенсоры и эффекторы, которые применяются для моделирования огибания препятствий. Все они в программном коде представляются в виде методов класса Brain и передаются в RBS-систему в качестве указателей на функции (вместе с указателем на экземпляр класса). Это означает, что мы можем получать доступ к пе- ременным экземпляра класса Brain с помощью механизма обратного вызова. Сенсоры “прощупывают” окружающую среду впереди (угол 0°) и сбоку (угол 45°) на расстоянии нескольких шагов анимата. Если в заданных пределах они обнаружива- ют препятствие, возвращается значение true, в противном случае — значение false. Эффекторы изначально были реализованы в виде прямых вызовов функций ин- терфейса Move () и Turn (). Однако это приводило к тому, что движения были “рваными”, поэтому впоследствии мы заменили их на вызовы операций RBS- системы, которые давали более сглаженные значения (скользящее среднее — иде- альное решение). На поворотах это не так заметно, а вот для движения вперед это очень важно. Оценка Первое, что нужно отметить, — это то, что полученное решение не позволяет пере- мещаться анимату так же хорошо, как это делают люди. Такой эффект объясняется тем, что правила предписывают ему замедляться возле углов, чтобы не “проскочить” очередной угол и не потерять ориентацию. Конечно, если бы у человека были сенсоры, работающие с такой же эффективностью, как у нашего анимата, то и человек вел бы себя примерно так же. Иными словами, если мы увеличим расстояние, на которое анимат может “прощупывать” окружающую среду сенсорами, мы тем самым позволим ему лучше выявлять стены (правда, за это придется расплачиваться увеличением на- кладных расходов на выполнение дополнительных расчетов). Тем не менее иногда (очень редко) анимат все-таки теряет из виду стену, вдоль которой он следовал. Когда это происходит, анимат начинается крутиться на месте, безуспешно пытаясь найти стену, которая находится в паре шагов от него! Конечно, это весьма неприятный сбой, поскольку он начисто разрушает какой бы то ни было реализм моделирования. Для решения этой проблемы можно использовать счетчик, который сбрасывается каждый раз, когда анимат начинает движение вперед. Как только анимат начинает поворачиваться на месте, счетчик начинает отсчитывать ко- личество разворотов. В этом случае нам остается лишь задать предельное количество разворотов, по достижении которого мы будем считать, что анимат потерял ориен- тацию в пространстве. Для устранения проблемы мы переустанавливаем символ following в рабочей памяти для повторного поиска стены в направлении перед аниматом. Правильно выбрав предельное значение счетчика, можно прекратить бесцельное вращение на месте после того, например, как угол разворота превысит 180°. Это легко объяснить — если бот “проскочил” мимо поворота стены влево или вправо, то, развернувшись в противоположном направлении, он, скорее всего, бы- стро найдет стену после нескольких шагов.
200 Часть II. Управление перемещениями Сенсоры в FEAR реализованы таким образом, что они способны выявлять препят- ствия и склоны. Однако при этом в некоторых случаях (например, у подножия лест- ничных маршей) у сенсоров возникают “мертвые зоны”, которые не распознаются ни как препятствие, ни как склон (это не ошибка, а особенность реализации). В таких си- туациях анимат может потерять ориентацию, поскольку склон не очень высок, а стена слишком низка. В таких точках очень вероятно возникновение бесцельного вращения, однако описанная выше стратегия позволяет практически безболезненно отправить анимат в обратном направлении. Кроме того, нужна некоторая подстройка для получения равномерных переме- щений. Для этого RBS-система должна повторять свои вычисления относительно часто; используемое по умолчанию значение интервала 0,1 секунды позволяет полу- чить достаточно хороший результат. Однако по-настоящему качественные движения удается получить лишь с применением метода скользящего среднего при перемеще- ниях вперед. Кроме того, применение скользящего среднего позволяет снизить час- тоту обновления. Практический пример Анимат, демонстрирующий применение на практике изложенных в этой главе идей, называется Stalker. На Web-узле книги он представлен в виде выполняемого и исходного кода. Работа Stalker ос- новывается на нескольких простых правилах, управляемых интерпретатором RBS-системы, которая заставляет его двигаться вдоль стен. Кроме того, анимат может в случае потери ориентации само- стоятельно находить стены, избегая бесцельного вращения на месте. Резюме Использование RBS-решений для моделирования рефлексивного поведения на основе правил, вне всякого сомнения, обладает рядом преимуществ. Во всяком слу- чае полученная модель, которая позволяет анимату двигаться вдоль стены, в конце концов выглядит достаточно эффективной и реалистичной. Однако давайте подума- ем над тем, какую цену за это нам пришлось заплатить? Если сравнивать трудозатраты, необходимые для разработки RBS-модуля, и тру- дозатраты, которые необходимы, например, для написания сценария, моделирую- щего поведение, проявляющееся в изменении направления движения, то сравнение будет не в пользу RBS-решения. С другой стороны, RBS-система все же обладает оп- ределенными преимуществами перед решениями, основанными на сценариях. > В принципе, RBS-система позволяет получить более высокую производитель- ность, чем при использовании сценариев. Однако в данном случае это не со- всем так, поскольку в рассмотренном примере сенсоры автоматически прове- ряются RBS-системой на каждом цикле. > Требования к объему памяти у RBS-решений несколько ниже, чем у решений, основанных на сценариях. > Концептуально правила проще, чем сценарии, однако следует заметить, что правила следует записывать в формате, понятном модулю (XML).
Глава 12. Синтез перемещений в системах, основанных на правилах 201 Если сравнивать RBS-решение с непосредственным кодированием на универ- сальном языке программирования, то здесь также имеются как преимущества, так и недостатки. > Реализация в программном коде позволяет получить гораздо более высокую производительность, чем при реализации в виде декларативных правил. > Программист имеет больший контроль над системой с помощью языковых средств C++, поэтому систему можно оптимизировать и лучше подстроить к конкретной проблеме. > Существенным преимуществом RBS-системы является отделение обрабаты- ваемых ею знаний от реализации системы. К преимуществам рассмотренного решения можно также отнести и то, что мы на примере созданного модуля рассмотрели производственный цикл создания системы ИИ. При этом вы на практике ознакомились с некоторыми положениями теории ИИ. > RBS-системы больше подходят для высокоуровневого управления (принятие решений), чем для моделирования моторики. > При использовании RBS-систем для имитации требуется потратить, мягко го- воря, несколько больше усилий, чем при решении проблем! Это объясняется тем, что для приведения рабочей памяти в правильное состояние нужно исполь- зовать больше операций (или значений, устанавливаемых по умолчанию). > Многие из преимуществ RBS-решений нивелируются в том случае, если они применяются для имитации. Правила могут быть модульными, однако они получаются настолько взаимозависимыми, что при их добавлении или удале- нии реалистичность может значительно пострадать! > Для получения изящных решений проблем необходимо применять специаль- ные расширения RBS-систем. Хотя следование вдоль стен не относится к кругу задач, при решении которых RBS-системы могут показать все свои преимущества, все же мы получили вполне приемлемое и надежно работающее решение. При этом следует заметить, что это решение не стоило нам сколько-нибудь значительных усилий (что лучше всего дока- зывает, насколько гибкими являются RBS-системы). Для закрепления полученных знаний мы еще раз прибегнем к RBS-системе в последующих главах, но уже на более высоком уровне управления. Этот позволит вам еще раз убедиться в том, насколько широки возможности этой технологии моделирования ИИ при ее применении в ка- честве механизма решения проблем.

^lalattaus,^ Часть II Заключение В этой части мы создали аниматы, которые обладают способностью совершать реа- листичные перемещения — огибать препятствия и следовать вдоль стены. В обоих случаях для решения проблемы мы использовали методы, основанные на реакциях. При этом в каждой ситуации проявлялись те или иные преимущества этих методов. Таким образом, теперь мы можем приступить к моделированию более сложных ти- пов поведения. Краткие итоги части Поскольку общая картина вам теперь более ясна, самое время остановиться и поговорить о том, какие знания и навыки вы получили в части II. Перемещения Моделирование перемещений анимата — это относительно простая задача, посколь- ку для ее решения не нужно обладать глобальными знаниями о всей площадке. Именно поэтому моделирование, основанное на реакциях, позволяет обеспечить не столь целе- направленное перемещение, как моделирование, основанное на планировании. Тем не менее с помощью некоторых уловок нам удалось повысить реалистичность поведения несобственных персонажей, управление которых основано на реакциях. Следует отметить, что этот уровень реалистичности во многих случаях оказывает- ся вполне приемлемым, поскольку подавляющее большинство персонажей, управ- ляемых системой ИИ, не выполняют перемещений на большие расстояния, особен- но в играх, рассчитанных на одного игрока. Эффективность, надежность и реа- лизм — вот основные преимущества рефлексивного подхода. Конечно, иллюзия ра- зумного поведения при использовании столь простых методов моделирования может разрушаться в тех случаях, когда несобственные персонажи на глазах у игрока начинают совершать неожиданные маневры (например, застревают в дверях). Именно поэтому следует изначально исходить из того, что такие ситуации возмож- ны, и применять соответствующие методы для их устранения (например, преду- смотрев механизм, препятствующий бесцельному вращению на месте, которое мо- жет возникнуть при следовании вдоль стены).
Методы Методы моделирования поведения, проявляющегося в изменении направления движения (steering behavior), примечательны, прежде всего, своей простотой. После предварительной подготовки эти методы можно реализовать за несколько минут. Од- нако у них есть и некоторые недостатки: во-первых, при их использовании на этапе тестирования необходимо выполнять тонкую настройку параметров, а во-вторых, они не очень хорошо подходят д ля моделирования более сложных типов поведения. Поэтому в тех случаях, когда нужно решать более серьезные проблемы, следует обра- тить внимание на системы, основанные на правилах (rule-based systems — RBS). RBS- системы позволяют применить гибкий и модульный подход, не требуя при этом больших расходов на разработку. Тем не менее они также обладают некоторыми недостатками, главный из которых — это проблема накопления знаний. Кроме того, RBS-системы не очень хорошо подходят для низкоуровневого управления, поскольку получить плавное изменение выхода при использовании нескольких правил очень сложно. Что дальше В том, что RBS-системы могут быть очень полезными при создании системы ИИ, вы еще раз убедитесь при выполнении упражнения (дополнительная информация приведе- на на Web-узле этой книги по адресу http: / /AiGameDev. com). Тем не менее они, как сказано выше, не лишены недостатков. Поэтому в играх часто используются альтерна- тивные подходы, самыми экстравагантными из которых являются методы, основанные на теории нейронных сетей (neural network). Следует заметить, что хотя нейронные сети с успехом справляются с проблемами RBS-систем, все же они не обладают теми пре- имуществами, которые характерны для RBS-систем (в первую очередь — простотой). В части III мы рассмотрим два наиболее популярных типа нейронных сетей. В следующей части мы расширим перечень моделируемых типов поведения ани- матов. Если говорить конкретнее, займемся обучением аниматов стрельбе по дви- жущимся целям. На примере этой задачи мы рассмотрим проблему моделирования обучения несобственных персонажей.
^alattaus^k Часть III Моделирование стрельбы В этой части рассмотрим вопросы обучения аниматов стрельбе — жизненно необхо- димый навык для любого бота из игры в жанре экшн. Задачу моделирования соот- ветствующего поведения можно разделить на две подзадачи, а затем решать их неза- висимо одна от другой с целью упрощения. Комбинация методов моделирования физических законов и технологии нейронных сетей позволяет достигнуть идеаль- ного баланса между эффективностью и реализмом. Но, как нетрудно догадаться, это будет сколь интересная, столь и непростая задача. Мотивация Получив приемлемое решение для моделирования перемещений, можно перейти к следующему этапу моделирования бота-дуэлянта, который состоит в обучении его владению оружием. В современных играх несобственные персонажи могут орудовать очень широким спектром наступательных вооружений, начиная от сравнительно медленных ракетниц и заканчивая молниеносно срабатывающими установками залпового огня. Мы уже говорили в части I о том, что после перемещения вперед и в сторону са- мым примитивным навыком аниматов являются повороты. Мы уже научились по- ворачивать аниматы при перемещениях, однако пока не уделяли особого внимания точности поворотов и разворотов. Однако при стрельбе умение разворачиваться строго в заданном направлении является очень важным навыком. Учитывая также, что для управления оружием нужно, помимо поворота, выполнять другие простые операции, легко догадаться, насколько интересна задача моделирования управления стрельбой с помощью системы ИИ. Проблему моделирования поведенческих реакций, проявляющихся во время стрельбы, можно разделить на несколько направлений: упреждение, предсказание, выбор цели, прицеливание и ведение огня. Поэтому, в отличие от примеров, рас- смотренных в предыдущей части, для моделирования стрельбы требуется более од- ной функции. На примере моделирования этого поведения вы узнаете о том, как проектировать системы ИИ с простой архитектурой с использованием одноуровне- вой декомпозиции.
Краткое содержание части В главах этой части содержится описание производственного цикла по созданию модели стрельбы. Кроме того, среди чисто практических глав имеется две главы, по- священные изложению соответствующих теоретических основ. Глава 13, “Боевая обстановка”. В этой главе содержится анализ платформы, для которой будет создаваться система ИИ, а также описание игровой машины и окру- жающей среды. Особое внимание будет уделено тому, как факторы среды и свойства движка влияют на процесс стрельбы. Глава 14, “Навыки стрельбы игрока”. Выполняется анализ процесса стрельбы на примере собственных персонажей (т.е. персонажей, управляемых людьми) и разра- ботка технических требований для моделирования системы ИИ. Мы обсудим, какой информацией должен обладать игрок (и, соответственно, система ИИ) для ведения стрельбы, а также рассмотрим критерии, по которым можно судить о ее исходе. Глава 15, “Формальное представление процесса стрельбы”. Разрабатывается эс- кизный проект интерфейсов системы ИИ, управляющей стрельбой, с игровым ми- ром. Эти интерфейсы позволят аниматам взаимодействовать с окружающей средой в терминах сенсоров и эффекторов. Глава 16, “Физические основы прогнозирования движения”. Система стрельбы, умеющая предсказывать положение движущейся цели, реализуется в первом при- ближении. При этом демонстрируется как чисто математическое решение, так и ре- шение, основанное на имитации физических процессов. Глава 17, “Персептроны”. Здесь мы сделаем небольшой теоретический экскурс и ознакомимся с персептронами — одним из простейших типов нейронных сетей. В частности, мы поговорим о том, как использовать основанные на теории нейрон- ных сетей алгоритмы для решения проблем стрельбы. Глава 18, “Устранение ошибок прицеливания”. В этой главе рассмотрен практиче- ский пример применения персептронов для решения проблемы прицеливания. Вы узнаете, как с помощью нейронных сетей организовать обучение анимата беглой стрельбе с компенсацией ошибок, что позволит одновременно обеспечить и эффек- тивность, и реализм. Глава 19, “Многослойные персептроны”. Эта глава продолжает прерванное пре- дыдущей главой изложение некоторых основ теории нейронных сетей. В частности, в ней будут рассмотрены многослойные персептроны, которые представляют собой обобщение обычного, т.е. однослойного персептрона. Применяя многослойный персептрон, мы сможем значительно улучшить модель, что позволит ей решать про- извольные сложные проблемы, возникающие при стрельбе. Глава 20, “Выбор цели”. В этой главе вы научитесь использовать многослойные персептроны для выбора цели. Нейронные сети будут использованы для обучения оценке уровня повреждения, которое наносят ракеты. На основе этой информации система ИИ сможет выбирать наиболее уязвимые точки противника. Глава 21, “Приобретение знаний о задаче”. В завершении мы немного поговорим о столь важном навыке, как анализ и декомпозиция проблемы. Изложенные в этой главе концепции позволят вам избежать затруднений на этапе разработки и тестиро- вания программного кода.
^atattaus,^. Предположения Конечно же, все предположения, которые были сформулированы для части II, остаются в силе. В частности, для моделирования системы ИИ нам по-прежнему нужны игровая машина и производственная программная среда. Однако для моде- лирования поведенческих реакций, проявляющихся во время стрельбы, нам нужны дополнительные соглашения. > Обеспечение поддержки оружия в игре, включая различные варианты окру- жающей среды с различными видами вооружений и боеприпасов. > Возможность повторного появления (респаунинга) ботов в игре независимо от того, что они делают! При моделировании перемещений эта возможность бы- ла некритичной, поскольку боты, мирно перемещаясь по площадке, практи- чески не могли попасть в неприятности. Однако как только на площадке за- гремят выстрелы, нам нужно будет приготовиться к худшему. > Возможность независимого перемещения ботов по площадке без помощи из- вне. Если перечисленные условия выполняются, этого более чем достаточно, чтобы приступить к работе, — все остальное вы создадите сами по ходу изучения материа- ла этой части! Как всегда, не забывайте, что на Web-узле этой книги по адресу ht tp: / / AiGameDev. com вы найдете все необходимые исходные тексты и примеры аниматов.

^aiaUaus,^ Глава 13 Боевая обстановка В ЭТОЙ ГЛАВЕ, • Оружие к бою! • Требования к оружию • Условия окружающей среды • Выбор полигона • Резюме При проектировании аниматов, которым при- дется принимать участие в боевых действиях, очень важно проанализировать задачу в целом. Более того— чрезвычайно важно, чтобы разра- ботчик системы ИИ был хорошо знаком, как ми- нимум, с эскизным проектом и архитектурой всей игры в целом, а также четко представлял, как должны взаимодействовать ее компоненты с сис- темой ИИ. Независимо от того, насколько грандиозно сражение, каждый бой идет на уровне отдельных персонажей. В этой главе приведено неформаль- ное описание концепции боевых действий на ин- дивидуальном уровне, целью которых является нанесение наиболее возможного ущерба против- нику. Идеи, которые будут положены в основу проекта системы ИИ, формулируются на основе тех проблем, с которыми сталкивались и сталки- ваются солдаты всех времен и народов. Затем мы посмотрим, как найденный подход увязать с со- временными компьютерными играми с целью мо- делирования соответствуй щих операций. В этой главе рассмотрены следующие темы. > Виды оружия, используемого при боевых действиях. > Анализ навыков, необходимых для владе- ния различными видами оружия, и выде- ление навыков, которые будут интересо- вать нас на протяжении этой части, — умение вести прицельную стрельбу. > Роль окружающей среды в проведении ин- дивидуальных поединков. > Проект натурного макета, на котором мы можем тренировать и оценивать аниматы в поединках “один на один”.
210 Часть III. Моделирование стрельбы Поскольку вы, как и автор, скорее всего, заядлые игроки, особо пояснять вам принципы ведения боевых действий в компьютерных играх не нужно. Однако как разработчик вы должны понимать, как влияют замысел игры и ее архитектура на реализацию системы ИИ. Оружие к бою! Все оружие можно разделить на две большие группы: оружие рукопашного боя, или контактное оружие, и стрелковое, или метательное, оружие. Обычно конкрет- ный образец оружия предназначается либо только для ведения рукопашного боя, либо для поражения противника на расстоянии. Тем не менее существуют образцы оружия, которые можно применять в обоих случаях (например, копье или винтовка со штыком). Ну и конечно, в конкретной боевой ситуации вполне возможно приме- нение оружия не по его прямому назначению (например, метание ножа или исполь- зование винтовки в качестве дубинки), хотя при этом эффективность оружия значи- тельно снижается. В этой главе мы будем обсуждать не навыки, необходимые персонажу для приме- нения оружия, а физические требования, предъявляемые к образцам оружия обоих типов при их применении. Тем самым мы сформулируем предварительный перечень требований, выдвигаемых к системе ИИ для успешного применения соответствую- щих образцов оружия. В этой главе мы обсудим существующие компьютерные игры и рассмотрим, как в них моделируются такие объекты, как образцы оружия. При этом мы постараемся выделить несколько уровней моделирования оружия, в том числе концептуальный и физический. Оружие рукопашного боя Оружие рукопашного боя (melee weapon), такое как боевые топоры и мечи, позво- ляет применять его многократно, практически без каких-либо ограничений. Заме- тим, что в исторической перспективе это оружие явилось логическим продолжением камней и палок, которые использовались древними людьми для выяснения отноше- ний. Основной аспект применения такого оружия заключается в необходимости фи- зического контакта, чтобы воздействие оружия на цель приводило к возникновению ущерба для последней. Однако система ИИ должна учитывать не только расстояние до цели, но и все остальные факторы, которые влияют на интенсивность боевого столкновения (скорость, момент инерции, давление и т.п.). Компьютерные игры справляются с такой сложной задачей, как моделирование боевых столкновений, достаточно неплохо, хотя часто низкоуровневые детали управления конечностями упрощаются с целью облегчения задачи управления пер- сонажами. Это, в свою очередь, означает, что игрок не может манипулировать ору- жием совершенно свободно. Вместо этого ему предоставляется набор различных ударов, связанных с теми или иными командами: так, во многих приключенческих играх от первого лица при щелчке мышью противнику наносится колющий удар, а при ее перемещении — рубящий (например, в Jedi Knight 2 и Die by the Sword). Аль- тернативный метод управления оружием состоит в нажатии комбинаций клавиш,
Глава 13. Боевая обстановка 211 как это сделано в некоторых популярных играх (например, Soul Blade и Caliber). Эти проверенные временем решения по проектированию пользовательского интерфейса с успехом можно использовать д ля создания интерфейса между системой ИИ и иг- ровым миром. Следует заметить, что подобные игры требуют хорошо проработанных моделей оружия, поскольку на них очень сильно завязана игровая обстановка. С другой сторо- ны, контактное оружие в играх от первого лица часто применяется в безнадежных си- туациях рукопашного боя, за которым очень часто следует гибель персонажа. По- скольку сложные комбинации клавиш в таких играх задействуются относительно ред- ко, управление оружием в рукопашном бою, как правило, сводится к “долблению” клавиши нанесения ударов по принципу “кто первый”. Но не только приемы владения оружием, но и само оружие в играх часто упроща- ется, в результате чего полная физическая имитация применения оружия встречает- ся в играх крайне редко. Как правило, моделирование применения оружия руко- пашного боя сводится к анимации движений оружием. Методы обнаружения столк- новения оружия с целью при этом остаются довольно грубыми в целях обеспечения эффективности и простоты программного кода. В некоторых играх факт столкнове- ния представляется обычной булевой переменной, которая задействуется в следую- щем алгоритме: если оружие столкнулось с габаритным параллелепипедом, окру- жающим персонаж, следует уменьшить степень жизнеспособности последнего. По- добные упрощенные модели, несмотря на их условность и примитивизм, не выдви- гают больших требований к системе ИИ, что, в свою очередь, снижает сложность задачи моделирования соответствующего поведения. Метательное оружие Несмотря на прогресс цивилизации, камни и палки во многих уголках Земли (а также в компьютерных играх) по-прежнему часто используются в качестве метательного ору- жия. Тем не менее, человечество достигло невероятного прогресса в использовании в ка- честве метательного оружия самых смертоносных средств чудовищно разрушительной силы. Поэтому на траекторию полета метательных снарядов основное влияние оказыва- ют их свойства (материал, форма, наличие взрывного заряда и тому подобное), а также способ их метания. Отсюда вытекает основная концепция моделирования стрелкового оружия: воздействие на цель определяется тем, как объект летит в воздухе. В принципе, все, что должна сделать компьютерная модель метательного ору- жия, — это корректно имитировать траекторию полета снаряда. При проверке цели достаточно выяснить значение простой булевой переменной, которая приобретает значение true в том случае, когда цель оказывается на траектории. Заметим, что в по- следнее время все большую популярность приобретают игры, в которых используются модели ранений различной степени тяжести (т.е. определяется факт повреждения от- дельных конечностей). В частности, к таким играм относятся Soldier of Fortune и др. В таком случае система ИИ должна соответствующим образом отслеживать подобные ранения с целью обеспечения реалистичности. Даже самые простые модели метательного оружия (линейный полет без учета гра- витации) показывают достаточно неплохие результаты. Однако нет ничего сложного в том, чтобы разработать такие алгоритмы управления несобственными персонажами, которые бы учитывали баллистические свойства траектории полета метательных сна-
212 Часть III. Моделирование стрельбы рядов. Параметры, определяющие баллистические траектории (например, точное!* или начальная скорость снаряда), можно настроить на этапе тестирования уровней. В результате метательное оружие позволяет получить более интересную игровую об- становку, чем оружие рукопашного боя. Процесс прицеливания с дальней листании* представляет собой как сложную, так и интересную задачу, причем не только с точки зрения игрока, но и с точки зрения разработчика системы ИИ. Кстати, коль речь зашла о процессах прицеливания и ведения огня, следует заметить» что их имитация также может выполняться с различной степенью реалистичности. В за- висимости от используемого вида оружия, игрок может попадать в ситуации, например, когда оружие дрожит в руках или когда угол обстрела ограничен. Время, в течение кото- рого выполняется метание снаряда, также может влиять на дальность и точность броска (например, бутылок с зажигательной смесью или гранат). Наконец, можно заставить иг- рока выполнять перезарядку оружия вручную, а не автоматически. Комбинация подоб- ных свойств, с одной стороны, может существенно усилить эффект погружения в игру, а с другой, — не менее существенно усложнить обучение игрока. Разработчики разных игр к этой проблеме подходят по-разному, поэтому, когда речь идет о системе ИИ, следу- ет учитывать, что общий проект игры может накладывать на систему ИИ, управляющую оружием, те или иные ограничения. Требования к оружию В современных играх от первого лица используются самые разные типы оружия. Такое разнообразие увеличивает интерес игрока, поскольку позволяет ему выполнить одно и то же задание с использованием различных типов оружия. Различные образцы оружия требуют от персонажа проявления различных навыков, независимо от того, управляется ли он человеком или системой ИИ. Конечно, контактное оружие требует проявления умений перемещаться для того, чтобы войти в боевой контакт с противни- ком, однако при этом не менее высокие требования выдвигаются к умению осуществ- лять прямое управление оружием с целью нанесения противнику ущерба. С другой стороны, метательное оружие требует от персонажа умения вести прицельный огонь на большом расстоянии, причем часто — по движущейся и маневрирующей цели. Однако разные образцы оружия, относящегося к одной категории, также могут тре- бовать от персонажа проявления различных навыков, поэтому нередко случается так, что каждый отдельный образец оружия управляется системой ИИ по-своему. Например, об- разец метательного оружия, снаряды которого перемещаются с очень большой скоро- стью, применяется совсем не так, как другой образец метательного оружия, снаряды ко- торого летят к цели относительно медленно. Кроме того, различные методы ведения огня также требуют проявления различных навыков. Общим знаменателем для всех этих на- выков является сущность боя: умение наносить повреждение противнику ведением огня. Этот основной навык можно смоделировать в виде компонента системы ИИ, а затем на его основании получить модели более сложных навыков. Другие тактические решения, такие как выбор оружия (рассматривается в части IV) и стратегии боя (часть VII), предназначены только для того, чтобы обеспечить макси- мальную эффективность применения оружия, и основываются на поведении, прояв- ляющемся в умении вести прицельную стрельбу.
Глава 13. Боевая обстановка 213 Условия окружающей среды Следует заметить, что уровень владения тем или иным образцом оружия, — это только часть необходимых условий для успешного ведения боя. При столкновении с противником в зоне ведения огня значительное влияние на исход боя оказывают усло- вия окружающей среды. Среда может ограничивать тем или иным способом не только перемещения персонажа, но также возможность применения оружия (например, соз- давая поражение персонажа ударной волной после взрыва). Оба участника боевого столкновения должны учитывать условия окружающей среды. Однако одни и те же ее особенности по-разному влияют на атакующего и обороняющегося. > Обороняющийся персонаж может использовать рельеф окружающей среды в ка- честве временного убежища или прикрытия для отхода. Однако в общем случае обороняющийся персонаж не имеет права на ошибку. Поэтому успешность ре- шения его задач в значительной степени зависит от особенностей площадки. Если он примет неверное решение, окружающая среда может превратиться из его союзника в противника. > Атакующий персонаж находится в более выгодном положении по сравнению с обо- роняющимся, в том смысле что он может загнать последнего в ловушку или тупик, образованный особенностями рел’-ефа окружающей среды. Кроме того, атакующий персонаж, не находясь с обороняющимся на прямой видимости, может использо- вать такие явления, как рикошет и ударная волна от стен, возле которых скрывается обороняющийся персонаж. Наконец, атакующий персонаж, действуя в группе, мо- жет просто связать огнем действия обороняющегося персонажа, например, загнав его в тупик. Самое интересное, что во время игры персонажи редко выступают исключитель- но в той или иной роли. Поскольку в большинстве случаев огонь с обеих сторон ве- дется одновременно, каждый персонаж во время боевого столкновения должен вес- ти себя и как атакующий, и как обороняющийся. Но в любом боевом столкновении, как правило, одна сторона обладает тем или иным преимуществом, поэтому приве- денные выше описания все же можно применить к ним в целом. Особенно сложно выделить атакующую и обороняющуюся стороны при боевом столкновении на очень близких дистанциях, близких к дистанциям рукопашного боя. Огонь на таких дистанциях, с одной стороны, становится чрезвычайно эффек- тивным, а с другой, — очень опасным. Поэтому оба персонажа должны как можно внимательнее относиться к возможности рикошетов. Случайный выстрел в бли- жайшую стену может оказаться очень опасным и привести к бесславному заверше- нию почти выигранного поединка. В боевых столкновениях на близких дистанциях такие ситуации возникают довольно часто, поэтому система ИИ должна их отслежи- вать и всячески избегать.
214 Часть III. Моделирование стрельбы Выбор полигона Теперь, когда мы разобрали важнейшие аспекты боевого столкновения, такие как учет особенности оружия и условий окружающей среды, можем сформулировать тре- бования к натурному макету, на котором будет отрабатываться поведение модели управления огнем. Окружающая среда площадки должна представлять собой среду, которая близка к реальным компьютерным играм, поскольку умения и навыки, кото- рые будут вырабатываться и закрепляться на полигоне, должны быть такими, чтобы их можно было перенести в реальные игровые проекты. Поэтому если мы создадим по- лигон, подобный уровню реальной игры, вероятность успеха при обучении аниматов значительно возрастет. Мы будем моделировать боевые столкновения на средних дистанциях, сосредо- точив основное внимание на отработке навыков прицеливания, управления оружи- ем и принятии моментальных решений. Для этого нужно тщательно соблюсти сле- дующие требования к окружающей среде полигона. > Высокая частота появления целей. Для обучения ботов прицеливанию необхо- димо, чтобы мишени появлялись настолько часто, насколько это возможно — это позволит значительно ускорить процесс обучения. > Разнообразие оружия. Для того чтобы боты научились владеть различными об- разцами оружия, необходимо, чтобы все они более или менее равномерно бы- ли разбросаны по площадке полигона. > Наличие боеприпасов. Помимо разнообразия образцов оружия, необходимо, чтобы боеприпасы к ним находились на полигоне в изобилии и также были распределены по площадке равномерно. Кроме того, уделив внимание таким, казалось бы, незначительным деталям, вы тем самым улучшите процесс разработки и повысите скорость обучения компьютер- ных агентов. Кстати, исходя из последнего соображения, мы в нашем учебном при- мере будем использовать относительно небольшой полигон с достаточно разветв- ленными и разнообразными возможными маршрутами и изобилием оружия. Резюме Прежде всего, мы выработали некоторые исходные предположения, которые бу- дем применять д ля моделирования оружия в играх. > Для повышения эффективности контактного оружия необходимо обеспечить непосредственное соприкосновение с противником. > В большинстве игр имитация боевого применения контактного оружия вы- полняется без высокой степени детализации. > Управление контактным оружием, как правило, осуществляется на сравни- тельно высоком уровне, когда сложным движениям и ударам соответствует один щелчок мышью или нажатие одной клавиши.
ftataltautfiilk Глава 13. Боевая обстановка 215 > Свойства снаряда метательного оружия (например, начальная скорость и мас- са) влияют на траекторию его полета. > Применение метательного оружия смоделировать достаточно легко, но, тем не менее, соответствующие модели во многих играх все же нередко упрощают (иными словами, не учитывают влияние гравитации на траекторию полета снаряда). Также мы определили ограничения, которые могут налагаться на систему ИИ ар- хитектурой и общим замыслом игры. > Для владения различными видами оружия необходимы различные навыки. > Сущность боя сводится к умению применять оружие для нанесения ущерба противнику. > Окружающая среда очень сильно влияет на течение и исход боевого столкно- вения, ограничивая как возможности перемещения персонажей, так и воз- можности применения ими оружия. Наконец, мы выработали некоторые требования к натурному макету, на базе ко- торого будем испытывать систему ИИ. > Мы должны тестировать систему ИИ в игровой среде, близкой к игровой сре- де реальных игр, чтобы затем можно было перенести выработанные навыки в реальные игровые проекты (особенно это важно для навыков, которые обра- зуются путем обучения аниматов). > Полигон должен представлять все необходимое для создания насыщенной боевой обстановки (т.е. содержать множество различных типов оружия, бое- припасов и игроков). Теперь, после короткого введения, можем перейти к следующей главе, в которой речь пойдет о моделировании навыков, необходимых для манипуляции оружием и успешного применения его в боевых столкновениях. ПРАКТИЧЕСКИЙ ПРИМЕР________________________________________________________ Некоторые концепции, рассмотренные в этой главе, демонстрирует анимат Rampage. Хотя его исход- ный текст будет детально рассмотрен в последующих главах, уже сейчас вы можете найти на Web- узле инструкции о том, как вставить его выполняемый код в игру. (В последующих главах этой части процедура добавления анимата в игру не изменится.) Анимат Rampage не обладает особыми навыка- ми прицельной стрельбы, однако умеет вести беглый огонь из разных видов оружия. Это позволяет наглядно представить свойства различных снарядов и эффекты, создаваемые окружающей средой (например, во время взрывов).

^atalfaus^ Глава 14 Навыки стрельбы ИГРОКА В ЭТОЙ ГЛАВЕ- • Искусство боя • Игровые навыки • Критерии выбора условий стрельбы • Практический пример • Резюме В предыдущих главах рассматривались вопро- сы подготовки к сражению, включая выбор различных видов оружия и определение роли среды, а начиная с этой главы мы можем перей- ти к изучению задачи стрельбы. В этой главе бу- дут рассматриваться конкретные примеры, по- шоляющие проще разрабатывать средства ИИ, в частности, будет показано, как поведение иг- рока во время стрельбы складывается из отдель- ных способностей. В настоящей главе рассматриваются следую- щие темы. > Определение того, как люди выполняют эту агрессивную задачу и какие навыки для этого требуются. > Выяснение на основе этих знаний того, как игроки ведут стрельбу в компьютерных играх. > Предварительное выявление критериев оценки качества создаваемых аниматов по отношению к их поведению во время стрельбы. > Практические примеры различных сцена- риев, в которых должны действовать сред- ства ИИ. Информация, полученная на этом этапе ис- следования проблематики, позволит нам искус- ственно воспроизвести навыки стрельбы.
218 Часть III. Моделирование стрельбы Искусство боя Человек, способный успешно вести сражение, обладает многими навыками. В ча- стности, он способен осуществлять стратегическое планирование, имеет достаточный запас сил и обладает непосредственными навыками стрельбы. Очевидно, что каждая из этих характеристик оказывает важное влияние на все прочие, но для человека, уча- ствующего в борьбе, вопросы тактики часто имеют значительно меньший приоритет по сравнению с другими аспектами борьбы. Поэтому в настоящей главе мы, в основ- ном, сосредоточимся на боевых навыках, при этом вначале рассмотрим саму схватку, а затем перейдем к изучению проблем применения дальнобойного оружия. Ближний бой Для того чтобы успешно владеть мечом или топором, требуется ловкость и опре- деленная сила. Но еще более важно то, что о каком-либо боевом контакте нет даже смысла рассуждать, если цель не находится в пределах досягаемости, поэтому для ближнего боя требуются также определенные навыки передвижения. Для этого дос- таточно иметь простые двигательные способности, позволяющие приближаться к противникам и не отпускать их далеко от себя. К счастью, эти способности уже были описаны в предыдущей части. Навыки, необходимые для успешного владения оружием, приобретаются путем интенсивной подготовки, в результате чего они становятся почти инстинктивными способностями маневрировать в бою. Для успешного обучения требуется значитель- ную часть времени уделять контактной борьбе (например, поединкам на мечах), но обучению способствуют быстрая реакция и хорошие рефлексы. Крупномасштабное сражение Обучение позволяет также приобрести явное преимущество во владении дально- бойным оружием, несмотря на то что для этого требуются совсем иные навыки. В этом случае основными преимуществами становятся точный расчет и самообладание. Такие навыки приобретаются с помощью упражнений в стрельбе по мишеням, позволяющих научиться лучше прицеливаться, а также, возможно, с помощью других тренировоч- ных упражнений (если есть возможность их проведения), позволяющих получить больше опыта. Нелегко попасть даже в неподвижную цель, а стрельба по движущимся целям свя- зана с еще более значительными сложностями. Исключительно сложным может ока- заться даже решение о том, когда должен быть произведен выстрел, причем многое за- висит от скорости движения снаряда. Успешное решение задачи выбора момента для выстрела возможно, если поражающие элементы оружия (например, пули) достигают цели почти мгновенно, но при использовании более медленного дистанционного ору- жия (например, стрел или глубинных бомб) эта задача усложняется. Точная стрельба становится следствием владения многими навыками. Для этого не- обходимо предвидеть движения противника, разбираться в баллистике, правильно пред- сказывать траекторию снарядов, выбирать подходящую цель, прицеливаться в нужную точку и правильно определять момент для выстрела. Такой набор навыков схематически
ftatattausiiik Глава 14. Навыки стрельбы игрока 219 показан на рис. 14.1. Эти навыки, вместе взятые, позволяют определить, когда и где луч- ше всего произвести выстрел. Часть IV Глава 20 Рис. 14.1. Иерархия навыков, необходимых для успешного пораже- ния выстрелом движущегося противника с применением дистан- ционного оружия Игровые навыки В принципе, если игрок обладает развитыми навыками стрельбы в реальной жизни (например, успешно предсказывает движение противника и разбирается, в баллистике), то может реализовать эти навыки и в компьютерных играх, хотя и будет ощущать разницу в том, что теперь ему приходится манипулировать мышью (т.е. по- другому строить координацию движений руками и зрительного восприятия). Кроме того, обычно сама игровая обстановка значительно отличается от того, что происхо- дит в действительности. К тому же, в играх на выживание события развиваются на- много быстрее, чем в обычной обстановке, а в настоящей войне чрезвычайно редко возникают такие ситуации, когда приходится сражаться один на один. Навыки стрельбы связаны с осуществлением весьма специфичных действий. Это особенно касается тех навыков, которые рассматриваются в данной части (в качест- ве примеров можно указать поворот к цели и производство выстрела). Тем не менее основные тенденции в игре складываются именно из таких действий низкого уров- ня. (Например, в результате борьбы один из игроков может полностью овладеть си- туацией и приступить к преследованию другого.) В свою очередь от этих тенденций высокого уровня зависит сам способ применения оружия, при этом особенно изме- няются критерии выбора момента для производства выстрела. В настоящем разделе рассматриваются навыки низкого уровня и, кроме этого, об- суждается зависимость этих навыков от тенденций развития игры высокого уровня.
220 Часть III. Моделирование стрельбы Анализ основных факторов Для разработчиков задача проектирования архитектуры средств ИИ, применяе- мых для стрельбы, может стать проще благодаря пониманию того, какое сочетание способностей для этого используется (иными словами, какие структурные компо- ненты должны для этого применяться). Упреждение Предвидение движений противника — это одна из наиболее важных способно- стей, необходимых для успешной стрельбы по движущимся целям. Поражающие элементы оружия не могут перемещаться мгновенно, поэтому необходимо загляды- вать в будущее и оценивать предполагаемое местонахождение противника. Баллистика В некоторых случаях траектории снарядов становятся относительно сложными, особенно если приходится учитывать гравитацию. Даже в простых случаях необходимо правильно определить, в каком месте снаряд столкнется с земной поверхностью. Предсказание Если игрок обладает способностью прогнозировать траектории движения про- тивников и летящих в их сторону снарядов, то приобретает возможность объединить соответствующие прогнозы и предсказать исход развития ситуации. Д ля вычисления вероятности поражения необходимо учитывать параметры стрельбы, время полета и положение противника. Выбор цели Если игрок способен предсказывать будущее (пусть даже неточно), он получает возможность выбрать наиболее подходящее место для стрельбы. Обычно при этом он стремится максимизировать потенциальный ущерб. Прицеливание После выбора намеченной цели необходимо подготовить оружие к производству выстрела. При этом часто требуется выполнять это действие быстро и точно, чтобы поражающий элемент мог достичь желаемого места назначения. Стрельба Чаще всего описанные выше способности, из которых складываются навыки стрельбы, применяются непрерывно, чтобы можно было выбрать лучшую цель и на- править на нее оружие. Поэтому, направив оружие на цель, необходимо правильно выбрать момент, когда фактически следует нажать на спусковой механизм, чтобы причинить противнику наибольший ущерб.
^alalfaus^k Глава 14. Навыки стрельбы игрока 221 Ход сражения В играх, близких к реальной жизни (например, Rogue Spear и Hidden & Dangerous), один из участников непременно падает мертвым. Но проектировщики игр в других иг- ровых проектах, в которых стрельба ведется от первого лица, предпочитают избегать смертельных поражений, чтобы можно было продлевать поединки. В некоторых ком- 11 ьютерных играх бои ведутся достаточно долго, для того чтобы в игровом действии об- наружились определенные тенденции (в качестве примера можно назвать Quake 3 и Unreal Tournament). Анализ таких тенденций позволяет выявить две категории игро- ков (при этом снова приходится сталкиваться с ситуациями борьбы на выживание). > Шансы обороняющегося на выживание могут быть повышены благодаря применению ответного огня, что позволяет выиграть время для побега. Ответ- ный огонь не обязательно должен быть чрезвычайно точным, поскольку дос- таточно просто направить его так, чтобы вынудить нападающего на время ос- лабить свой натиск. Такой ответный огонь может также рассматриваться как заградительный огонь, который, прежде всего, должен быть быстрым. > С другой стороны, атакующие игроки имеют определенное преимущество, ко- торое позволяет им в большей степени разнообразить свои действия. Их основ- ная задача состоит в том, чтобы не ослаблять натиск! Для этого необходимо вес- ти стрельбу таким образом, чтобы максимально увеличить шансы поражения, либо прямого, либо косвенного. В этом отношении может оказать значительную помощь сама конфигурация среды; в благоприятных обстоятельствах могут быть правильно предсказаны движения игрока-противника, а также может быть определена возможность поражения осколками. Поэтому может оказаться, что к успеху приведет даже стрельба в пол или стену. Конечно, в играх люди обычно ведут себя по-разному, в зависимости от того, в какой ситуации они находятся. Поэтому и в данном случае обнаруживаются только приблизительные категории, которым полностью никто не соответствует. Тем не менее в ходе борьбы проявляются явно прослеживаемые шаблоны поведения. Критерии выбора условий стрельбы Человек, участвующий в схватке с применением настоящего стрелкового оружия, должен обладать многими разными качествами. Подобные требования, в основном, относятся также к участникам компьютерной игры и поэтому должны учитываться при разработке средств ИИ, как описано ниже. > Безопасность. Производство выстрела из оружия должно осуществляться та- ким образом, чтобы не возникло самоповреждение. Необходимо неизменно принимать все меры, чтобы избежать подобной ситуации. > Плавность. Во время корректировки положения оружия для стрельбы по цели отдельные этапы корректировки должны осуществляться по такому же прин- ципу, как и в действительности, с учетом наиболее вероятных действий, вы- полняемых людьми (таких, как упреждение). Такой подход резко отличается
222 Часть III. Моделирование стрельбы от прицеливания с помощью грубого механизма, когда ствол оружия движете! рывками. > Эффективность. Как правило, обнаруживается, что люди способны прицели- ваться очень точно, особенно пройдя обучение. При этом даже если человек промахивается, этому можно найти объяснение (допустим, если нужно было уделить больше времени выработке более точного предсказания). Приведенные выше критерии могут использоваться в качестве основы для оцен- ки способностей несобственных персонажей (NonPlayer Characters — NPC), созда- ваемых с помощью средств ИИ. Практический пример Средства ИИ должны позволять легко справляться с некоторыми ситуациями, а в других обстоятельствах могут потребоваться более развитые способности к стрельбе. Вначале примем такое предположение, что используется дальнобойное оружие с от- носительно медленно движущимися поражающими элементами (например, ракеты или бластеры). В таком случае приходится меньше беспокоиться о том, что средства ИИ являются слишком совершенными для того, чтобы с ними мог состязаться чело- век-игрок, поскольку стоящая перед ними задача является довольно сложной. Анализ каждого из этих сценариев, начиная с простейшего, позволяет сделать следующие выводы. > Средства ИИ должны предоставлять возможность попадать в неподвижные цели. > Если цели движутся с постоянной скоростью, то их движение должно быть предсказано и прервано путем поражения снарядами. > Если цели ускоряют, а затем замедляют свое движение, а также поворачива- ются в произвольных направлениях, чтобы избежать огневого поражения, они также должны быть подвержены удару, если их движение усредняется до по- стоянного вектора (рис. 14.2). Предсказанное столкновение Атакующий Прицеливание в пол Анимат Противник Противник (текущее положение) Рис. 14.2. Два сценария, в которых демонстрируются способности к предсказанию; на левом рисунке игрок запускает ракету для перехвата цели, а на правом замысел состоит в том, чтобы попасть в пол в том месте, в котором предвидится появление противника
Глава 14. Навыки стрельбы игрока 223 Ниже описаны ситуации, в которых можно допустить возможность применения снаряда, обеспечивающего поражение осколками. > Если бой происходит на одном уровне и место сражения окружено стенами, то средства ИИ должны принять решение направить выстрел под ноги против- нику. > Если несобственный персонаж находится на этаж ниже противника, он дол- жен предпринять попытку попасть в ближайшую к противнику стену также с той целью, чтобы максимально увеличить вероятность поражения осколками. Опытные игроки особенно часто используют такие приемы в играх на выживание. Если средства ИИ спроектированы успешно, то следует рассчитывать на то, что и в них будут применяться аналогичные приемы. Резюме В настоящей главе рассматриваются различные навыки, которые перечислены ниже, необходимые для стрельбы, а также для других ситуаций, в которых приходит- ся прибегать к использованию этих навыков. > Ближний бой требует наиболее развитых двигательных способностей! > Для ведения крупномасштабного боя необходимо использовать сочетание на- выков, позволяющих успешно осуществлять прогнозирование, выбор цели, прицеливание и производство выстрела. > Анимат должен оценивать траектории противника и поражающих элементов для определения возможного ущерба. > В иных ситуациях может потребоваться ведение стрельбы по другому принци- пу (например, заградительного или сдерживающего огня). В настоящей главе приведено также описание основных требований к средствам ИИ, которые кратко перечислены ниже. > Для оценки качества функционирования средств ИИ используются такие критерии, как надежность, плавность движений и эффективность. > Средства ИИ должны обладать способностью к осуществлению несложного прогнозирования. > Аниматы должны также быть способными использовать свойства среды для максимального увеличения площади поражения. В следующей главе будет приведено формальное описание интерфейса взаимодей- ствия со средой, который позволяет аниматам выполнять указанные задачи. Кроме того, в ней будет показано, как увеличить уровень сложности, вводя в действия ошиб- ки, правдоподобные с точки зрения функционирования биологического объекта.
224 Часть III. Моделирование стрельбы Практическая демоистрацминая версия Для демонстрации понятий, изложенных в этой главе, используется анимат, получивший название Rookie. Анимат Rookie фактически не обладает какими-либо навыками, лишь ведет стрельбу, прице- ливаясь в случайно выбранных направлениях. Демонстрационная версия и исходный код этого ани- мата представлены на сопровождающем Web-узле, но еще более важно то, что на этом узле можно найти описание архитектуры. Анимат Rookie имеет навыки стрельбы, которые основаны на самых простых способностях, обсуждаемых в этой главе (таких, как прогнозирование или открытие огня), но эти способности образуют вполне работоспособную архитектуру средств ИИ.
^aiattaus,^. Глава 15 Формальное ПРЕДСТАВЛЕНИЕ ПРОЦЕССА СТРЕЛЬБЫ В ЭТОЙ ГЛАВЕ, • Общая постановка задачи • Краткий обзор возможных вариантов решения • Рационализация • Предлагаемая спецификация • Резюме Формально описать, как нужно стрелять, можно и так: возьмите пистолет из дере- вянного ящика, повернитесь спиной к против- нику, отойдите на 20 шагов, снова повернитесь и откройте огонь. Но такое формальное описа- ние не совсем подходит для данной главы, по- священной рассмотрению математического оп- ределения понятия стрельбы, на котором осно- ваны применяемые средства ИИ. Однако после, создания таких средств при желании можно вполне организовать дуэли между аниматами! В предыдущей главе рассматривались неко- торые принципы, лежащие в основе сражения. Наиболее важными из них являются предсказа- ние, прицеливание и производство выстрела. Но наша основная задача состоит не в том, чтобы немедленно приступать к решению поставлен- ных задач. Скорее, мы должны создать предпо- сылки получения необходимого решения путем расширения инфраструктуры методов. А в иде- альном случае хотелось бы создать гибкий ин- терфейс, поддерживающий широкое разнообра- зие возможных решений. В настоящей главе рассматриваются пере- численные ниже темы. > Общая формулировка стоящей перед на- ми задачи и выработка идей, позволяю- щих формализовать интерфейсы. > Возможные определения входных и вы- ходных данных, применяемых в процессе решения задачи.
226 Часть III. Моделирование стрельбы > Обоснование целесообразности выбранных вариантов решения, в основном с учетом критериев, позволяющих подтвердить правильность этого решения. > Составление формальной спецификации с использованием структур данных языка C++. К концу данной главы мы должны достичь понимания того, на какой информа- ции должно быть основано поведение во время стрельбы. Кроме того, должен быть подготовлен набросок кода для первого прототипа. Общая постановка задачи В большинстве реалистичных игр, в которых действие происходит от первого ли- ца, от средств ИИ не требуется осуществления каких-либо предсказаний, поскольку, . в этих играх поражающими элементами являются пули, а пули летят почти мгновен- но. Это означает, что разработчик игры обязан продумывать только один аспект по- ведения каждого несобственного персонажа (NonPlayer Character— NPC)— при- целивание. Одно из решений задачи прицеливания, которое предусматривает при- менение лишь векторной алгебры, является чрезвычайно простым. Сразу после об- наружения противника выстреливается пуля, летящая прямо в ту позицию, где находится противник. Безусловно, такое решение является весьма несложным, а из этого следует, что объем программного обеспечения, предназначенный для решения задачи стрельбы, должен быть невелик (по крайней мере, по сравнению с тем, что требуется для ре- шения задачи перемещения). Если же используются более сложные поражающие элементы, чем пули, то разработчикам средств ИИ приходится искать решения в учебниках по физике, чтобы иметь возможность предсказывать траектории этих поражающих элементов. В действительности управление огнем — не такая простая задача, как кажется, поскольку при прогнозировании траектории движения пора- жающего элемента приходится учитывать различные условия (например, наличие ветра или вращение снаряда). Недавно было выпущено несколько статей, посвященных описанию различных аспектов ведения крупномасштабного боя, в основном требующих решения задачи прицеливания. Некоторые из этих статей перечислены ниже. > В [78] приведен превосходный обзор советов и рекомендаций, которые могут применяться во время имитации крупномасштабного боя. В частности, в этой статье описано, как вести из стрелкового оружия стрельбу пулями, траектория движения которых почти совпадает с осью канала ствола, определяя, происхо- дит ли попадание или промах. Кроме того, в этой статье показано, как можно представить дело так, будто промах был случайным, наилучшим возможным способом, ведь мы промахиваемся лишь потому, что нам не нужно, чтобы иг- ра закончилась слишком быстро! > В [3] обсуждается понятие кривых отклика и рассматривается возможность применения этих кривых для имитации процесса прицеливания, осуществ- ляемого людьми. Используя функцию синуса вместе с кривыми отклика, имеющими разный наклон, можно достичь различных степеней точности.
Глава 15. Формальное представление процесса стрельбы 227 > Статья [79] посвящена обсуждению более развитых стратегий выбора оружия, в которых используется знание местности для определения идеального места под- рыва гранаты. Данные, приведенные в этой статье, подчеркивают необходи- мость сбора информации о среде, даже в тех случаях, когда не требуется слиш- ком сложное решение (например, не должно применяться планирование). Вообще говоря, создается впечатление, что разработчиков игр устраивает даже такое решение, в котором на начальную ориентацию траектории полета пули накла- дывается случайный шум, что приводит к получению рассеянного огня. Тем не ме- нее даже такое простое решение часто становится хорошим компромиссом, учиты- вая общую картину развития событий в игре и кажущуюся незначимость подробно- стей производства выстрела. В литературе приведено чрезвычайно мало сведений о том, как должна прово- диться разработка изначальных принципов поведения во время стрельбы. То же са- мое касается и формальных интерфейсов. Но эта ситуация не вызывает у нас беспо- койства, поскольку является благоприятной с образовательной точки зрения, ведь она дает нам возможность испытать свои силы в проектировании спецификаций без посторонней помощи. Краткий обзор возможных вариантов решения Прежде всего, займемся обзором и описанием основных идей, касающихся того, как следует вести крупномасштабный бой. В частности, для этого необходимо промо- делировать входные данные (т.е. информацию, позволяющую выбрать оружие и опи- сать среду), выходные данные (т.е. возможные способы управления оружием) и кон- текст (иными словами, определить, как действуют оружие и поражающие элементы, как анимат держит, например, ружье и т.д.). В настоящей книге, в основном, рассматриваются варианты, которые уже были опробованы в существующих проектах игр, или, по крайней мере, такие аспекты, которые являются очевидными для всех, кто знаком с компьютерными играми. По- этому не следует удивляться, если некоторые идеи, изложенные в этой главе, пока- жутся вам знакомыми. Однако другие идеи не столь очевидны, но все равно заслу- живают изучения, поскольку в них заложен определенный потенциал развития. Контекст Контекстом считается все, что включает модельные представления оружия, по- ражающих элементов и самого анимата. Оружие и поражающие элементы Один из наиболее важных вопросов при проектировании игры состоит в том, как должна быть составлена модель самого оружия. Безусловно, контур оружия может быть представлен с помощью трехмерной сети, но игровая логика характеризуется тем, что в распоряжении средств ИИ находятся далеко не все детали внешнего пред- ставления оружия. Иными словами, для имитации стрельбы можно использовать
228 Часть III. Моделирование стрельбы модель относительно низкого уровня, передавая в распоряжение системы ИИ толь- ко информацию о физических свойствах оружия (например, если в бою используют- ся лук и стрелы). В таком случае задача оснащения оружия поражающими элемен- тами и управления поведением оружия во время стрельбы возлагается на игрока. Для этого необходимо обеспечить особенно точное управление конечностями, что- бы с помощью имитации тела можно было осуществлять все операции, связанные с применением оружия (например, накладывать стрелу, натягивать лук, а затем вы- пускать стрелу). С другой стороны, в проекте игры могут использоваться идеи, подобные тем, на которых основано управление движением; иначе говоря, из модели могут быть ис- ключены детали низкого уровня. Оружие может рассматриваться как объект, дейст- вия с которым осуществляются концептуально (например, в виде операций зарядки и открытия огня). Такой подход дает возможность явно выполнять основную часть операций с оружием, обеспечивая вместе с тем достаточно простую организацию действий высокого уровня. Что же касается поражающих элементов, то, как правило, для имитации их дви- жения применяются прямолинейные траектории полета. В большинстве широко распространенных игр со стрельбой от первого лица сила тяжести учитывается при имитации траекторий только некоторых типов поражающих элементов, например таких, как гранаты. Анимат Как должен анимат держать оружие? Имитация оружия может быть связана с имитацией самого тела. В таком случае анимат должен вначале повернуться в том направлении, в каком должен быть произведен выстрел, и только потом выстрелить. Этот вариант часто применяется в играх со стрельбой от первого лица. Указанное решение внешне кажется довольно ограничительным, но оно обладает удивительной гибкостью, поскольку позволяет анимату двигаться в любом направ- лении независимо от его ориентации. Можно также предусмотреть, чтобы оружие двигалось независимо от самого тела. Но в большинстве игр такое решение практически не применяется. Несомненно, причина такого положения дел состоит в том, что для этого требуется сложная ани- мация, а самим играющим людям приходится решать сложные задачи управления. Входные и выходные данные Информация, необходимая для управления аниматом, может быть разбита на три категории: информация об оружии и поражающих элементах, о цели и о среде. Оружие и поражающие элементы Для наиболее успешного применения оружия, которое держит в своих руках иг- рок, необходимо иметь о нем определенное представление. Дело в том, что просто невозможно выпустить снаряд, не зная, к какому типу относится оружие, а также не представляя себе, заряжено ли оно и готово ли к стрельбе. Для предоставления по- добной информации игроку может быть предусмотрен какой-либо концептуальный способ (например, символы, указывающие на то, что оружие готово к стрельбе,
^lalaliaus^ Глава 15. Формальное представление процесса стрельбы 229 “isReady”) или менее явная форма представления (например, если анимат обна- ружит, что оружие не стреляет, то может понять, что оно не готово к стрельбе). Если используется второй подход, то для анимата может потребоваться определить путем обучения, сколько времени требуется на перезарядку оружия. Для решения задачи прицеливания с помощью средств ИИ непосредственно са- ма информация о поражающих элементах не требуется. Для производства стрельбы достаточно знать, как поражающий элемент достигает цели. Сведения об этом могут быть заложены в самих средствах ИИ в виде начальных предположений или, воз- можно, получены путем обучения в процессе игры. Еще один вариант состоит в том, что поражающие элементы могут быть представлены явно и оформлены в виде от- дельных объектов. Кроме того, траектория движения поражающих элементов может отслеживаться неявно, с учетом их воздействия на среду (например, в виде взрывов или повреждений). Цель Чтобы быть вовлеченным в сражение, в ходе которого должна быть поражена ка- кая-то конкретная цель, анимат должен в первую очередь обнаружить существова- ние этой цели! В отличие от задач, связанных с применением поражающих элемен- тов, для решения этой задачи требуется получение явно представленной информа- ции, поскольку лишь при этом условии могут быть предприняты какие-либо непо- средственные действия. Один из способов решения этой задачи состоит в том, что противники должны рассматриваться как отдельные объекты, а информация об их существовании должна передаваться анимату в символическом виде. Еще один ва- риант состоит в том, что противник может восприниматься визуально, например, по такому же принципу, как люди воспринимают игровую среду и обнаруживают цель. Но последний вариант вряд ли осуществим с технической и вычислительной точек зрения (тогда как мы в компьютерной игре стремимся достичь биологического прав- доподобия, а не адекватности). Среда Как было указано в главе 14, “Навыки стрельбы игрока”, чтобы достичь оптималь- ндй производительности прицеливания, игрок должен хорошо знать игровую среду. Такие знания можно приобрести, воспринимая структуру местности, которая окружа- ет цель. Особенно способствует изучению общей структуры местности правильная оценка расстояния от атакующего до точек, окружающих желаемую точку воздействия. В результате повышается качество решений, касающихся того, куда вести стрельбу. Полезно также прослеживать траекторию движения поражающих элементов, по- скольку это позволяет избежать случайных выстрелов в близкие препятствия, кото- рые приводят игрока в замешательство, или выстрелов, при которых поражающие элементы блокируются, не достигая намеченной цели. Действия Действия предоставляют возможность управлять оружием в случае необходимо- сти. В зависимости от того, как моделируется оружие, задача управления оружием может быть решена с помощью действий высокого уровня или может решаться на
230 Часть III. Моделирование стрельбы гораздо более низком уровне, с помощью средств управления конечностями. Так или иначе, но любые действия должны хотя бы косвенно предоставлять возмож- ность открывать огонь, а также, в принципе, перезаряжать оружие. Для прицеливания применяется процесс, аналогичный тому, с помощью кото- рого происходит поворот тела анимата (при этом осуществляются действия, которые определены для решения задачи перемещения). В частности, существует возмож- ность взаимно увязать ориентацию тела и оружия так, чтобы прицеливание осуще- ствлялось в результате поворота тела. Еще один вариант состоит в том, что управле- ние движением тела и оружия может выполняться отдельно; это обеспечивает боль- ший контроль, но влечет за собой повышение сложности. Рационализация Один из широко применяемых принципов проектирования состоит в том, что действия, осуществляемые с помощью средств ИИ, рассматриваются под тем же уг- лом, что и действия, выполняемые итроками-людьми. Но какой бы подход но был выбран, предлагаемый набор действий должен оставаться совместимым с теми дей- ствиями, которые выполняет игрок, владея оружием. При использовании такого подхода реализация интерфейсов становится гораздо проще, а также достигается большинство преимуществ, связанных с воплощением в игре реального объекта. Наиболее важные факторы Выше были описаны основные требования к модели игры. Кроме того, выбран- ная модель должна обладать перечисленными ниже свойствами. > Реалистичность. Стрельба — это явное поведение, которое обнаруживается на большом расстоянии. Безусловно, с точки зрения самой игры задача осущест- вления возможности стрельбы может оказаться не такой важной, как обеспе- чение перемещения, но при ее неправильной организации может рассеяться последняя иллюзия интеллектуальности игры. Поэтому мы должны стремить- ся достичь убедительного уровня реалистичности при проектировании средств осуществления этих способностей. > Эффективность. Способностями к прицеливанию и ведению огня не прихо- дится пользоваться так же часто, как другими способностями; их применение ограничивается ситуациями боевых столкновений. В связи с этим не всегда удается уделять слишком много времени реализации этих способностей, по- скольку внимания разработчика могут потребовать многие другие процессы (будь то процессы, связанные с применением средств ИИ или нет). > Способности. В идеальном случае создаваемые аниматы должны превосходить по своим способностям людей-игроков, чтобы можно было наращивать дав- ление, если игра становится для игрока слишком легкой. Такую возможность должны предоставлять и применяемые интерфейсы.
Глава 15. Формальное представление процесса стрельбы 231 Выше уже отмечалась необходимость обеспечения совместимости с тем, как дей- ствуют люди, владея оружием. Необходимо также, чтобы принятые подходы способ- ствовали и реализации указанных свойств. Основные предположения В части III настоящей книги мы будем руководствоваться предположением, что само оружие является, главным образом, автономным. Это означает, что оружие должно обеспечивать перезарядку, не требуя привлечения для этого средств ИИ. Тем не менее задача привлечения системы ИИ для проверки состояния оружия и его перезарядки в случае необходимости является довольно тривиальной. По-видимому, принятый в настоящей книге подход к проектированию игры должен допускать та- кую возможность. Иначе говоря, мы можем сосредоточиться на создании средств ИИ, позволяю- щих прицеливаться и открывать огонь, ни о чем больше не задумываясь. Благодаря этому создаются лучшие предпосылки для того, чтобы мы могли сосредоточиться на самой сложной части задачи и не заботиться о мелких подробностях. Предполагается, что траектории поражающих элементов подчиняются четко оп- ределенным правилам, например, если при моделировании игровых объектов учи- тываются законы физики. Благодаря этому появляется возможность заняться разра- боткой таких средств ИИ, в которых не приходится иметь дело с произвольно дви- жущимися поражающими элементами. А именно, разработчик может сосредото- читься на описании поражающих элементов, летящих по прямой линии (таких, как пули или ракеты). Предлагаемая спецификация Для представления данных о противниках используются кортежи, содержащие символическое обозначение противника (в виде данных типа string или int) и информацию о его местонахождении (три числа с плавающей точкой, по одному для каждого из измерений х/Y/z). Сведения о местонахождении противника представ- лены относительно текущего местонахождения и ориентации анимата, в духе того подхода к созданию игровой обстановки, в котором анимат рассматривается как во- площение человека-игрока в игровой среде. Так или иначе, при таком подходе про- граммная реализация средств ИИ становится проще. Для производства выстрела из оружия вызывается простой метод fire. Пуск по- ражающего элемента производится автоматически, а необходимость перезарядки отсутствует. Сам поражающий элемент в процессе его движения может восприни- маться как объект, если такая возможность обеспечивается с учетом его типа и ско- рости (например, пули летят слишком быстро и не отслеживаются взглядом, тогда как за полетом более медленных ракет вполне можно проследить). Прицеливание осуществляется с применением операций поворота тела, которые определены для управления движением. Практика показала, что такой подход впол- не приемлем, поскольку направление движения не зависит от ориентации. Именно
232 Часть III. Моделирование стрельбы так действуют игроки-люди, к тому же, как оказалось, задача освоения подобного способа прицеливания является сравнительно несложной. Очевидно, что создаваемые средства ИИ могут оказаться слишком успешно дей- ствующими во время стрельбы, из-за чего человек потеряет интерес к игре, поэтому, вероятно, придется ввести определенную долю шума в результаты, вырабатываемые с помощью некоторых функций. Это позволяет неявно задавать либо более, либо менее развитые навыки стрельбы, применяемые средствами ИИ. Интерфейсы Интерфейс Weapon поддерживает две интересующие нас функции. С использо- ванием функции Fire производится пуск поражающего элемента, а функция Select обеспечивает выбор требуемого оружия, которое указано с помощью симво- ла (с типом данных string или int). Если обнаруживаются какие-либо нарушения в работе, обе функции возвращают значение False. void Fire(); bool Select(const Symbol& weapon); Кроме того, следует отметить, что интерфейс Vision дополнен с учетом воз- можности применения трассирующих поражающих элементов (отслеживание трасс поражающих элементов используется для выявления препятствий). В вызове функ- ции должен быть задан вектор, который определен относительно текущего пред- ставления. Возвращаемым значением функции является расстояние до первого пре- пятствия. float TraceProjectile(const Vec3f& orientation); Наконец, для сбора в виде массива информации о видимых объектах используется функция запроса visibleEntities. Эта функция также относится к модулю Vision. Второй параметр используется для определения критерия выборки, позволяющего ука- зать, какие объекты представляют интерес для анимата (функция возвращает информа- цию только о тех объектах, которые сс хпъстствуют заданному критерию). void VisibleEntities(vector<Entity>& visible, const Entity::Type& unifier = 0 ); Как оказалось, если применяемые средства ИИ обеспечивают возможность со- бирать данные об участвующих в игре объектах вручную, то возможности учета иг- ровой обстановки в различных ситуациях (например, в условиях ведения игры с уча- стием нескольких разных игроков) становятся максимальными. Если же в игровом поле присутствует только один противник, то может стать более подходящим под- ход, основанный на передаче сообщений. Набросок кода Безусловно, для обеспечения успешной реализации игры требуется гораздо больше, чем простое применение всех описанных выше вызовов функций, опреде- ленных с помощью интерфейсов, но указанные функции все же позволяют соста- вить следующий простой пример:
Глава 15. Формальное представление процесса стрельбы 233 void Think() { // Запросить визуальный интерфейс для получения массива с информацией //.об участниках игры vision->VisibleEntities( players ); // Просмотреть информацию о ближайших игроках,, чтобы узнать, кто // из них противник for (int i=0; i<players.size(); ++i) { // Запомнить цель } // Повернуться и выполнить запуск поражающего элемента motion->Turn( target.GetPosition() ); weapon->Fire(); } В настоящей книге проблемы выбора оружия рассматриваются только начиная с части IV. Поэтому предполагается, что анимат применяет оружие, выбранное слу- чайным образом. Вопросы реализации других умственных способностей в несколь- ких следующих главах рассматриваются отдельно. Приведенное в них описание примерно соответствует каждому из обсуждаемых навыков (под этим подразумева- ются навыки прогнозирования, выбора цели и прицеливания). Резюме В настоящей главе рассматривались спецификации интерфейсов, позволяющих управлять поведением анимата во время стрельбы. В частности, в ней затрагивались темы, описанные ниже. > Стандартный подход к прицеливанию предусматривает применение всеобъ- емлющего управления. Это означает, что решения должны приниматься и в отношении того, следует ли попасть в цель или промахнуться, и в отношении того, в какую точку необходимо прицеливаться. > Предусмотрен ряд способов определения интерфейса, которые позволяют предоставить несобственным персонажам доступ к средствам, необходимым для того, чтобы они могли вести стрельбу (например, к функциям высокого уровня или к неявно заданной модели поражающего элемента). > Выбранные интерфейсы соответствуют возможностям человека-игрока по управлению огнем, что позволяет создавать аниматы, действующие как можно более реалистично, и вместе с тем воплощать в них максимальные возможности. > Но еще более важно то, что в применяемом интерфейсе расширены визуаль- ные возможности системы, что позволяет получать информацию о результатах стрельбы трассирующими поражающими элементами и собирать сведения о видимых объектах. > На данный момент применяемое оружие является автономным, с автоматиче- ской перезарядкой. Проблема выбора оружия также оставлена для рассмотре- ния в следующих главах.
234 Часть III. Моделирование стрельбы В следующей главе будет рассматриваться так называемый стандартный подход, в котором для предсказания траекторий движения противников используются фи- зические уравнения. Кроме того, будут описаны две категории методов, основанные на использовании средств моделирования и решения уравнений. Практическая демонстрационная версия Применение новых интерфейсов, представленных в настоящей главе, демонстрируется с помощью анимата, получившего имя Salty, код которого в двоичной и исходной форме может быть загружен с Web-узла http://AiGameDev.com/. Анимат Salty выбирает в качестве противника персонаж самого близкого к себе игрока и прицеливается прямо в то место, где находится этот персонаж. Пуск поражающих элементов происходит только во время боя.
^ataHaus,^. Глава 16 Физические основы прогнозирования ДВИЖЕНИЯ В ЭТОЙ ГЛАВЕ- • Теоретические основы • Наиболее приемлемые способы определения точки пересечения траекторий объектов • Предсказание поведения • Алгоритм моделирования • Проведение эксперимента • Оценка полученных результатов • Резюме Точная стрельба невозможна без привлечения многих навыков. Одним из них является спо- собность предвидеть, что должно произойти в ближайшем будущем. Для этого необходимо не только предсказывать движения несобственного персонажа (рассматриваемого в качестве против- ника), но и разбираться в баллистике, чтобы по- нять, какой должна быть траектория движения поражающего элемента. Настоящая глава посвя- щена описанию указанного аспекта стрельбы. В ходе всего приведенного в данной главе описания будет принято предположение, что для удовлетворительного прицеливания достаточно просто точно направить оружие на намеченную цель (для этого чаще всего необходимо лишь правильно установить углы поворота и возвы- шения ствола оружия). Производство выстрелов из оружия происходит сразу же после перехода оружия в состояние готовности, разумеется, ес- ли противник находится в пределах досягаемо- сти! Сам выбор цели осуществляется неявно в составе процесса прогнозирования результата стрельбы; в качестве цели выбирается против- ник, для которого результат предвидения воз- можности поражения является положительным. В настоящей главе, которая посвящена ре- шению проблемы поиска наилучших условий для запуска поражающего элемента в противни- ка, рассматриваются приведенные ниже темы. > Изложение теоретических основ модели- рования движения с помощью законов ньютоновой физики, а также таких мате- матических методов, как интегрирование и дифференцирование.
236 Часть III. Моделирование стрельбы > Описание решения, базирующегося исключительно на физических законах, позволяющих решать уравнения для поиска цели. > Рассмотрение более практически применимого подхода к предсказанию дви- жения, в котором используется итерационный метод. > Описание условий для экспериментирования с предсказанием движения других несобственных персонажей. > Анализ характера поведения отдельных объектов в игре, а также описание процесса разработки. К концу данной главы мы сможем создать анимат, способный произвести вы- стрел из оружия (с медленно движущимися поражающими элементами), чтобы на- стичь движущегося противника. Теоретические основы Для успешного предсказания движения требуется понимание ньютоновой физи- ки хотя бы в минимальном объеме. Но у читателя не должно быть повода для беспо- койства, поскольку приведенное в данной главе описание базируется на вполне дос- тупных понятиях. В описанном здесь подходе за основу приняты физические законы движения твердых тел, хотя в очень упрощенной форме. Физическое состояние Все объекты обладают набором свойств, которые определяют их как физические тела: форма, размер, масса и т.д. Характер движения объектов зависит от сочетания этих свойств. В ходе изучения траекторий объектов используются физические величи- ны, зависящие от свойств физического тела, такие как скорость и ускорение, а вместо самого объекта чаще всего рассматривается его центр масс. Отношения между указанными выше величинами могут быть выражены с помо- щью физических формул, которые позволяют решать задачи по прогнозированию пе- ремещения объектов в пространстве. Например, одна из формул показывает, что ско- рость, v, определяется как производная от расстояния, пройденного объектом в про- странстве, х (иными словами, координаты объекта изменяются быстрее или медлен- нее, в зависимости от скорости). Согласно другой формуле ускорение а выражается как производная от скорости v (иными словами, скорость изменяется в зависимости от ускорения). В физике чаще всего для обозначения производных по времени исполь- зуются точки. Следующие формулы указывают зависимость во времени между скоро- стью и расстоянием, а также между ускорением и скоростью: • V = X а = v Законы ньютоновой физики позволяют находить значения одних величин, зная другие (например, определять ускорение, зная массу тела и воздействующую на него силу). Тем не менее некоторые величины невозможно определить непосредственно,
yalullaus^k Глава 16. Физические основы прогнозирования движения 237 и приходится использовать дифференциальное или интегральное исчисление. Но благодаря этому обеспечивается возможность решать задачи, в которых рассматрива- ются движущиеся объекты, или моделировать системы, состоящие из таких объектов. Числовое интегрирование Наиболее сложная проблема при создании игр, в которых должны учитываться физические законы движения, обычно заключается в том, что приходится следить за изменением положения объектов с течением времени. Мы знаем, что скорость вы- ражается как производная от расстояния (т.е. как угол наклона касательной к кри- вой, описывающей изменение расстояния во времени), поэтому расстояние опреде- ляется интегралом от скорости (т.е. площадью, охватываемой кривой изменения скорости). По существу, в связи с необходимостью проведения сложных расчетов задача точного определения позиции часто становится затруднительной. Для вычисления значений, зависящих от других величин, изменяющихся во вре- мени, используются алгоритмы, которые принято называть числовыми интегратора- ми. Интеграторы позволяют вычислять значения пройденного расстояния x(t) и скорости v (t) как функции от времени t, обычно с учетом предыдущих значений. Одним из первых и наиболее простых способов решения указанной задачи являет- ся способ, основанный на использовании метода интегрирования Эйлера [8] (который базируется на применении законов кинематики, т.е. не требует учета, например, мас- сы объекта). Идея этого метода состоит в том, что вычисление каждого следующего значения (которое должна принять переменная по истечении промежутка времени At) может быть получено с помощью производной и текущего значения: v(t+At) = v(t) + a(t)At x(t+At) = x(t) + v(t)At Это означает, что следующее значение скорости можно вычислить, сложив теку- щее значение скорости со значением, в котором учитывается ускорение, а следую- щее значение расстояния — сложив текущее значение расстояния со значением, в котором учитывается скорость. Такой метод вычисления известен под названием явного интегрирования. В этом методе не используется что-либо более сложное, чем векторная алгебра. К сожалению, в связи с применением метода интегрирования Эйлера на практике возникает очень много проблем. В действительности ускорение часто изменяется не только при переходе от одного промежутка времени At к другому, но и на протяжении отдельных промежутков времени. Кроме того, приходится учитывать возможность столкновения движущихся тел и находить решение также и для такой ситуации. К то- му же, было разработано много методов, более подходящих для решения задач число- вого интегрирования, которые очень хорошо действуют применительно и к твердым, и к пластичным объектам. Безусловно, эти методы позволяют достичь значительных преимуществ при создании приложений в физике, но для разработки средств ИИ не- обходимость в использовании более сложных решений возникает редко.
238 Часть III. Моделирование стрельбы Наиболее приемлемые способы определения точки пересечения траекторий объектов Законы физики позволяют предсказать, когда произойдет столкновение двух движущихся тел. Предположим, что в качестве одного из физических объектов рас- сматривается несобственный персонаж, имеющий координаты, определяемые как точка в трехмерном пространстве, р = [рх, ру, pz], и обладающий соответст- вующей скоростью v = [vx, vy, vz]. Через t секунд несобственный персонаж будет находиться в точке р (t) = р + vt (в этой формуле используются операции умножения вектора на скаляр и сложения векторов). Если скорость несобственного персонажа остается постоянной, то какие-либо интеграторы не требуются; оценка нового положения является точной. Чтобы упростить анализ, предположим, что производится выстрел из оружия, находящегося в начале координат, [0,0,0]. Но еще не известно, куда направлен выстрел из оружия (неизвестно направление), поэтому нельзя подставить в формулу точное значение скорости движения поражающего элемента по разным осям (векторное представление скорости). Тем не менее известна линейная скорость s движения поражающего элемента. По истечении определенного промежутка времени t поражающий элемент будет находиться на расстоянии st от начала координат (расстояние измеряется как про- изведение скорости на время). Для того чтобы поражающий элемент попал в цель, рассматриваемый в качестве цели несобственный персонаж должен в какой-то мо- мент времени t находиться в той же точке пространства, которой достиг поражаю- щий элемент. Таким образом, расстояние от точки р (t), в которой находится цель, до начала координат (обозначаемое как | р (t) |) должно быть идентичным расстоя- нию от поражающего элемента до начала координат: Iр(t)I = |р + vt| = st Для определения момента времени столкновения достаточно воспользоваться этим уравнением. Чтобы упростить задачу вычисления значения t, можно возвести обе стороны уравнения в квадрат, как показано ниже. А во втором приведенном здесь уравнении обозначения векторной алгебры заменены вещественными пере- менными. . .2 2 2 |р + vt| = s t 2 2 2 2 2 (Рх + vxt) + (Ру + Vyt) + (pz + vzt) = s t Воспользуемся обозначением операции суммирования X, чтобы упростить полу- ченное выражение, а затем развернем квадрат под знаком суммы: 2 2 2 X (Pi + vifc) = s t i= [х,у, z] 2 2 2 2 2 X (Pi + 2piVjt + vi t ) = s t i= [x,y, z]
Глава 16. Физические основы прогнозирования движения 239 Последнее уравнение может стать основой удобного способа вычисления време- ни столкновения t. Разложим это уравнение на множители, чтобы выделить пере- менную t, и получим квадратичное уравнение в форме at2+bt2+c=0 (включающее многочлен второго порядка). Символами а, b и с обозначаются произвольные пере- менные, которые используются для упрощения уравнения и обеспечения удобной реализации. Переменные а, b и с определены следующим образом: 2 Ь = 2 X viPi i=0 2 2 с = Z Pi i=0 Для вычисления времени столкновения необходимо вначале вычислить значения переменных а, b и с. После этого достаточно подставить полученные значения в выражение для стандартного решения квадратичного уравнения, чтобы получить требуемый результат: /“2---- -Ь-А/Ь -4ас = 2а Результат вычисления значения t определен, если выражение под знаком квад- ратного корня является положительным (иными словами, условием попадания по- ражающего элемента оружия в движущуюся цель является наличие у этого пора- жающего элемента достаточно высокой скорости). Теоретически возможно еще од- но решение квадратичного уравнения, в котором используется положительное зна- чение квадратного корня. Однако это решение соответствует отрицательному прогнозируемому значению t (значению, которое относится к прошлому). ’ Получив значение t, мы можем определить расчетным путем прогнозируемую точку столкновения с помощью уравнения p(t) = р + vt. Таким образом, мы можем определить место, в которое анимат должен направить оружие, чтобы по- пасть в противника! Практическая демонстрационная версия На сопровождающем Web-узле можно найти пример анимата, созданного на основе этих концепций. Для этого необходимо провести поиск, указав его имя — Predictor. По существу, средства ИИ, преду- смотренные в этом анимате, вначале проверяют наличие несобственных персонажей, находящихся в пределах видимости. Если один из таких персонажей оказывается поблизости, то производится от- слеживание его положения и скорости. После этого полученные данные вводятся непосредственно в приведенное выше уравнение и происходит нажатие на спусковой крючок! Инструкции, с помощью которых некоторые примеры аниматов можно подготовить для применения в игре, приведены по ад- ресу http: / /AiGameDev. сот/.
240 Часть III. Моделирование стрельбы Предсказание поведения Когда приходится решать задачу предсказания поведения живых существ, фактиче- ски не играет большой роли, насколько точным является уравнение движения или на- сколько высокую производительность показывает интегратор. В действительности, живые существа — это не пассивные объекты, которые подчиняются жестким прави- лам; усилия, затрачиваемые ими на осуществление движения, невозможно установить с полной определенностью, поэтому невозможно узнать и само ускорение. В результа- те этого может оказаться так, что неприменимыми являются наилучшие интеграторы, поскольку в любом случае принятые за основу предположения в отношении ускорения часто приводят к получению неправильных результатов. Напрашивается вывод, что и в данном случае необходимо найти как можно более простое решение! Люди и несобственные персонажи, моделируемые средствами ИИ, не могут по- лучать информацию о состоянии произвольных объектов так же достоверно, как о физических машинах. Участники игры имеют возможность лишь делать дедуктив- ные выводы, наблюдая за объектами и отслеживая их позицию (вернее, позицию их воплощений). При таком подходе чаще всего наблюдения осуществляются через оп- ределенные интервалы и оценка скорости производится в момент наблюдения; ско- рость вычисляется по изменению положения во времени. Повышения точности можно добиться, определяя с помощью средств ИИ ускоре- ние по результатам отслеживания изменений скорости. Таким образом, весь процесс контроля за поведением объекта состоит из трех этапов, осуществляемых в разное вре- мя: во-первых, производится контроль за текущим положением, во-вторых, определя- ется скорость и, в-третьих, на основании полученных данных вычисляется ускорение. Безусловно, из-за ошибок измерения каждая из этих расчетных величин (скорость и ускорение) может резко изменяться от одного измерения к другому, по- этому целесообразно предусматривать усреднение полученных величин за короткий промежуток времени. Это позволяет отчасти справиться с шумом, вызванным ошибками в наблюдениях или неправильным предсказанием поведения. Тем не ме- нее способ слежения за движущимся объектом, в котором используется усреднение, имеет недостаток, связанный с тем, что возникает запаздывание по сравнению с действительным значением (поскольку в расчет принимаются значения, получен- ные в прошлом). Может оказаться, что в играх лучшим является способ предсказа- ния скорости с привязкой к тем точкам, в которых объект останавливается или на- чинает движение, поскольку движение и останов — два наиболее часто встречаю- щихся состояния. После создания основной модели приходится также вносить множество мелких уточнений, связанных с тем, что потребуют корректировки многочисленные пара- метры в соответствии с полученными наблюдениями, или с тем, что необходимо бу- дет учесть еще какие-то конкретные требования. Значения параметров, подлежащих корректировке, могут быть выбраны и подвергнуты модификациям на этапе экспе- риментирования. При этом окончательное решение по выбору наиболее подходя- щих параметров должно быть основано на эмпирических данных.
^atattaus,^. Глава 16. Физические основы прогнозирования движения 241 Алгоритм моделирования Выше было описано, как использовать стандартное решение квадратичного урав- нения для поиска точки столкновения поражающего элемента оружия с целью, а в на- стоящем разделе будет показано, что для предсказания такого же результата может применяться моделирование. В данном случае для поиска приемлемой оценки место- нахождения точки пересечения двух траекторий используется алгоритм, основанный на последовательных итерациях. В основе рассматриваемого алгоритма лежит метод прямого интегрирования, в котором уравнения Эйлера применяются для вычисления положения противника и поражающего элемента, как показано на рис. 16.1. Противник Рис. 16.1. Моделирование траектории противника с помощью прямого интегрирования и сравнение расстояния, пройденного противником, с расстоянием, пройденным пора- жающим элементом; во время моделирования положение противника представляется точками, движущимися по прямой линии, а потенциальная область поражения снаряда- ми увеличивается с добавлением каждой новой концентрической окружности Положение По существу, процесс итерации начинается от текущего момента и продолжается в виде отдельных этапов, по завершении которых вырабатывается прогноз положения движущегося противника. Если обнаруживается, что поражающий элемент может дос- тичь позиции, в которой в то же время находится противник, то считается, что точка пересечения найдена. Дополнительные комментарии приведены в листинге 16.1. Листинг 16.1. Использование прямого интегрирования для поиска точки столкновения поражающего элемента и противника repeat # Обновить информацию о позиции противника, относящуюся к данному # временному интервалу enemy.position += enemy.velocity * delta
242 Часть III. Моделирование стрельбы # Добавить продолжительность временного интервала к текущему # значению времени time += delta # Определить, какое время требуется, чтобы поражающий элемент # достиг противника flight_time = length(enemy.position - origin) / projectile.speed # Вычислить разницу во времени между событиями, связанными с # достижением намеченной точки противником и поражающим элементом difference = abs(time - flight_time) # Остановиться, если поражающий элемент направлен в слишком близкую # точку или слишком велико количество итераций until difference < threshold or time > max_time Следует отметить, что при использовании этого итерационного алгоритма расче- ты осуществляются шаг за шагом, а такой подход может показаться довольно неэф- фективным. Но фактически в большинстве случаев, учитывая скорость движения поражающих элементов, достаточно провести лишь несколько итераций. Если же проблема низкой эффективности действительно возникает, то можно выбрать другой способ интегрирования, позволяющий устранить эту проблему; эф- фективность этого алгоритма в среднем характеризуется значением log(n). Идея алгоритма состоит в том, что вначале должен использоваться гораздо более крупный шаг. Если после этого процесс моделирования заходит слишком далеко, то шаг ста- новится отрицательным и уменьшается. В конечном итоге процесс вычисления пра- вильного решения сходится гораздо быстрее, а точность полученного решения ста- новится выше. Для реализации этого алгоритма в цикл, показанный в листинге 16.1, необходимо ввести дополнительный код, приведенный в листинге 16.2. Подходящее значение интервала delta, с которого можно начать вычисление, определяется зна- чением времени, которое требуется, чтобы поражающий элемент достиг той пози- ции, в которой первоначально находился противник. Листинг 162. Дополнение к алгоритму прямого интегрирования (см. листинг 16.1), в котором вносится поправка в значение интервала delta # Изменение знака свидетельствует о том, что процесс моделирования # зашел слишком далеко if sign XOR time < time_flight then # Уменьшить размер шага и переключиться на противоположное # направление delta = -delta / 2 end if # Внести полученное значение в память, если противник находится # гораздо дальше от места падения поражающих элементов sign = time < time_flight В некоторых случаях действительно предпочтительна указанная обновленная вер- сия алгоритма. Но фактически в этой версии повторно вычисляется результат, полу- ченный на предыдущем этапе решения уравнения, поэтому повышается вероятность того, что сами вычисления будут происходить более медленно. Тем не менее, если тре- буется достаточно высокая точность, следует предпочесть именно этот подход. С другой стороны, простой итеративный алгоритм прямого интегрирования так- же имеет свои преимущества. В действительности, он позволяет использовать сред- ства ИИ для прогнозирования скорости движения противника на каждом времен-
^'aiatiaus^i Глава 16. Физические основы прогнозирования движения 243 ном интервале. Таким образом, если, например, на пути имеется препятствие, то можно внести с учетом этого поправку в значение скорости противника. Благодаря этому появляется возможность прогнозирования нелинейных маршрутов движения. Практическая демонстрационная версия Одним из примеров аниматов, с помощью которых предпринимается попытка прогнозировать движение противника по визуальным наблюдениям, является Colin. Во время выработки прогноза Colin пытается проверить, есть ли стена на пути противника. Если стена действительно имеется, но ее можно обойти, то в значение скорости вносятся небольшие поправки на основании некоторых предположений. Если же стена является сплошной, то моделирование прекращается и в качестве цели используется точка, в ко- торой противник приблизится к стене. Исходный код анимата Colin, а также пошаговое руководство по запуску этого анимата можно найти на Web-узле ht tp: / /AiGameDev. сот/. Проведение эксперимента Чтобы оценить преимущества алгоритмов, в которых используется прогнозирова- ние, рассмотрим аниматы, применяющие для стрельбы бластеры (а поражающие эле- менты, выпущенные из бластеров, движутся относительно медленно). Возможен так- же вариант с применением ракет, но ракеты обладают меньшим временем полета, а их применение приводит к повышению вероятности причинить повреждение самому се- бе. Пусковые ракетные установки будут рассматриваться в главе 20, “Выбор цели”, в которой показано, как аниматы могут исключить возможность сжечь самих себя соб- ственным оружием. Вполне естественно, что в процессе разработки приходится также заботиться о том, чтобы каждый из аниматов был как можно более неуязвимым. Итак, применение бластера вместо ракеты действительно обеспечивает нанесение пора- жающего удара в бою и вместе с тем бой продолжается достаточно долго, для того что- бы мы могли оценить способности аниматов. Кроме того, более интересным является такой вариант, в котором аниматы вынуж- дены вести стрельбу с большого расстояния, поскольку это действительно позволяет оценить способности аниматов к предсказанию. Чтобы обеспечить такое поведение аниматов в игре, можно ввести правило, что после сближения на короткие расстояния объявляется перемирие. После того как аниматы приближаются друг к другу на доста- точно близкое расстояние, они начинают пронизывать друг друга недобрыми взгляда- ми и в конечном итоге расходятся. Отойдя на десять шагов, аниматы могут открыть огонь, как на дуэли. Такой подход во многом является надуманным, но в данном слу- чае, т.е. при проведении экспериментов, его применение вполне оправданно! Для проверки способности аниматов к прогнозированию может применяться очень простой код управления движением. В действительности, в рассматриваемом примере использовалась немного модифицированная версия анимата Pinbot. Единственные до- полнения были сделаны для обеспечения того, чтобы аниматы выглядели немного по- разному, в зависимости от направления их движения. В бою это важно, поскольку внимание сосредоточивается скорее на самом противнике, чем на анимате, поэтому трудно определить, в каком направлении движется анимат. Для управления движением в таких условиях, когда препятствия не всегда види- мы, в целях предотвращения столкновения аниматов со стенами используется об-
244 Часть III. Моделирование стрельбы ратная связь на основе физического контакта. Средства управления поведением, связанным с выбором направления движения, действуют успешно, если аниматы могут видеть, куда они движутся. Но во время боя не всегда есть возможность сле- дить за тем, нет ли стен в направлении движения (например, когда анимат движется задним ходом). Кроме того, по сути, очень легко прогнозировать моменты отталки- вания от стен, поэтому такие ситуации становятся превосходной проверкой для средств прогнозирования. Оценка полученных результатов Во многих случаях вполне удовлетворительным является подход, в котором во время ведения стрельбы не используется прогнозирование. Таковыми являются слу- чаи, в которых аниматы находятся в тесной близости друг от друга или движутся не- посредственно по линии огня (вперед или назад). Кроме того, в таких случаях очень хорошо действуют средства прогнозирования. После того как расстояние становится достаточно большим, обнаруживается, что аниматы показывают удивительно хорошие способности к прогнозированию, особенно во время стрельбы по другим роботам-аниматам. Прогнозирование становится особенно качественным, если бои ведутся на больших площадях, там, где требуется несколько по- воротов, чтобы можно было начать двигаться в обратном направлении. В таком случае хорошие результаты дает метод оценки скорости противника с использованием сколь- зящего среднего значения. Но при этом больший вес необходимо назначать самым по- следним по времени наблюдениям за скоростью (иными словами, применять получен- ные позже и полученные раньше значения скорости в отношении 80 к 20%). Если два анимата находятся на одном и том же уровне от земли, то прогнозиро- вание движения, по существу, становится одномерным, поскольку для прицелива- ния требуются только повороты влево и вправо. С другой стороны, если аниматы находятся на разных уровнях, то прогнозирование движения приходится осуществ- лять в двухмерном пространстве, поскольку ствол оружия приходится наклонять вверх и вниз и соответственно с этим изменять ракурс изображения на экране. Вполне очевидно, что при этом эффективность прогнозирования снижается. На- пример, проверка показала, что анимат Predictor, бегущий к лестнице, продолжает вести стрельбу на одном и том же уровне, не учитывая того, что противник поднима- ется по лестнице. В этом отношении анимат Colin действует немного лучше, по- скольку фактически он не ведет стрельбу, когда противник направляется к стене. Однако предположения, на основании которых происходит корректировка скорости при обнаружении противниками стен, часто бывают такими же неправильными, как и примитивные оценки! Из приведенного выше описания также следует, что концептуальным ограниче- нием возможностей прогнозирования является то, что прогнозировать можно толь- ко будущее положение движущегося противника. Как оказалось, очень эффектив- ной тактикой, позволяющей избежать поражения от выстрелов бластера; могут стать различные способы уклонения от удара (например, когда анимат в основном остает- ся на одном месте, но быстро передвигается в разные стороны лишь для уклонения от подлетающих снарядов). Однако люди способны разорвать подобные порочные
Глава 16. Физические основы прогнозирования движения 245 циклы, стреляя в одну и ту же точку, поскольку могут достичь понимания ситуации на более высоком уровне (прогнозируя движения противника и во времени, и в про- странстве). Резюме В этой главе приведена информация о том, как должна осуществляться разработ- ка аниматов, способных предсказывать движения противника. > Решение, основанное на использовании физических законов, позволяет вы- числять точку пересечения траектории любого поражающего элемента с тра- екторией движущегося объекта. > Аниматы должны иметь возможность наблюдать за игровыми персонажами для определения их скорости, а также, возможно, ускорения. > Моделирование движений противника с применением метода прямой инте- грации позволяет предсказывать нелинейные траектории. > Роботы-аниматы обнаруживают относительно большую производительность, хотя и не обладают способностями высокого уровня, позволяющими прогно- зировать проявления шаблонов поведения во времени. Указанные выше неудовлетворительные способности аниматов к оценке ситуа- ции не могут быть компенсированы за счет предоставления им возможности лучше учитывать пространственные и временные закономерности. Однако в пылу сраже- ния указанные нюансы часто становятся не столь очевидными, поэтому подобные недостатки аниматов часто могут быть компенсированы за счет других навыков. В следующих двух главах рассматриваются некоторые другие навыки, применяе- мые во время стрельбы. Обучение позволяет решать целый ряд трудных задач и со- вершенствовать навыки владения оружием, присущие аниматам. Однако прежде чем переходить к обсуждению некоторых других навыков стрельбы, необходимо ознако- миться с определенными теоретическими сведениями.

ftataHaus^k Глава 17 Персептроны Персептроны относятся к категории искусст- венных нейронных сетей самого простого типа. Они состоят из параллельно включенных обрабатывающих блоков, созданных по образцу биологических нейронов. Блоки связаны друг с другом с помощью соединений, сигналы по ко- торым передаются с учетом весовых коэффици- ентов. Обычно термином персептрон обозначают нейронные сети, состоящие из одного слоя об- рабатывающих элементов. Поэтому вычисли- тельная сложность персептронов является отно- сительно низкой; они позволяют лишь точно решать линейные задачи или находить прибли- женное линейное решение более сложных задач. Чтобы иметь возможность применить пер- септрон для решения задачи, необходимо соз- дать алгоритм моделирования, который позво- лил бы пропускать входные данные с учетом оп- ределенных критериев через сеть для получения требуемых выходных данных. В играх выходные данные персептрона могут использоваться в ка- честве прогнозируемых данных для некоторой ситуации (например, чтобы можно было иметь возможность определить путем прогноза, будет ли достигнута победа или поражение), для клас- сификации образов (например, чтобы отличать друзей от противников) и для управления телом анимата (например, для выдачи команды повер- нуть налево или направо). В настоящей главе рассматриваются описан- ные ниже темы. В ЭТОЙ ГЛАВЕ- • История создания персептронов • Краткий обзор модели • Моделирование • Вводные сведения об оптимизации • Оптимизация весовых коэффициентов персептрона • Процедура обучения • Графическая интерпретация • Резюме > История коннекционизма как научного направления, основанного на изучении искусственных моделей мозга. > Описание способа представления, приме- няемого для персептронов, включая ин- формацию о том, как формируется сеть между входными и выходными клеммами.
248 Часть III. Моделирование стрельбы > Алгоритм моделирования, используемый для обработки информации и полу- чения результатов. > Обзор методов оптимизации (в которых применяются математические методы для поиска лучшего представления) с наиболее общей точки зрения. > Описание корректировки весовых коэффициентов персептрона как задачи оптимизации, решение которой может применяться для того, чтобы можно было добиться выработки требуемых выходных данных. > Описание алгоритмов обучения персептронов, позволяющих обучать систему на многочисленных примерах правильных сочетаний входных и выходных данных. > Изучение графической модели персептрона в целях обеспечения более глубо- кого понимания функций персептрона. В следующей главе содержится более подходящий для применения на практике материал и показано, как используются персептроны для решения некоторых задач. А в следующем разделе приведено краткое изложение теоретических сведений и да- но несколько простых примеров игр там, где это необходимо. История создания персептронов Безусловно, деятельность основной части сообщества специалистов по искусст- венному интеллекту сосредоточена на таком направлении, как символические рас- суждения, но некоторые исследователи примерно в середине XX столетия приступи- ли к изучению параллельных распределенных вычислений, уделяя особое внимание рассмотрению тех моделей, создание которых стало итогом изучения функциониро- вания нейронов в мозгу биологических существ. В 1943 году Маккалох (McCulloch) и Питтс (Pitts) приступили к экспериментам по созданию упрощенных моделей нервной системы [52]. Персептрон Розенблатта Проблематика изучения нервной системы привлекла внимание широкого сооб- щества специалистов по искусственному интеллекту лишь в 1959 году. В этом году Розенблатт (Rosenblatt) продемонстрировал персептрон [72], моделирующий вос- приятие образов (perception, отсюда его название) в зрительной системе человека. Персептрон оказался способным извлекать зрительные образы из изображений (а в то время указанная задача привлекала значительный интерес). Для ввода ин- формации о наборе характеристик в действующий персептрон со случайно задан- ными весовыми коэффициентами соединений применялось растровое изображение. В свою очередь, указанные наборы характеристик служили для преобразования входных данных в выходные с учетом весовых коэффициентов, в результате чего создавались различные интерпретации входного изображения. После обучения пер- септрона на коллекции примеров растровых изображений, применяемых в сочета- нии с соответствующими им выходными данными, обеспечивалась возможность проводить обучение системы для дальнейшей классификации образов (рис. 17.1).
'balailausfi Глава 17. Персептроны 249 матрица Рис. 17.1. Персептрон Розенблатта, на который подается растровое изображение, способен распознать некоторые характерные черты изображения Для сообщества специалистов по искусственному интеллекту одним из наиболее интересных аспектов Применения персептронов стало доказательство сходимости, полученное Розенблаттом. Согласно этому доказательству, если возможное решение для персептрона существует, то алгоритм обучения должен его найти. Этот результат привлек очень большое внимание специалистов! Адалины Видроу и Хоффа Видроу (Widrow) и Хофф (Hoff) занялись улучшением аппаратных средств ней- ронных сетей и внесли в персептроны много полезных усовершенствований. Осо- бенно важно нововведение, согласно которому сигналы в нейронных сетях могли принимать значения [ -1,1 ], а не обычные значения [0,1]. Это позволяло реали- зовать в каждом из обрабатывающих элементов более перспективные вычислитель- ные свойства; кроме того, в предложенной этими учеными конструкции на нейрон- ную сеть всегда подавались входные сигналы, положительные или отрицательные, поэтому роль весовых коэффициентов еще больше возросла. Но наиболее важной отличительной особенностью сетей Видроу и Хоффа, кото- рые стали называть адалинами (Adaline), оказалось правило обучения. В основу этих сетей легло более надежное с математической точки зрения “дельта-правило” (которое будет рассматриваться ниже в этой главе), благодаря чему появилась воз- можность обучать сети поиску наилучшей из всех возможных аппроксимаций реше- ния задачи, а не просто любого решения. В настоящее время в обучении нейронных сетей наиболее широко используется именно это правило, а не предложенный пер- воначально алгоритм обучения персептрона. Идеи, ставшие результатом изучения биологических объектов Очень часто нейронные сети представляют как модели человеческого мозга, идея создания которых возникла в результате изучения биологических объектов. Безус- ловно, нет сомнения в том, что первоначальный замысел таких сетей возник в ре-
250 Часть III. Моделирование стрельбы зультате нейробиологических исследований, но попытка представить нейронные се- ти как маленькие “мозги”, состоящие из “нейронов”, приводит к принятию многих необоснованных и часто иррациональных предположений. Поэтому возможности методов, основанных на использовании нейронных сетей, остаются непонятыми до конца, а разработчики, пытающиеся ими заниматься, превращаются в мечтателей. Вместо такого подхода в настоящей книге рассматривается компьютерное пред- ставление персептронов, а не биологические нейроны, которые, как некоторые счи- тают, служат в качестве модели для искусственных нейронов. В настоящей главе описаны задачи, попытки решения которых предпринимаются с помощью персеп- тронов, дано описание того, как обеспечивается решение таких задач с помощью персептронов, и приведен анализ того, насколько успешно они работают. Мы долж- ны стремиться к тому, чтобы специалисты в области ИИ и программисты игр опи- рались в своей работе именно на такие научные знания (кроме того, при таком под- ходе сами рассматриваемые проблемы проще поддаются анализу). Краткий обзор модели Персептроны, по существу, состоят из одного ряда параллельно соединенных эле- ментов (этот ряд принято называть слоем). При передаче сигналов между элементами учитываются весовые коэффициенты. Персептрон преобразует множество входных сигналов х = [хх, ..., хп] в один выходной сигнал у. Стрелка над обозначением х показывает, что это — вектор, состоящий из нескольких чисел. Преобразование вход- ных данных в выходные осуществляется с учетом линейных весовых коэффициентов, применяемых к связям, которые соединяют входы с выходами (рис. 17.2). Рис. 17.2. Персептрон с четырьмя входами и одним выходом Может быть предусмотрена поддержка нескольких выходов, у = [ух, . .. ,уп], путем неоднократного применения одного и того же способа формирования выход- ного сигнала. При этом с каждым отдельным выходом может быть связан собственный набор весовых коэффициентов для связей, соединяющих все входы с этим выходом. Все выходные сигналы и весовые коэффициенты должны рассматриваться как незави- симые друг от друга и фактически являются таковыми (но в этом в действительности
Глава 17. Персептроны 251 состоит одно из ограничений персептрона). Поэтому мы можем сосредоточиться на описании сетей с единственным выходом у, что позволяет упростить объяснение. Весовые коэффициенты обозначаются как w = [wo,w!, ...,wn]; весовые ко- эффициенты с индексами от 1 до п относятся к связям с входами, а весовой коэф- фициент с индексом 0, w0=b, ни с чем не связан и представляет смещение (т.е. по- стоянный сдвиг). Смещение может также интерпретироваться как пороговое значе- ние; если смещение складывается с данными, то пороговое значение равно Ь, в про- тивном случае оно равно -Ь. Примечание для программистов Смещение представляет собой постоянный сдвиг. Как таковое, смещение может рассматриваться как отдельное значение, не относящееся к каким-либо из входов. Но на практике зачастую проще включить дополнительный вход, который остается постоянным и равным х0=1, и связать с ним смещение w0. Благодаря этому появляется возможность рассматривать смещение как обычный весовой коэффици- ент, в результате чего код немного упрощается! Нейронные сети применяются уже много лет, и за эти годы разработан широкий набор типов данных для представления входов, выходов и весовых коэффициентов. Возможность использования тех или других типов данных зависит от выбранных мо- делей и создаваемых приложений. Чаще всего применяются двоичные значения или вещественные числа. В персептронах первоначально использовались двоичные значе- ния (0, 1) и для входов, и для выходов, тогда как адалины позволяют задавать отрица- тельные значения входных данных и формируют вещественные значения выходных данных. Весовые коэффициенты чаще всего рассматриваются как изменяющиеся не- прерывно, а не дискретно (т.е. для их представления используются вещественные чис- ла), но выбор конкретного значения точности представления обычно зависит от при- ложения. Как правило, есть весомые основания повсеместно применять непрерывные значения, поскольку они позволяют достичь многих преимуществ, не сталкиваясь при этом с недостатками. Что же касается типа данных, то в настоящей главе мы будем использовать 32-бито- вые числа с плавающей точкой, рискуя вызвать возмущение некоторых педантов, кото- рые требуют придерживаться при создании нейронных сетей традиционного подхода. В действительности, принято использовать 64-битовые числа с плавающей точкой, но в играх связанное с этим удвоение объема расходуемой памяти и увеличение расхода вы- числительных ресурсов почти никогда не оправдывается; числа с плавающей точкой одинарной точности вполне позволяют достичь требуемых результатов! Для повышения качества разрабатываемых персептронов можно ввести более важные усовершенствова- ния, а не просто повышать точность представления весовых коэффициентов (например, многого позволяет добиться пересмотр спецификации входов и выходов, внесение изме- нений в процедуру обучения и т.д.). Ниже приведено краткое изложение сведений из математики, позволяющих объ- яснить ход обработки данных внутри персептрона; эти сведения являются вполне доступными для восприятия (пояснения к уравнениям приведены вместе с этими уравнениями). А в следующей главе описан практический подход, который может стать идеальным дополнением к этому теоретическому описанию.
252 Часть III. Моделирование стрельбы Моделирование Персептроны фактически представляют собой аппроксиматоры функций, обо- значаемые как y=f (х). Процесс моделирования (или вычисления функции f) пре- дусматривает пропускание входного образа х через сеть для получения соответст- вующих выходных данных у. Процесс моделирования осуществляется в два этапа: вычисление результирующей суммы и применение функции активизации. Результирующая сумма На первом этапе происходит вычисление результирующей суммы, которая обо- значается греческой буквой дзета, £. Результирующая сумма представляет собой итог применения операции суммирования (которая обозначается греческой буквой сиг- ма, Е) ко всем входным значениям, умноженным на весовые коэффициенты, соот- ветствующие каждому из входов (xiwj: п п £ = Е wixi = Wo + Е WiXi i=0 i=l Первое выражение, применяемое для вычисления значения £, принято на осно- вании предположения, что первый вход представляет смещение и всегда сохраняет неизменное значение, равное х0 = 1. А во втором выражении смещение w0 показа- но явно (рис. 17.3). Последний вариант позволяет всегда учитывать наличие смеще- ния, о котором мы не должны забывать! Рис. 17.3. Схематическое представление операций, используемых для вычисления значения на выходе персептрона на основе образа, поступающего на вход Вообще говоря, функция, лежащая в основе процесса, позволяющего скомбини- ровать все входные данные с учетом весовых коэффициентов, называется комбина- торной. Теоретически в качестве комбинаторной функции может применяться поч- ти любая функция, но на практике наиболее часто используется функция суммиро- вания. Благодаря этому достигаются многочисленные преимущества с точки зрения обучения, поскольку модель остается несложной.
^aiaHaus,^. Глава 17. Персептроны 253 Активизация После вычисления результирующей суммы £ полученное значение может исполь- зоваться для определения выхода у. Остается только подвергнуть полученное значе- ние обработке с помощью функции активизации, обычно обозначаемой как о (строчная греческая буква сигма): у = о(0 В оригинальном варианте персептрона применялся такой подход, что функция активизации выводила результат с учетом знака результирующей суммы 0 Если знак является положительным, то выходное значение становится равным 1, а выходное значение 0 соответствует отрицательной результирующей сумме: {1 если х>0 п О в противном случае Вообще говоря, целесообразнее всего сохранять полученный результат в виде не- прерывного значения, а не ограничивать его двумя дискретными значениями. Такой подход, главным образом, позволяет использовать непрерывные числа для решения рассматриваемой задачи (например, добиваться плавного управления движением). Но не менее важно то, что при этом упрощается процесс обучения нейронной сети. Является также осуществимым подход, в котором используются оба вида выходных данных, — вычисляется двоичное выходное значение, а на основе результирующей суммы £ проводится обучение. По подобному принципу была организована работа первых вариантов адалин. Дополнительные сведения Для активизации применялись также многие другие гладкие функции. Обычно они представляют со- бой нелинейные функции, соответствующие гладкой кривой, представленной в интервале [0,1]. Безусловно, подобные функции не позволяют добиться значительного преимущества в случае одно- слойных персептронов, но их значение существенно возрастает, если применяется структура с кас- кадным соединением многочисленных персептронов. Дополнительная информация по этой теме приведена в главе 19, “Многослойные персептроны”. Общее описание алгоритма В листинге 17.1 приведен общий набросок алгоритма на псевдокоде. Этот набро- сок является почти таким же, как и фактическая реализация! В нем предполагается наличие двух инициализированных массивов (с входными данными и весовыми ко- эффициентами) и функции активизации. Листинг 17.1. Алгоритм вычисления выходного значения единственного персептрона net_sum = О for all i net_sum += input[i] * weight[i] end for output = activation( net_sum )
254 Часть III. Моделирование стрельбы Выходное значение персептрона часто используется для прогнозирования ре- зультатов вычисления произвольной функции от входных данных. Например, вы- ходные данные могут применяться для оценки допустимости определенного поведе- ния или для выявления того, является ли опасной некоторая ситуация. Более под- робное описание того, как следует использовать полученный результат, приведено ниже в данном разделе. Кроме того, будет показано, как эти результаты могут быть применены на практике. А в данный момент необходимо рассмотреть сведения о том, как провести обучение персептрона, чтобы он обеспечивал правильную ап- проксимацию некоторой функции, независимо от ее назначения. Такая задача мо- жет быть решена путем оптимизации каждого из весовых коэффициентов в сети. Вводные сведения об оптимизации Применение методов оптимизации приводит к получению наилучшего решения определенной задачи. Практический пример Предположим, существует какой-то способ определения того, насколько значи- тельным должен стать ущерб в зависимости от того, в какое место стреляет анимат, Такая задача решается путем моделирования на единоразовой основе. Для этого из- меняется ориентация оружия и производится проверка того, какую часть жизнеспо- собности теряет противник. Каждый полученный результат соответствует одной- единственной точке на двухмерном графе. Если подобный расчет выполняется для многих ориентаций с постоянным ша- гом, то может быть получена относительно гладкая кривая, соединяющая все резуль- тирующие точки (при условии, что отсутствуют ошибки или шум). Такая кривая представляет все наши знания в части математического определения задачи: функ- ции, которая связывает причиненный ущерб с ориентацией оружия. Принято ис- пользовать такую формулировку, что причиненный противнику ущерб d — это функция от ориентации оружия о, причем сама эта функция f неизвестна. Приве- денное определение формально записывается как d = f (о) (рис. 17.4). Следует отметить, что мы пока еще не рассматриваем способ определения ука- занной функции и имеем возможность проверять только результаты, соответствую- щие каким-то конкретным ориентациям (оь о2 и т.д.). Но функция, позволяющая определить зависимость причиненного ущерба от ориентации, действительно пред- ставляет интерес, поскольку с ее помощью можно добиться повышения эффектив- ности действий аниматов! Зная ориентацию оружия, позволяющую причинить наи- больший ущерб, можно повысить эффективность поведения аниматов. Задача поис- ка максимума функции известна как задача максимизации. В данном случае она формулируется как задача поиска ориентации о, при которой ущерб является самым значительным: 6}Vo f(6) > f(o)
^alaHaus^k Глава 17. Персептроны 255 Рис. 17.4. Результаты вычисления причиненного ущерба в за- висимости от ориентации оружия, а также общий вид кри- вой, с помощью которой может быть выполнена интерполя- ция полученных результатов Приведенное выше уравнение означает следующее: оптимальная ориентация о определяется так, что (выражение “так, что” обозначается вертикальной чертой, |) для всех ориентаций о (Vo) ущерб, причиненный в результате выбора ориентации б (т.е. f (о) ), больше или равен ущербу, причиненному в результате выбора ориента- ции о (т.е. f (о)). Тем не менее найти решение этого уравнения не так уж просто. Основная проблема состоит в том, что сама кривая не определена, а известны только конкретные точки, а именно, те точки, для которых ущерб был вычислен путем мо- делирования. Поиск решения по оптимизации с помощью грубой силы Обычно при решении задачи оптимизации используются обозначения у = f (х) (подобные обозначениям, используемым в определении персептрона). Иногда ис- комую функцию называют функцией энергии (и обозначают как Е). Такой способ именования применяется в связи с тем, что возникает аналогия с энергетическими затратами, которые связаны с конкретным значением х. Истоками подобной ана- логии, в основном, являются методы физики, отличительная особенность которых состоит в том, что для многих задач требуется найти не максимальное, а минималь- ное значение энергии. Чтобы определить оптимальное значение х, можно применить грубую силу, про- веряя подряд все значения и отыскивая соответствующее значение у, как показано на рис. 17.5. Тем не менее при использовании такого подхода возникают две указан- ные ниже проблемы.
256 Часть III. Моделирование стрельбы шаги Рис. 17.5. Метод оптимизации с помощью грубой силы, ко- торый предусматривает проверку значений функции через регулярные интервалы; приведенный пример показывает, что максимальное значение пропущено > Подход, основанный на применении грубой силы, часто требует больших за- трат вычислительных ресурсов, особенно если искомая функция является сложной. > В любом случае возможна лишь проверка в отдельных точках кривой (например, с шагом в 0,01 единицы измерения), поэтому наилучшее решение может быть случайно пропущено (например, если для его обнаружения требу- ется шаг 0,005). Вместо этого можно воспользоваться гораздо более эффективными методоло- гиями, заимствованными из математики, физики или даже биологии. Чаще всего применяются методы оптимизации, основанные на использовании отдельных вещественных чисел, но точно такая же теория оптимизации позволяет также оптимизировать векторные представления (обозначаемые как х) с разными размерностями. Таким образом, мы можем не ограничиваться примерами, в кото- рых рассматриваются только такие случаи, когда х = [х], а подставлять в оптими- зируемые выражения произвольные множества чисел, такие что х = [х0, ..., хп]. Числовые методы оптимизации Для решения описанной выше задачи может применяться широкий набор мето- дов, включая дифференциальное исчисление, числовой анализ и стохастические подходы. Большинство указанных методов действует на основе наилучшего возмож- ного предположения, после принятия которого происходит итерационное уточне- ние оценки. Некоторые из используемых методов являются удобными с точки зре- ния их изучения и реализации, а применение других методов невозможно без глубо- кого освоения математического аппарата. Во многих случаях разработчики выбира-
^aiattaus,^. Глава 17. Персептроны 257 ют простейший подход из всех возможных, и обычно такое решение становится вполне оправданным с точки зрения создания игр. В следующих разделах приведен краткий обзор наиболее часто применяемых методов. Ниже описаны методы, которые могут использоваться для поиска оптимальных значений, независимо от того, являются ли такие значения минимальными или максимальными. Применяемая теория в обоих случаях является одинаковой, хотя и следует учитывать, что общепринятая терминология сосредоточивается на решении задач минимизации. Но, так или иначе, независимо от того, идет ли речь о поиске максимума или минимума, рассматриваемая при этом задача обычно упоминается под общим названием как задача оптимизации. В некоторых случаях поиск решения задачи оптимизации требует учета некоторых ограничений. Это означает, что в про- цессе решения должны соблюдаться определенные условия, распространяемые на значения параметров (например, согласно которым х или у не должны выходить за пределы некоторого диапазона). Тем не менее в настоящей главе, в основном, рас- сматриваются задачи, для которых не предусмотрены подобные ограничения, по- скольку такие задачи встречаются более часто, а методы, предназначенные для их решения, могут применяться при обучении персептронов. Метод наискорейшего спуска В методе наискорейшего спуска для поиска такого решения х, при котором f (х) становится глобальным минимумом (т.е. для поиска самой нижней точки кривой), применяется информация о наклоне касательной к кривой рассматриваемой функ- ции. По существу, процесс решения задачи оптимизации по методу наискорейшего спуска является итерационным; оценки текущего значения х корректируются с применением пошагового приращения. Начнем с первой оценки х0 и будем продолжать до тех пор, пока (п+1) -й про- гноз значения хп не станет достаточно приемлемым. Решение о прекращении про- цесса итерационного расчета может быть принято с помощью количественного ме- тода, основанного на вычислении величины изменения оценки, |xi+1-Xi| < е. Греческой буквой эпсилон, е, обозначается небольшая величина, используемая в ка- честве порогового значения при сравнении разности между последовательными оценками. Если процесс вычисления допускает возможность поиска минимума пу- тем проверки этого неравенства, то такой процесс называется сходящимся. Обычно первоначальное предполагаемое значение х0 определяется случайным образом. Для уточнения любой оценки хА и получения новой, xi+1, берется шаг Дхь который складывается с текущим значением (Д — это прописная греческая буква дельта): Xi+1 = Xi + Axi Для определения значения, полученного на определенном шаге, необходимо знать градиент функции. Визуально можно представить градиент как наклон кривой функции f в точке xi5 как показано на рис. 17.6. С применением математических обозначений градиент записывается как V f (х^).
258 Часть III. Моделирование стрельбы Рис. 17.6. Последовательные итерации метода наискорейшего спуска, которые показывают, как происходит улучшение оценок до тех пор, пока процесс не сходится к глобальному минимуму Для чего же требуется градиент? Может быть принято предположение, что, сле- дуя по тому пути, куда направлен наклон кривой, можно достичь более низкой точ- ки, а в конечном итоге — самой низкой точки, т.е. точки, в которой процесс итера- ции сходится. По существу, градиент функции в конкретной точке хА используется для корректировки оценки, предназначенной для получения очередного значения, xi+1, в правильном направлении. Xi+i <- Xi - T|Vf(xi) В приведенной выше формуле второй член выражения, T|Vf (х±), вычитается из первого, поскольку желательно, чтобы движение происходило в направлении, про- тивоположном градиенту, а именно, в сторону минимума. В этом уравнении оста- лось описать еще один коэффициент, который встретился нам впервые, — коэффи- циент, обозначенный греческой буквой эта, Т|. В работах по искусственному интел- лекту коэффициент Т|, который используется для масштабирования шага, выпол- няемого в каждой итерации, принято называть скоростью обучения (learning rate). Тем не менее применение данного термина приводит к путанице, поскольку от па- раметра скорости обучения фактически не зависит то, насколько быстро может быть получен желаемый результат! Из того, что используемые значения Т| будут больши- ми, следует, что каждый раз будут применяться крупные значения шага; это вполне допустимо, если функция является простой, и приводит к ускорению сходимости. С другой стороны, применение меньших значений Т| влечет за собой то, что выпол- няемые шаги будут мельче, поэтому меньше становится вероятность того, что реше- ние будет пропущено, но для достижения сходимости потребуется больше итераций. А на рис. 17.7 показаны графики, подчеркивающие важность правильного выбо- ра шага. Если применяемое значение скорости обучения слишком велико или слишком мало, то возникают проблемы двух разных типов (соответственно, беспо-
^ataHaus,^. Глава 17. Персептроны 259 рядочные колебания и медленная сходимость). Появление обеих этих проблем явля- ется нежелательным, поскольку исключает возможность быстро найти оптимальное значение. Лс. 17.7. Проблемы, обусловленные неправильным выбором значения скорости обу- чения; нолевом рисунке показано, что при малом значении сходимость становится медленной, а на правом рисунке демонстрируется возникновение колебаний Итак, очевидно, что правильный выбор значения скорости обучения т| оказывает чрезвычайно важное влияние на весь процесс. Более того, не существует такого зна- чения, которое было бы идеальным для всех задач; скорость обучения необходимо каждый раз выбирать отдельно, учитывая характер функции. К сожалению, для этого требуется либо проводить эксперименты, связанные со значительными затра- тами времени, либо обеспечивать сбор необходимых результатов с помощью отдель- ного сценария. Локальные минимумы Решая задачу оптимизации, необходимо учитывать еще один нюанс, связанный с тем, что иногда обнаруженные минимальные значения не являются глобально ми- нимальными, поэтому необходимо найти способ, позволяющий отличать друг от друга локальные и глобальные минимумы. Локальный минимум представляет собой наименьшее значение среди всех окружающих его значений, но наличие локального минимума не исключает того, что где-то может существовать еще меньшее значе- ние — глобальный минимум. Для алгоритмов оптимизации способность находить глобальный минимум является самым важным свойством, и в процессе решения за- дачи оптимизации для обнаружения глобального минимума (и подтверждения того, что он действительно является таковым) часто приходится предпринимать колос- сальные усилия. Метод наискорейшего (или градиентного) спуска не позволяет определить, что обнаруженный минимум является локальным, и продолжить спуск в поисках гло- бального минимума. Это связано с тем, что указанный метод не дает возможности различать минимумы этих двух типов. Процесс градиентного спуска сходится столь же успешно к локальным минимумам, как и к глобальному минимуму, поскольку и в том, и в другом случае применяются последовательные оценки приращения одина-
260 Часть III. Моделирование стрельбы кового типа (т.е. применяется критерий, согласно которому значения после сле- дующего шага не должны отличаться больше чем на е друг от друга), а после обнару- жения указанной ситуации активизируется условие останова (рис. 17.8). При этом невозможно определить, является ли найденное решение подходящим, до тех пор, пока не будет получено еще одно решение. Поэтому как наилучшее рассматривается любое решение, обнаруженное до сих пор. Рис. 17.8. Более сложная функция с несколькими ло- кальными минимумами, но только с одним глобаль- ным минимумом; процесс поиска минимума в каж- дом случае сходится Обычно функции имеют намного более сложный график, по сравнению с приве- денными на рис. 17.4—17.8 (с одним или несколькими минимумами или максиму- мами), поэтому при решении реальных задач приходится сталкиваться с еще более сложными ситуациями. Положение еще больше усложняется в связи с тем, что в за- висимости от формы кривых могут возникать проблемы колебаний и медленной сходимости. Очевидно, что для успешного применения алгоритмов ИИ требуются решения, более близкие к оптимальным, и этим обусловлено стремление к поиску более мощных и надежных методов. Но, как показано ниже, с проблемами прихо- дится сталкиваться даже при использовании наиболее развитых методов. Ввод в действие понятия момента инерции Для усовершенствования алгоритмов оптимизации необходимо найти простой метод, позволяющий исключить возможность преждевременного достижения схо- димости и уменьшить вероятность останова после обнаружения локальных мини- мумов. Одним из таких методов является метод, основанный на использовании по- нятия момента инерции. Применение момента инерции позволяет уменьшить веро- ятность преждевременного достижения сходимости, благодаря тому что этот метод предусматривает использование своего рода краткосрочной хронологии событий при принятии решения о выборе следующего шага. По существу, этот метод преду- сматривает масштабирование значения предыдущего шага Axi-i с применением ко-
^aiaHaus,^. Глава 17. Персептроны 261 эффициента а (греческая буква альфа) и сложение полученного значения со значе- нием шага, обычно применяемого в методе наискорейшего спуска (этот подход про- тивоположен подходу с использованием градиента, связанного со скоростью обуче- ния, -T|Vf (Xi)). Axi <— cxAxi-i - T]Vf(xi) Метод с использованием момента инерции основан на том важном наблюдении, что шаги, изменяющиеся от одной итерации к другой, могут принимать значения, совер- шенно не подходящие д ля решения рассматриваемой задачи оптимизации. Причиной этого может стать то, что градиенты часто изменяются, особенно если значения шага ве- лики или функция является сложной. Ввод в действие поправки в виде момента инерции позволяет немного сглаживать разброс значений шага и учитывать обнаруженные рань- ше тенденции для более успешного выбора следующего шага (рис. 17.9). Рис. 17.9. Использование момента инерции для пре- одоления локальных минимумов и устранения слишком сильного разброса в значениях шага для предотвраще- ния колебаний в тех областях, где наблюдаются зна- чительные изменения в графике функции Процесс поиска глобального минимума на основе понятия момента инерции можно условно представить себе как скатывание шарика с верхней точки рельефной поверхности. В ходе движения вниз скорость шарика возрастает вплоть до того мо- мента, как он достигнет впадины, но физический момент инерции выносит шарик далеко за пределы противоположной стороны впадины. Если обнаруживаемый при этом гребень впадины является относительно низким (минимум — локальный), то момент инерции поднимает шарик так, что он переваливает через гребень и отправ- ляется в более глубокую впадину (а этот минимум — глобальный). Применение та- кого метода приводит к обнаружению лучших решений. Моделирование отжига Метод моделирования отжига представляет собой еще один простой и относитель- но эффективный метод поиска решения задачи оптимизации. В отличие от предыду- щих методов, в этом методе не учитываются градиенты, хотя на практике для повыше- ния эффективности метода может использоваться информация о наклоне кривой.
262 Часть III. Моделирование стрельбы Метод моделирования отжига разработан по аналогии с физическим процессом, который происходит в структуре металла во время медленного охлаждения (в ходе этого кристаллическая решетка металла принимает форму, характеризующуюся на- личием в ней минимального запаса энергии). Этот процесс называется отжигом, а его моделирование позволяет решать задачи оптимизации; отсюда и название ме- тода — моделирование отжига. Концептуально этот метод основан на случайном выборе. Дело в том, что в про- цессе решения задачи оптимизации выбор следующей итерации всегда остается не обоснованным до конца (поскольку глобальный минимум пока еще остается неиз- вестным). При этом такое положение сохраняется независимо от того, насколько хорошо изучена нами функция к текущему моменту (поскольку решение еще не найдено). Так почему бы не ввести сознательно в этот процесс элемент случайности, чтобы избавиться от проблем обоснованного выбора значения следующего шага? В методе моделирования отжига такая задача решается с помощью механизма слу- чайной выработки следующего шага, который стохастически выбирает новую оцен- ку в окрестностях текущей оценки. Применяемый механизм случайной выработки следующего шага зависит от типа оптимизируемых переменных, поскольку для ус- пешной выработки оценок в окрестности необходимо обладать знаниями об исполь- зуемом представлении. В случае применения вещественных чисел такая выработка оценок может осуществляться с применением случайных смещений (т.е. путем сум- мирования текущего значения и небольшого приращения). При отжиге металла температура уменьшается вначале относительно быстро, а затем относительно медленно. Так же происходит изменение шага в методе моде- лирования отжига. Если новая оценка шага лучше, то всегда используется именно она, а не текущая оценка. С другой стороны, если применение новой оценки приво- дит к худшим результатам, то решение о том, следует ли ее использовать, принима- ется с учетом температуры. В методе моделирования отжига температурой называет- ся величина, обозначаемая как т, от которой зависит вероятность р принятия поло- жительного изменения Af в функции f при осуществлении новой оценки: Af р = exp(-j^f) Приведенное выше уравнение известно под названием распределения Больцмана. В этом уравнении к представляет собой константу, позволяющую изменять масштаб представления температуры. Процедуру постепенного снижения температуры при- нято называть графиком охлаждения. На практике применение алгоритма моделиро- вания отжига начинается с очень высоких значений температуры, которые посте- пенно снижаются. Теория, лежащая в основе метода моделирования отжига, пока- зывает, что процесс оптимизации в ходе снижения температуры должен достичь глобального минимума (рис. 17.10). Метод моделирования отжига имеет ряд преимуществ и недостатков; в некоторых случаях этот метод может действовать успешно при оптимизации функций, но в других случаях он может характеризоваться чрезвычайно низким быстродействием, которое обусловлено стохастическим характером данного метода. Одним из наиболее существен- ных критических замечаний в адрес метода моделирования отжига является то, что он по существу представляет собой жадный метод восхождения к вершине (т.е. принимающий первое же из наиболее подходящих значений), при котором вероятность р = 0 (иными
^iatattaus^ Глава 17. Персептроны 263 словами, в методе моделирования отжига всегда выбираются лучшие из соседних значе- ний). Учитывая указанные недостатки, можно понять, почему так важен правильный выбор графика охлаждения и по каким причинам до сих пор моделирование отжига ос- тается областью, в которой могут преуспеть лишь специалисты, познавшие некоторые скрытые от посторонних закономерности. Рис. 17.10. Отображение хода процесса оптимизации на двухмерной плоскости при использовании моделирования отжига; вначале выполняются крупные шаги, а затем, по мере снижения температуры, шаги уменьшаются Оптимизация весовых коэффициентов персептрона После изучения описанных выше методов оптимизации мы должны разобраться в том, как эти методы могут применяться для обучения персептронов, в частности, для определения таких значений весовых коэффициентов, которые позволяют полу- чить требуемые результаты. При решении указанной задачи каждый раз приходится искать другой подход. С теоретической точки зрения, нам даны конкретные входные значения ^х(к) и требуется получить соответствующие им намеченные выходные значения у (к) = t; в этом состоит формулировка задачи оптимизации. В компьютерных играх д ля получения требуемых выходных данных может при- меняться много разных способов. Процедура получения требуемых результатов мо- жет быть спроектирована экспертом (обучение), смоделирована на основе изучения поведения человека (имитация), вычислена с помощью другого компонента систе- мы ИИ (автоматизированное обучение) или основана на ранее полученных резуль- татах (накопление опыта). Процесс формирования желаемой реакции рассматрива- ется более подробно в главе 35, “Проектирование обучающихся средств ИИ”. Оптимизация работы персептронов, как и решение других задач оптимизации, представляет собой процесс выбора наиболее оправданных предположений. В слу- чае персептрона требуется найти наиболее подходящее множество весовых коэффи-
264 Часть III. Моделирование стрельбы циентов, а сами весовые коэффициенты применяются для вычисления выходного значения персептрона. Сравнивая фактическое выходное значение с желаемым вы- ходным значением, мы можем определить величину рассогласования. После этого в условиях применения данной конкретной сети вычисляется новая оценка значений весовых коэффициентов, которая приводит к получению меньшего рассогласова- ния. Корректировка значений весовых коэффициентов осуществляется с помощью дельта-правила. Общее описание дельта-правила Для корректировки значений весовых коэффициентов чаще всего используется дельта-правило. Ниже приведены основные соображения, лежащие в основе приме- нения дельта-правила. > Каждый весовой коэффициент вносит свой вклад в формирование выходного значения. > Значимость этого вклада зависит от входного значения. > Рассогласование между действительным и требуемым значениями выхода мо- жет быть устранено путем корректировки весовых коэффициентов. Для уменьшения рассогласования требуется проводить настройку выходного зна- чения так, чтобы оно приближалось к идеальному. Д ля этого можно использовать спо- соб, основанный на внесении множества небольших поправок в значения весовых ко- эффициентов (поскольку входные значения нам неподвластны). Поправки могут рас- пределяться пропорционально вкладу отдельных весовых коэффициентов; чем больше вклад весового коэффициента в погрешность, тем больше поправка! Закончив это неформальное объяснение основ метода, перейдем к изучению практически применимого подхода. Прежде всего отметим, что с использованием разности между фактическим выходным значением у и желаемым выходным значе- нием t можно вычислить относительную погрешность Е. Применяемая для этого функция известна под названием функции ошибок, которая обычно принимает 1 форму Е = 2 (t-y)2. Такая форма функции основана на использовании выражения для так называемой минимальной среднеквадратичной ошибки (Least Mean Square — LMS). Из того, что используется квадрат разности t-y, следует, что по- грешность может иметь одну и ту же величину, независимо от того, является ли вы- ходное значение слишком большим или слишком малым. В идеале погрешность должна достичь нуля, а назначение алгоритма обучения состоит в том, чтобы дос- тичь как можно более низкого значения погрешности. Некоторые теоретические сведения Выражение для минимальной среднеквадратичной ошибки имеет несколько других полезных свойств, включая то, что это выражение можно легко вывести теоретически (т.е. найти соответст- вующий ему коэффициент прироста). Такая возможность является чрезвычайно удобной, поскольку открывает возможность определения градиента функции ошибок. В действительности, из этого сле- дует, что методы оптимизации, основанные на применении формул для градиентов, являются прак- тически применимыми.
Nalattausl Глава 17. Персептроны 265 Таким образом, появляется возможность вычислить градиент изменения погреш- ности, соответствующий каждому из весовых коэффициентов. Такое значение гради- ента выражается в виде отношения 3E/dwi5 которое расшифровывается как “градиент погрешности Е по отношению к весовому коэффициенту w±”. Символ Э — не грече- ская буква, а обозначение частной производной (т.е. производной некоторой пере- менной, определяемой изменением другой переменной). В данном случае выражение для частной производной позволяет упростить выражение погрешности t-y, взятое со своим знаком, к которому применяется х± как коэффициент масштабирования, опре- деляемый входными данными, с обратным знаком (рис. 17.11): Эе Т— = -Xi(t - у) aWi Рис. 17.11. Корректировка весовых коэффициентов персеп- трона с учетом величины погрешности выходного значения, пропорциональной входным значениям В дальнейшем для корректировки весовых коэффициентов можно воспользоваться любым методом, в котором учитываются градиенты, например, методом наискорей- шего спуска. Шаг Awi5 который применяется для корректировки каждого весового ко- эффициента, представляет собой разницу между желаемым выходным значением и фактическим выходным значением, (t-y), умноженную на входное значение х±: 4 Эе Awi = -Т]^- = n^i(t - у) И в этом случае греческая буква эта, т|, представляет собой небольшую констан- ту, известную как скорость обучения. Формальное обоснование В данном подразделе главы приведено обоснование метода, применяемого при вычислении градиента ЭЕ/dwi для каждого весового коэффициента. Читатели, кото- рых не интересует это обоснование, могут перейти к странице, которая следует за последним абзацем настоящего подраздела. Безусловно, ознакомление с изложен-
266 Часть III. Моделирование стрельбы ными здесь краткими сведениями действительно предоставляет возможность ус- пешно осваивать более совершенные методы оптимизации (описанные в теоретиче- ских статьях), но фактически не требуется для реализации кода! Приведенное обос- нование опирается на дифференциальное исчисление. Отметим, что погрешность зависит только от результирующей суммы £. Это оз- начает, что может быть применено следующее цепное правило: Эе _ Эе Э£ dwi Э£ dwi В приведенной выше формуле градиент погрешности, связанной с каждым весо- вым коэффициентом, определяется как градиент погрешности, связанной с резуль- тирующей суммой Эе/Э£, умноженный на градиент результирующей суммы, свя- занной с весовым коэффициентом Э^/dwi. Отметим, что £ = ^WiX^ это означает, что существует возможность значительно упростить второй терм в правой части, по- скольку весовые коэффициенты независимы друг от друга: ЭУ WiXi Э£ _ dwi dwi X1 Теперь перейдем к изучению первого терма правой части. Результирующая сумма представляет собой выходное значение у до применения функции активизации а, поэтому градиент может быть представлен иначе (с использованием производной функции ошибок): Эе Эе Эу Э£ ” Эу ЭС Поскольку в большинстве персептронов со времени создания адалин использует- ся тождественная функция активизации, такая как а (£) = £, имеет место соотно- шение о' (£) = 1. Из этого следует такое выражение: Эе = -X1(t-yl Итак, возможность применения описанного выше метода полностью обоснова- на. Градиент погрешности, связанный с каждым весовым коэффициентом, пред- ставляет собой просто обратную величину входного значения, умноженного на от- носительную погрешность, -Xi(t-y). Это выражение может использоваться для корректировки весовых коэффициентов с помощью одного из многих градиентных методов, описанных выше в данной главе (обычно корректировка шага осуществля- ется в направлении, противоположном изменению градиента). Полученный результат в поразительной степени соответствует интуитивным представлениям. Если требуется откорректировать выходное значение персептрона, соответствующее какому-то конкретному входному значению, достаточно лишь вве- сти необходимые корректировки в весовые коэффициенты персептрона. Каждый весовой коэффициент должен быть откорректирован так, чтобы он вносил должный вклад в целевое значение, используя величину погрешности (t-y). Но вклад дан- ного весового коэффициента зависит от величины относящегося к нему входного
NalaHautfiik Глава 17. Персептроны 267 значения, поэтому относящееся к этому весовому коэффициенту рассогласование (t-y) может масштабироваться на величину хь чтобы учитывалось влияние по- грешности только на соответствующие весовые коэффициенты. А если для масшта- бирования применяется также величина скорости обучения, выбираемая в интерва- ле [ 0,1 ], то обучение становится еще более эффективным. Процедура обучения Процедура обучения сводится к тому, что для получения требуемой нейронной сети осуществляется оптимизация весовых коэффициентов. По существу, цель про- цедуры обучения состоит в удовлетворении целевой функции. Целевая функция оп- ределяет качество сети на основании метрики высокого уровня. При этом либо из- меряется производительность на многочисленных примерах, либо просто осуществ- ляется сравнение суммарных корректировок весовых коэффициентов с некоторым пороговым значением. Целевая функция, в основном, применяется для определения того, закончен ли процесс обучения. Наборы данных Для обучения персептрона требуются примеры данных, а именно, существующая коллекция входных данных, которым соответствуют желаемые выходные данные. Каждый из таких парных наборов входных и выходных данных называется выборкой и представляет собой отдельный учебный пример. Такие выборки, вместе взятые, формируют набор данных. Как правило, для обучения используются не все наборы данных; выборки подраз- деляются на два или три подмножества. Д ля обучения применяется одно из таких под- множеств. Благодаря этому обеспечивается возможность использовать два оставшихся подмножества для аттестации (контроля результатов обучения в целях дополнитель- ного усовершенствования создаваемого продукта) и проверки (окончательного анали- за результатов создания сети). Тем не менее, однослойные персептроны являются до- вольно несложными, поэтому применение такого количества наборов данных требует- ся далеко не всегда, но при решении более сложных задач указанный метод обучения вполне себя оправдывает. Дополнительная информация Вообще говоря, с задачей управления наборами данных в области распознавания образов приходится стал- киваться исключительно часто. Персептроны могут также использоваться для классификации и распозна- вания характеристик, но при этом не требуется принимать какие-либо меры по разбиению набора данных (поскольку при этом процесс обработки входных данных всегда сходится). В главе 26, “Деревья классификации и регрессии”, процедура обработки наборов данных описана более подробно. Алгоритмы обучения В процессе обучения персептрона обычно происходит корректировка сразу всех весовых коэффициентов с использованием методов оптимизации, представленных в данной главе. Основное различие между алгоритмами обучения заключается в том,
268 Часть III. Моделирование стрельбы как обрабатываются выборки. В этой области применяются два разных подхода, ко- торые описаны ниже. > Каждый учебный пример может рассматриваться отдельно от другого, а само обу- чение сети осуществляется последовательно. После обработки каждой очередной выборки происходит обновление значений весовых коэффициентов сети. > Все выборки рассматриваются как один пакет. Весовые коэффициенты об- новляются только после обработки всего набора данных. Такой этап обработ- ки общего набора выборок принято называть эпохой (сравнивая производи- тельность различных алгоритмов обучения, указывают, какая эпоха обучения была до этого проведена). Независимо от применяемого подхода, целью процесса обучения является коррек-, тировка весовых коэффициентов в сторону ближайшей оптимальной конфигурации, для того чтобы сеть во время ее аттестации проявила себя наилучшим образом. Обучение персептрона В основе алгоритма обучения персептрона лежит инкрементный подход, но для достижения наилучшей сходимости используется информация о градиенте (листинг 17.2). Рассмотрим, как можно решить задачу обучения персептрона с помощью ме- тода наискорейшего спуска, в котором вычисляется необходимая корректировка Awi для каждого весового коэффициента Wj.: Эе Awi = -Т]^- = Л (t - У) Xi Wi <— Wi + Awi В этом уравнении выражается необходимая корректировка весового коэффици- ента в терминах коэффициента обучения л; погрешности в выходных данных, изме- ряемой разностью между фактическим выходным значением у и желаемым, целе- вым выходным значением t; а также текущего входного значения хь Скорость обу- чения т| представляет собой небольшую константу, которую обычно инженер по средствам ИИ выбирает в соответствии с описанием градиентных методов. Фор- мально этот коэффициент определяет градиентный спуск на поверхности, форми- руемой функцией ошибок. Листинг 172. Алгоритм обучения персептрона initialize weights randomly while the objective function is unsatisfied for each sample simulate the perceptron if result is invalid for all inputs i delta = desired - output -weights[i] += learning_rate * delta * inputs[i] end for end if end for end while
^atatiaus^i Глава 17. Персептроны 269 Проверка применимости полученного результата обычно осуществляется на ос- нове булевой логики. Входные и выходные данные также обычно задаются равными О или 1. В качестве любопытной подробности следует отметить, что для обновления весовых коэффициентов сети используются только неправильно классифицирован- ные образы. Дельта-правило Дельта-правило — это уравнение, выражающее градиент погрешности, связан- ной с каждым весовым коэффициентом, но по имени этого правила назван также алгоритм обучения (листинг 17.3). (Следует также отметить, что дельта-правило ле- жит в основе описанного выше решения.) Еще раз подчеркнем, что пакетный под- ход предусматривает обработку всех обучающих выборок, и только после этого про- изводится обновление весовых коэффициентов. Листинг 17.3. Дельта-правило, применяемое в качестве пакетного алгоритма обучения while termination condition is not verified reset steps array to 0 for each training sample compute the output of the perceptron for each weight i delta = desired - output steps[i] += delta * inputs[i] end for end for for each weight i weights[i] += learning_rate * steps[i] end for end while С точки зрения математики применение дельта-правила соответствует градиент- ному спуску по поверхности квадратических ошибок, но на практике это означает, что минимизация погрешности осуществляется глобально для всего набора данных, и можно доказать, что это действительно так и происходит! Всегда достигается наи- лучший результат, поэтому не требуется никакая аттестация. Общие выводы Персептроны представляют собой чрезвычайно простое средство моделирова- ния, обеспечивающее решение линейных задач. Кроме того, предусмотрены очень несложные и эффективные методы их обучения. Наиболее широко применяемыми методами являются алгоритм обучения персептрона и пакетное дельта-правило. Было доказано, что оба метода позволяют находить решения, если они сущест- вуют, при условии, что задана достаточно небольшая скорость обучения т]. При ис- пользовании алгоритма обучения персептрона остается лишь следить за тем, чтобы все двоичные значения выходных данных были правильными. С другой стороны, применение дельта-правила позволяет минимизировать ошибку по всем обучаю- щимся выборкам в непрерывном пространстве. Это позволяет гарантировать, что глобальный минимум будет единственным и что процесс обучения будет сходиться (при условии применения подходящего значения Т|). Благодаря этому достигаются
270 Часть III. Моделирование стрельбы многочисленные преимущества, включая возможность справляться с шумом и обес- печивать хорошую аппроксимацию для нелинейных функций. Таким образом, при любой возможности следует выбирать вариант, предусматри- вающий использование дельта-правила в пакетном режиме. Для этого необходимо вы- полнить основное требование, состоящее в том, что должны быть в наличии все набо- ры данных, необходимые для обучения (например, журнал, в котором зарегистрирова- ны данные о победах и поражениях в игре). Если указанное условие не может быть вы- полнено и обучение персептрона должно осуществляться на основе потока входящих выборок данных, то единственная возможность состоит в использовании инкремент- ного обучения (например, обучения тактике на основе опыта, полученного в течение игры). Еще раз отметим, что достаточно применить лишь простое приложение дельта- правила; в этом случае может помочь исключение правильно классифицированных выборок по мере обучения персептрона для предотвращения искажения результатов в пользу выборок, применявшихся в обучении в последнюю очередь. Графическая интерпретация Рассмотрим конкретный пример, позволяющий лучше разобраться в том, какие операции осуществляются внутри самого персептрона. В двухмерном пространстве линейная функция представляет собой всего лишь прямую линию. А уравнение пер- септрона также фактически имеет форму (а+Ьхх+схг), которая соответствует ли- нейной функции. С другой стороны, произведение весового коэффициента и вход- ного значения аналогично точечному произведению. В двухмерном пространстве точечное произведение позволяет определить расстояние от точки до прямой со зна- ком; знак результата показывает положение точки по отношению к прямой, а абсо- лютное значение представляет расстояние (рис. 17.12). Определение весовых коэффициентов Положительные примеры Поверхность решений ООО Определение смещения ;---Определение поверхности I X. Отрицательные 1 примеры Рис. 17.12. Визуальное представление поверхности решений персептрона на примере прямой, заданной в двухмерном пространстве Из этого следует, что применительно к предсказанию значения функции выход- ное значение персептрона представляет собой величину расстояния от точки, обо- значающей входные данные, до прямой, задающей уравнение персептрона. Если
Глава 17. Персептроны 271 используются двоичные выходные значения, то персептрон указывает, с какой сто- роне от прямой находится выборка входных данных. Таким образом, процесс обучения сводится исключительно к поиску правиль- ного положения прямой в пространстве. Для достижения этой цели с помощью дельта-правила осуществляется корректировка весового коэффициента каждой из прямых (иными словами, корректировка их ориентации на плоскости). А смещение позволяет изменить положение прямой относительно начала координат. Если бы можно было нанести все данные на двухмерный график, то появилась бы возмож- ность найти решение визуально. Искомой прямой является такая прямая, которая минимизирует ошибки классификации. Таким образом, в двухмерном пространстве применяется простая трактовка уравнения персептрона как прямой на плоскости. В трехмерном пространстве урав- нение персептрона соответствует плоскости, разделяющей образы. Для п измерений эта теория обобщается на основе применения понятия гиперплоскости. Безусловно, такой математический объект труднее представить, чем трехмерный или двухмер- ный, но процесс поиска оптимального решения является столь же простым. Резюме Практика показала, что задача создания и обучения персептронов является чрез- вычайно простой, но при использовании персептронов необходимо учитывать при- веденные ниже соображения. > В основе внутреннего представления персептрона лежит массив чисел с пла- вающей точкой, который содержит весовые коэффициенты, применяемые к входным данным. > Для вычисления выходного значения входные данные масштабируются с ис- пользованием весовых коэффициентов и суммируются, после чего к ним применяется функция активизации. > Обучение осуществляется путем пошаговой корректировки весовых коэффи- циентов;, при этом выбирается значение шага, позволяющее свести ошибку к минимуму. > Персептрон как средство моделирования имеет некоторые серьезные ограни- чения. Особенно важным ограничением является то, что он позволяет решать только линейные задачи. Тем не менее во многих случаях персептрон может оказаться более чем приемлемым, если обеспечиваемая с его помощью ап- проксимация является удовлетворительной. > Доказано, что процесс применения дельта-правила в пакетном режиме схо- дится к глобальному минимуму, а инкрементное обучение персептрона позво- ляет найти правильное решение, если оно существует. > Идеальная скорость обучения зависит от задачи, но наиболее безопасный ва- риант состоит в том, чтобы применяемое значение скорости обучения было небольшим (например, 0,1).
272 Часть III. Моделирование стрельбы > Учитывая возможность использования персептронов, а не более сложных нейронных сетей, так и следует поступать (даже если для этого нужно пойти на упрощение модели). Персептроны невероятно успешно справляются с за- дачей линейной аппроксимации, для решения которой они приспособлены в наибольшей степени. В следующей главе показано, как можно использовать персептроны для улучше- ния способностей к прицеливанию. Нейронные сети обеспечивают более плавное управление движением и исключают возможность возникновения таких ошибок прицеливания, при которых точка попадания оказывается спереди или сзади от движущейся цели. В главе 19, “Многослойные персептроны”, продолжается изло- жение теоретических сведений на основе описания, приведенного в настоящей гла- ве; в ней рассматриваются многослойные персептроны, которые обладают более широкими потенциальными возможностями, но отличаются большей сложностью. Практическая демонстрационная версия Major Pain — это анимат, в котором используется очень простой персептрон для обучения тому, ко- гда нужно стрелять. Условиями открытия огня является наличие противника и готового к бою ору- жия. Персептрон обучается применению простой операции and к двум входным значениям (а эта за- дача является линейной). Демонстрационную версию и краткий обзор архитектуры средств ИИ мож- но найти по адресу http: / /AiGameDev. сот/. Там же имеется прокомментированный исходный код, хотя в следующей главе проект модуля персептрона рассматривается более подробно.
^latattausil Глава 18 Устранение ошибок ПРИЦЕЛИВАНИЯ В ЭТОЙ ГЛАВЕ- • Момент инерции и трение • Устранение ошибок • Оценка полученных результатов • Резюме В предыдущей главе рассматривался определен- ный тип нейронных сетей, известный под на- званием персептронов. Персептроны позволяют решать простые задачи с помощью средств линей- ной аппроксимации. А в настоящей главе в качест- ве одного из приложений теории персептронов рассматривается применение персептронов для усовершенствования способностей к стрельбе. Аналогичные возможности можно было бы проде- монстрировать на примере многих других задач, но данная глава посвящена описанию реалистичных и вместе с тем эффективных средств прицеливания. Для решения этой задачи необходимо применить методы, которые по самому своему замыслу допус- кают линейную аппроксимацию. В отдельных разделах настоящей главы рас- сматриваются описанные ниже задачи, связан- ные с обеспечением прицеливания. При этом в первую очередь предусматривается достижение реалистичности и лишь затем эффективности. > Один из персептронов применяется для обеспечения реалистичности процесса прицеливания путем сглаживая движений. При этом моделируются трение и момент инерции (связанные с перемещением мы- ши). Персептрон обеспечивает для анимата быструю линейную аппроксимацию оши- бок прицеливания, обусловленных трени- ем и моментом инерции. > Для устранения возникающих неточностей еще один персептрон применяется для ре- шения обратной задачи по методу проб и ошибок. Средства ИИ собирают информа- цию в оперативном режиме и переобучают персептрон сх «умствующим образом.
274 Часть III. Моделирование стрельбы К завершению данной главы будут созданы аниматы, допускающие правдопо- добные ошибки прицеливания, но вместе с тем корректирующие углы поворота, чтобы можно было принять эти ошибки в расчет. Благодаря этому достигается иде- альный компромисс между реалистичностью и эффективностью во время стрельбы (с применением настраиваемых параметров определения навыков стрельбы). Момент инерции и трение В то время как игрок-человек наводит оружие на цель с помощью мыши, при боль- ших углах поворота из-за момента инерции вид игры на экране обычно изменяется с уче- том большего поворота, чем он ожидает. С другой стороны, при малых углах поворота из- за трения происходит замедление вращения ствола оружия. Поэтому, если требуются ли- бо малые, либо большие изменения во внешнем представлении игровой обстановки, иг- рок-человек может оказаться неспособным достичь требуемой точности. Поэтому чело- веку приходится выбирать нечто среднее — либо быстро направить оружие на цель, но промахнуться из-за того, что движение не удалось остановить вовремя, либо затратить больше времени, чтобы направить оружие на цель с большей точностью. Если же во время стрельбы применяются средства ИИ, то для них часто доста- точно точно определить цель и произвести выстрел из оружия. Но поскольку совсем не интересно играть против роботов, которые стреляют с идеальной точностью, в поведение аниматов можно ввести ошибки, обусловленные необходимостью пово- рачивать оружие во время прицеливания, которые являются вполне правдоподоб- ными с точки зрения физики (рис. 18.1). В результате этого задача аниматов услож- няется, и они теряют абсолютное превосходство над игроками-людьми. Рис. 18.1. Примеры ошибок двух типов, которые обычно обнаруживаются в процессе прицеливания
Глава 18. Устранение ошибок прицеливания 275 Определение модели Для моделирования ошибок указанных типов используется математическая функция, которая выражает действительно достигнутый угол поворота в терминах желаемого угла и предыдущего угла. Поведение анимата моделируется кадр за ка- дром, момент инерции, учитываемый в процессе движения, выражается с помощью рекурсивной формулы, а трение представляется с помощью масштабирования по- правки на желаемый угол. Сама функция моделирования определяется с учетом желаемого угла поворота и предыдущего выходного значения. Кроме того, в формулу включена моделируемая параметрическая ошибка, зависящая от желаемого угла. Как показано ниже, для мо- делирования разброса используется функция noise (), которая возвращает случай- ное значение от -1 до 1. Уравнение 18.1 Р= 1.0 +0.1* noise(angle) output(t) = (angle * |3) * a + output(t-1) * (1-a) В этой формуле применяются описанные ниже обозначения. > Коэффициент а (греческая буква альфа). Масштабный коэффициент, исполь- зуемый при комбинировании предыдущего выходного значения со значением желаемого угла. Этот коэффициент позволяет учитывать различные свойства, которые влияют на точность прицеливания: движение во время стрельбы, уг- ловая скорость, усталость и т.д. Проектировщик может настраивать этот па- раметр так, чтобы он оставался в диапазоне [ 0.3,0.5 ]. > Коэффициент р (греческая буква бета). Это — параметр, который по сущест- ву должен быть инициализирован путем присваивания ему случайно выбран- ного значения из диапазона [ 0.9,1.1 ]. Такая величина может рассматри- ваться как параметрический коэффициент погрешности определения желае- мого угла. Значение этого коэффициента умножается на величину угла пово- рота, поскольку небольшие погрешности должны возникать, только если происходит поворот ствола оружия во время прицеливания, а не тогда, когда оружие находится в покое (иными словами, эта погрешность пропорциональ- на углу поворота). > Функция noise (). Эта функция может иметь любое определение, при условии что она возвращает значения в диапазоне [-1,1]. Например, в этом диапазоне почти непредсказуемо колеблются значения cos (angle2 *0.217+342 /angle). Благодаря этому прицеливание становится более реалистичным, поскольку сред- ства ИИ также становятся подверженными ошибкам, вызванным слишком ранним и слишком поздним завершением процесса поворота ствола оружия, а также другим ошибкам прицеливания.
276 Часть III. Моделирование стрельбы Линейная аппроксимация Для аппроксимации функции, приведенной в уравнении 18.1, может использо- ваться персептрон. Процесс обучения этого персептрона может рассматриваться как обучение анимата, чтобы он поворачивал ствол оружия более плавно. Еще один под- ход заключается в том, что обучение персептрона может рассматриваться как способ обучения более быстрой аппроксимации определенной функции в реализации ин- терфейса (недоступной для анимата), которая является трудоемкой с вычислитель- ной точки зрения. В действительности, после того как закончится обучение персеп- трона представлению этой функции, полученные результаты могут быть перенесены в интерфейс и скрыты от кода реализации средств ИИ. После этого ошибки прице- ливания могут рассматриваться как ограничения, определяемые извне. Рассматриваемое уравнение хорошо подходит для осуществления на его основе линейной аппроксимации. В действительности, результат решения этого уравнения становится скользящим средним значением; предыдущие значения желаемого угла поворота и текущее значение усредняются с помощью общего выражения. Основная задача обучения состоит в том, чтобы определить параметр а, аппроксимировать па- раметр Р и откорректировать весовые коэффициенты соответствующим образом (рис. 18.2). Интерфейс (воплощенного Фактически наблюдаемый угол Рис. 18.2. Блок-схема, на которой показано, как происходит обработка значе- ний углов, прежде чем эти данные передаются машине моделирования Чтобы иметь возможность приближенно представить рассматриваемое уравнение, необходимо добиться того, чтобы предыдущее выходное значение было представлено явно. Мы будем передавать выходное значение на вход сами, чтобы для персептрона эта операция выглядела как непосредственное отображение (как ответное действие). Общая методология Обучение сети, применяемой для вычисления приближенного значения, осуще- ствляется итерационно. Для этого выбираются случайным образом входные значе- ния, а затем вычисляется желаемое выходное значение с помощью уравнения 18.1. После группирования всех полученных результатов может быть применен пакетный алгоритм обучения для определения наиболее подходящих значений каждого из ве- совых коэффициентов и каждого смещения. Обучение персептрона может прово-
^aiattaus,^. Глава 18. Устранение ошибок прицеливания 277 диться во время инициализации модели или, что еще лучше, в автономном режиме эксплуатации модели. Сам персептрон имеет модульное устройство и состоит из двух частей — большей и меньшей. Большой персептрон не участвует в вычислении значений всех углов (т.е. углов поворота и наклона); вместо этого дважды используется малый (для вы- числения обоих углов). В результате этого немного уменьшается объем памяти, при- меняемой для хранения определения персептрона, но задача составления програм- мы немного усложняется. Оценка полученных результатов Задача, рассматриваемая в этой главе, не является слишком сложной. Безуслов- но, применяемое уравнение не является линейным, но линейная аппроксимация оказывается достаточно близкой. Поведение анимата во время прицеливания, фор- мируемое благодаря использованию персептрона, становится более реалистичным, поскольку в результате этого анимат поворачивает ствол оружия гораздо более плав- но (при этом явно заметно, как проявляется действие трения и момента инерции). Во время того как происходит обучение персептрона с использованием функции, которая представляет значительный момент инерции, определенно возникает ощу- щение, что для успешного выполнения движения у анимата не хватает сил. Следует отметить, что такая же проблема возникает и у начинающих стрелков, причем про- явление этой проблемы в модели выглядит так же нестабильно. Что же касается обучения, то оно происходит очень быстро. Для того чтобы весо- вые коэффициенты были откорректированы должным образом, требуется лишь не- много выборок (примерно 10). А количество требуемых итераций весьма существен- но зависит от первоначальных случайно выбранных весовых коэффициентов. Практическая демонстрационная версия Для демонстрации решения рассматриваемой задачи предусмотрен пример анимата, получившего имя Missy, который можно найти в оперативном режиме по адресу http://AiGameDev.com/ в виде исходного и двоичного кода, наряду с другими демонстрационными версиями. Для обеспече- ния применения этого анимата в игре ознакомьтесь на этом узле с прилагаемом к нему руково- дством. Для аппроксимации функции определения ошибки прицеливания используется персептрон, а обучение проводится во время инициализации с помощью пакетного алгоритма. Устранение ошибок В представленной здесь модели момента инерции и трения возникают ошибки, которые накапливаются по мере того, как увеличивается количество поворотов ствола оружия. Могут также обнаруживаться дополнительные ошибки, связанные с отработкой отдельных углов поворота. В настоящем разделе рассматривается замы- сел, в соответствии с которым необходимо усложнить эту нелинейную задачу, чтобы лучше понять, насколько качественной является аппроксимация решения, получен- ного с помощью персептрона.
278 Часть III. Моделирование стрельбы Такие ошибки, внесенные в процесс прицеливания, могут рассматриваться как ограничения, под влиянием которых действия анимата выглядят более реалистично. Но средства ИИ должны принимать эти ошибки в расчет, для того чтобы аниматы все же могли действовать в процессе прицеливания достаточно эффективно и, в то же время, чтобы их действия оставались реалистичными. Если средства ИИ игнорируют внесенные изменения в процессе прицеливания, это становится причиной возникновения ошибок, в результате чего ствол оружия во время поворота останавливается либо слишком рано, либо слишком поздно. Подоб- ные ошибки вполне приемлемы, если аниматы играют против начинающих игроков. Тем не менее необходимо, чтобы средства ИИ самого высокого качества могли справляться с ошибками прицеливания так, чтобы даже самые опытные игроки- люди могли чувствовать, что имеют дело с достойным противником. Обратная задача Для компенсации ошибок можно представить с помощью модели функцию, про- тивоположную по отношению к функции ошибок (рис. 18.3), так, чтобы можно было найти идеально правильный угол прицеливания. Тем не менее для этого необходимо разработать математйческую интерпретацию задачи, к тому же, обратная функция не всегда существует (о чем свидетельствует одно из уравнений в главе 16, “Физические основы прогнозирования движения”). Рис. 18.3. Функция ошибок, которая определена на углах поворота, и обратная функция, определяемая выражением f (g (х)) = х В идеальном случае желательно реализовать с помощью средств ИИ простой спо- соб аппроксимации функции, не требующей применения математики, который служил бы для вычисления значения, обратного по отношению к ошибке прицели- вания. Применение такого подхода могло бы позволить проводить обучение анима- тов лучшему способу действий на практике, без использования модели ошибок.
^aiattaus,^. Глава 18. Устранение ошибок прицеливания 279 Один из подобных способов моделирования может предусматривать осуществле- ние с помощью средств ИИ сравнения желаемого угла поворота (действие) с факти- чески полученным углом поворота (наблюдение). После достаточного количества проб и ошибок появляется возможность предсказать, на какие откорректированные углы необходимо поворачивать ствол оружия, чтобы добиться получения желаемых значений угла поворота. При таком подходе происходит сбор информации о парах входных и выходных значений, полученных путем моделирования, и последующее обучение обратному отношению после перестановки элементов пар местами. Дополнительная информация Рассматриваемые средства ИИ позволяют справляться с ошибками прицеливания благодаря тому, что происходит изучение обратной функции ошибок. Но рассматриваемая задача еще в большей сте- пени является подходящей для решения с помощью метода обучения с подкреплением. При решении задач такого типа каждое действие получает оценочную обратную связь с учетом того, насколько близким является результат к желаемому выходному значению. Используя такую обратную связь, средства ИИ могут постепенно настраиваться самостоятельно на все более лучшее выполнение зада- чи. Этот метод рассматривается в главе 46, “Обучение с подкреплением”. Кроме того, в виде упраж- нения будет описана еще одна попытка решения задачи прицеливания. Реализация Применяемые средства ИИ предусматривают использование датчиков для регу- лярной проверки того, какими углами фактически измеряется поворот тела анимата, достигнутый со времени последнего обновления. Благодаря этому средства ИИ по- лучают возможность сравнивать фактически достигнутое положение с тем, что было затребовано в предыдущем обновлении. Но этот результат должен использоваться для решения противоположной задачи, поскольку средства ИИ должны определить, какой угол должен быть задан, исходя из желаемого угла поворота. Поскольку теперь в системе имеется возможность определить, какой угол должен быть задан для полу- чения наблюдаемого результата, такая предварительная подготовка обеспечивает получение обучающей выборки для персептрона. Таким образом, появляется воз- можность осуществлять инкрементное обучение нейронной сети в целях усвоения в процессе обучения подобных шаблонов. Тем не менее собранная информация не позволяет решить ту же задачу, когда она встретится в следующий раз. Предположим, предпринимается попытка достичь же- лаемого угла поворота dp Если мы попытаемся выполнить действие, предусматри- вающее поворот на угол аг, но наблюдения покажут, что произошел поворот на угол d2, мы все равно не сможем определить, как достичь угла dj Все, что нам известно, состоит в том, как достичь угла d2. Но после того, как количество собранных выбо- рок будет достаточно велико, в конечном итоге удастся обнаружить угол, позволяю- щий достичь угла dx. Для решения указанной проблемы используется подход, основанный на опера- тивном обучении. Очевидным преимуществом этого подхода является то, что ани- маты получают возможность обучаться в целях улучшения своих способностей к прицеливанию во время игры. На практике такой процесс усовершенствования навыков не так уж бросается в глаза, но все равно любопытно наблюдать за тем, как аниматы с каждым разом стреляют все лучше и лучше.
280 Часть III. Моделирование стрельбы Необходимо также учитывать одну важную особенность, которая состоит в том, что персептроны могут оказаться вынужденными сталкиваться с такими входными и выходными значениями, которые не могут быть представлены исключительно с помощью единичного вектора. Например, такая ситуация возникает при использо- вании углов, измеряемых в градусах. По этой причине целесообразно использовать подгонку к определенному масштабу как для входных, так и для выходных данных. Что касается выходных данных, то для обучения персептрона абсолютно необходи- мо осуществлять подгонку масштаба, так как в противном случае выходной элемент будет не в состоянии вырабатывать все возможные результаты. Масштабирование применяется также к входным данным, поскольку практика показала, что благодаря этому процесс обучения значительно ускоряется. С точки зрения теории в этом нет необходимости, но могут использоваться подходящие предусмотренные по умолча- нию параметры (например, скорость обучения 0,1) с получением вполне приемле- мых результатов. Оценка полученных результатов Анимату приходится поворачиваться не только для прицеливания, но и в процес- се движения, поэтому он получает возможность обучаться исправлению своих оши- бок в прицеливании так же, как и во время движения. Поэтому персептроны могут быть обучены прицеливанию намного быстрее, поскольку количество представлен- ных им обучающих выборок становится гораздо больше. А после того как наступает время направить оружие на цель, нейронная сеть уже имеет возможность воспользо- ваться своей базовой подготовкой. Аниматы представляют собой трехмерные сущности, но могут управлять тем, ка- кое визуальное представление открывается перед ними, только по двум углам — по- ворота и возвышения. Персептрон управляет аниматом и корректирует углы, выби- раемые в обоих этих направлениях. Но во время обучения управлению углом возвы- шения возникает много проблем. Прежде всего, движение становится возможным, только если угол возвышения близок к горизонтальному; если анимат направил свой взгляд круто вверх или вниз, его движение вперед становится невозможным (поскольку это невозможно и для игрока-человека, которого представляет анимат). В подобных случаях ограничивается также возможность выбрать другой угол пово- рота, в результате чего полностью исключается возможность проводить обучение средств ИИ. Таким образом, создаются своего рода мертвые зоны в обучении, и для того чтобы предотвратить их возникновение, допускается использовать персептрон для управления углом поворота лишь при том условии, что это позволяет добиться удовлетворительных результатов. Если приняты такие меры предосторожности, то худшее, что может случиться, состоит в том, что анимат во время обучения начинает безостановочно вращаться вокруг своей оси. Для непривычного глаза это часто представляется так, будто аниматы танцуют на балу! В качестве примечания более формального характера, отметим, что предоставле- ние персептрону полного контроля над ситуацией может привести к возникновению во время обучения также и других ловушек. В частности, от того, с помощью какого способа выбран угол поворота, зависит наличие примеров, доступных для обучения
^aiattaus,^. Глава 18. Устранение ошибок прицеливания 281 (речь идет о затребованных углах и наблюдаемых углах). Таким образом, позволяя персептрону полностью определять угол поворота, мы предоставляем ему также возможность влиять на то, какая информация усваивается им в процессе обучения. В подобных случаях в конечном итоге может сложиться такая конфигурация, в кото- рой предлагаемый поворот всегда остается одним и тем же. Для выхода из этого по- ложения средства ИИ вынуждены форсировать ситуацию, применяя разнообразные значения предлагаемых углов поворота (например, путем выработки случайных зна- чений углов или добавления случайно выбранных поправок к применяемым коман- дам на выполнение действий). Из этого следует, что персептрон всегда получает представительную выборку шаблонов ввода-вывода и принудительно применяет ее для усвоения путем обучения таких знаний, которые основаны на результатах, полу- ченных на практике. Практическая демонстрационная версия На сопровождающем Web-узле среди других примеров имеется пример анимата с именем Aimy, ко- торый демонстрирует возникновение указанных проблем на практике. Персептрон применяется для изучения значений углов, скорректированных в целях предотвращения преждевременного или запаз- дывающего прекращения движения во время прицеливания. Анимат Aimy собирает данные со своих датчиков для определения того, насколько далеко повернулось его тело, с учетом каждого запроса на осуществление поворота на определенный угол. После этого может применяться инкрементное обу- чение для аппроксимации обратного значения функции в целях предотвращения ошибок прицелива- ния. Дополнительная информация по этой теме приведена на узле http: / /AiGameDev.com/. Резюме В настоящей главе для достижения реалистичности в картине прицеливания, осу- ществляемого аниматами, использовались два персептрона. Кроме того, была преду- смотрена возможность использовать персептроны, чтобы они справлялись с ошибка- ми более эффективно, по такому же принципу, как и игроки-люди. Краткие сведения о тех темах, которые рассматривались в настоящей главе, приведены ниже. > Для обеспечения реалистичности прицеливания применялось обучение пер- септрона, чтобы он мог плавно поворачиваться, путем аппроксимации более развитой модели ошибок прицеливания. Такое обучение осуществлялось в ав- тономном режиме с использованием алгоритма пакетного обучения. > Для повышения эффективности прицеливания и вместе с тем достижения реалистичного поведения применялся еще один персептрон, который при- ближенно вычислял решение, позволяющее компенсировать ошибки прице- ливания. Такое обучение проводилось в оперативном режиме путем сбора обучающих примеров. Безусловно, те задачи, которые рассматривались в настоящей главе, были до- вольно простыми (допускающими несложную аппроксимацию и не требующими получения оптимального решения), поэтому ознакомление с приведенными здесь сведениями не позволяет понять, какие ограничения характерны для персептронов. Тем не менее, при проектировании средств ИИ во многих случаях целесообразно за-
282 Часть III. Моделирование стрельбы тратить дополнительное время, чтобы обеспечить применение однослойных персеп- тронов. Но иногда в связи со значительной сложностью задачи однослойные пер- септроны неприемлемы, поэтому приходится прибегать к использованию дополни- тельных возможностей многослойных персептронов, несмотря на то что с этим свя- заны дополнительные трудности. В следующей главе рассматриваются теоретиче- ские сведения, лежащие в основе многослойных персептронов, и осуществляется подготовка к решению задачи, представленной в главе 20, “Выбор цели”, для чего требуются более развитые способности к распознаванию образов.
^aiattaus^. Глава 19 Многослойные персептроны Многослойные персептроны (MultiLayer Per- ceptron — MLP) являются еще одной разно- видностью искусственных нейронных сетей, в ко- торой элементы (связанные соединениями, обо- значенными весовыми коэффициентами) состав- ляют несколько слоев, включая входной и выход- ной. По своей структуре, многослойный персеп- трон фактически напоминает ряд соединенных последовательно однослойных персептронов. Каждый обрабатывающий элемент имеет относи- тельно сложную выходную функцию, в результате чего возможности сети увеличиваются. Настоящая глава опирается на информацию, изложенную в главе 17, “Персептроны”, в кото- рой рассматривались однослойные персептроны. В данной главе представлены перечисленные ни- же темы. > Исторические сведения о разработках в об- ласти персептронов, которые позволяют понять, с чем была связана необходимость разработки многослойных моделей. > Краткое описание тематики, связанной с многослойными персептронами, в том чис- ле общие сведения о топологии многослой- ных персептронов и нелинейной функции активизации. > Общие принципы моделирования функций с помощью нескольких слоев обрабатываю- щих элементов и основные отличия много- слойных персептронов от однослойных. > Сходства и различия между персептрона- ми и их биологическими аналогами — се- тями нейронов. В ЭТОЙ ГЛАВЕ- • Исторические сведения о разработках в области персептронов • Краткий обзор модели • Моделирование • Биологические аналоги • Алгоритмы обучения • Проблемы практического применения алгоритмов • Обсуждение полученных результатов • Резюме
284 Часть III. Моделирование стрельбы > Методы обучения многослойных персептронов, основанные на концепции обратного распространения ошибки. > Практические задачи, которые приходится решать в процессе обучения, а также проблемы, возникающие при использовании нескольких слоев обрабатываю- щих элементов. > Основные преимущества и недостатки персептронов с точки зрения разработ- ки игр. Персептроны с несколькими слоями могут использоваться для распознавания образов в игровой обстановке, прогнозирования результатов борьбы и управления движением несобственного персонажа (NonPlayer Character — NPC). Обучение ре- шению этих задач может проводиться на ряде примеров, причем многослойные пер- септроны, в принципе, обеспечивают более высокую производительность, по срав- нению с однослойными персептронами. Исторические сведения о разработках в области персептронов Персептроны с одним слоем элементов, связанных соединениями (обозначенными весовыми коэффициентами), позволяют справляться только с линейными задачами, а решение сложных задач с помощью однослойных персептронов требует грубой ап- проксимации. Указанный недостаток однослойных персептронов принято называть проблемой нелинейности. В связи с этим могут оказаться слишком затруднительными даже сами попытки использования однослойных персептронов. А иногда практически исключается также возможность применить их для линейной аппроксимации. Эти недостатки персептронов отчасти признавали даже сами впервые предло- жившие их ученые, но Минский (Minsky) и Пейперт (Papert) объяснили, чем обу- словлены ограничения в методах моделирования на основе персептронов, в своей книге Perceptrons, изданной в 1969 году [53]. Эти ученые показали, что при использо- вании персептронов для решения задач высокого порядка возникают проблемы. В частности, персептроны не позволяют решать уравнения, которые имеют порядок больше единицы (превышающие по своей сложности линейные задачи). В книге Perceptrons было показано, что для обеспечения возможности решения задач более высокого порядка во всем пространстве должен поддерживаться по крайней мере один частичный предикат. С точки зрения реализации персептрона это означало, что со всеми входами должен быть связан по меньшей мере один про- межуточный элемент. В персептронах это ограничение, “определяющее порядок за- дачи”, нарушается, и в этом состоит причина, по которой персептроны не способны справляться с задачей распознавания нелинейных образов. В дальнейшем Минский и Пейперт выдвинули предположение, что с задачей распознавания образов высокого порядка не позволяют справляться даже элементы, соединенные в виде нескольких слоев, связи между которыми обозначены весовыми коэффициентами (подобные структуры принято называть каскадными линейными сетями), но они не смогли доказать это утверждение. В действительности решение нелинейных задач остается невозможным до тех пор, пока для этого применяются элементы с линейной функцией активизации.
Глава 19. Многослойные персептроны 285 Розенблатт (Rosenblatt) уже пытался устранить этот недостаток в одном из своих проектов первых персептронов, применяя булевы функции активизации (которые являются нелинейными), но не смог найти способ обучения всей системы. Под влиянием всех этих неудач финансирование разработок в области персептронов бы- ло прекращено, и многие исследователи перешли в альтернативную область разра- боток, связанную с применением символических средств ИИ. Краткий обзор модели Структура многослойных персептронов была разработана на основе структуры их предшественников, состоящих из одного слоя элементов. Два основных различия между многослойными и однослойными персептронами описаны ниже. > Первое различие является очевидным — многослойные персептроны имеют больше слоев элементов. В результате этого возможности аппроксимации с помощью персептрона становятся гораздо шире. > Второе различие не столь очевидно, но без него дополнительные слои не по- зволяли бы добиться какого-либо выигрыша от использования более сложной системы. Дело в том, что в многослойных персептронах используются нели- нейные функции активизации. В следующем разделе два указанных различия рассматриваются отдельно. Топология Топологией называется общее расположение обрабатывающих элементов внутри нейронной сети и структура связей между ними. Топологию многослойного персеп- трона принято характеризовать как имеющую только прямые связи (рис. 19.1); в се- ти, образованной элементами, нет обратных связей (называемых также рекуррент- ными связями). Информация передается от входов к выходам в прямом направле- нии. Важным структурным отличием многослойного персептрона является наличие в нем промежуточного слоя. Промежуточные слои Количество промежуточных слоев может быть сколь угодно большим, хотя чаще всего применяется только один такой слой. Промежуточные слои иногда называют скрытыми, с учетом того, что они не связаны непосредственно с выходом. С точки зрения пользователя ничто не свидетельствует о наличии в многослойном персеп- троне промежуточных слоев! По традиции упоминают еще одну причину, по кото- рой промежуточные слои называют “скрытыми”; дело в том, что невозможно непо- средственно проводить обучение скрытых слоев с учетом ошибки. Поэтому после инициализации весовых коэффициентов промежуточных слоев (обычно случайным образом) в эти значения больше не вносятся какие-либо изменения.
286 Часть III. Моделирование стрельбы Скрытый слой Выходной слой Входы Скрытые Выходные Выходы элементы элементы Рис. 19.1. Топология многослойного персептрона, в кото- рую входят входной слой, промежуточный и выходной Безусловно, в результате введения большего количества скрытых слоев возмож- ности сети по проведению сложных вычислений возрастают, так почему бы не пре- дусмотреть как можно больше таких слоев? Отыскивая ответ на этот вопрос, прихо- дится учитывать много факторов (например, потребность в памяти), но в конечном итоге обнаруживается, что почти всегда достаточно применить только один проме- жуточный слой. Даже один скрытый слой позволяет получить универсальный ап- проксиматор, который теоретически способен моделировать любую непрерывную функцию (при наличии подходящей функции активизации). Поэтому одного скры- того слоя вполне достаточно для решения большинства типов нелинейных задач (например, таких, которые встречаются в играх). Но в некоторых случаях обнаруживается большая степень взаимной зависимости между входными переменными, поэтому сложность задачи более высока. В таком случае введение еще одного промежуточного слоя позволяет сократить общее коли- чество весовых коэффициентов, требуемых для получения приемлемой аппрокси- мации. Но на практике в любой топологии редко используется больше двух скрытых слоев. Персептроны с двумя промежуточными слоями позволяют аппроксимировать любую функцию, даже не являющуюся непрерывной. Скрытые элементы Задача определения топологии связана также с необходимостью выбора количества элементов в скрытом слое. В отличие от выходного слоя, количество элементов в скрытом слое не связано с какими-либо явными характеристиками задачи, поэтому ответственность за выбор этого магического числа возлагается на инженера по искус- ственному интеллекту. Окончательное решение, касающееся определения количества элементов в скрытом слое, вообще говоря, может оказать большое влияние на произ- водительность сети, поэтому является очень важным. Более того, отсутствует какой- либо аналитический способ (т.е. стандартная формула), который позволил бы легко определить необходимое количество скрытых элементов, поэтому не стоит удивляться тому, что это направление исследований до сих пор напоминает черную магию!
Глава 19. Многослойные персептроны 287 В многослойных персептронах скрытые элементы используются для внутреннего представления информации о задаче. Эти скрытые элементы обеспечивают полный охват пространства входов, формируя поверхность решений. Обработка каждого входного образа может осуществляться путем сравнения с этой поверхностью реше- ний. Но если рассматриваются сложные задачи (со сложными поверхностями реше- ний), то количество необходимых скрытых элементов может расти быстрее, чем по экспоненте! А некоторые функции (например, разрывные функции, функции, имеющие острые и зубчатые графики) просто не подходят д ля обработки с помощью персептронов, поскольку требуют слишком много памяти и вычислений. Некоторые теоретические сведения Применительно к персептронам с двумя входами поверхность решений представляет собой прямую линию (т.е. является двухмерной). В многослойных персептронах поверхность решений является бо- лее сложной по сравнению с прямой линией и может рассматриваться как криволинейная поверх- ность, разделяющая входные образы; с одной стороны от этой криволинейной поверхности выходное значение является положительным, а с другой стороны — отрицательным. В случае, если задача имеет еще большую размерность, эта криволинейная поверхность лежит в п измерениях, где п — количество входных переменных. По мере увеличения количества измерений (количества входов) сложность тре- буемой поверхности решений также возрастает. Еще раз отметим, что в связи с этим может потребоваться экспоненциальное увеличение количества скрытых элементов. Связанное с этим затруднительное положение получило название “проклятия раз- мерности” (curse of dimensionality). В этом состоит одна из причин, по которой ней- ронные сети плохо масштабируются, что позволяет понять, почему попытки решать огромные задачи с помощью нейронных сетей сталкиваются со значительными трудностями. По этой причине рекомендуется разделять крупные задачи на более мелкие. Например, в этой части книги задачи выбора цели и прицеливания рассмат- риваются отдельно, поскольку для моделирования обеих этих задач, с учетом' воз- можности прогнозирования, потребовалось бы слишком много нейронов и слоев. Выбор топологии во многом зависит от сложности поверхности решений. Поэтому следует учитывать, что с указанными проблемами приходится сталкиваться снова и сно- ва, приступая к решению каждой очередной задачи. Один из практически применимых под ходов к выбору топологии будет рассматриваться в следующей главе. Связи Наконец, мы должны рассмотреть еще одно свойство топологии, которое определяет- ся связями между элементами. Во многих случаях все элементы, относящиеся к сосед- ним слоям, связаны друг с другом. Но структура связей может определяться в соответст- вии с требованиями конкретной задачи; при этом отдельные связи, если это потребуется, могут быть удалены. В этом состоит различие между полносвязной сетью и разреженной. Еще одна возможность состоит в том, что некоторые связи можно устанавливать, минуя слои. Например, одну из связей можно было бы установить непосредственно от входного элемента к выходному, игнорируя промежуточный слой. Но подобные “экзотические” конфигурации встречаются чрезвычайно редко, по сравнению с полносвязными многослойными персептронами. Безусловно, вполне
288 Часть III. Моделирование стрельбы можно создать средства моделирования, которые позволили бы справляться с про- извольными топологиями, но для этого потребуются значительные издержки. Дело в том, что в этом случае информацию о связях приходится хранить явно в виде ука- зателей. С другой стороны, в полносвязных персептронах все связи заданы неявно, поэтому необходимо выделять память только для хранения массивов весовых коэф- фициентов. Тем не менее, произвольно выбранные топологии могут найти свое применение в том случае, если их разработчик глубоко разобрался в рассматривае- мой задаче (иначе говоря, если инженер точно знает, какой должна быть топология), но это встречается редко. Функция активизации Функция активизации вычисляет выходное значение каждого элемента с учетом результирующей суммы. Находят свое применение функции активизации многих типов. Но следует помнить, что линейные функции активизации вообще не могут использоваться в промежуточных слоях! Дело в том, что многослойный персептрон с подобными элементами будет обладать не большими вычислительными возможно- стями, по сравнению с простым персептроном, поскольку комбинирование двух ли- нейных функций приводит просто к получению другой линейной функции. Скры- тые слои смогут оказать какое-либо влияние на вычислительные возможности многослойного персептрона только в том случае, если в элементах этих слоев будет применяться нелинейная функция активизации. Свойства функции активизации При выборе функции активизации необходимо учитывать некоторые соображения* Ниже перечислены свойства, которыми должна обладать функция активизации. > Дифференцируемость. Функция активизации должна иметь известную легко вычислимую производную. Это позволяет применять для обработки ошибок метод градиентного спуска. > Непрерывность. Если функция активизации непрерывна (т.е. ее кривая не имеет разрывов), то проще найти производную и значение производной явля- ется определенным во всех точках. > Сложность. Функция должна быть нелинейной, поскольку в противном случае с помощью многослойного персептрона невозможно будет решать задачи бо- лее высокого порядка. > Монотонность. Если функция монотонно возрастает, это позволяет гарантиро- вать, что ее производная не будет принимать нулевые или отрицательные значе- ния, к тому же, становится применимым метод градиентного спуска (а последо- вательное уменьшение шага выполняется в нужном направлении). Может также потребоваться, чтобы в какой-то конкретной реализации функция активизации обладала описанными ниже необязательными свойствами. > Ограниченность. Такое свойство гарантирует то, что результаты применения функции активизации и вычисления ее производной будут конечными. Это позволяет значительно упростить интерпретацию данных, полученных с по- мощью многослойного персептрона.
^ataHaus,^. Глава 19. Многослойные персептроны 289 > Полярность. Под полярностью подразумевается знак функции. На некоторых уча- стках полярная функция является только положительной, а на других симметрич- ных участках функция, безусловно, становится отрицательной (т.е. функция явля- ется биполярной). Необходимость в использовании последних двух свойств обычно обусловлена практическими потребностями разработки. Некоторые из таких требований рас- сматриваются более подробно в последующем обсуждении, а также при описании конкретного приложения. Применяемые функции активизации Как правило, для выбора функции активизации используется давно сложившийся перечень функций, который показан на рис. 19.2. Некоторые варианты функций активи- зации, которые рассматривались в этой книге применительно к обычным, однослойным персептронам, применяются также в многослойных персептронах. К ним относятся сту- пенчатые функции (обеспечивающие получение двоичных выходных данных) и линей- ные функции активизации (обеспечивающие тождественное преобразование). Сочета- ние этих двух функций известно под названием функций пороговой логики, которые харак- теризуются тем, что линейный выход ограничивается определенным диапазоном. Рис. 19.2. Графики функций, которые используют- ся как функции активизации в выходном слое Эти функции применимы для выходного слоя, но не для скрытого слоя (поскольку не обладают всеми описанными выше обязательными свойствами). Поэтому вместо них чаще всего применяются так называемые сигмоидальные функции. Одна из таких функций известна под названием логистической функции: 1 sig(x) = -----z— 1 “Рх 1+е sig'(х) = х0(1 - х) В этой формуле Р (греческая буква бета) представляет собой значение, от которого зависит плавность кривой. При больших значениях 3 сигмоидальная функция стано- вится близкой по форме к ступенчатой функции. Но это удобно, поскольку в сочета-
290 Часть III. Моделирование стрельбы нии с теми возможностями, которые предоставляет ступенчатая функция, сохраняют- ся также все необходимые свойства! Еще один вариант состоит в использовании функ- ции tanh, но для ее вычисления требуется немного больше издержек. Функция tanh обладает тем свойством, что может принимать и отрицательные, и положительные значения: Рх -Рх 6 +G tanh(x) = —й----Н- -Рх Рх е -е 2 tanh’ (х) = ех+е-х Но вместо нее может применяться более эффективная с точки зрения вычисле- ний биполярная сигмоидадьная функция, которая также соответствует указанным выше требованиям: 2 sigb(x) = -----х— - 1 1 "Рх 1+е sig'b(x) = ^(1+х)(1-х) Решение о том, следует ли применять биполярную или положительную сигмои- дальную функцию, часто зависит от рассматриваемой задачи (от того, требуются ли в ней отрицательные выходные значения), но биполярный вариант должен оказаться предпочтительным, поскольку он, по-видимому, позволяет получить большую точ- ность при обучении с использованием значений, представленных в виде чисел с пла- вающей точкой. Моделирование Как уже было сказано, основной отличительной особенностью многослойного персептрона является наличие дополнительных скрытых элементов. Таким образом, в многослойных персептронах имеется промежуточный слой, а из этого следует, что информация, необходимая для вычисления выходных данных, не является непо- средственно доступной. Вместо этого, прежде чем появится возможность выполнить обработку во втором слое, должна быть завершена обработка в первом слое. Выход- ные данные предыдущего слоя используются в качестве входных данных для сле- дующего слоя, и такая передача данных происходит до тех пор, пока не будет опре- делен окончательный результат. Это — простой итерационный процесс, который проходит по всей сети. Само последовательное протекание процесса вычисления еще раз подчеркивает то, что персептроны, и особенно многослойные персептроны, должны иметь струк- туру только с прямыми связями. В результате введения скрытых слоев это свойство персептронов не изменяется. В листинге 19.1 приведен псевдокод, предназначенный для вычисления выходных данных персептрона, имеющего произвольное количест- во слоев.
Глава 19. Многослойные персептроны 291 Листинг 19.1. Алгоритм моделирования прямого распространения данных, используемый для определения результатов прохождения входных данных через многослойный персептрон # В первом слое производится обработка входного массива current = input for layer from first to last # Вычислить выходное значение для каждого нейрона for each i in [1..neurons] from layer # Перемножить массивы и сложить с полученным ранее результатом s = NetSum( neuron[i].weights, current ) # Сохранить результат последующей обработки output[i] = Activate( s ) end for # В следующем слое выходные данные текущего слоя используются # как входные current = output end for На практике указанная вычислительная процедура может применяться в такой же форме, как и процедура, предусмотренная в простых однослойных персептронах; мы подаем на персептрон входные образы и получаем соответствующий результат. Выходные результаты могут использоваться для аппроксимации функции, класси- фикации образов или даже для управления актюаторами (т.е. искусственными мус- кулами). В следующей главе показаны примеры применения персептронов, решаю- щих задачу аппроксимации функций, в игровой ситуации. Биологические аналоги Выше в данной главе было приведено определение понятия нейронных сетей, а в этом разделе будет дано краткое пояснение того, на каких биологических феноменах основано это понятие. Приведенные здесь сведения не требуются для понимания сути нейронных сетей (а некоторые даже утверждают, что подобные параллели яв- ляются лишними), но изучение биологических аналогов позволяет лучше понять применяемую терминологию и ознакомиться с современными исследованиями в ис- торической перспективе. Первоначальный замысел создания искусственных нейронных сетей зародился в результате изучения зрительной коры, которая относится к затылочным долям мозга. Персептрон Розенблатта фактически оказался моделью связей, идущих от сетчатки к мозгу. В тот период, когда Розенблатт создавал свой персептрон, знания в области нейробиологии позволяли создать лишь чрезмерно упрощенную модель, а по истечении определенного времени стало ясно, что эта модель является еще менее точной, чем считалось раньше. С годами удалось достичь значительного усовершенствования многослойных персептронов благодаря использованию методов, более удобных с точки зрения вы- полнения математических вычислений (например, методов, основанных на приме- нении сигмоидальных функций активизации). Безусловно, некоторые утверждают, что подобные усовершенствования просто “в большей степени отражают биологи- ческие закономерности”, но вполне очевидно, что все эти методы представляют со- бой лишь ухищрения, без которых вообще нельзя было добиться успешного функ-
292 Часть III. Моделирование стрельбы ционирования персептронов. В настоящее время в теории многослойных персеп- тронов от биологии остались лишь метафорические представления, грубая аппрок- симация и, что еще более заметно, следы разрушенных иллюзий. По этой причине однослойные и многослойные персептроны больше не находят- ся в центре внимания исследователей нейронных сетей. Персептроны рассматрива- ют как относящиеся к категории конструкций, принадлежащих к сфере деятельно- сти старой школы коннекционизма. Поэтому несмотря на успех и широкую попу- лярность приложений, созданных в этой области, они уже не являются источником таких же надежд и энтузиазма, как в свое время. Нейроны Основная аналогия между аппаратными и биологическими структурами прово- дится на клеточном уровне. Обрабатывающие элементы однослойных и многослой- ных персептронов могут быть сопоставлены отдельным нейронам, поскольку имен- но изучение нейронов привело к созданию данной модели (рис. 19.3). Дерево дендритов Дендриты Рис. 19.3. Отдельный биологический нейрон, состоящий из сомы, дендритов и аксона Нейрон — это отдельная клетка мозга. Основной частью нейрона является тело (называемое также сомой). Главное назначение сомы состоит в том, что она после достижения достаточного уровня стимуляции вырабатывает нервный импульс. К те- лу нейрона подходят многочисленные дендриты, образующие древовидную структу- ру. Назначение дендритов состоит в том, что они собирают информацию (воспринимают импульсы, поступающие от других нейронов) и передают в тело сво- его нейрона. По дендритам передаются импульсы двух типов: тормозящие (которые препятствуют повышению уровня возбуждения тела) и возбуждающие (которые спо- собствуют повышению уровня возбуждения тела). Наконец, у нейрона обычно име- ется один аксон, который отходит от тела нейрона.
Глава 19. Многослойные персептроны 293 После того как уровень стимуляции превысит порог возбуждения нейрона, в теле нейрона вырабатывается импульс, который передается по аксону с помощью цепи электрохимических реакций. Есть основания полагать, что при возбуждении нейро- на возникают также многие другие явления (например, выделение химических ве- ществ), но некоторые из этих явлений еще далеко не изучены (а есть и такие явле- ния, которые даже еще не обнаружены). Очевидно, что на концептуальном уровне функционирование нейронов в опре- деленной степени можно сопоставить с функционированием обрабатывающих эле- ментов. Входы обрабатывающего элемента можно сравнить с дендритами, для са- мого обрабатывающего элемента аналогом служит сома, и, наконец, аксон нейрона напоминает выход обрабатывающего элемента. Но персептрон как модель нейрона является чрезвычайно упрощенным. Обраба- тывающие элементы искусственной нейронной сети не моделируют какие-либо из- вестные свойства нейронов. Дело в том, что нейроны регулярно вырабатывают им- пульсы не под действием возбуждения, а в результате самой своей активности, тогда как обрабатывающие элементы не обладают таким свойством. Кроме того, возбуж- дение нейронов может быть вызвано не поступлением извне импульсов, а появлени- ем в окружающей их среде определенных химических веществ. Для моделирования подобных феноменов применяются нейронные сети других типов, но не персептро- ны. Нет сомнения в том, что нейроны обладают многими другими, еще не извест- ными нам свойствами, которые также не находят своего отражения в персептронах. Головной мозг Функционирование мозга биологических существ характеризуется исключитель- ной сложностью, обусловленной тем, что отдельные нейроны, которые сами по себе обладают огромными возможностями, действуют параллельно. Нейроны связаны с помощью синапсов, которые проводят соединение между аксонами одних нейронов и дендритами других. Принципы функционирования синапсов являются чрезвычайно сложными, но кратко можно отметить, что в их основе, по существу, лежит механизм передачи электрохимических импульсов от одного нейрона к другому. Как показано на рис. 19.4, в этом состоит единственный способ взаимодействия нейронов. Напрягая воображение, можно провести сравнение между структурой нейронов в мозгу (подобной приведенной на рис. 19.4) и многослойным персептроном. Обра- батывающие элементы напоминают связанные друг с другом нейроны. Но персеп- троны далеко не обладают всеми теми возможностями, которые присущи мозгу био- логических существ. Причиной этого снова является чрезмерное упрощение. Объем научных знаний о мозге постоянно расширяется, но, поскольку персептроны отно- сятся к категории коннекционистских моделей, созданных так давно, это повыше- ние уровня знаний на них никак не отражается. Основным недостатком, сдерживающим развитие персептронов как коннекцио- нистских моделей, является то, что в них могут применяться только прямые связи. Несмотря на то что для создания персептронов могут служить произвольные соеди- нения и разреженные сети, из-за отсутствия эффективных автоматизированных ме- тодов обоснования подобных экзотических топологий их привлекательность с года- ми значительно уменьшается. Наконец, персептроны не имеют пространственной структуры и по-прежнему рассматриваются как массивы виртуальных весовых ко-
г 294 Часть III. Моделирование стрельбы эффициентов, хранящихся в памяти. Если бы для представления персептронов ис- пользовались модели, развернутые в трехмерном пространстве, это дало бы возмож- ность, например, моделировать с их помощью распространение химических медиа- торов в среде, в которую погружены нейроны. Рис. 19.4. Фрагмент сети, которая связывает нейроны, подобной тем, которые можно обнаружить в мозгу биологических существ Общее заключение, касающееся проведения биологических аналогий С точки зрения практики наиболее важным свойством многослойных персептро- нов не является то, что они когда-то были созданы по аналогии с биологическими структурами. Многослойные персептроны и без этого имеют значительную коммер- ческую привлекательность, поскольку невозможно отрицать, что искусственные нейронные сети до сих пор окружает какая-то аура загадочности! Но самым важным свойством многослойных персептронов является то, что они имеют серьезное мате- матическое обоснование, для создания которого в течение многих лет проводились тщательные исследования и строились доказательства. В настоящей главе нашли свое отражение именно такие научные подходы; мы берем на себя роль инженеров по искусственному интеллекту и поэтому обязаны выйти за рамки исходных био- логических метафор. Алгоритмы обучения Математические основы, на которых базируется теория многослойных персеп- тронов, предоставляют нам определенное преимущество, поскольку эти основы по- зволяют проводить обучение персептронов. Задача обучения многослойного персеп- трона напоминает задачу обучения персептрона с одним слоем, поскольку сводится
Глава 19. Многослойные персептроны 295 фактически к числовой оптимизации. В процессе обучения должно быть найдено наиболее подходящее значение каждого весового коэффициента, позволяющее све- сти к минимуму ошибку на выходе. Но применительно к многослойным персептро- нам эта задача становится немного сложнее, поскольку в этом случае уже не так лег- ко определить необходимое значение, которое позволило бы откорректировать весо- вые коэффициенты (поскольку градиент ошибки невозможно вычислить непосред- ственно). Это позволяет понять, почему алгоритмы обучения многослойных персептронов являются более сложными по сравнению с однослойными. Обратное распространение Обратное распространение — это процесс, позволяющий определить по данным, полученным в последующем слое, что стало причиной ошибки в предыдущем слое. Метод обратного распространения был разработан в связи с тем, что при использо- вании первоначально созданных алгоритмов обучения персептронов возникали проблемы — с помощью этих алгоритмов невозможно было проводить обучение скрытых слоев. Метод обратного распространения представляет собой суть боль- шинства алгоритмов обучения многослойных персептронов, поскольку этот метод позволяет определить градиент для каждого весового коэффициента (и поэтому соз- дать предпосылки его оптимизации). Неформальное описание В последнем слое ошибка в выходных данных может быть определена непосред- ственно, поскольку ошибка выражается как разность между фактическим выходом и желаемым выходом. Используя точно такой же подход, как и применительно к одно- слойному персептрону, можно найти градиент ошибки в каждом весовом коэффи- циенте. Алгоритмы градиентного спуска позволяют использовать значение наклона кривой ошибок для корректировки весовых коэффициентов в предыдущем слое. Применительно к скрытым слоям эта ошибка не может быть определена непо- средственно, поскольку в скрытых слоях не задана эталонная информация, с кото- рой можно было бы сравнить выходное значение! Тем не менее обнаруживается то, что некоторые элементы скрытых слоев связаны с элементами выходного слоя, для которых ошибка известна. Ошибка в выходном элементе обязательно должна быть частично обусловлена тем, что связанные с ним элементы скрытого слоя имеют не- оптимальные значения весовых коэффициентов. Таким образом, существует воз- можность определить, в какой степени элементы скрытого слоя влияют на появле- ние ошибки в выходном элементе. Применяемый для этого метод получил название метода распространения ошибки через искусственную нейронную сеть в обратном направлении, или просто метода обратного распространения. Использование метода обратного распространения, по существу, позволяет определить, в какой степени элементы предыдущих слоев влияют на возникновение ошибки в следующем слое. Как показано на рис. 19.5, в таком процессе обратного распространения проис- ходит распространение не самой ошибки, а градиента ошибки. Градиент ошибки элемента предыдущего слоя представляет собой взвешенную сумму градиентов оши- бок в элементах следующего слоя. Градиент ошибки в элементах предыдущего слоя вычисляется с использованием известных данных об обрабатывающих элементах следующего слоя с учетом весовых коэффициентов связей.
296 Часть III. Моделирование стрельбы Рис. 19.5. Обратное распространение ошибки через слои, которое происходит, начиная от выходного слоя, через связи, обозначен- ные весовыми коэффициентами В основе метода обратного распространения лежит рекурсивное определение гра- диента ошибки. Метод обратного распространения позволяет начать работу с элемен- тов выходного слоя и вычислить все градиенты ошибок во всех обрабатывающих эле- ментах предшествующих слоев, независимо от количества этих слоев. После этого с использованием такого же метода, как и для персептронов, можно вычислить гради- ент каждого отдельного весового коэффициента. Затем к весовым коэффициентам применяется метод наискорейшего спуска (или любой другой метод оптимизации, предназначенный для градиентов) для их корректировки должным образом. Формальное обоснование Настоящий раздел предназначен только для тех, кого интересует теоретическое обоснование данного метода обучения. Прежде всего попытаемся найти частную производную ошибки по отношению к весовому коэффициенту связи между эле- ментами i и j, обозначаемую как ЭЕ/dwij. Это значение можно разбить на три части с помощью цепного правила (такой прием применялся и в теоретическом обоснова- нии метода обучения однослойного персептрона): Эе Эе Эу^ Э^ dwij Эуз Э£з dwij Начнем с третьего терма справа, с производной результирующей суммы элемента j по отношению к весовому коэффициенту Э^ /3wij. Очевидно, что это — выходное значение у± элемента предыдущего слоя i (или входное значение для всей сети, если рассматриваемый слой является первым): Второй терм, Эу/Э^, выражает градиент выхода элемента j по отношению к ре- зультирующей сумме. Это значение зависит от функции активизации, поэтому не- обходимо взять его производную: ‘ (^j)
^atailaus^il Глава 19. Многослойные персептроны 297 Наконец, первый терм в правой части, как и в случае однослойного персептрона, выражается значением dE/dyj и представляет градиент ошибки, полученный с уче- том выходного значения элемента. Если элемент относится к выходному слою, то для него вычисление этого значения является несложным (как и в случае однослой- ного персептрона): Эе = -(ti-yi) оУз Применительно к элементам j, которые не подключены непосредственно к вы- ходу многослойного персептрона, данный терм вычисляется рекурсивно, с исполь- зованием значений термов, относящихся к элементам к, которые расположены вдоль цепочки соединений между данным элементом и выходом. Это значение представляет собой сумму (Е) градиентов ошибок по отношению к выходу элемента к, ЭЕ/Э£к, умноженную на градиент выхода по отношению к результирующей сумме Эук/Э£к и весовому коэффициенту связи между элементами j и к, wjk: Эе _ Эе Эук Эу) Эук Э?к ”)к Вообще говоря, с точки зрения удобства реализации алгоритма было бы лучше вос- пользоваться более простой системой обозначений. Введем следующее обозначение: _ Эе Э^ 1 ~ 'Эу! В таком случае градиент ошибки относительно результирующей суммы можно вычислить с учетом позиции элемента в сети: О’ (£j) (tj-Yj) °* (£з>£ SkWjk k если j - выходной элемент если j - элемент скрытого слоя Изучение приведенной выше формулы показывает необходимость использова- ния процесса обратного распространения, в котором значение 5j вычисляется для каждого элемента каждого слоя с учетом значения для предыдущего элемента к. Алгоритм обратного распространения Алгоритм обратного распространения представляет собой простой алгоритм обуче- ния, основанный на использовании приведенных выше уравнений; к набору образцов применяется метод инкрементного обучения. Этот метод называют методом обратного распространения, но в действительности сама стадия обратного распространения со- ставляет только часть процесса. В первой фазе осуществления алгоритма метод обрат- ного распространения используется для вычисления градиентов в каждом из элемен- тов (а затем, на следующем этапе, вычисляются весовые коэффициенты).
298 Часть III. Моделирование стрельбы Набросок кода, приведенный в листинге 19.2, лежит в основе всех методов, бази- рующихся на использовании градиентов, поскольку в этой процедуре фактически вычисляется градиент. После этого на второй стадии алгоритма обратного распро- странения применяется метод наискорейшего спуска для определения весовых ко- эффициентов (листинг 19.3). (Обучение происходит именно на этом этапе.) Листинг 192. Алгоритм обратного распространения, который используется для вычисления градиента ошибки в каждом из элементов # Вычислить градиент в элементах первого слоя for each unit j in the last layer delta[j] = deriv_activate(net_sum) * (desired[j] - output[j]) end for # Обработать слои в обратном направлении, распространяя по ним # градиент ошибки for each layer from last-1 down to first for each unit j in layer total = 0 # Добавить взвешенный градиент ошибки из следующего слоя for each unit k in layer+1 total += delta[k] * weights(j][k] end for delta[j] = deriv_activate(net_sum) * total end for end for Листинг 19.3. Применение метода наискорейшего спуска для вычисления градиента ошибки в каждом из весовых коэффициентов for each unit j for each input i # Откорректировать весовые коэффициенты с использованием # вычисленного градиента ошибок weight[j][i] += learning_rate * delta[j] * output[i] end for end for Для вычисления приращения каждого весового коэффициента, Awij, применяет- ся правило, известное под названием обобщенного дельта-правила. Оно представля- ет собой расширение дельта-правила, используемого для обучения однослойных персептронов. Скорость обучения Т| — это небольшая константа, определяемая ин- женером, a 5j — градиент ошибки элемента j по отношению к результирующей сумме £j. Последнее значение применяется для вычисления необходимого измене- ния в весовых коэффициентах, которое позволило бы реализовать метод градиент- ного спуска. Метод быстрого распространения Метод быстрого распространения — это метод пакетного обучения, в основе кото- рого лежит целый ряд идей. Во-первых, в этом методе используются преимущества ло- кально адаптивной оптимизации, которая предусматривает корректировку величины шагов с учетом локальных параметров (например, неглобального значения скорости
Глава 19. Многослойные персептроны 299 обучения). Во-вторых, используются сведения о производной более высокого порядка (по такому же принципу, как в математических методах Ньютона). Вообще говоря, ме- тод быстрого распространения обеспечивает лучшее прогнозирование наклона кривой и определение местонахождения минимума (в большинстве случаев принятые при этом предположения являются вполне удовлетворительными). Теория, лежащая в основе метода быстрого распространения В методе быстрого распространения для обновления весовых коэффициентов применяется процедура, во многом напоминающая стандартный алгоритм обрат- ного распространения. Для этого требуется определить градиент ошибки в каждом весовом коэффициенте, обозначаемый как Ve (t). Этот градиент является одинако- вым для всех обучающих выборок, поскольку метод быстрого распространения представляет собой алгоритм пакетного обновления: Эе VE(t) = = -6jYi Это значение градиента является необходимым для текущей эпохи t (напомним, что эпохой называется период обучения) и для предыдущей эпохи, t-1, для которой значение градиента обозначается как Ve (t-1). То же самое относится к шагу об- новления весовых коэффициентов, Vwij (t) и Vwij (t-1). В таком случае обновле- ние весового коэффициента можно определить следующим образом: Vwij(t) = Vwij(t-l) Практика показала, что при решении многих задач метод быстрого распростра- нения является гораздо более эффективным, по сравнению со стандартным методом обратного распространения. Но в других случаях некоторые принятые предположе- ния о характере изменения наклона кривой могут оказаться не совсем обоснован- ными. В действительности успешность реализации метода быстрого распростране- ния зависит непосредственно от самой задачи и может быть проверена путем срав- нения производительности этого алгоритма с двумя другими рассматриваемыми алгоритмами. Реализация метода быстрого распространения Для реализации метода быстрого распространения необходимо предусмотреть еще два массива, для значений шага и градиента; в этих массивах должны сохра- няться значения, оставшиеся после предыдущей итерации. Поскольку данный алго- ритм является пакетным, все градиенты, относящиеся к каждой обучающей выбор- ке, складываются. В алгоритме обратного распространения такой же эффект может быть достигнут путем накопления значений S, после каждой итерации. Полученные значения переустанавливаются на начальные только со времени открытия новой эпохи (т.е. после перезапуска итерации по всем выборкам). Для реализации алгоритма быстрого распространения необходимо заменить вто- рую часть алгоритма обратного распространения; дело в том, что теперь использует- ся новое правило обновления весового коэффициента, а не метод наискорейшего спуска (листинг 19.4).
300 Часть III. Моделирование стрельбы Листинг 19.4. Процедура обновления весового коэффициента, применяемая в алгоритме быстрого распространения for each unit j for each input i # Вычислить градиент и шаг для каждого весового коэффициента new_gradient[j][i] = -delta[j] * input[i] new_step[j][i] = new_gradient[j][i] / (old_gradient[j][i] - new_gradient[j][i]) * old_step[j][i] # Откорректировать весовой коэффициент weight[j][i] += new_step[j][i] # Сохранить значения для следующего вычисления old_step[j][i] = new_step[j][i] old_gradient[j][i] = new_gradient[j][i] end for end for Если в распоряжении разработчика имеется применимый алгоритм обратного распространения, то для него не потребуется много времени, чтобы реализовать и проверить вариант с быстрым распространением. Метод упругого распространения Метод упругого распространения (Resilient Propagation — RProp) — это еще один алгоритм пакетного обучения, в котором обновление весовых коэффициентов осу- ществляется только после того, как будут обработаны все обучающие выборки [68]. Основная идея этого алгоритма состоит в том, что величина шага, используемого для обновления весовых коэффициентов, не определяется самим градиентом; это позволяет устранить основные недостатки, возникающие при использовании метода наискорейшего спуска. Теория, лежащая в основе метода упругого распространения В алгоритме упругого распространения используется понятие величины обнов- ления Ajj, которая служит для определения шага Awi:j. При этом важно то, что эти два понятия являются различными, но система обозначений, выбранная Ридмилле- ром (Riedmiller) и Брауном (Braun), разработчиками данного метода, не позволяет легко избежать путаницы. Однако следует помнить, что величина обновления ис- пользуется для определения шага: -Aij (t) если VE(t)>0 Awij = " +Aij(t) если VE(t)<0 .0 в противном случае Метод упругого распространения является относительно простым для понима- ния. Если наклон кривой увеличивается, то весовой коэффициент уменьшается (первый случай). И наоборот, весовой коэффициент корректируется в большую сто- рону’, если градиент становится отрицательным (второй случай). Если же наклон от- сутствует, то мы должны находиться в точке минимума, поэтому задавать шаг вооб-
^alallaus^ll. Глава 19. Многослойные персептроны 301 ще не требуется (третий случай). Для вычисления новой величины обновления не- обходимо применить следующее уравнение: если VE(t)*Е(t-1)>0 Aij = ST]'*Aij(t-l) если Ve (t) *E (t-1) <0 Ди(t-1) в противном случае В этом уравнении т| и т| представляют собой константы, которые определены так, что 0<т| <1<т) . Неформально можно отметить, что величина шага увеличивается (умножается на г] ), если градиент сохраняет то же направление (первый случай). Вели- чина шага уменьшается (умножается на т| ), если градиент меняет знак (второй случай). В противном случае, если градиент равен 0, величина шага остается неизменной. Реализация метода упругого распространения И в этом случае требуются дополнительные массивы, предназначенные для хра- нения предыдущих значений градиентов ошибок, а также предыдущих величин об- новления для каждого весового коэффициента. Поскольку данный алгоритм также является пакетным, первый цикл вычисления суммы градиентов является таким же, как и в алгоритме быстрого распространения. После этого вступает в действие вто- рой этап алгоритма, на котором осуществляется обновление весовых коэффициен- тов, как показано в листинге 19.5. Листинг 195. Процедура обновления весовых коэффициентов, которая входит в состав алгоритма упругого распространения for each unit j for each input i # Вначале определить градиент в нейроне new_gradient[j] = - delta[j] * input[i] # Проанализировать изменение градиента, чтобы определить # размер обновления if new_gradient[j] * old_gradient[j] > 0 then new_update[j] [i] = nplus * old__update[j] [i] else if new gradient(iI * old_gradient[j] < 0 then new_update[j][i] = nminus * old_update[j][i] else new_update[j][i] = old_update[j][i] # Определить, в каком направлении должен быть сделан шаг if new gradient[i] > 0 then step[j][i] = -new_update[j][i] else if new gradient[i1 < 0 then step[j][i] = new_update[j][i] else step[j][i] = 0 # Откорректировать весовой коэффициент и сохранить значения # для следующей итерации weight(j][i] += steplj] [i] old_update[j][i] = new_update[j][i] old_gradient[j][i] = new_gradient[j][i] end for end for
302 Часть III. Моделирование стрельбы Задача практической реализации алгоритма упругого распространения немного сложнее, но все равно становится достаточно простой после успешной реализации алгоритма обратного распространения. Проблемы практического применения алгоритмов Теоретические сведения, изложенные выше в данной главе, показывают, как можно упростить решение практических задач, а в этом действительно есть необхо- димость, поскольку из-за наличия дополнительных скрытых слоев задача обучения персептронов становится сложной. Поэтому важно также контролировать качество обучения. Обобщение На этапе обучения должна осуществляться оптимизация весовых коэффициентов на основании данных, представленных в обучающих выборках. Но еще одна цель обу- чения состоит в проверке того, что многослойный персептрон успешно действует и в случае предъявления ему других, не встречавшихся ранее выборок (проверка целевой функции). Способность персептрона обрабатывать новые выборки в результате обуче- ния на известных выборках именуется способностью к обобщению, которая представ- ляет собой способность выводить общие правила из предъявленных примеров. Обобщение может рассматриваться как поиск приемлемой поверхности решений. При этом возникает проблема, связанная с тем, что если в результате обучения на кон- кретном множестве выборок будет сформирована некоторая поверхность решений, то может оказаться, что полученный результат не совпадает с действительной поверхно- стью решений. А если будет осуществляться слишком тщательная подгонка весовых коэффициентов под предъявляемые образцы выборки, то может оказаться, что ней- ронная сеть не действует достаточно успешно применительно к другим, не встречав- шимся ранее выборкам. Возникающее при этом затруднительное положение известно как чрезмерно тщательная подгонка. Пример подобной ситуации показан на рис. 19.6. При обучении однослойных персептронов проблема обобщения обычно не воз- никает, поскольку поверхность решений всегда представляет собой прямую! А в многослойных персептронах сложность поверхности решений зависит от количества скрытых элементов, поэтому способность к обобщению в значительной степени за- висит от указанного параметра. Необходимо искать компромисс, определяя количе- ство скрытых элементов и соответствующее ему относительное качество результатов. Способность персептрона к обобщению снижается из-за наличия неправильных или неполных данных. Если обучение не позволяет добиться нужного результата, обычно следует обратить внимание на качество обучающих выборок (например, та- кая ситуация возникает, если количество выборок слишком мало или сами выборки не являются достаточно представительными).
^alattausi^i Глава 19. Многослойные персептроны 303 Рис. 19.6. Пример чрезмерно тщательной подгонки, при которой полученная в результате обучения поверхность решений слишком подробно отражает особенности обучающих вы- борок и поэтому не обеспечивает достаточно качественного обобщения других примеров Один из способов повышения способности к обобщению состоит в том, что приме- нительно к рассматриваемой задаче необходимо собрать все возможные данные (или на- копить такое количество данных, которое является почти исчерпывающим). А если в дальнейшем потребуется найти компромисс между количеством скрытых элементов и качеством результатов, то эта задача может быть решена с помощью аттестации. Проверка и аттестация Для повышения шансов добиться успешного обобщения можно применить опре- деленный метод подготовки обучающих данных. Этот метод по существу предусмат- ривает разбиение обучающих данных на три описанных ниже различных набора. > Обучающие наборы данных непосредственно применяются для обучения пер- септрона. После определения ряда параметров используются алгоритмы, позво- ляющие добиться получения оптимальных значений весовых коэффициентов. > Аттестационные наборы применяются для проверки качества обучения. Если в процессе обучения приходится изменять некоторые параметры, то аттеста- ционные наборы могут использоваться для обнаружения наилучшей комби- нации этих параметров. > Проверочные наборы позволяют провести окончательную проверку персеп- тронов, прошедших обучение и аттестацию. Но при этом для дополнитель- ного обучения персептрона не должна использоваться хоть какая-либо ин- формация из проверочного набора.
304 Часть III. Моделирование стрельбы По существу, процедура поиска наилучшей модели должна предусматривать обу- чение сразу нескольких персептронов; при этом для каждого из персептронов долж- ны быть заданы разные параметры. После этого с использованием аттестационного набора определяется наилучший персептрон. Решение о выборе такого персептрона должно быть окончательным, но при желании может быть также организована про- верка этого персептрона с помощью проверочного набора. Сравнение инкрементных и пакетных методов В качестве общего правила следует отметить, что при любой возможности следует отдавать предпочтение пакетному обучению. Пакетные алгоритмы сходятся к пра- вильному результату быстрее и с более высокой точностью. В частности, если алгоритм упругого распространения не позволяет найти решение задачи, то практически нельзя рассчитывать на то, что этого позволят добиться другие методы. Даже если пакетный алгоритм не является непосредственно применимым, необходимо переформулировать задачу так, чтобы в ней был задан алгоритм, оформленный как пакетное задание. Об- щий замысел состоит в том, что проверка осуществимости проекта должна выполнять- ся с использованием алгоритма, имеющего самые высокие шансы на успех. В случае необходимости можно предусмотреть сбор и накопление инкрементных данных для последующей пакетной обработки. После этого, если первая проверка окажется ус- пешной, может быть предпринята попытка инкрементного обучения. Инкрементные подходы особенно хорошо подходят для решения оперативных задач (для обучения непосредственно во время самой игры), поскольку для них тре- буется меньший объем памяти. В действительности замысел подобного обучения со- стоит в том, что персептрон должен иметь возможность проходить обучение на при- мерах сразу после обнаружения каждого очередного примера, а после этого немед- ленно его отбрасывать. Но при этом может возникнуть опасность того, что ранее по- лученные знания будут “забыты” под влиянием более свежих примеров. Организация инкрементного обучения Разработано несколько общепринятых способов организации адаптивного поведе- ния. Эти способы будут рассматриваться в главе 48, “Применение адаптивных форм поведения”. Особенно важное значение принципы адаптивного поведения имеют применительно к персептронам, поскольку обеспечивают приобретение знаний в опе- ративном режиме с учетом того, что ранее полученные знания не должны вытесняться полученными позже. Один из возможных подходов к решению этой задачи состоит в том, что с течени- ем времени уменьшается скорость обучения. Безусловно, всегда существуют опреде- ленные предпосылки, что персептрон потеряет ранее накопленный опыт под воз- действием поступивших позднее обучающих примеров, пусть даже имеющих мень- шую важность. На практике, чтобы избежать этого, можно со временем уменьшать скорость обучения. В результате этого с течением времени будут также уменьшаться величины корректировок, которые должны быть внесены в значения весовых коэф- фициентов в соответствии с методом наискорейшего спуска. Следует отметить, что фактически не предусмотрен какой-либо формальный под- ход, позволяющий определить, как должна со временем уменьшаться скорость обуче- ния, поскольку в действительности специфика применения этого метода достижения
TUtdattaus^i Глава 19. Многослойные персептроны 305 устойчивых результатов обучения зависит от самой задачи. Однако, как правило, как наиболее успешные проявляют себя стратегии, предусматривающие линейное или за- медленное экспоненциальное снижение скорости обучения во времени. К сожалению, из этого также следует, что по истечении достаточно продолжитель- ного времени обучение, по существу, прекращается. Итак, очевидно, что уменьшение скорости обучения позволяет в некоторых случаях устранить недостатки инкремент- ного обучения, связанные с вытеснением ранее полученных знаний, но может также привести к возникновению других проблем, которые обусловлены прекращением обу- чения из-за слишком низкого значения скорости обучения, тогда как фактически все еще необходимо продолжать обучение. Из сказанного следует, что указанный метод следует применять с особой осторожностью. Обсуждение полученных результатов Таким образом, методы моделирования, основанные на использовании нейронных сетей в целом и персептронов в частности, являются спорными, особенно когда речь идет о программировании игровых средств ИИ. С одной стороны, многослойные пер- септроны позволяют решать определенные задачи чрезвычайно качественно и удиви- тельно эффективно. С другой стороны, многослойные персептроны характеризуются наличием неоспоримых недостатков, которые иногда исключают возможность их применения при разработке игр, и этот факт может отчасти служить объяснением то- го, почему персептроны не применяются в игровых программах достаточно широко. Преимущества персептронов Методы моделирования с помощью персептронов базируются на полностью обос- нованном математическом фундаменте. А недавно разработанные методы, наподобие упругого распространения, проявляют себя как очень надежные средства поиска ре- шений, при условии что такие решения существуют. Если задачи хорошо структуриро- ваны, то часто можно обнаружить, что применение персептрона может стать одним из наилучших подходов к их решению. Кроме того, если при использовании персептро- нов обнаруживаются какие-либо нарушения в работе, то можно сделать вывод, что до- пущена какая-либо ошибка при определении одного из параметров персептрона или даже проявляются недостатки в его проекте. Иными словами, все сложности, возни- кающие в процессе использования персептронов, вполне поддаются анализу. Еще одним преимуществом персептронов является то, что для них предусмотрен широкий набор доступных алгоритмов обучения. Эти алгоритмы обучения позволяют применять многослойные персептроны в условиях выбора многочисленных и разно- образных параметров, при различных ограничениях; благодаря этому предоставляется необычайно широкий выбор вариантов решения задач. В этом и состоит проявление истинных возможностей персептронов, о которых всегда следует помнить, принимая решение об использовании многослойных персептронов. Наконец, многослойные персептроны по самой своей сути предназначены для работы с непрерывными данными. Кроме того, они позволяют исключительно ус- пешно обрабатывать зашумленные данные, а также дают возможность применять в качестве входных и выходных данных данные весьма разнообразных типов.
306 Часть III. Моделирование стрельбы Недостатки персептронов Нейронные сети не позволяют достаточно легко извлечь содержащиеся в них зна- ния; безусловно, можно легко определить, какие значения имеют сами весовые коэф- фициенты, но непосредственно из этих значений нельзя извлечь какой-либо смысл, не потратив целые часы на их анализ. Из этого также следует, что успешное функцио- нирование персептронов полностью зависит от того, какие алгоритмы использовались для их создания. Дело в том, что разработчик не может вручную модифицировать зна- чения весовых коэффициентов персептрона, не понимая, что они означают! Кроме того, после завершения процесса обучения в многослойном персептроне создается представление результатов обучения, которое остается неизменным. Это оз- начает, что для обновления состояния персептрона необходимо либо начинать обуче- ние с нуля, либо проводить переобучение. Однако переобучение не дает никаких га- рантий того, что будут сохранены знания, которые были ранее получены в процессе обучения. Это означает, что после переобучения может потребоваться повторно вы- полнить все действия, которые были осуществлены до сих пор в ходе проверки и от- ладки персептронов. Для того чтобы разработка многослойного персептрона завершилась успешно, при- ходится проводить очень много экспериментов. При этом возникает необходимость рассматривать в качестве параметров, подлежащих исследованию, не только количест- во обрабатывающих элементов, но и количество слоев. Кроме того, в процессе проек- тирования особое внимание необходимо уделять вопросам определения входных и вы- ходных данных, поскольку от правильного решения этих вопросов в значительной степени зависит успешное решение задачи. К тому же, многослойные персептроны часто нуждаются в получении заранее отформатированных данных. Это означает, что для них должна быть предусмотрена предварительная и последовательная обработка данных для приведения этих данных в соответствии с истинным характером решаемой задачи (поскольку нейронные сети фактически не позволяют выделять из потока дан- ных только те данные, которые относятся к решаемой задаче). Наконец, при использовании многослойных персептронов возникают серьезные проблемы, связанные с масштабированием. В частности, обнаруживаются весьма значи- тельные трудности при использовании персептронов для формирования сложных по- верхностей решений или для решения задач, имеющих высокую размерность (поскольку при этом затраты памяти и вычислительных ресурсов возрастают по экспоненте). Резюме Многослойные персептроны как средство моделирования данных представляют собой расширенную версию однослойных персептронов. Основные особенности многослойных персептронов описаны ниже. > Многослойные персептроны имеют промежуточные слои обрабатывающих элементов, которые соединены связями, обозначенными весовыми коэффи- циентами. > Функция активизации скрытых элементов должна быть нелинейной (в иде- альном случае должна применяться сигмоидальная функция).
^alaHausiik Глава 19. Многослойные персептроны 307 > Для вычисления выходных данных входные данные распространяются после- довательно через слои, проходя один слой за другим. > В связи с наличием промежуточного слоя возникают дополнительные трудно- сти, поэтому задача обучения многослойного персептрона становится сложнее. > В ходе реализации алгоритма обратного распространения происходит вычис- ление градиента ошибки в последнем слое, после чего ошибка распространя- ется через слои в обратном направлении с учетом определенных критериев. > Для обучения многослойных персептронов могут применяться и пакетные, и ин- крементные алгоритмы, в том числе с применением решений на основе дельта- правила или адаптивных стратегий корректировки весовых коэффициентов. Результатом создания многослойного персептрона становится способ реализации средств ИИ, способных к обучению в целях оптимальной аппроксимации функций. На практике многослойные персептроны могут использоваться при программиро- вании игровых средств ИИ для принятия решений, прогнозирования результатов или распознавания образов в картине текущей ситуации. В следующей главе показа- ны примеры применения многослойных персептронов для выбора цели и оценки преимуществ прицеливания в определенную точку в пространстве. Практическая демонстрационная версия Оппо — это анимат, в котором используется крупная нейронная сеть для решения задачи стрельбы в целом, включая прогнозирование, выбор цели и прицеливание. В этом анимате применяется пер- септрон, которому передается информация в виде сочетания показателей, которые рассматривались в предыдущих главах. Безусловно, результаты, достигаемые аниматом Оппо, являются довольно скромными, но этот анимат успешно демонстрирует многосторонность многослойного персептрона и доказывает преимущества декомпозиции всего поведения в целом на отдельные операции. Докумен- тированный исходный код этого анимата можно найти на Web-узле http: / /AiGameDev. сот/.

^alaHaus^k Гпава 20 Выбор цели В настоящей главе показано, как используют- ся многослойные персептроны (MultiLayer Perceptron — MLP) для решения сложных задач. В ней описано, как должно проводиться обуче- ние аниматов, чтобы они могли оценивать, ка- кой ущерб нанесет противнику пуск ракеты. Та- кая возможность позволит аниматам выбирать цели, поражение которых с наибольшей вероят- ностью приведет к поражению противника, в ре- зультате либо прямого попадания, либо попада- ния осколков. Лучший выбор цели позволяет также аниматам избежать нанесения поврежде- ний самим себе во время пуска ракеты. В начале данной главы приведен краткий об- зор всех аспектов рассматриваемой задачи, на- чиная от неформального описания и заканчивая реализацией и оценкой. В настоящей главе представлены перечис- ленные ниже темы. > Практический пример решения задачи выбора цели с пояснением того, какие свойства ситуации влияют на определение места, в которое должен быть направлен выстрел. > Некоторые рекомендации по осуществле- нию разработки, особенно в части прове- дения экспериментов в связи с возникно- вением во время работы непредвиденных ситуаций. > Интерфейсы для многослойного персеп- трона, применяемые на этапах инициали- зации и прогона. > Описание взаимодействия структур данных и алгоритмов, а также самой реализации. > Информация о том, как осуществляется решение рассматриваемой задачи на этапе В ЭТОЙ ГЛАВЕ- • Практический пример • Основные соображения • Проект модуля • Реализация • Общее описание приложения • Оценка • Резюме
310 Часть III. Моделирование стрельбы разработки приложения, какие проблемы при этом возникают и в чем приме- нение персептрона способствует решению этих проблем. > Ознакомление с созданным в итоге аниматом и с его поведением во время вы- бора цели. К концу данной главы должны быть созданы аниматы, способные управлять ра- кетными пусковыми установками как смертельным оружием, владение которым не приносит самим себе значительных повреждений. Практический пример В предыдущих главах были приведены некоторые соображения, касающиеся вы- бора цели, а в данной главе эта тема рассматривается более подробно. Прежде всего необходимо определить, от каких особенностей ситуации зависит вероятность по- ражения цели и какой выигрыш может быть достигнут в результате выбора той или иной цели. Во-первых, необходимо рассмотреть, от каких особенностей задачи непосредст- венно зависит ее успешное решение. На рис. 20.1 показаны четыре точки в простран- стве, наличие которых приходится учитывать в процессе решения задачи, а также обо- значены пять основных перечисленных ниже характеристик. Положение противника Скорость Оценка \ Начало Ракета V координат X участника игры Рис. 20.1. Возможный сценарий производства выстрела, в котором выбрана одна цель, близкая к предполагаемой позиции противника > Расстояние от того места, где находится анимат, до цели; чем ближе цель, тем выше вероятность попадания в нее. > Расстояние между положением противника и местонахождением цели; чем дальше противник, тем меньше вероятность того, что он в конечном итоге окажется там, куда целится анимат, т.е. в месте расположения цели. > Расстояние между выбранной целью и ожидаемым положением противника (поскольку осуществляемое прогнозирование должно быть относительно точным). > Относительный угол, позволяющий связать траекторию поражающего эле- мента и вектор скорости противника.
Глава 20. Выбор цели 311 > Относительный угол, позволяющий связать вектор скорости противника и вектор, направленный от цели к оцениваемой позиции. Во-вторых, следует отметить, что на выбор цели могут повлиять некоторые свой- ства анимата, перечисленные ниже. > Угловое отклонение вектора направленности анимата на цель, а также угловая скорость; задача прицеливания по некоторым целям проще по сравнению с дру- гими целями. > На способность поражения конкретных целей могут повлиять и линейная скорость движения, и направление движения. Если эти основные факторы известны, то обеспечивается возможность выдвигать предположения, касающиеся того, какой ущерб противнику будет нанесен пора- жающим элементом. Безусловно, процесс проектирования вручную системы, спо- собной прогнозировать такой успех, является достаточно сложным, поэтому для обучения решению подобной задачи может применяться персептрон. Основные соображения Поскольку речь идет об использовании многослойного персептрона, мы не име- ем возможности чрезмерно увлекаться творческими поисками. Безусловно, приме- няя систему на основе правил, мы были бы вынуждены приспосабливать эту систе- му для решения данной задачи, а персептроны, с другой стороны, в основном, оста- ются стандартными и изменяются только при реализации алгоритмов обучения, предназначенных для этих персептронов. Поэтому не приходится задумываться над тем, каким должен быть проект нейронной сети; вполне достаточно применить стандартный полносвязный модуль с прямыми связями. Поскольку, по существу, рассматривается проблема выбора оптимального пове- дения, в идеальном случае хотелось бы предусмотреть, чтобы аниматы, управляемые персептронами, обучались выбору цели в оперативном режиме. Тем не менее может оказаться, что подобный подход нельзя реализовать непосредственно, поскольку об- рабатываемые данные являются очень сложными, а при решении рассматриваемой задачи возникают непредсказуемые ситуации. По этой причине в случае обнаруже- ния каких-либо нарушений в ходе обучения можно перейти к такой организации ра- боты, в которой сбор данных осуществляется в ходе игры, а обучение проводится в автономном режиме. Применение такого подхода позволяет также получить воз- можность самим анализировать данные для проверки того, действительно ли эти данные предоставляют какой-то материал для обучения. Мы получаем возможность таким образом определить, относятся ли к делу характеристики задачи, которые рас- сматривались в предыдущих главах (и в приведенном практическом примере). Бла- годаря возможности применения знаний об относящихся к делу важных характери- стиках повышается точность прогнозирования, уменьшаются масштабы представ- ления многослойного персептрона и ускоряется обучение. Но в любом случае накопление огромных объемов данных способствует повыше- нию качества работы, поскольку благодаря этому появляется возможность проводить исследования на предмет того, насколько велик уровень шума (и нужны ли какие-либо превентивные меры). Безусловно, любые игры характеризуются наличием непредска-
312 Часть III. Моделирование стрельбы зуемости, поэтому даже с виду одинаковые поединки могут приводить к различным результатам. Предполагается, что уровень шума как таковой будет весьма высок, по- этому чаще всего процесс обучения на основе непосредственно полученных данных становится более затруднительным. В подобных случаях может потребоваться вначале провести статистический анализ, получить промежуточные результаты и применить многослойный персептрон для обучения на основе этих результатов. Проект модуля В настоящем разделе рассматривается проект модуля многослойного персептро- на. В частности, показано, как можно провести инициализацию этого модуля с по- мощью имеющихся данных и каковым должен быть интерфейс этапа прогона моду- ля на языке C++. Инициализация Проблема инициализации в данной главе будет рассматриваться лишь в самых общих чертах; определяется только топология многослойного персептрона. В част- ности, к задаче инициализации относится определение количества входов и описа- ние каждого слоя с указанием количества элементов. На языке XML такие данные могут выглядеть примерно таким образом: clayer inputs="4" units="8"/> clayer units="l"/> Количество входов для всех слоев задается только один раз, поскольку неизвест- ным является лишь количество входов для первого слоя; эти входы рассматриваются как относящиеся ко всему персептрону. Входы элементов следующих слоев являют- ся выходами элементов предыдущих слоев, поэтому можно считать, что их количе- ство известно. Если в определении внутренних слоев персептрона заданы другие значения количества входов, то эти значения должны быть совместимыми с количе- ством выходов в предыдущем слое. Рассматриваемый модуль персептрона обладает также способностью записывать свои данные на диск. Безусловно, разработчики не обязаны предусматривать обра- ботку данных вручную (к тому же, часто и не в состоянии этого делать), поэтому нет необходимости описывать формат данных. Применяя модуль персептрона, доста- точно просто исходить из предположения, что реализации методов модуля, обеспе- чивающих сохранение и загрузку данных, являются внутренне совместимыми. Интерфейсы Интерфейсы подразделяются на два типа: для чтения данных персептрона (модели- рование) и для обновления данных персептрона (обучение). Благодаря разделению этих двух интерфейсов реализация может стать проще, если требуется только моделирование, а разработчики игр, в основном, заинтересованы в решении только этой задачи. Интерфейс для моделирования состоит из определения только одной функции. Эта функция принимает данные на входе в сеть и вырабатывает данные, которые появляются на выходе. В интерфейсах для упрощения и обеспечения безопасности
^atallausiiik Глава 20. Выбор цели 313 используется библиотека STL (Standard Template Library — стандартная библиотека шаблонов), но если возникает какая-либо проблема, модификации в это определе- ние могут быть внесены простейшим образом: void Run(const vector<float>& input, vector<float>& output); Для обновления данных используются интерфейсы двух типов: интерфейс ин- крементного обучения и интерфейс пакетного обучения. Интерфейс инкрементного обучения состоит из двух функций. Одна из этих функций обеспечивает обработку отдельных выборок. Эта функция определена во многом как функция моделирова- ния, но предоставляет возможность воспользоваться широким набором параметров, заданных по умолчанию (например, в ней коэффициент обучения определен как равный 0,1, а момент инерции установлен равным 0). А еще одна функция позволяет инициализировать сеть случайным образом: float Sample(const vector<float>& input, const vector<float>& output); void Randomize(); В отличие от этого, алгоритмы пакетного обучения, как правило, требуют боль- шего объема памяти по сравнению с методами инкрементного обучения, поэтому для них предусмотрена отдельная реализация. Тем не менее больший объем памяти может потребоваться, только если применяется пакетное обучение. В процедуре пакетного обучения фактически обрабатываются целые массивы, в ко- торых определены образы, представленные в виде входных и выходных данных. Опре- деление этой процедуры содержит также информацию о применяемом по умолчанию количестве итераций и пороговом значении ошибки: float Batch(const vector<Pattern>& inputs, const vector<Pattern>& outputs); Сама реализация персептрона может быть осуществлена исключительно с помо- щью этих интерфейсов, без участия разработчика. Реализация Программные средства, лежащие в основе самой реализации, полностью выведе- ны из определений интерфейсов. Благодаря этому разработчик получает исключи- тельную возможность реализовать различные методы, которые он сочтет необходи- мыми, не теряя вместе с тем совместимости с моделью. Структуры данных Фундаментальной структурой данных является массив слоев. В каждом из этих массивов содержится информация о находящемся в этом слое множестве элементов и о выходе из данного слоя. Выходные данные представлены в виде массивов, хра- нящихся в каждом слое, а не в виде элементов, поэтому применяемая организация хранения данных способствует упрощению обработки информации, проходящей через нейронную сеть. Обучающие данные хранятся отдельно, что позволяет обеспечить возможность обращаться к ним только по мере необходимости. Обучающие данные имеют такую же структуру, как и данные, используемые для моделирования. В модуле примени-
314 Часть III. Моделирование стрельбы тельно к каждому слою хранится производная от функции активизации для выход- ных данных, а также приведен градиент ошибки в элементе. Кроме того, отдельно для каждого слоя хранятся отклонения в весовых коэффициентах, которые могут использоваться для запоминания значения шага градиентного спуска. Это позволяет применять в алгоритме наискорейшего спуска значение момента инерции. Моделирование и обучение По существу, моделирование организовано с использованием целого ряда вло- женных циклов. Во внешнем цикле осуществляется обработка слоев и распростра- нение информации от входов к выходам. В среднем цикле осуществляется обработка данных каждого из элементов в отдельных слоях, а во внутреннем цикле фактически происходит вычисление результирующей суммы для элемента. Каждый цикл орга- низован в виде отдельной функции, что позволяет упростить код и устранить избы- точность. Внутренний цикл предусмотрен в целях повышения эффективности. В алгоритмах обучения вначале осуществляется моделирование распространения информации по прямым связям в целях определения производных и градиентов. После этого осуществляется этап обратного распространения ошибки для определе- ния градиентов в каждом из элементов. В дальнейшем к полученным градиентам может быть применен любой алгоритм, позволяющий откорректировать весовые ко- эффициенты. Если осуществляется пакетная обработка, то градиенты суммируются и полученные данные используются в других методах оптимизации градиента. Общее описание приложения В результате создания описанного выше персептрона появляется возможность применить его для решения задачи выбора цели. Мы, главным образом, стремимся получить возможность анализировать эффективность запуска каждой ракеты с уче- том сложившейся ситуации. После этого с точки зрения теории должна быть создана возможность провести обучение персептрона для прогнозирования эффективности любого выстрела до того, как он произойдет. В коде реализации средств ИИ применяется сочетание многих описанных выше методов. Для решения задачи ориентации на местности крайне важно найти реше- ние, которое обеспечивает получение достаточно полного представления об этой местности. Необходимо также иметь возможность следить за перемещением про- тивника и определять вектор его скорости. После этого с помощью средств ИИ мо- жет быть осуществлен запуск ракеты примерно в то место, где должна находиться цель, и проведено наблюдение за тем, что произойдет. Описание алгоритма Алгоритм, применяемый для выбора цели, представляет собой итерационный процесс. Дело в том, что задачу выбора цели невозможно полностью решить сразу, но процесс выработки решения можно легко разбить на ряд сценариев, подлежащих обработке с помощью средств ИИ.
Глава 20. Выбор цели 315 Для этого, по существу, применяется механизм выработки прогнозов, который вырабатывает все новые и новые случайно выбранные точки вокруг предполагае- мого положения противника. Вначале анимат проверяет первое же обнаруженное препятствие, находящееся на линии стрельбы (пол, стена), и использует его в каче- стве цели. После этого вызывается модуль персептрона для оценки возможности по- ражения в этой точке. Модуль возвращает положительный прогноз для цели, только если ущерб окажется достаточно значительным. Алгоритм решения этой задачи по- казан в листинге 20.1. Функция randvec () возвращает случайно выбранное сме- щение, а модуль персептрона вызывается из функции estimate_damage () для оценки указанного значения, относящегося к цели. Листинг 20.1. Определение итерационного процесса, в котором выбирается наилучшая близко расположенная цель путем прогнозирования ущерба и сравнения вероятности ее поражения с пороговым значением, установленным проектировщиком function select_target repeat # Выбрать потенциальную точку прицеливания вблизи от противника target = position + randvec() # Воспользоваться персептроном для предсказания вероятности # попадания value = estimate_damage( target ) # Остановиться, если вероятность достаточно высока until value > threshold return target end function Изучение этого алгоритма позволяет понять, как лучше всего воспользоваться возможностями нейронных сетей. Но, чтобы обеспечить обучение персептрона, не- обходимо решить еще некоторые задачи, связанные с программированием. Отслеживание пусков ракет Как оказалось, наиболее сложной задачей является слежение за ситуацией. А наи- больший объем программирования требуется для сбора и интерпретации информации о выстреле. Применяемые средства ИИ должны быть способными предоставить отве- ты на приведенные ниже вопросы. > Взорвался ли поражающий элемент достаточно близко от цели? > Был ли этот поражающий элемент запущен нами или кем-то другим? > Можно ли рассматривать какой-либо ущерб как результат действия данного поражающего элемента? > Каковы были условия окружающей среды во время производства данного вы- стрела? Чтобы можно было исключить любую возможность неправильной интерпрета- ции результатов стрельбы, при управлении каждым аниматом предпринимаются попытки обеспечить, чтобы в воздухе в любое время находилось не больше одной запущенной им ракеты. При таком условии становится проще оценить ущерб, вы- званный действием этой ракеты. В действительности успешному осуществлению данного процесса способствует воплощение в игре персонажей и действий, по-
316 Часть III. Моделирование стрельбы скольку все взрывы ракет, которые невидимы для анимата, вряд ли могут быть ре- зультатом его деятельности. Для сбора указанной информации применяются четыре различных шага, кото- рые перечислены ниже. Основная часть этой задачи решается с использованием со* бытий и функций обратного вызова (шаги 2 и 3). 1. После пуска ракеты запомнить начальные условия и приступить к отслежива- нию ситуации. 2. После восприятия крика боли (или обнаружения визуального признака пораже- ния, такого как кровь) определить, была ли эта реакция вызвана действием ра- кеты, проверив источник звука. Зарегистрировать полученную информацию. 3. Если обнаружен взрыв ракеты, переустановить цель на точку разрыва и задать вместо ожидаемого времени столкновения с целью текущее время. 4. Если ожидаемое время столкновения находится в прошлом (даже если учиты- вается небольшая поправка), использовать собранную информацию для обу- чения нейронной сети. Во всех этих четырех шагах учитываются этапы жизненного цикла ракеты. После взрыва ракеты средства ИИ получают уникальную выборку данных для обучения персептрона. Учет наличия шума Несмотря на все указанные предосторожности, обычно данные характеризуются наличием весьма значительного количества шума. Это означает, что даже с виду одинаковые ситуации могут стать причиной получения разных результатов. Это обу- словлено действием многих факторов, в том числе описанных ниже. > Для представления каждой ситуации применяются упрощенные способы, поэто- му остаются неизвестными многие параметры, которые являются изменчивыми. > Перечень внешних характеристик каждой ситуации, для которых предусмот- рен сбор информации, является еще более ограниченным (в соответствии с проектом). > Сама среда является непредсказуемой, поскольку в ней имеется множество автономно действующих аниматов, которые должны вместе существовать в общей среде. Обычно обучающие выборки отражают весьма широкое разнообразие возмож- ных ситуаций, поэтому применение этих выборок для обеспечения качественного прогнозирования результатов становится весьма затруднительным. Эта задача еще больше усложняется, если приходится проводить обучение персептрона в оператив- ном режиме при инкрементном обучении, поскольку заметно сказывается наличие шума. Вместо этого может быть организована работа со всем набором данных, что позволяет действительно обеспечить получение приемлемых результатов, поскольку происходит усреднение шума, в результате чего его уровень становится допустимым. Для сбора необходимых данных применяется несколько аниматов (около пяти), которые сохраняют в журналах все полученные ими результаты экспериментов по
Глава 20. Выбор цели 317 осуществлению различных выстрелов. Благодаря этому появляется возможность по- лучить больше информации и заняться ее обработкой вручную для определения то- го, обнаруживаются ли в этих данных определенные тенденции. Это позволяет под- твердить правильность проектных решений. Например, на рис. 20.2 показано, что анализ относительного количества попаданий с учетом расстояния между аниматом и целью позволяет обнаружить интересную тенденцию: чем ближе цели к предпо- лагаемому местонахождению противника, тем выше вероятность причинить боль- ший ущерб (это — случайный ущерб, поскольку аниматы добровольно отказывают- ся от стрельбы по близким целям), но ущерб является максимальным на расстоянии около 15 шагов (между точками отсчета расстояния 180 и 324). График, показанный на рис. 20.2, демонстрирует реальные возможности развития навыков прогнозиро- вания, которые приобретает персептрон в процессе обучения решению задачи выбо- ра цели (несомненно, что при проектировании вручную подобные факторы были бы проигнорированы). Коэффициент попаданий Расстояние от участника игры до цели Рис. 20.2. Вероятность нанесения ущерба противнику в результате пуска ракеты, изме- ряемая с учетом расстояния от анимата Входные и выходные данные В процессе проведения расчетов применяются входные данные, выбранные сре- ди данных о расстояниях, а также точечные произведения, полученные с использо- ванием комбинированной информации о четырех точках в пространстве (речь идет об исходном положении анимата, местонахождении противника, ожидаемом место- нахождении и выбранной цели), как описано ниже.
318 Часть III. Моделирование стрельбы > Данные точечных произведений передаются непосредственно в модуль пер- септрона, поскольку они имеют подходящий диапазон (всегда остаются в ин- тервале [-1,1]). Если знак не является достаточно важной характеристикой, то в расчет может быть взято абсолютное значение такого произведения. > Для повышения удобства расчетов к значениям расстояния применяется опре- деленный коэффициент масштабирования. Такая операция не является необхо- димой, но масштабирование позволяет повысить эффективность работы с пер- воначально заданными случайными значениями весовых коэффициентов (которые выбираются из равномерного случайного распределения). Для этого входное значение расстояния делится на максимальное расстояние, если оно известно (например, расстояние между ожидаемым местонахождением против- ника и целью), или на какое-то обоснованное предполагаемое значение. Наиболее удобными для использования в качестве входных данных являются три основных расстояния, между четырьмя точками в трехмерном пространстве опреде- ления задачи (рис. 20.3). Безусловно, могут быть выявлены также оптимальные спо- собы использования точечных произведений, но они не столь очевидны. Можно было бы организовать дополнительную обработку, чтобы извлечь из полученных данных более полезную информацию, относящуюся к рассматриваемой ситуации, однако для этого необходимо избрать более универсальный подход. Например, то- чечное произведение векторов скорости поражающего элемента и противника равно 0, когда противник остается неподвижным. С точки зрения персептрона эта ситуа- ция может оказаться равносильной той, в которой выстрел не привел к прямому по- паданию. А в том случае, если осуществляется возврат значения 1 (а это аналогично прямому попаданию), полученные результаты становятся более совместимыми. Попадание/промах? Рис. 20.3. Графическое представление входных данных для персептрона; тремя основными характеристиками являются расстояния между нача- лом координат, противником и целью Уникальное выходное значение показывает причиненный ущерб. Тем не менее ущерб часто равен нулю, а мы заинтересованы в том, чтобы подчеркнуть наличие любого ущерба, поэтому используется булево выходное значение, которое указывает на появление ранения.
^ataHaus,^. Глава 20. Выбор цели 319 Процедура обучения Во время обучения роботам-аниматам не предоставляется возможность осуществлять запуск неограниченного количества ракет; аниматы сами должны взять с собой ракетную пусковую установку вместе с боеприпасами. На этом уровне проведения испытаний за- дача получения ракет является несложной, и даже такие средства ИИ, которые обеспечи- вают липп» простейшую организацию движения, позволяют анимату без особых сложно- стей время от времени пополнять запасы ракет. Аниматы, не имеющие боеприпасов, фактически служат хорошим практическим пособием для стрельбы по целям другим аниматам, имеющим ракетные пусковые установки (и это не вызывает хаос в игре). Чтобы сократить затраты времени, которые требуются в процессе моделирования для сбора одних и тех же данных, можно ускорить игру. Например, такого ускорения можно достичь, запустив игру Quake 2 в серверном режиме и отменив вывод графиче- ских изображений. По умолчанию серверы используют лишь такую часть своих обра- батывающих мощностей, которая обеспечивает моделирование в реальном времени. А инструментарий FEAR предоставляет опцию, с помощью которой можно разрешить ускорить игру так, чтобы моделирование осуществлялось на полной скорости и зани- мало максимально возможное количество процессорного времени. Это — превосход- ное средство, которое позволяет сэкономить большой объем времени разработки. Практическая демонстрационная версия Для иллюстрации материала, изложенного в этой главе, используется анимат Splash, который можно найти на Web-узле по адресу http: //AiGameDev. сот/. На узле приведены и исходный код, и исполняемые файлы, причем все эти материалы полностью готовы для работы. Анимат Splash про- гнозирует будущее положение противника, а затем генерирует в его окрестностях случайным обра- зом цель стрельбы, используя персептрон для оценки вероятности успеха. Если шансы на успех яв- ляются приемлемыми, производится запуск ракеты. Сбор обучающих данных происходит, если ожи- даемое время столкновения находится в прошлом. Оценка Несмотря на все предосторожности, в действительности данные, собранные в ка- честве примеров, являются очень зашумленными. В большинстве ситуаций усред- ненная ошибка достигает 25% (и в наилучшем случае не бывает меньше 17%). В ре- зультате этого для пакетного алгоритма требуются сотни периодов обучения (эпох), в зависимости от величин случайно выбранных весовых коэффициентов. Экспери- менты показывают, что невозможно выбрать какие-либо стандартные значения скрытых весовых коэффициентов; создается впечатление, что низкие значения, та- кие как 4/5, могут применяться так же успешно, как и прочие. Тем не менее, удается добиться того, чтобы персептроны в результате обучения могли распознавать неко- торые тенденции, особенно с использованием данных о расстояниях. Таким образом, точность обучения является относительно низкой, но несмотря на это персептрон все-таки оказывает ценную помощь при оптимизации выбора це- ли. Наглядно видно, как применение нейронной сети способствует повышению эф- фективности навыков стрельбы анимата. Персептрон, как правило, склоняется в пользу выбора точек, близких к прогнозируемому положению, к текущему поло-
320 Часть III. Моделирование стрельбы жению противника и еще более близких к началу координат траектории ракеты. Часто происходит выбор в качестве цели точек на полу, находящихся рядом с про- тивником (а это неплохие компромиссные решения). Вообще говоря, персептрон позволяет также очень хорошо обнаруживать недостатки в рекомендациях, сформи- рованных механизмом выработки цели, а это позволяет избежать такой ситуации, что анимат взорвет сам себя! Подобных выстрелов, достойных камикадзе, позволяет избежать принудительное задание вручную минимального расстояния, на котором следует пытаться поразить противника. Следует отметить, что подходящий механизм выработки целей, применяемый по умолчанию, можно разработать относительно легко и без использования технологии обучения. Например, одним из приемлемых правил является выработка случайным образом координат точки вблизи от прогнозируемого положения и проектирование этой точки на пол для поиска цели. Тем не менее персептрон обучается поиску тен- денций в условиях сложной задачи (что способствует общему повышению произво- дительности) и обеспечивает оптимизацию выбора цели в соответствии с отдельны- ми навыками. Аниматы, в которых подобный механизм генерации используется в сочетании с персептроном, выглядят во время обучения более реалистично. Из того, что при- меняется такой проект, следует, что на основании опыта с помощью персептрона происходит усовершенствование только навыка выбора цели; таким образом, риск того, что в результате обучения поведение анимата станет еще более “бессмыслен- ным”, отсутствует. Резюме В настоящей главе описан процесс разработки универсального модуля много- слойного персептрона с использованием формализованных интерфейсов. На осно- вании полученных результатов были сделаны приведенные ниже выводы. > Интерфейсы моделирования персептрона должны быть заданы отдельно от интерфейсов обучения, для того чтобы в случае использования нейронных се- тей, не проходящих обучение, издержки были минимальными. > Алгоритмы пакетного обучения также требуют большего объема памяти, по- этому должны применяться отдельно. В данной главе было показано, как спроектировать анимат, способный собирать данные из окружающей среды, чтобы извлечь из этих данных информацию о произ- веденных им ракетных выстрелах. Полученные данные позволяют организовать обу- чение, после которого анимат приобретает возможность предсказывать ущерб от ка- ждой ракеты. Таким образом, анимат становится способным выбирать случайные цели и использовать персептрон для получения оценки того, какая из них является наилучшей. Краткие сведения об этом приведены ниже. > Как оказалось, сложнее всего обеспечить сбор из внешней среды данных, по- зволяющих следить за ракетами.
^ataHaus,^. Глава 20. Выбор цели 321 > Если данные всех примеров хранятся в одном файле, это позволяет легче ис- ключить воздействие шума в данных. > Изучение графиков и гистограмм различных характеристик показало, что наи- более надежные сведения позволяют получить входные данные о расстояниях. > Обучение выбору цели лучше всего осуществлять в автономном режиме с по- мощью пакетного алгоритма. Персептроны позволяют разработчику средств ИИ тратить меньше времени на поиск решений относительно сложных задач. Это, в частности, позволяет превзойти возможности составления алгоритмов прицеливания вручную, поскольку в персеп- троне применяется технология обучения для развития способностей к прицелива- нию. Еще одним преимуществом многослойных персептронов является то, что они позволяют легко приспосабливаться к навыкам других аниматов. В следующей главе представлено важное понятие — понимание задачи. Этот на- вык имеет для разработчиков средств ИИ особое значение, поскольку понимание задачи всегда является первым шагом в проектировании систем ИИ.

^aiattaus,^. Гпава 21 Приобретение знаний о ЗАДАЧЕ Настоящая глава посвящена рассмотрению од- ного из фундаментальных принципов разра- ботки средств ИИ в целом, который представляет собой приобретение знаний о задаче. В части II рассматривались начальные этапы разработки средств ИИ, а именно, этапы анализа, постанов- ки задачи и разработки спецификации. Выполне- ние работ, предусмотренных на этом этапе, по- зволяет получить очень ценные сведения, касаю- щиеся конкретной задачи, но эти знания приме- нимы только на этапе разработки приложения. В процессе разработки на этапе создания при- ложения приходится так или иначе заниматься уточнением накопленных знаний о задаче с ис- пользованием опыта, полученного в результате исследования прототипов. Ниже приведено крат- кое описание различных уровней знаний, а также указано, как могут быть приобретены эти знания с применением практических примеров. На первый взгляд может показаться, что формирование постановки задачи намного про- ще по сравнению с поиском решений. Но, без- условно, гораздо важнее правильно сформули- ровать задачу, чем получить готовое решение, поскольку именно от этого зависит весь успех разработки. В настоящей главе основное внима- ние уделено определению общих принципов изучения проблемной ситуации, что позволяет сразу же выяснить, что для этого необходимо обладать перечисленными ниже способностями. > Анализировать сложные задачи. > Проектировать эффективные системы. > Находить недостатки решений, касающихся тех или других интересующих нас проблем. В ЭТОЙ ГЛАВЕ- • Понимание задачи на концептуальном уровне • Основополагающие знания • Понимание основ задачи • Уточнение формулировки задачи • Общая методология • Резюме • Краткий ретроспективный обзор • Перспективы применения нейронных сетей
324 Часть III. Моделирование стрельбы > Вносить усовершенствования в разработанные ранее методы. Дополнительные затраты времени на изучение задачи всегда оправдываются, по- скольку благодаря этому обеспечивается возможность упростить решение задачи за счет создания более удобной формы представления задачи. Особенно заметными становятся такие достижения, благодаря которым удается уточнить постановку зада- чи так, чтобы можно было действительно эффективно найти решение, или разде- лить ее на части, проще поддающиеся решению. В настоящей главе рассматриваются перечисленные ниже темы. > Способы неформального и теоретического представления задачи и основные признаки сложной задачи. > Применение более усовершенствованных способов изучения задачи с исполь- зованием средств анализа данных, взятых из статистики. > Аналитическое исследование задачи в целях выяснения наиболее сложных ха- рактеристик этой задачи. > Предоставление разработчику возможности применять знания, представлен- ные на разных уровнях, особенно в целях уточнения формулировок задач. > Изучение некоторых рекомендаций по использованию и уточнению знаний, применяемых в процессе решения задачи. Вначале в данной главе рассматриваются общие вопросы приобретения знаний о за- даче, после чего мы перейдем к описанию более сложных и утомительных подробностей. Понимание задачи на концептуальном уровне Рассматривая определенную задачу с позиций стороннего наблюдателя, ее можно трактовать как “черный ящик” в двух аспектах: как проявление определенного по- ведения, связанного с попыткой выполнить некоторые действия, или как про- граммный компонент, применяемый для обработки информации. Неформальные знания Неформально задачу, подлежащую решению, можно рассматривать с точки зрения того, какое задание должно быть выполнено с ее помощью. В частности, задания, ко- торые приходится выполнять при разработке игр, могут рассматриваться как модели- рование поведения, связанного с взаимодействием со средой (стрельба), получение информации (выяснение местонахождения противника и изучение местности) и дос- тижение некоторого результата (попадание поражающего элемента в цель), как пока- зано на рис. 21.1. Информация о задании, полученная таким образом, уточняется на этапе поста- новки задачи по разработке средств ИИ (см. главу 7, “Системный анализ и разработка технических требований”). Такие неформальные знания о том, какие действия выполняет рассматриваемый “черный ящик”, можно дополнительно уточнять, определяя связь между ситуацией и результатом, как правило, с примене- нием практического примера. Кроме того, в качестве неформальной оценки слож-
^alailaus^ik Глава 21. Приобретение знаний о задаче 325 ности задачи можно использовать критерии, с помощью которых оценивается само поведение (например, описание процесса следования вдоль стены в любом случае должно быть более подробным, чем описание процесса обхода препятствия). Рис. 21.1. Графическое представление задания; информа- ция используется для выработки результата; задача обеспечивает отображение входных данных на выходные Спецификация программного обеспечения К неформальному описанию задания (представленному в общих чертах) часто при- лагается формальное описание (более подробное), в котором представлен программный компонент как средство решения задачи. На этапе разработки спецификации должны быть созданы определения интерфейсов ко всем прочим компонентам (и к самой опера- ционной системе). Для этого должно быть, прежде всего, формализовано представление данных (см. главу 9, “Разработка технического проекта и представление знаний”). На этапе разработки приложения проводится изучение результатов, полученных с помощью прототипов, и это часто позволяет уточнить первоначальную постановку задачи перед ее реализацией в виде программного компонента. Например, как уточ- нение может рассматриваться описание дополнительных возможностей выбора цели на основании знаний о местности. Теоретический анализ задачи становится воз- можным только после того, как разработчики подготовят достаточно стабильный вариант определения формального интерфейса. Теоретический анализ Еще одним преимуществом спецификации является то, что она позволяет наи- лучшим образом выбрать входные и выходные данные (переменные, рассматривае- мые в постановке задачи). Безусловно, на основании изучения состава переменных может быть сделан логический вывод о том, какую сложность имеет задача с теоре- тической точки зрения, а это позволяет оценить возможности средств ИИ и способ- ность разработчика предложить решение для этой задачи (рис. 21.2). По существу, размерность задачи зависит от количества конфигураций входных и выходных переменных. Напомним, что каждая допустимая комбинация параметров образует одну конфигурацию. Множество всех конфигураций входных данных при- нято называть областью определения, множество всех конфигураций выходных дан- ных — областью значений.
326 Часть III. Моделирование стрельбы 10 8 ► Значения 2 Переменные Рис. 21.2. Пример задачи с шестью переменными, каждая из которых может иметь от двух до пяти значений; различие между входными и выходными переменными не проводится Размерность обеих областей (области определения и области значений) измеря- ется двумя описанными ниже факторами. > Количество измерений. Количество параметров, рассматриваемых в постанов- ке задачи, включая входные и выходные переменные. > Размер. Количество различных значений для каждого из параметров. Общее количество конфигураций для задачи вычисляется путем перемножения кардинальностей всех размерностей (рис. 21.3). По мере увеличения количества па- раметров, рассматриваемых в постановке задачи, общее количество конфигураций возрастает экспоненциально, поскольку в этом теоретическом анализе рассматрива- ется произведение указанных значений. Этот взрывообразный рост количества кон- фигураций известен под названием “проклятие размерности”. Пространство задачи ДИО Рис. 21.3. Множество конфигураций, представляющее .годные данные (слева), задачу (посередине) и выходные данные (справа); размерность задачи представ- ляет собой произведение размерностей входных и выходных данных В табл. 21.1 приведен пример расчета размерности области определения и облас- ти значений для простой задачи, связанной с принятием решения о том, следует ли
Глава 21. Приобретение знаний о задаче 327 нападать на противника. Задача решается с учетом идентификации противника, расстояния до него и собственной жизнеспособности. Даже для такой простой зада- чи количество конфигураций достигает 1 656 400. А после добавления такого пара- метра, как жизнеспособность противника, это количество конфигураций увеличи- лось бы до 167 296 400! Таблица 21.1. Размерность простой задачи, связанной с определением того, следует ли нападать на противника, учитывая его идентификацию, расстояние до него и собственную жизнеспособность Параметр Тип Область определения Размерность Жизнеспособность Integer [0..100] 101 Расстояние Integer [0..1024] 1025 Противник Enumeration [fred,...,jim] 8 Нападение Boolean [true,false] 2 Размерность задачи 1 656 400 Безусловно, этот теоретический анализ открывает самый неблагоприятный вари- ант. А на практике задачи часто оказываются намного проще. 1 Основополагающие знания Используя подход, основанный на представлении задачи в виде “черного ящика”, приходится ограничиваться неполными знаниями, в основе которых лежат интуиция и теория. А для того чтобы лучше понять задачу, необходимо попытаться решить ее на практике. Для этого требуется получить хотя бы одно, любое решение. Это может быть простой прототип, случайно выбранное решение или даже решение, полученное путем наблюдения над тем, как человек-игрок управляет игровым персонажем. После того как осуществляется попытка решить задачу на практике, обнаружива- ются реально использовавшиеся значения входных и выходных данных. Подход, осно- ванный на применении практических примеров, позволяет собирать многочисленные примеры конфигураций (допустим, путем регистрации в журнале данных о ведении сетевых игр между представителями группы разработчиков), а затем анализировать данные, полученные эмпирическим путем. Но при таких исследованиях полученные результаты, в основном, являются статистическими, поясняющими различные тен- денции изменения данных, вырабатываемых в процессе изучения задачи. Диализ частоты использования переменных После сбора данных в случайно выбранных решениях задачи можно применить различные статистические методы для достижения более глубокого понимания задачи. Простейшая форма анализа применяется для того, чтобы определить, с какой частотой используются те или другие значения каждой переменной (пример анализа частоты использования переменных в задаче, приведенной на рис. 21.2, показан на рис. 21.4).
328 Часть III. Моделирование стрельбы Часто встречающиеся Редко встречающиеся значения Переменные Рис. 21.4. Статистические данные об использовании переменных, на- копленные по результатам решения задачи, приведенной на рис. 21.2 После получения такой информации о частоте использования различных значений можно выбрать наилучшее представление, сосредоточившись на наиболее важных ас- пектах и игнорируя менее важные. Например, при выборе оружия более точное пред- ставление может использоваться, если расстояние до противника изменяется в широ- ких пределах, а если противники по большей части обладают полной жизнеспособно- стью, то степень дискретизации параметра, представляющего жизнеспособность, можно уменьшить. Переменные и ковариация На практике каждая переменная в тот или другой момент принимает почти все возможные значения. Тем не менее в большинстве задач используются далеко не все возможные конфигурации параметров. Такая ситуация особенно часто возникает, если входные параметры являются взаимозависимыми. В таких случаях обычно по- вторяются одни и те же комбинации входных и выходных параметров. Допустим, что правила игры или свойства среды ограничивают количество си- туаций (в частности, игровые персонажи, главным образом, не отрываются от пола, а вслед за причинением какого-то ущерба раздаются крики боли). На входные дан- ные воздействуют внешние ограничения (определяемые алгоритмом игры и прави- лами моделирования ситуации), а выходные данные являются объектом действия внутренних ограничений (требований, согласно которым персонажи должны обна- руживать реалистичное и интеллектуальное поведение). С формальной точки зрения связь между внешними и внутренними ограниче- ниями можно измерить как ковариацию между двумя параметрами (рис. 21.5). А ин- туиция подсказывает, что если один параметр может быть полностью определен по данным о другом параметре, то ковариация между этими параметрами должна быть высокой (например, так связаны друг с другом вероятность нанесения ущерба и правдоподобие попадания в противника). И наоборот, если два параметра не связа- ны друг с другом, то ковариация между ними должна быть близка к нулю (например, таковой является связь между наличием бокового препятствия и количеством бое- припасов, которые несет на себе противник).
^aiatfaus^li Глава 21. Приобретение знаний о задаче 329 Некоторая Сильная ковариация Рис. 21.5. Зависимости между переменными, которые рассматри- ваются в задаче (направления их действия обозначаются стрелка- ми); чем больше ковариация, тем проще задача поддается решению ПРИМЕЧАНИЕ Из того, что параметры являются условно независимыми друг от друга, следует, что зти два парамет- ра могут свободно изменяться относительно друг друга. А поскольку ковариация позволяет измерять только зависимости между двумя переменными, то ее значение, равное нулю, не позволяет гаранти- ровать условную независимость параметров. В действительности, могут существовать зависимости более высокого порядка, охватывающие большое количество параметров, наличие которых не позво- ляет выявить ковариация. На практике наличие высокой ковариации между двумя входными параметрами указывает на то, что имеется избыточная информация. С другой стороны, чем меньше ковариация между входными параметрами, тем больше информации может быть пред- ставлено с помощью этих входных данных. А что касается ковариации между входны- ми и выходными данными, то более высокие ее значения указывают на то, что рас- сматриваемая задача является чрезвычайно простой (к такому типу, например, отно- сятся задачи предотвращения столкновений с препятствиями). Если ковариация близ- ка к нулю, из этого следует, что задача с трудом поддается решению (в качестве примера можно указать задачу выбора цели на основе прогнозирования ущерба). На- конец, высокая ковариация между выходными параметрами является благоприятной, поскольку указывает, что выходные данные взаимосвязаны (поэтому проще становит- ся вычисление всех выходных данных). Эффективная область определения Как правило, из статистических данных о различных значениях переменных и о зна- чениях ковариации следует, что различные части области определения применяются с равной частотой, по сравнению с другими (рис. 21.6). И действительно, в большинстве задач редко используется вся область определения. Поэтому представление задачи может быть модифицировано таким образом, чтобы в нем отражалась только реально приме- няемая часть области определения. В этом состоит один из удобных способов оптимиза- ции задачи.
330 Часть III. Моделирование стрельбы Часто встречающиеся конфигурации Редко встречающиеся конфигурации Неиспользуемые конфигурации Рис. 21.6. Статистические данные по использованию в задаче отдельных конфигураций; изучение этих данных позволяет вы- делить наиболее и наименее важные части области определения Тем не менее, предпринимая попытки оптимизации задачи, необходимо соблю- дать осторожность. В результате удаления или упрощения ряда переменных в поста- новке задачи интерфейс становится менее гибким, поэтому сокращается количество возможных решений. Кроме того, могут быть упущения в самом статистическом анализе, особенно если количество собранных данных является недостаточным. По- этому лучше приступить к общему упрощению представления позже, после того как все функции начнут успешно работать. При таких условиях появляется возможность проверять допустимость проведения оптимизации путем сравнения и проверки по- лученных результатов. До тех пор, пока не достигнуто такое положение, информация об эффективной области определения может успешно применяться для разработки наиболее прием- лемого решения задачи, что позволяет уменьшить сложность средств ИИ, необхо- димых для ее решения. Понимание основ задачи Безусловно, анализ статистических данных позволяет добиваться большего успе- ха по сравнению с чисто теоретическим подходом, но при его использовании оста- ются еще возможности достичь гораздо более глубокого понимания задачи. В част- ности, во многих случаях между входными и выходными данными обнаруживаются более сложные связи, чем статистические. Для более полного изучения рассматри- ваемой предметной области необходимо применять аналитические методы. Свойства задачи Статистические данные позволяют ознакомиться с общей картиной, но в отдель- ных частях предметной области часто обнаруживаются собственные закономерности.
Глава 21. Приобретение знаний о задаче 331 Наличие симметрии в области определения Различные конфигурации переменных могут быть связаны не прямо, а косвенно. Например, может оказаться, что значения в некоторой части области определения идентичны значениям в другой части (или, допустим, являются противоположными). Такая ситуация часто возникает при управлении движением объекта; если обстоятель- ства складываются так, что объект может повернуть влево или вправо, то решение по выбору левого поворота становится противоположным решению повернуть направо. Из того, что значения в различных частях являются идентичными или противо- положными, следует наличие дублирующейся информации, а этим можно восполь- зоваться, принимая решение. Определенный уровень избыточности очень часто об- наруживается в крупных задачах. Для получения информации о подобных свойствах задачи необходимо использовать навыки к абстрактному мышлению и способности к распознаванию образов. Относительное количество правильных решений В проблемной области как “правильные” решения рассматриваются лишь опре- деленные комбинации значений входных и выходных параметров (рис. 21.7). В слу- чае простых задач относительное количество правильных конфигураций, по сравне- нию с общим количеством конфигураций, может оказаться весьма значительным (например, в открытом пространстве имеется очень большой выбор решений по предотвращению столкновения с препятствием). Если же задача является более сложной, то относительное количество правильных решений существенно уменьша- ется (например, при решении задачи прокладки маршрута следования вдоль стены в каждом случае требуются точные действия). Рис. 21.7. Два примера проблемных областей; на верхнем рисунке кон- фигурации являются симметричными, а на нижнем рисунке различные части проблемной области характеризуются разной сложностью
332 Часть III. Моделирование стрельбы Изменение сложности решений в различных частях проблемной области Может также оказаться, что сложность решений в тех или других частях про- блемной области не одинакова. В частности, может быть обнаружено, что взаимоза- висимость некоторых параметров изменяется под влиянием других параметров. Например, в открытом пространстве задача предотвращения столкновения с пре- пятствием решается очень просто, поскольку приемлемым является почти любое по- ведение. Но по мере приближения к препятствию требования к выработке определен- ных выходных значений становятся все более жесткими. Характер задачи Анализ параметров задачи позволяет обнаружить косвенные зависимости, кото- рые охватывают не две переменные, а большее количество переменных (к такой ка- тегории относятся проявления симметрии и условные зависимости). На концепту- альном уровне такие проявления могут быть описаны как непосредственные зави- симости со скрытыми параметрами. Явная формулировка выражений, связывающих подобные параметры, позволяет лучше понять истинный характер задачи (рис. 21.8). Ожидаемая точность Ущерб Вероятность попадания Рис. 21.8. Пример задачи, в которой имеются скрытые пара- метры (определяющие трудности при производстве выстрела и степень приближения), которые являются, в основном, неза- висимыми друг от друга, но становятся причиной проявления за- висимостей между входными и выходными параметрами Может оказаться, что подобные зависимости не так уж просто понять, поэтому рас- смотрим в качестве примера задачу выбора цели. Безусловно, существует возможность овладеть с помощью обучения навыками оценки потенциального ущерба от попавшей в цель ракеты на основе определения состояния противника. Но при анализе указан- ной зависимости необходимо учитывать скрытый параметр— результаты прогноза будущего местонахождения противника. И действительно, невозможно оценить ущерб, не используя подобный прогноз. Поэтому сгхпъетстнующая подзадача может быть выделена из внутреннего предоставления задачи, для того чтобы та часть задачи, которая относится к прогнозированию, была представлена явно. Еще один вариант состоит в том, что грубое предсказание может использоваться в качестве дополнитель- ного входа, позволяющего помочь выработать решение.
Глава 21. Приобретение знаний о задаче 333 Уточнение формулировки задачи В настоящем разделе рассматривается тема, касающаяся применения знаний о за- даче в качестве одного из направлений усовершенствования разработки. В частности, знания о задаче позволяют упростить ее до такой степени, чтобы иметь возможность применять для ее решения сложившиеся методы создания средств ИИ, или применить к ней рекурсивные методы разбиения на более легко решаемые подзадачи. Упрощение Вообще говоря, для представления входных и выходных параметров необходимо применять удобную форму, позволяющую избежать необходимости снова и снова переопределять интерфейсы для каждого из прототипов. Тем не менее часто возни- кает необходимость усовершенствования применяемых интерфейсов до начала раз- работки решения (рис. 21.9). Предобра- Последующая ботка Метод ИИ обработка Первоначальная задача Рис. 21.9. Уточнение задачи в целях ее упрощения; объем входных данных уменьшается за счет выделения наиболее важных характеристик, а вместо выходных параметров вырабатываются готовые действия Как правило, в основе методов ИИ лежит подход, согласно которому исходные данные должны быть как можно более краткими и представленными в наиболее удобном формате. Это означает, что бесформатные данные, поступающие из интер- фейсов, часто являются непригодными для использования в средствах ИИ или от- части не относящимися к делу, поэтому во многих случаях приходится использовать дополнительные методы для устранения указанной проблемы. Для того чтобы средства ИИ успешно функционировали, необходимо обеспечить обработку с их помощью сводных характеристик и получение готовых действий. По- скольку поток данных все равно не прерывается, сводные характеристики и готовые действия применительно к средствам ИИ все еще рассматриваются как входные и выходные данные, хотя, как правило, объем таких данных значительно сокращает- ся и они становятся гораздо более тесно связанными с процедурой выработки реше-
334 Часть III. Моделирование стрельбы ния. Инженер по искусственному интеллекту обычно выбирает сводные характери- стики, уточняя структуру входных данных таким способом, чтобы их можно было представить более кратко. Например, обобщенными характеристиками для задачи вы- бора цели может стать информация о расположении игровых персонажей в простран- стве (а не бесформатные данные о векторных координатах этих персонажей), а гото- выми действиями могут стать такие действия, которые позволят оценить преимущест- ва их осуществления (тогда как данные в полной форме позволяют лишь непосредст- венно определить точку в пространстве, где находится тот или иной персонаж). Таким образом, уточнение задачи может рассматриваться как введение дополни- тельных уровней предварительной и последующей обработки в целях упрощения обрабатываемой информации. По существу, при этом область определения (объем входных данных) сокращается, а область значений (объем выходных данных) под- разделяется на несколько частей. Таким образом, сокращается и размерность уточ- ненной области определения. Разработка по принципу “разделяй и властвуй” В результате более глубокого понимания структуры области определения стано- вится также более очевидно, как должна осуществляться декомпозиция задачи. По- добные достижения становятся еще более заметными, если наблюдаются зависимо- сти между конкретными входными и выходными данными или если в полученных результатах могут быть обнаружены четко различимые шаблоны. Поиск правильной декомпозиции представляет собой процесс определения тех аспектов задачи, с учетом которых может быть выполнено разбиение более крупной задачи на более мелкие, а затем созданы компоненты, позволяющие отдельно спра- виться с каждой подзадачей. В таком случае области определения входных и выход- ных параметров подразделяются на многочисленные подобласти. Подобласти вход- ных параметров, относящиеся к подзадачам, почти всегда перекрываются. С другой стороны, области выходных параметров обычно могут рассматриваться независимо друг от друга (рис. 21.10). При желании может проводиться рекурсивное уточнение задач до тех пор, пока не удастся достичь такого уровня, на котором с ними можно легко справиться. После этого появляется возможность решать подзадачи с помощью каких-либо простых ме- тодов ИИ (этот процесс во многом напоминает процесс проектирования программ- ного обеспечения). В таком случае объединение результатов решения подзадач сводит- ся к созданию структуры, позволяющей организовать совместное функционирование соотвстствующих компонентов. Для управления потоком данных между этими компо- нентами необходимо использовать типовые архитектурные шаблоны, которые рас- сматривались в главе 3, “Подход, основанный на реакциях”. Например, выходные данные можно комбинировать по принципу удаления дублирующихся данных и объе- динения взаимосвязанных данных, а для соединения компонентов может применяться последовательная или распределенная структура.
NalaHausi Глава 21. Приобретение знаний о задаче 335 Рис. 21.10. Разбиение задачи стрельбы на несколько подзадач, связанных с осуществлением прицеливания и производства выстрела; области входных парамет- ров часто аналогичны друг другу, но области выходных параметров могут оказаться независимыми Общая методология В настоящем разделе рассматривается методология, применяемая разработчиками игр на основе ИИ, для уточнения задачи и при попытке понять суть данных. Но, по существу, в основе этой методологии лежат опыт, экспериментирование и анализ. Экспертный анализ характеристик И размер, и сложность задачи фактически зависят от того, какой подход к ее поста- новке будет выбран инженером по искусственному интеллекту. Формулировка наибо- лее подходящей постановки задачи, главным образом, зависит от того, будут ли пра- вильно определены характерные особенности задачи в качестве входных данных. Как описано ниже, поиск наиболее подходящих характеристик удобно начать с использованием практических примеров, а затем найти такие комбинации входных .тайных, которые позволяют определить наиболее подходящие переменные задачи. > Сложные характеристики создаются путем комбинирования нескольких на- боров входных данных. Такая операция обычно осуществляется с помощью математической функции, позволяющей скомбинировать несколько парамет- ров в одно значение.
336 Часть III. Моделирование стрельбы > Предварительная обработка позволяет использовать в качестве входных дан- ных результаты применения алгоритмов. Полученная при этом величина мо- жет рассматриваться как составная характеристика, сформированная с помо- щью многих переменных. Подобные характеристики часто называют экспертными, поскольку при их фор- мировании инженеры используют свои знания о задаче для извлечения осмыслен- ной информации, применяемой системой ИИ. Такие выходные данные могут быть также определены как действия высокого уровня, позволяющие дополнительно уп- ростить задачу. Выявление характеристик опытным путем Программисты обычно обладают хорошим чутьем, которое позволяет им легче на- ходить решения задач. При составлении программы опытный специалист выделяет важные моменты и использует их для упрощения поиска решения. Аналогичную мето- дологию применяют инженеры по искусственному интеллекту. Они используют свой опыт для выявления данных, относящихся к делу, и вводят эти данные в действие. По существу, для того чтобы обнаруженные характеристики можно было успеш- но предварительно распределить по приоритетам, необходимо, прежде всего, при- бегнуть к здравому смыслу. После этого можно приступить к упорядочению характе- ристик с учетом их значимости. Затем такие предварительные оценки корректиру- ются по результатам проведения экспериментов, в которых предпринимается по- пытка применить множество различных примеров с разными характеристиками. Ниже описаны две методологии поиска приемлемых характеристик. > При использовании инкрементного подхода поиск начинается с немногих ха- рактеристик, после чего по мере необходимости происходит добавление или уточнение наборов входных данных д ля получения работоспособной модели. > При декрементном подходе происходит выборочное удаление наборов входных данных из рабочих моделей для их упрощения в максимально возможной степени. Инкрементный подход используется при решении задачи предотвращения столк- новения с препятствием; при этом робот по умолчанию оснащается одним передним контактным усиком и несколькими боковыми контактными усиками для получения дополнительной информации, необходимой при поворотах. А декрементный подход используется при решении задачи выбора цели; вначале в качестве входных данных рассматриваются три угла и три расстояния, но в качестве самых надежных характери- стик остаются только последние три набора. После приобретения небольшого опыта удается весьма точно определить набор наиболее подходящих характеристик даже с первого раза. После этого, если будет обнаружено, что модель является работоспособной, можно приступить к ее упроще- нию. Если же модель не работает, то необходимо приступить к введению дополни- тельных характеристик и заниматься этим до тех пор, пока задачу не удастся решить. Это — не алгоритмическое решение, поэтому при проектировании и проверке не- возможно обойтись без экспертных знаний. А после успешного применения этого подхода, по всей вероятности, удастся воспользоваться другими, автоматизирован- ными способами формирования решений (например, основанными на использова- нии генетических алгоритмов).
Глава 21. Приобретение знаний о задаче 337 Анализ данных Инженер по искусственному интеллекту при проведении экспериментов не мо- жет обойтись без интуиции. Но формулировка задачи в практически применимой форме может стать формальным процессом лишь за счет анализа данных. Безуслов- но, теме анализа данных должно быть уделено больше внимания; ниже приведено несколько рекомендаций, которые позволят нам приступить к указанной работе. В классических методах разработки игр необходимость применять статистиче- ский анализ возникает крайне редко, поскольку такой анализ не требуется для алго- ритмов поиска пути А* и конечных автоматов. Тем не менее статистический анализ становится очень важным при использовании методов, основанных на обучении. По мере того как применяемые средства ИИ становятся все более сложными, вероят- ность успешного создания правильной модели с применением одного лишь экспе- риментирования резко снижается. Анализ данных требует определенных затрат времени (издержек), особенно для сбора данных (или даже просто для освоения работы с инструментальными средст- вами анализа). Но открытия, сделанные с помощью статистических методов, стори- цей окупают такие затраты времени и позволяют даже добиться улучшения качества поведения аниматов. Не стоит даже спорить о том, что надежная адаптация анимата возможна лишь с использованием таких методов. Выбор подходящих инструментальных средств Для статистического анализа могут использоваться многие пакеты, не только коммерческие, но и свободно доступные. В их число входят Mathlab, GnuPlot, Mathematica и Excel. Для освоения этих пакетов может потребоваться определенное время, но большинство из них позволяет легко решать простые задачи. Указанные инструментальные средства предоставляют способы манипулирова- ния данными, а также визуального отображения данных. И манипулирование дан- ными, и визуальное отображение могут использоваться для извлечения из данных информации о наличии скрытых закономерностей в данных. Ниже в первую очередь рассматриваются операции визуализации, а затем приводятся сведения об основных манипуляциях со статистическими данными. Визуализация данных Большинство выборок данных являются многомерными. Если количество пара- метров равно только двум, то можно легко представить значения визуально с исполь- зованием двухмерного графика. Кроме того, из этих данных можно легко извлечь ин- формацию о скрытых закономерностях, рассматривая повторяющиеся шаблоны; для анализа данных хорошо подходят все способы отображения данных — координатные диаграммы рассеяния, линейчатые графики, категоризированные диаграммы рассея- ния, столбчатые графики и гистограммы. В главе 20, “Выбор цели”, предпринята по- пытка проанализировать эффективность выбора цели путем составления графика за- висимости попадания от расстояния.
338 Часть III. Моделирование стрельбы После перехода к трем измерениям визуальный анализ данных становится на- много сложнее. А некоторые инструментальные средства визуализации способны справляться с произвольным количеством измерений (создавая, например, самоор- ганизующиеся отображения характеристик). Применяемые при этом методы дейст- вуют по принципу организации данных в группы, которые можно визуально пред- ставить на двухмерном графике. При таком подходе образы становятся представлен- ными явно, но затрудняется понимание того, где представлены сами эти образы. Еще один подход состоит в том, чтобы выбрать пары параметров вручную, а за- тем нанести их все на график с использованием методов формирования двухмерных диаграмм. Но, к сожалению, такой метод позволяет обнаруживать только образы “первого порядка”. Кроме того, для преобразования п переменных в переменную, заданную в одном измерении, могут также использоваться проекции (в целях уменьшения количества размерностей путем комбинирования параметров). Такие проекции имеют форму определяемых пользователем уравнений, которые прини- мают п параметров и вырабатывают один результат. Содержательная трактовка про- екций может оказаться затруднительной, но проекции предоставляют применимое решение для визуального представления многомерных данных. Применимые показатели При попытке понять смысл данных зачастую целесообразно вначале извлечь из данных относящуюся к делу информацию. При этом значительную помощь могут предоставить различные статистические показатели. Среднее ц (греческая буква мю) — это сумма всех выборок данных х, деленная на количество выборок. Медиана — это выборка данных, находящаяся в середине от- сортированного массива выборок. Бывает также целесообразно найти процентили; например, первая квартиль — это выборка, находящаяся на расстоянии в 25% от начала отсортированных данных выборок, а третья квартиль находится на расстоя- нии в 75%. Эти показатели позволяют определить, какая часть данных является наи- более важной, чтобы можно было понять, какую часть пространства параметров за- нимают эти данные. Дисперсия (обозначаемая как о2) представляет собой меру разброса данных. Дисперсия вычисляется с использованием суммы квадратов расстояний каждой вы- борки х от среднего, деленной на количество выборок N: , £(х - ц)2 о - N Формула вычисления дисперсии реализована в большинстве статистических па- кетов. Но более часто используется среднеквадратичное отклонение с, которое представляет собой к над ротный корень дисперсии. Ковариация позволяет количественно измерить корреляцию между двумя слу- чайными переменными. Это позволяет выявлять зависимости между параметрами задачи (а также, возможно, причинные связи). Ковариация вычисляется во многом так же, как дисперсия, но для каждой выборки х применяется два параметра, i и j: E(Xi - Pi) (Xj - Из) cov(i,j) = -------------------- N
Глава 21. Приобретение знаний о задаче 339 Этого действительно краткого интенсивного курса статистики должно быть дос- таточно для большинства разработчиков игровых средств ИИ. С дополнительной информацией по этой теме можно ознакомиться в [43] или [83]. Резюме Понимание задачи может быть достигнуто на четырех различных уровнях: не- формальном, теоретическом, статистическом и аналитическом. Как указано ниже, изучение полученных данных на всех этих уровнях позволяет получить хорошее представление о рассматриваемой теме. > Описание задачи позволяет определить, насколько сложной она является. > Общее количество конфигураций в области определения можно выяснить, перемножая значения кардинальностей подмножеств параметров задачи. > Сбор произвольных данных о задаче позволяет узнать, какой способ приме- нения значений и конфигураций является наилучшим. > Наличие зависимостей между отдельными параметрами можно выяснить, оп- ределяя ковариацию пар значений параметров. > Для выявления более сложных отношений между переменными необходимо проводить аналитические исследования. Понимание задачи может стать основой для осуществления дальнейших, указан- ных ниже действий, с помощью которых можно упростить решение задачи. > Уточнение задачи и преобразование ее в более простую форму, обеспечиваю- щую применение для поиска решения одного из стандартных методов. > Разбивка задачи на управляемые подзадачи, которые также поддаются раз- бивке, рекурсивным способом. 1 После того как достигнуто понимание задачи, можно приступить к применению полученных знаний о задаче. На этом этапе наиболее важные функции, перечислен- ные ниже, выполняет инженер по искусственному интеллекту. > Выполняется ранжирование по приоритетам характеристик задачи, получен- ных на основе экспертного исследования, после чего может проводиться до- бавление или удаление таких характеристик по мере необходимости. > Проводятся эксперименты, позволяющие определить важность различных ха- рактеристик. > Применяются статистические показатели, которые также обеспечивают полу- чение основных представлений о качестве входных данных. В настоящей главе описан процесс получения знаний о задаче на концептуаль- ном уровне. С применением большинства изложенных здесь понятий уже удалось найти решение очень многих задач. На основании изложенных в этой главе идей подготовлены также описания проектов многих прототипов в следующих главах книги. Методология поиска решений сложных задач станет также более очевидной после дальнейшей практики.
340 Часть III. Моделирование стрельбы Практическая демонстрационная версия С Web-узла ht tp: / /AiGameDev. сот/ можно загрузить код анимата Lumberjack, применение ко- торого позволяет упростить сбор и анализ данных. Анимат Lumberjack регистрирует почти все дан- ные, поступившие в его распоряжение, в частности, основную часть детализированных данных, полу- ченных от сенсоров, а также данных, касающихся всех выполненных действий. Полученный файл журнала может обрабатываться с помощью стандартных пакетов или определяемых пользователем сценариев по мере необходимости. Анимат Lumberjack может рассматриваться как хорошая инфра- структура, позволяющая воплотить в практику идеи, изложенные в этой главе.
ftalaHausltk Часть III Заключение В этой части было описано все, чем приходится заниматься разработчику современ- ных игровых средств ИИ: ракеты, нейронные сети и многочисленные разнообраз- ные прототипы. Кроме того, обсуждался очень важный аспект разработки приложе- ний — способы получения знаний о задаче и манипулирования этими знаниями в целях упрощения решения задачи. Краткий ретроспективный обзор Закончив общее описание, вернемся еще раз к представленному в данной части из- ложению различных принципов поведения и методов, чтобы сделать основные выводы. Принципы поведения В данной части показано, как осуществляется разбиение задачи на более легко управляемые части. После создания подзадач появляется возможность отдельно реа- лизовать решение каждой подзадачи. В одной из глав этой части описан метод прогнозирования движений противника, который является очень эффективным с точки зрения затрат вычислительных ресур- сов и достигнутого качества. Однако подход, основанный на применении физических законов, имеет фундаментальное ограничение, поскольку позволяет рассматривать лишь линейные траектории; попытка применять такое решение на больших расстоя- ниях может привести к появлению ошибок. Для повышения качества решения задачи, полученного таким путем, необходимо предвидеть замыслы противника и моделиро- вать его движения, но для этого требуется принимать различные вспомогательные предположения. С точки зрения качества и стоимости наилучшим компромиссным решением является линейный прогноз, который может быть получен без проведения полного вероятностного анализа. Кроме того, в одной из глав этой части было показано, как применяются стандарт- ные персептроны для решения задачи прицеливания. При этом возникают определен- ные проблемы, которые, тем не менее, являются несложными и имеют предсказуемые последствия. Безусловно, в процессе решения задачи прицеливания с помощью пер- септрона можно было обойтись без обучения, но приведенный здесь пример позволяет наглядно показать, как происходит обучение в оперативном режиме. Кроме того, обу- чение предоставляет уникальную возможность справляться со сложными ошибками; в данном случае аналитический подход был бы намного более трудоемким.
Превосходным примером применения нейронной сети является моделирование поведения во время выбора цели. Сам обучающий компонент не был слишком эффек- тивным, поскольку во многих случаях процентная доля ошибок достигала 25%. Тем не менее результирующее поведение оказалось реалистичным, а система стала более со- вершенной, поскольку в ней был учтен опыт создания персептрона (этому способство- вало также высокое качество проекта). Сведения, изложенные в данной части, позво- ляют пролить свет на то, для решения каких задач должны использоваться нейронные сети. Таковыми являются задачи, не требующие слишком большой точности и допус- кающие возможность усовершенствовать модель исключительно благодаря обучению. В данном случае механизм выработки поведения позволяет достигать реалистичных результатов независимо от производительности нейронной сети. Применяемые методики Прежде всего в главах данной части была использована методика, основанная на моделировании с помощью физических законов. Безусловно, можно было бы при- менить другие аналогичные методы, предоставляющие большие возможности про- гнозирования, но жестко регламентированный подход, описанный в данной части, удалось сделать основой решения других задач. Еще раз отметим, что возможность использовать в случае необходимости для решения задач “стандартное” программи- рование является очень благоприятной. В конечном итоге, независимо от того, ка- кой подход применяется для решения всей задачи в целом, все равно приходится проектировать значительную часть системы с учетом конкретной ситуации. Попыт- ка применять современные методы ИИ для решения любой задачи приводит к за- медлению хода работы. Еще одна используемая методика была основана на применении нейронных сетей. Как оказалось, всегда нужно стремиться использовать однослойные персептроны. Воз- можности моделей, основанных на персептронах, являются ограниченными, но вместе с тем при их использовании возникает гораздо меньше проблем (в частности, персептро- ны легко поддаются обучению и всегда обеспечивают наилучшую аппроксимацию). Многослойные персептроны также могут стать очень удобным средством реше- ния задач, но при условии их правильного применения. Инженер по искусственно- му интеллекту должен держать под своим контролем все условия применения мно- гослойных персептронов, в том числе подготовку данных, выбор характеристик и определение топологии, и тогда нейронные сети этого типа могут быть использо- ваны для решения любых задач. Тем не менее даже при таком неусыпном контроле остается вероятность того, что решение окажется неправильным, к тому же, в про- блематике игровых средств ИИ нелегко найти задачи, которые действительно требо- вали бы применения многослойных персептронов. Перспективы применения нейронных сетей В следующих главах данной книги показано, что для применения нейронных се- тей есть еще много возможностей. В частности, такие сети могут использоваться для решения большинства задач распознавания образов или аппроксимации функций.
Особенно удобным средством решения задач на основании обучения нейронные се- ти становятся применительно к задачам, рассматриваемым в части VII, поскольку они показали, что могут служить удобной основой для приближенного представле- ния опыта, полученного в результате решения задач. В следующей части данной книги широко рассматриваются способности анима- тов к стрельбе. Изучая данные об относительном количестве успешных попаданий при использовании различного оружия в разных ситуациях, можно найти путем прогноза наилучшее оружие, применимое в сложившемся сценарии. Навыки ус- пешного выбора оружия позволяют еще больше расширить возможности аниматов, основанные на искусстве владения оружием. Кроме того, в следующей части рассматриваются деревья решений. Такие структуры не только обладают возможностями распознавания образов, сравнимыми с нейронными сетями, но и обеспечивают удобство чтения и легкость восприятия, сравнимые с систе- мами, которые основаны на правилах.
г =
^iaiattaus^i Часть IV Выбор оружия Во время военных действий можно столкнуться с многочисленными и разнообразны- ми сценариями, такими как рейды по тылам противника или засады, лобовые атаки и фланговые нападения, маневренная война и позиционные бои и тщ. Солдаты, ока- завшись в определенной ситуации, бесспорно, стремятся найти наилучшие инстру- ментальные средства для выполнения своего боевого задания, позволяющие увеличить вероятность успеха или просто обеспечить шансы на выживание. В настоящей части рассматриваются принципы выбора оружия, позволяющие аниматам подготовиться к любой ситуации. При этом определенное внимание будет уделено и системам голо- сования, создаваемым непосредственно экспертами, и деревьям решений, которые способны обучаться под менее жестким контролем. Обоснование необходимости решения задачи выбора оружия В предыдущей части, в которой рассматривались только принципы поведения во время стрельбы, высокоуровневые способности полностью игнорировались. Важность ведения стрельбы невозможно отрицать, но в любой ситуации часто можно добиться наибольшего успеха благодаря применению правильной тактики. К категории стра- тегий высокого уровня относятся навыки выбора оружия, которые дополняют навыки владения оружием. Поэтому создается впечатление, что выбор оружия должен стать следующим этапом в создании анимата, способного вести борьбу за выживание. Задача выбора оружия сама по себе имеет очень большой интерес; она представ- ляет собой задачу, при решении которой в процессе игры возникает много вариан- тов. Во время стрельбы чаще всего оказывается успешным один-единственный ка- чественный способ поведения, независимо от контекста. А когда приходится мани- пулировать самим оружием, анимату приходится динамически принимать в расчет намного больше факторов. Кроме того, становится гораздо шире сама область опре- деления правил поведения по выбору оружия, поскольку приходится учитывать большую часть особенностей локальной среды. Безусловно, задача выбора оружия не относится к числу непреодолимо сложных, но, вне всякого сомнения, находится на более высоком уровне сложности по сравнению с задачами, которые рассматри- вались выше в данной книге, поэтому, по мнению автора, эта задача является наи- более оправданным следующим этапом в работе.
При решении задачи выбора оружия может использоваться обучение. При этом возникают любопытные тенденции в развитии проекта игры или даже средств ИИ. Например, мы можем определить, является ли выбор оружия вполне оправданным и, в случае необходимости, модифицировать логику ведения игры. Но в рассматри- ваемом случае проект самого оружия уже считается неизменным, поэтому можно перейти к определению сильных и слабых сторон в самих применяемых средствах ИИ и потратить больше времени на усовершенствование способностей к стрельбе. Краткое содержание части , Многие главы этой части дополняют свои аналоги, приведенные в части III. В дей- ствительности, значительная часть программного обеспечения, интерфейсов и правил поведения, используемых при выборе оружия, частично зависит от способностей к стрельбе. Ниже приведено краткое описание рассматриваемых принципов поведе- ния высокого уровня, в ходе которого в случае необходимости подчеркивается, какие более подробные сведения низкого уровня из предыдущей части относятся к излагае- мому материалу. Глава 22, “Условия борьбы”. В начале этой главы приведен анализ того, какая платформа подходит для создания средств ИИ. В частности, обсуждаются различные условия среды, которые влияют на выбор оружия (иными словами, рассматриваются структура местности и местонахождение противника). Глава 23, “Выбор оружия”. Эта глава является вводной, и в ней речь идет о том, какие разнообразные методы используются людьми для принятия решений. В част- ности, рассматриваются подходы, применяемые при выборе оружия, которые осно- ваны на логическом выводе и опыте. Глава 24, “формализация процесса выбора оружия”. Интерфейсы, используемые в процессе выбора оружия, могут быть формализованы. Для этого необходимо до- полнить интерфейсы, применяемые для учета наличных запасов, и интерфейсы, ко- торые служат для манипулирования оружием. Глава 25, “Сценарная поддержка тактических решений”. Эта глава, в основном, содержит практически применимые сведения. В ней описано применение языка сценариев для реализации тактических решений. После рассмотрения основ сце- нарной поддержки дано описание систем голосования и показано, как могут ис- пользоваться эти системы для решения рассматриваемой задачи принятия решений. Описанные идеи реализованы на практике с помощью простого сценария. Глава 2(>, “Деревья классификации и регрессии”. После описания нескольких задач, для решения которых может применяться сценарная поддержка, рассматриваются теоретические сведения, лежащие в основе функционирования деревьев решений. Речь идет и о деревьях классификации, и о деревьях регрессии. В данной главе показа- но,-что деревья решений особенно хорошо приспособлены для обучения решению за- дачи выявления образов в данных для предсказания неизвестных значений. Глава 27, “Обучение оценке оружия”. Деревья решений применяются для оценки оружия и обучаются по экспериментальным данным, показывающим, насколько хо- рошо оружие проявляет себя в игре. В главе показано, насколько важно, чтобы ошиб-
^alallaus^k ки, допущенные аниматами, были достаточно правдоподобными, и приведен допол- нительный код, требуемый для сбора данных и вычисления обучающего шаблона. Глава 28, “Понимание сути решения*’. Наконец, в этой части показано, какие вы- воды в целом можно сделать на основании полученных результатов выработки ре- шений. Благодаря этому удается понять, в чем состоит сложность принятия решения о выборе оружия с теоретической и практической точек зрения. Концепции, изло- женные в этой главе, позволят разработчикам получить больший контроль над мето- дами ИИ, применяемыми на данном этапе разработки приложений. Исходные предположения Вполне естественно, что для выбора оружия потребуется все программное обес- печение, которое рассматривалось до сих пор в настоящей книге. Ниже перечисле- ны наиболее важные компоненты программного обеспечения. > Разрабатываемые аниматы должны быть способными к стрельбе. Они не обяза- ны иметь идеальное поведение; в действительности, всевозможные допускае- мые ими ошибки прицеливания позволяют сделать более интересной ту часть игры, в которой они используются. > Для выбора оружия в игре абсолютно необходима поддержка нескольких видов оружия. Как обычно, такую возможность должна предоставлять игровая машина. > Предполагается, что среда позволяет участникам сражения принимать весьма разнообразные расположения, что может приводить к тому, что боевая обста- новка каждый раз будет складываться по-разному. Теперь мы можем наконец-то приступить к проектированию средств ИИ, начиная с первых аналитических этапов разработки. К каждой главе данной части прилагаются дополнения в виде программного обеспечения. Для ознакомления с этими дополне- ниями обязательно посетите Web-узел по адресу ht tp: / /AiGameDev. сот/.

^laiattaus,^ Глава 22 УСЛОВИЯ БОРЬБЫ В ЭТОЙ ГЛАВЕ, • Свойства оружия • Применимость оружия • Условия, в которых проводится обучение • Резюме Игры часто проектируются так, чтобы игрок мог ощутить, насколько разнообразной мо- жет стать игровая обстановка. А когда речь вдет об играх со стрельбой от первого лица, под этим разнообразием подразумеваются бесчисленные вариации обстановки, складывающиеся во время боя. Причем в каждой из возникающих ситуаций может поневоле оказаться, что применявшееся ранее оружие больше не подходит и необходимо другое. Ниже приведено краткое описание того, как сочетаются различные элементы проекта, от которых зависит выполнение задания по выбору оружия. Настоящая глава имеет много общего со сво- им аналогом, главой 13, “Боевая обстановка”, поскольку в ней излагаются сведения о боевых действиях, относящиеся к более низкому уров- ню, в которых особое внимание уделено рас- смотрению способности к стрельбе. В следую- щем кратком описании приведено лишь пере- числение концепций, применяемых при выборе оружия, и даны определения этих концепций. В настоящей главе рассматриваются пере- численные ниже темы. > Описаны различные атрибуты оружия (например, скорость поражающих эле- ментов и темп стрельбы) и показано, как от этих атрибутов зависит поведение ани- мата, владеющего оружием. > Рассматриваются различные аспекты про- ектирования и моделирования, от кото- рых зависит применимость оружия. > Приведено описание идеальной системы отладки, которая может использоваться в дальнейшем.
350 Часть IV. Выбор оружия Информация, изложенная в данной главе, поможет нам проанализировать роль платформы (т.е. среды и машины) в успешном создании средств ИИ и определить, как должны учитываться полученные сведения на последующих этапах разработки. Свойства оружия В предыдущей части рассматривались только два вида оружия, а именно, оружие ближнего боя и дальнобойное оружие. А в этой части перечень рассматриваемого оружия значительно расширяется. Прежде всего уточняются две указанные катего- рии с учетом многих параметров, от которых зависит точность стрельбы из оружия, типы боеприпасов, скорострельность, время перезарядки и т.д. Некоторые из рас- сматриваемых свойств заданы в проекте явно (например, скорость пули), а другие становятся косвенным следствием сделанного выбора (например, количество по- вреждений в секунду). От всех рассматриваемых различных свойств оружия неявно зависит действие самого оружия. Например, крупнокалиберное оружие, по всей вероятности, способ- но наносить очень большой ущерб, но вместе с тем не позволяет им быстро манев- рировать. А легкое стрелковое оружие чаще всего не способно нести много боепри- пасов и имеет менее высокую скорострельность (в качестве примера можно указать пистолет или арбалет). Косвенным следствием указанных свойств оружия является то, что способность к причинению ущерба у различных видов оружия становится разной. В табл. 22.1 показаны некоторые наиболее широко используемые в компью- терных играх свойства оружия и указаны соответствующие единицы измерения. Свойства, обозначенные курсивом, являются следствием наличия других свойств и могут быть вычислены как производные от этих свойств. Таблица 22.1. Некоторые свойства оружия, наиболее широко используемые в компьютерных играх, и соответствующие единицы измерения Свойство Единица измерения Скорость поражающего элемента Метры в секунду Темп стрельбы Выстрелы в секунду Ущерб Единицы жизнеспособности на выстрел Угол рассеяния Г радусы Интенсивность нанесения ущерба Единицы жизнеспособности в секунду Поскольку различные виды оружия обладают весьма разными атрибутами, обыч- но с помощью разных видов оружия одна и та же задача выполняется по-разному. Например, с помощью ракетной пусковой установки можно нанести серьезное по- ражение танку, а небольшая граната способна поразить лишь личный состав экипа- жа этого танка. Оба эти вида оружия выполняют одну и ту же задачу вывода боевой машины из строя, но поскольку они обладают разными свойствами, то действия этих видов оружия “выливаются” в разные формы.
ftataUaus^k Глава 22. Условия борьбы 351 В компьютерных играх контраст между разными видами оружия становится еще бо- лее явным благодаря творческим усилиям со стороны проектировщиков; в мире игр пер- востепенное значение имеет развлекательная ценность, а технологические и физические ограничения являются вторичными. В играх уже применяются замораживающие пушки и переносные рельсотроны, которые, возможно, будут вскоре созданы в действительно- сти, но пока все еще остаются плодом научной фантастики. Но разработчики игр вправе включать подобные виды оружия в свои проекты. Поэтому спектр возможных свойств оружия в играх намного шире, чем в действительности, а это, безусловно, означает, что и само поведение анимата, владеющего оружием, становится гораздо более разнообраз- ным (и даже появляется еще больше способов выполнения боевого задания). Применимость оружия Некоторые виды оружия в наибольшей степени применимы в одних ситуациях, а другие виды — в других. Безусловно, было разработано универсальное оружие, по- зволяющее справляться со многими боевыми ситуациями, но чаще всего в каждой конкретной ситуации в наибольшей степени подходит лишь определенный вид ору- жия. Как уже было сказано, если бесконечное количество обезьян усадить за пишущие машинки, то они рано или поздно напишут все произведения Шекспира. В полной аналогии с этим, в некоторых случаях успеха в сражении позволит добиться участие бесконечного количества обезьян с ракетными пусковыми установками. Это обуслов- лено влиянием некоторых аспектов проекта, которые неявно складываются в результа- те моделирования игры. Поэтому иногда эффективность оружия изменяется, причем, в основном, независимо от способностей самого игрока. Расположение участников игры Одним из наиболее важных факторов, от которых зависит применимость оружия, является расположение участников игры в пространстве. Вполне очевидно, что эф- фективность любого конкретного вида вооружений (в зависимости от его точности) зависит от относительного положения противника. Практика показывает, что если сражение ведется один на один, на близком рас- стоянии, то оружие, требующее высокой точности прицеливания, но имеющее низ- кую скорострельность, становится не слишком эффективным. И наоборот, преиму- щество получает тот, кто владеет оружием, быстро выпускающим пули одна за дру- гой, даже если точность стрельбы при этом становится более низкой. На больших расстояниях может оказаться более предпочтительным стрелковое оружие, которое наносит значительный ущерб, даже если это оружие характеризует- ся более низким темпом стрельбы. Может также оказаться предпочтительным ору- жие с поражающими элементами, движущимися с высокой скоростью, поскольку такое оружие, как правило, позволяет точнее поражать движущиеся цели (ведь при этом снаряд быстрее достигает места назначения). На рис. 22.1 показана эффективность супердробовика и рельсотрона. Во время стрельбы из супердробовика возникает значительное рассеяние, поэтому он становит- ся более подходящим для боев, ведущихся на очень близких расстояниях, тогда как рел ьсотрон в равной степени эффективен и во время стрельбы на дальнее расстояние.
352 Часть IV. Выбор оружия Противник Противник Точный выстрел рельсотрона Участник игры Рассеянный огонь дробовика Участник игры Рис. 22.1. Данные об эффективности супердробовика и рельсотрона на разных расстояниях Выше приведены лишь два из многочисленных примеров, показывающих важ- ность учета расстояния (и в целом позиции) в процессе выбора оружия. На эффек- тивность оружия влияют также такие факторы, как относительное возвышение цели и ориентация оружия по отношению к цели, хотя и в меньшей степени. Ход борьбы Эффективность оружия может также зависеть от того, насколько динамично разви- вается сам бой. При рассмотрении динамики боя учитываются относительные пере- мещения участников игры, а также рассматривается эволюция вооруженной борьбы во времени. В качестве некоторых примеров возникающих при этом ситуаций могут рас- сматриваться различные этапы вступления в боевое столкновение (например, осмотр противника, открытие огня, ответный огонь и обмен ударами в полную силу), а также переход инициативы от одной стороны к другой. Если один участник игры пытается напасть из засады на другого, то д ля него наи- более эффективным оружием становится самое мощное, позволяющее нанести про- тивнику смертельный удар, на который он не сможет вовремя среагировать. С дру- гой стороны, если участник игры движется по местности, опасаясь ударов из засады, или в конечном итоге оказывается лицом к лицу с противником, то внезапно стано- вится эффективным оружие, позволяющее быстро нанести удар возмездия. Когда участнику игры приходится пускаться в бегство, то наличие у него оружия, позволяющего вести интенсивный огонь, обеспечивает возможность создания дав- ления, под влиянием которого атакующий ослабит свои усилия. Лицо, играющее роль хищника, обычно стремится прикончить жертву как можно быстрее, с исполь- зованием мощного, хотя и громоздкого оружия, но в данном случае дальнейшее по- ведение зависит, в основном, от стиля игры самого игрока. Состояние игрока и противника Различные цели могут обладать разной восприимчивостью к воздействию ору- жия. Например, электромагнитный экран может успешно блокировать электромаг- нитные импульсы, но не окажет никакого защитного воздействия против удара доб- рым старым топором. В этом отношении эффективность оружия зависит от состоя-
ftatattausfik Глава 22. Условия борьбы 353 ния оружия противника и от того, насколько оба участника сражения оснащены средствами защиты от поражения. С другой стороны, в играх могут применяться личные модификаторы, которые по- зволяют повысить ущерб, причиняемый противнику. В реальной жизни обычно по- добные модификаторы не встречаются, а в играх такие бонусы, как учетверенный ущерб (при котором воздействие поражения на противника учетверяется) и убыстре- ние событий (при котором, в частности, увеличивается темп стрельбы), могут в значи- тельной степени изменить игровую обстановку. Как правило, оправдывается такой подход, когда игрок выбирает два вида оружия — во-первых, обладающее большой мощностью, а, во-вторых, позволяющее вести интенсивный огонь (оба показателя яв- ляются относительными). В некоторых случаях, когда эффективность оружия не зависит от применяемых до- полнений, оно испытывает влияние других переменных состояния. Например, участ- ник игры, обладающий низкой жизнеспособностью, становится более отчаянным и готовым причинить значительно больше ущерба соперникам за короткое время. И на- оборот, хорошо вооруженный и защищенный участник игры может иметь большую свободу выбора и позволить себе роскошь применять менее эффективное оружие (которое, тем не менее, допускает применение в более разнообразных ситуациях). Наконец, важный вклад, от которого будут зависеть преимущества смены ору- жия, могут внести другие мелкие подробности, касающиеся состояния. Одним из мощных факторов такого рода становится появление предупреждающего сообщения об уменьшении запаса боеприпасов, поскольку смена оружия еще до вступления в вооруженное столкновение позволит в самом бою получить больше ценного вре- мени для ведения огня. Аналогичным образом, если участник игры только что сме- нил оружие, то преимущества дальнейшей смены оружия уменьшаются, даже если на это есть важные побудительные причины; дело'в том, что при этом должно прой- ти больше времени до того, как появится возможность произвести первый выстрел. Компоновка среды На эффективность оружия влияет сама среда. Дело в том, что поведение, связан- ное с выбором оружия, приходится проявлять в более широком разнообразии ситуа- ций по сравнению с навыками стрельбы, поэтому в ходе реализации такого поведе- ния компоновка среды становится гораздо более важной. В частности, средства ИИ должны учитывать влияние среды на самого участника игры, на противника и на оружие, и все это должно осуществляться в виде среднесрочного прогноза. Огромное влияние на применимость оружия оказывают такие факторы, как нали- чие открытой местности или отсутствие на местности открытых участков. Открытость и закрытость характеризуют компоновку среды не только вне помещения, но и внутри помещения, а это, в свою очередь, становится аргументом в пользу выбора того или другого оружия. Например, траектория поражающих элементов может проходить через некоторые препятствия, из-за чего стрельба становится менее эффективной. С другой стороны, местность может иметь такую компоновку, из-за которой поражение осколками ста- новится ограниченным, и поэтому больше вреда испытывает сам участник игры. Эффективность оружия определяется также тем, предусмотрены ли в мире игры вспомогательные конструкции (например, лестницы и платформы) или с виду не-
354 Часть IV. Выбор оружия значительные подробности (например, наличие листвы или объектов, загромож- дающих территорию). Разработчики могут поставить себя на место участников игры и постараться понять, в чем состоят подобные свойства среды. После этого необхо- димо добиться, чтобы средства ИИ могли получать эту информацию непосредствен- но или приобретать ее в результате обучения. Один из подобных примеров показан на рис. 22.2. На этом рисунке заслуживает внимание то, что участники игры, стоящие около стены, по всей вероятности, могут стать объектом косвенного удара. Источником опасности по той же причине может стать и пол, но на аналогичных изображениях, представляющих собой вид сверху, такая возможность не учитывается. Поражение осколками не подверженная поражению осколками Рис. 22.2. Пример, подчеркивающий важность радиального поражения (или поражения осколками) Гонка вооружений В процессе обсуждения проблематики выбора оружия могут рассматриваться самые важные свойства оружия, причем некоторые из таких свойств могут трактоваться как недостатки (например, если оружие медленно перезаряжается, а его поражающие эле- менты имеют низкую скорость). В целом можно смело утверждать, что ни один вид оружия нельзя назвать идеальным. Но развлекательная ценность игры повышается, если в ее проекте подчеркиваются различные свойства оружия (например, скорость или мощь). Из этого также следует, что в играх преимущества и недостатки оружия становятся более ярко выраженными. Неявным следствием указанной особенности игр является необходимость доби- ваться компромисса при выборе оружия. Уязвимые участки могут стать еще более очевидными, если свойства оружия другого вида наглядно подчеркивают их уязви- мость. Из этого следует, что иногда для противодействия противнику, обладающему определенным видом оружия, особенно хорошо будет подходить не такое же, а дру- гое оружие.
Глава 22. Условия борьбы 355 Навыки участников игры Критерии оценки применимости оружия, которые рассматривались до сих пор, неявно опирались на те свойства оружия, которые обусловлены его проектом. Тем не менее, важную роль в определении эффективности оружия играют сами участни- ки игры. Об этом уже шла речь в предыдущей части, которая, в основном, была по- священа рассмотрению навыков владения оружием. Игрок, не имеющий развитых навыков владения оружием, не сможет применять его эффективно. С другой стороны, хорошие способности к стрельбе открывают до- полнительные возможности для выбора оружия. Все прочие условия (например, ог- раничения среды, состояние игрока и т.д.) становятся вспомогательными фактора- ми при определении эффективности оружия. Условия, в которых проводится обучение После определения всех факторов, от которых зависит выбор оружия, необходи- мо прийти к согласованному мнению об использовании определенной местности, которая станет представительной по отношению к той местности, что нас интересу- ет, и поэтому позволит упростить разработку средств ИИ. Необходимо найти такую местность, которая позволяет применять широкий вы- бор боеприпасов и вооружения. Это даст нам возможность отказаться от надуман- ных вариантов, в которых просто роботам-аниматам предоставляются для игры все возможные виды оружия. В таком случае достигается то преимущество, что роботы- аниматы вынуждены применять все виды оружия (по мере того, как в этом возника- ет необходимость), а не просто осуществлять какой-то надуманный замысел. Еще один вариант состоит в том, что можно вынудить аниматы использовать конкретные виды оружия на различных этапах игры. Такой подход позволяет ани- матам проверить навыки владения каждым видом оружия в наиболее подходящей обстановке. Создается впечатление, что оба описанных варианта позволяют органи- зовать обучение применению всех видов оружия, поэтому в следующих главах будут использоваться попеременно именно те подходы, которые в наибольшей степени соответствуют условиям проведения обучения. В идеальном случае процесс разработки средств ИИ может также потребовать проверки как можно большего количества сценариев. Кроме того, такое требование способствует достижению наибольшего разнообразия. В частности, в любой игре большинство уровней представляют собой реализацию не одного лишь возможного стиля проектирования, а наиболее удачного сочетания таких архитектурных стилей. Но в процессе разработки мы не должны считать себя вынужденными использовать только один подобный уровень, поскольку лишь при таком подходе аниматы полу- чают возможность приобрести наиболее широкий опыт владения оружием.
356 Часть IV. Выбор оружия Резюме В настоящей главе кратко рассматривается большинство аспектов проектирова- ния игры, которые влияют на выбор оружия (явно или неявно). Как уже было сказа- но, на выбор спецификации влияют некоторые описанные ниже предположения. > Различным видам оружия присущи определенные свойства, такие как ско- рость поражающего элемента и время перезарядки. > Различные виды оружия при выполнении аналогичных задач действуют по- разному. Кроме того, процесс выбора оружия испытывает влияние некоторых ограниче- ний среды, перечисленных ниже. > Для определения применимости оружия необходимо совместно учитывать многие характерные особенности проекта среды (например, наличие препятствий). > Применимость тех или иных видов оружия может также зависеть от характер- ных особенностей самих боевых действий (например, от расстояния до про- тивника и характера его перемещения). > Важным ограничением, от которого зависит эффективность оружия, являют- ся навыки участников игры. Наконец, в данной главе приведены краткие рекомендации, позволяющие упро- стить проведение проверки и экспериментирования, в том числе указанные ниже. > Необходимо стремиться к максимальному увеличению разнообразия исполь- зуемого оружия, предоставляя доступ к самым разным видам оружия явно или неявно (например, добиваясь полной доступности имеющегося оружия). > Важно обращать внимание на то, чтобы виды местности, в условиях которой проводятся проверки и эксперименты, были разнообразными, и для этого ис- пользовать много разных уровней игры. В следующей главе рассматривается проблема принятия решений и показано, как люди-игроки выполняют это задание. Практическая демонстрационная версия Одним из известных демонстрационных аниматов является Mr. Versatility, который отчасти служит примером применения идей, изложенных в этой главе, и в определенной степени является примером расширения возможностей, описанных в предыдущей части книги. Анимат Mr. Versatility способен использовать все оружие, доступное в игре, и обладает навыками стрельбы с помощью каждого из них. Но важнее всего то, что описание архитектуры применяемых в нем средств ИИ доступно в опе- ративном режиме по адресу http://AiGameDev.coin/, где представлены также, как обычно, исходный код и демонстрационная программа.
^aiattaus,^. Гпава 23 Выбор оружия Задача выбора наилучшего оружия относится к проблематике принятия решений. В преды- дущей главе рассматривалась вся информация, которую приходится учитывать в этом процессе, а в настоящей главе анализируется роль принятия решений и демонстрируются методы организации принятия решений, в частности, в контексте вы- бора оружия. Особое внимание уделено описа- нию того, как можно определить преимущества того или иного оружия, изучая свойства ситуации и атрибуты оружия. В настоящей главе рассматриваются пере- численные ниже темы. > Теоретический подход к принятию реше- ний, касающихся оценки оружия и опре- деления методологии выбора наиболее подходящего оружия. > Описание двух противоположных способов решения этой задачи на практике (приме- нение логического вывода и накопление опыта) и общие сведения о том, как в под- ходе к принятию решений, применяемом людьми, удается достичь компромисса ме- жду этими двумя крайностями. > Критерии, используемые при оценке пове- дения аниматов в процессе выбора оружия. > Краткий практический пример, который описывает ожидаемые реакции в различ- ных ситуациях. К концу данной главы будет заложен фунда- мент решения задачи выбора оружия с исполь- зованием методов ИИ. Ниже приведено краткое описание различных реализаций, которое де- монстрирует их разнообразие. В ЭТОЙ ГЛАВЕ- • Выбор наиболее привлекательных вариантов • Практическое осуществление процесса оценки • Критерии выбора оружия • Практический пример • Резюме
358 Часть IV. Выбор оружия Выбор наиболее привлекательных вариантов Выбор оружия сводится к определению такого вида оружия, которое является наи- более подходящим для текущего боевого задания. На первый взгляд это определение кажется очевидным, но, прежде чем им воспользоваться, необходимо найти ответ на два вопроса, касающиеся того, как определить понятие “подходящего” оружия и как выбрать наилучшее оружие. Рассмотрим эти вопросы поочередно, обращая основное внимание на то, какие концепции образуют фундамент данной проблемы. Теоретические вопросы оценки оружия Вначале необходимо разобраться в том, как можно принять в расчет свойства среды, а затем обсудить суть процесса оценки оружия. Характеристики и критерии Как было описано в предыдущей главе, изучая обстановку, можно обнаружить наличие многочисленных характеристик самой среды, участника игры, выполняю- щего роль противника, или пространственной конфигурации. Такие характеристики можно условно представить в виде множества характеристик [ft, f2, ..., fn], имеющих либо символические, либо числовые значения (т.е. множества разнород- ных характеристик). Каждый человек, участвующий в игре, может иметь разные цели и побуждения, поэтому такие характеристики должны быть приняты в расчет по-разному, в соот- ветствии с конкретным заданным набором критериев [ci,c2, . . . ,cm], которые могут, например, выражать стремление ограничить самоповреждение, причинить максимальный ущерб или испугать противника. Участники игры, обладающие луч- шими навыками, могут руководствоваться критериями, которые соответствуют другим измеримым преимуществам, таким как максимальное сокращение продол- жительности боя и разумное использование боеприпасов. По мере того как игроки вступают снова и снова в одну и ту же игру, они могут выбирать разное оружие, чтобы развлечься или достичь разнообразия в игровой об- становке. Как таковые, установленные критерии могут на практике стимулировать достижение различных целей, но с точки зрения теоретического обоснования спо- собы применения этих критериев могут всегда рассматриваться как одинаковые. Пригодность оружия Задача выбора оружия может быть упрощена до фундаментального уровня, незави- симо от того, движет ли процессом выбора сложная система желаний и побуждений или единственная цель. Это позволяет исключить из рассмотрения все избыточные сведения о ситуации, о состоянии участника игры или даже о свойствах оружия. Для обозначения преимуществ оружия достаточно определить всего лишь един- ственное число; в текущей ситуации это числовое значение указывает, насколько подходящим является данное оружие. Соответствующее единственное значение из- меряется в непрерывном диапазоне и именуется пригодностью оружия.
^laiattaus,^. Глава 23. Выбор оружия 359 Процесс определения применимости оружия может рассматриваться как вычис- ление функции пригодности. Замысел такого подхода состоит в том, что предпола- гается наличие какой-то неизвестной функции, которая представляет все критерии принятия решений или характеристики, принимаемые в расчет во время принятия решений. Такая функция f может быть применена к каждому виду оружия, рассмат- риваемому как вариант выбора, что приводит к получению скалярного значения к (как уже было сказано, это значение не обязательно должно ограничиваться дис- кретной областью определения): f (w) = k В том случае, когда функция пригодности служит для выбора оружия, скалярное зна- чение к должно указывать, насколько “подходящим” является оружие we w (это значение может измеряться по любой шкале). В простой игре множество всех видов оружия может быть определено, например, как W = {rocket launcher, chaingun, blaster}. Функция пригодности может быть промоделирована формально, представляя отображе- ние множества видов оружия W на множество вещественных чисел 5R: f: W —» 91 Если же известны характеристики и критерии, то для решения указанной задачи может быть составлена более подробная модель. В частности, мы можем не рассмат- ривать f как какую-то загадочную функцию, а непосредственно выразить ее в тер- минах характеристик и критериев: g: [fl,fa, . • . , fn]X[Ci, С2, • • • , Cm] -» (W—) Это уравнение описывает функцию д, которая позволяет отобразить характеристи- ки и критерии на другую функцию (обозначенную как W-»5R). Введем определение, ко- торое потребуется нам в будущем, — эта система обозначений используется в функ- циональном программировании, т.е. в таком языке, который позволяет применять функции в качестве значений, возвращаемых другими функциями. По существу, в данном случае это свидетельствует о том, что имеется возможность создать функцию пригодности для оценки оружия на основе множеств критериев и характеристик. Для того чтобы можно было принять в расчет указанные критерии, применяется много способов, различающихся по своей сложности. Например, линейная модель, по-видимому, является наиболее простой; допустим, согласно этой модели, следует установить долю характеристики f i, равную 65%, и долю критерия с2, равную 35%. Это соответствует взвешенным значениям вклада указанных компонентов в оконча- тельное значение пригодности. Но может оказаться, что нелинейные функции яв- ляются более приемлемыми, поскольку позволяют использовать критерии для ран- жирования важности характеристик. Методология выбора Дадим определение понятия пригодности, позволяющего осуществлять выбор оружия, — если участник игры принимает решение выбрать оружие w и утверждает, что этот вид оружия для него — лучший вариант, то данный вид оружия, несомнен- но, максимизирует какую-то неизвестную нам функцию пригодности f (т.е. оружию
360 Часть IV. Выбор оружия w соответствует наибольшее значение к). Все прочие виды оружия х (Vx), кроме w (xew -{w}), по-видимому, имеют более низкую пригодность: Vx f(x) < f(w) xeW-{w) Таким образом, принимая решение, участник игры должен был оценить все вари- анты и сравнить их пригодность, иными словами, явно провести ранжирование всех вариантов. Если при каждом сравнении отбрасывается худший вариант, то в конечном итоге должен остаться самый лучший. Это— дорогостоящая процедура, имеющая сложность О (п); средства ИИ должны провести п сравнений для обеспечения гаран- тии того, что выбранный вариант является наилучшим. Делая выбор, люди также проходят через подобный процесс, хотя чаще всего этого не осознают. Осуществляемый людьми выбор редко становится важным, по- этому по практическим соображениям сам процесс выбора часто сокращается (например, выбирая овощи в магазине, почти никто не раскапывает всю их кучу). Представляется очевидным то, что суть принятия решений в процессе выбора за- ключается в неизвестной функции пригодности, позволяющей оценивать преиму- щества каждой альтернативы. Чтобы иметь возможность успешно проектировать средства ИИ, необходимо обладать определенным пониманием мотивов анимата; таким образом, может быть реализована функция пригодности, применимая для оценки каждого решения. Сложнее всего решить именно эту задачу, а все остальное сводится лишь к применению установившейся методологии. Практическое осуществление процесса оценки Процесс выбора, главным образом, основан на оценке преимуществ того или иного объекта. Мы уже кратко коснулись теоретических основ оценки значений пригодно- сти. Но на практике дела обстоят во многом иначе. Задача предоставления качествен- ной оценки пригодности для любого объекта является чрезвычайно трудной. По существу, процесс формирования оценки сводится к отображению характе- ристик на возможные варианты с учетом критериев. Для упрощения этой задачи лю- ди используют два разных подхода. Один из них основан на логических рассуждени- ях, а другой — на опыте. Логический вывод Очевидно, что любая ситуация оставляет возможность провести некоторый кри- тический анализ. Такой процесс позволяет разбить задачу принятия решений на меньшие части, которые проще поддаются пониманию. На первом этапе такого процесса должны быть определены ключевые характеристики ситуации (например, низкая жизнеспособность, ограниченная среда и наличие пресле- дователей). На основании этих фактов можно сделать логический вывод о том, какие свойства оружия являются необходимыми. Для этого требуются знания в простой форме, которые представлены в виде высказываний (например, “если приходится убегать от преследования, то нужно использовать оружие с высокой скорострельностью”). Эта си- туация весьма напоминает сферу применения продукционных правил, которые рассмат-
Глава 23. Выбор оружия 361 ривались в главе 11, “Системы, основанные на правилах”. Наконец, появляется возмож- ность выбрать наиболее подходящее оружие; для этого необходимо найти оружие, кото- рое соответствует свойствам, выявленным путем логического вывода. Для успешной реализации этого подхода должна обеспечиваться возможность моде- лировать указанные знания и процесс принятия решения. Несомненно, во многих слу- чаях такой подход вполне осуществим, хотя и можно поставить под сомнение то, что лю- ди действительно его осуществляют. Применяя подобный строгий метод, мы можем принимать во внимание только те характеристики, которые нам известны. Оценивая ва- рианты, можно очень легко упустить из виду какие-то второстепенные характеристики и критерии! Поэтому чаще является более успешным простой эмпирический подход. Опыт Людям в дар дана память, которая позволяет им избавиться от необходимости возвращаться к одной и той же проблеме бесчисленное количество раз. Память по- зволяет сформировать на основе воспоминаний о проведенных боях оценки пре- имуществ того или иного оружия: “В последний раз мой персонаж убили выстрелом сзади в этом месте, и сейчас у меня плохое предчувствие... Необходимо подготовить оружие для отражения нападения из засады!” Безусловно, при использовании подхода, основанного на опыте, очень важно иметь в своем распоряжении историю проведенных боев, по крайней мере, если вы- рабатываемые решения должны хоть в какой-то степени иметь приемлемое качест- во! Именно в этом заключается преимущество шр (и моделирования в целом); уча- стники игры могут быстро проходить через различные сценарии, не подвергаясь столь значительным рискам. Таким образом, при использовании моделирования появляется возможность в конечном итоге опробовать все возможные сценарии. Поэтому мы можем узнать, насколько успешно действует оружие в каждой конкрет- ной ситуации. Люди-игроки могут приблизиться к указанному уровню знаний, делясь своим опы- том с другими и интенсивно тренируясь. Поэтому указанный подход также в высшей степени применим и при обучении людей. Даже если результат развития отдельных ситуаций является непредсказуемым, опыт позволяет извлекать из результирующих данных информацию о некоторых тенденциях (как происходит при сборе статистических данных). Эта информация становится достаточной для оценки эффективности оружия. Гибридные подходы Оба рассматриваемых подхода (и основанный на дедукции, и основанный на опыте) имеют свои преимущества и недостатки. В первом подходе интенсивно ис- пользуются рассуждения, основанные на знаниях, выраженных в виде простых пра- вил, а во втором рассуждения не применяются, но требуется получение широкого опыта. Практика показала, что оба подхода являются применимыми, но может ока- заться более удобным какой-то другой способ действий, лежащий между ними. Сочетание рассуждений и опыта используют также люди. Анализ прошлого опы- та позволяет улучшить оценки, а дедукция дает возможность применять полученные
362 Часть IV. Выбор оружия знания в новой ситуации: “Я выиграл поединок в аналогичной ситуации с использо- ванием данного оружия, поэтому попытаюсь снова им воспользоваться”. Может быть достигнут разумный баланс между усилиями, предпринимаемыми для сбора информации на основе опыта, и применением логических рассуждений для дальнейшего манипулирования этими знаниями. Достижение подобного ком- промисса также желательно при проведении моделирования, поскольку всегда при- ходится находить равновесие в том, сколько времени требуется для приобретения данных и какова точность оценок. Критерии выбора оружия В обычных играх со стрельбой от первого лица применяются два способа выбора оружия: участники игры могут выбирать свое оружие до начала игры, а во время иг- ры им предоставляется возможность сменить оружие. Теоретические основы осуще- ствления обоих сценариев являются аналогичными, но мы рассмотрим более слож- ный вариант — выбор оружия во время игры. В своем поведении во время выбора оружия анимат должен проявлять два суще- ственных качества, и оба эти качества вносят свой вклад в создание иллюзии реали- стичности. Решительность Люди-игроки во время борьбы могут допускать много ошибок при выборе оружия. Но если даже выбранное оружие не является идеальным в данной ситуации, человек- игрок обычно придерживается сделанного им выбора. А что касается средств ИИ, то самое худшее, что можно себе представить, это — анимат, который снова и снова ме- няет оружие в надежде на то, что следующий выбор позволит хоть немного более при- близиться к оптимальному варианту. Сам процесс смены оружия весьма заметен для постороннего взгляда, поскольку видно, какое оружие находится в руках у каждого участника игры. Кроме того, сто- ронние наблюдатели также в большей степени замечают, чем что-либо иное, как стали другими поражающие элементы. Если процесс выбора оружия действует не очень успешно, то со стороны этот дефект обнаруживается почти сразу же. Поэтому действительно необходимо уделять внимание совершенствованию процесса выбора оружия, чтобы сохранить иллюзию реалистичности. Обоснованность Какой вариант выбора оружия является обоснованным? Ответ на этот вопрос кажется очевидным, но само понятие обоснованности трудно выразить формально. В идеальном случае было бы желательно, чтобы люди-игроки поддерживали выбор, сделанный средствами ИИ, и одобряли выработанные ими правильные решения. Таким образом, важно поддерживать иллюзию интеллектуальности поведения всех персонажей в игре. Особой опасности нарушить эту иллюзию нет, если у чело- века-игрока есть основания, например, рассуждать: “У него не было возможности
Глава 23. Выбор оружия 363 выбрать другое оружие, поэтому он взял автомат” или “Она взяла бластер, чтобы за- ставить меня поверить в то, что у нее кончились боеприпасы!” Но если поведение аниматов, реализуемое с помощью средств ИИ, постоянно находится в фокусе вни- мания, то права на ошибку практически нет. Единственное нелепое решение (например, по использованию топора для ведения крупномасштабного боя) или из ряда вон выходящее решение приводит к потере доверия к происходящему. Ненуж- ное внимание могут также привлечь слишком совершенные тактические маневры, поэтому желательно придерживаться “стандартных” форм поведения. Практический пример Как описано ниже, рассмотрим, какое оружие, предположительно, может ис- пользоваться при разных масштабах боев. > На длинных расстояниях предпочтительными являются точные виды оружия, поскольку их применение способствует повышению вероятности попадания в цель (к таковым, например, относится рельсотрон). > На средних расстояниях стрельбы следует использовать поражающие элемен- ты с высокой степенью поражения осколками для увеличения косвенного ущерба (например, ракетную пусковую установку). > При проведении разнообразных поединков на близком расстоянии можно ис- пользовать оружие с быстрыми поражающими элементами, обладающими высоким рассеянием (например, пулеметы или гипербластеры). На выбор оружия, по-видимому, может также повлиять то, как переходит ини- циатива во время борьбы от одного участника игры к другому. Одна из наиболее из- вестных рекомендаций заключается в том, что более мощное оружие можно исполь- зовать, если анимат находится в отчаянном положении, а более точное оружие — когда события полностью контролируются участником игры. На осуществление процедуры смены оружия во время боя необходимо выделять ограниченное время, не превышающее пяти секунд (приблизительно), а если ани- мат, которому требуется сменить оружие, в это время бродит по виртуальным про- сторам, то временные ограничения могут стать менее жесткими. Резюме Настоящая глава начинается с изложения теоретических сведений, касающихся выбора оружия, как указано ниже. > Пригодность оружия определяется путем отображения характеристик и кри- териев на единственное значение. > Для получения оснований для выбора наилучших видов оружия может быть проведено сравнение значений пригодности.
364 Часть IV. Выбор оружия На практике показали свою эффективность два основных способа оценки ору- жия, указанных ниже, а люди используют различные сочетания этих двух способов. > Метод логического вывода позволяет использовать имеющиеся факты для формулировки заключений, касающихся оружия. Для извлечения информа- ции о наиболее выразительных тенденциях из экспериментальных данных могут использоваться логические рассуждения. > Для получения информации о том, каковы преимущества и недостатки ору- жия в каждой ситуации, проводятся эксперименты. При создании средств ИИ может применяться первый или второй способ, а так- же сочетание этих способов, при условии что, как указано ниже, выбранный подход удовлетворяет предъявленным требованиям, о которых шла речь в последних разде- лах данной главы. > При выборе критериев высокого уровня для проведения оценки можно исхо- дить из того, что поведение аниматов при выборе оружия должно быть обос- нованным и решительным. > Само определение задачи выбора оружия должно включать рекомендации, ка- сающиеся применимости тех или иных видов оружия в конкретных ситуаци- ях, а также описание ограничений. В следующей главе дано определение интерфейса к миру игры, который исполь- зуется аниматами для осуществления процедуры выбора оружия путем взаимодейст- вия со своей средой. Практическая демонстрационная версия Идеи, изложенные в настоящей главе, демонстрируются на примере простой реализации метода выбора оружия. Компонент, обеспечивающий выбор оружия, предусмотрен в архитектуре анимата, получившего имя Joyce. После его вызова этот компонент просматривает все возможные виды оружия и вызывает неизвестную функцию оценки для вычисления их пригодности. Оценка производится с помощью систе- мы, основанной на правилах, которая действует прозрачно по отношению к средствам выбора оружия и возвращает информацию о наилучшем оружии. Демонстрационная программа и исходный код для анимата Joyce доступны в оперативном режиме по адресу http: / /AiGameDev. сот/.
^laiaHausj^ Г.пава 24 Формализация ПРОЦЕССА ВЫБОРА ОРУЖИЯ В ЭТОЙ ГЛАВЕ, • Краткое описание возможных вариантов • Рационализация • Предложенная спецификация • Резюме После проведения анализа программной плат- формы и достижения полного понимания проблемы выбора оружия мы можем теперь при- ступить к разработке спецификации интерфейса к миру игры. Для выполнения задания по выбору оружия требуется дополнительная информация, полученная из окружающей среды, но имеется также возможность повторно использовать мно- гие из существующих интерфейсов. В настоящей главе рассматриваются пере- численные ниже темы. > Возможные варианты моделирования входных данных, выходных данных и кон- текста задачи. > Способы принятия окончательного ре- шения. > Использование типов j данных для формали- зации выбранного варианта и оценка при- менимости каждой функции интерфейса. К завершению данной главы должны быть созданы аниматы, способные обеспечивать вы- бор оружия за счет применения расширенных интерфейсов. Краткое описание возможных вариантов Материал, изложенный в данной главе, до- полняет результаты работы по определению спо- собов обращения с оружием, выполненной в пре-
366 Часть IV. Выбор оружия дыдущей части. Безусловно, и та и другая проблематика относятся к проведению бое- вого столкновения, но в главе 15, “Формальное представление процесса стрельбы”, изложение сосредоточено на анализе проблем прицеливания и ведения стрельбы, то- гда как главы этой части посвящены проблемам выбора оружия. Безусловно, специ- фикации той и другой задачи в определенной степени перекрываются, поэтому существует возмож- ность сократить количество несовместимостей между двумя подходами, стремясь в наибольшей степени повторно использовать существующую модель. Ниже кратко обсуждаются три аспекта данной задачи, которые необходимо опреде- лить явно: входные данные (т.е. требуемая информация), выходные данные (т.е. возмож- ные действия) и контекст (неявно заданные переменные, от которых зависит успешное решение задачи). Контекст Наиболее важным аспектом контекста является модель оружия. Важно опреде- лить, насколько подробным должен быть проект каждого вида оружия, чтобы для решения задачи выбора оружия могли использоваться средства ИИ. И в данном слу- чае, чтобы избежать необходимости преодолевать при создании средств ИИ все сложности, связанные с использованием трехмерной модели, можно применить аль- тернативный вариант, предусматривающий более высокую степень абстрагирова- ния, в котором оружие рассматривается как объект, обозначенный символом. Наиболее прямолинейный подход состоит в том, что символом обозначается вид оружия. В таком случае средства ИИ должны включать ссылки наподобие machine gun (автомат) или rocket launcher (ракетная пусковая установка). Обычно в играх со стрельбой от первого лица участник игры может без особых сложностей воспользоваться оружием этих видов; в таком случае либо на складе имеется лишь по одной единице ору- жия каждого типа, либо не придается значения тому, какой экземпляр оружия конкрет- ного типа действительно используется. Вероятность того, что в связи с отказом различать отдельные экземпляры оружия возникнет какая-либо проблема, весьма мала, к тому же, можно легко устранить связанную с этим неопределенность. Достаточно просто предусмотреть возможность обозначения каждого экземпляра оружия уникальным символом, например blasterl, blaster2 и т.д. Такой подход может оказаться приемлемым в играх с распределением ролей, где проблема контроля над запасами является более важной. Применение указанного подхода, предусматривающего присваивание оружию символических обозначений, не исключает возможность использования анимации при создании трехмерных моделей. Для преобразования из абстрактного представ- ления в анимационное (т.е. для прорисовки различных поз аниматов) может приме- няться более низкий уровень. Подобная анимация, как правило, применяется так- же, когда человек-игрок запрашивает выполнение операции смены оружия. Сенсоры Для успешного решения задачи выбора оружия необходимо учитывать три раз- личных аспекта среды, для каждого из которых могут быть предусмотрены многие разные модели.
^aiattaus,^. Глава 24. Формализация процесса выбора оружия 367 Среда Если требуется выбрать оружие, а не просто вести стрельбу, то необходимо обла- дать большей информацией о ситуации. И действительно, при прогнозировании ус- ловий дальнейшего движения требуется лишь локализованная информация о мест- ности, поскольку направление будущего движения обычно является очевидным. Это означает, что существует возможность сосредоточиться на небольшой части среды. А процесс выбора оружия осуществляется на более высоком уровне; последствия ре- шения сказываются дольше и находят свое отражение в поведении анимата во время стрельбы. В связи с этим необходимо иметь более широкое представление о среде. Способности к стрельбе формируются на основе использования запросов, позво- ляющих прогнозировать будущую траекторию поражающего элемента, но не менее важными факторами являются такие свойства, как организация пространства вокруг участника игры и его противника (т.е. информация о том, сколько места используется для маневров). Если средства ИИ получают информацию об этих важных факторах, то, безусловно, приобретают способность вырабатывать более обоснованные решения. Для моделирования интерфейса можно применить прямой подход, предос- тавляя аниматам возможность использовать такую функцию, как Get Spatial Restriction (). Эта функция возвращает высокое значение для участков, ха- рактеризующихся наличием большого количества пространственных ограниче- ний, и меньшее значение — для открытых вариантов среды. Еще один вариант состоит в том, что результат применения этой функции можно трактовать про- ще — как определение среднего расстояния до ближайших препятствий. В отличие от этого, можно применить подход, в котором анимат использует соб- ственное восприятие для оценки пространственных ограничений; в частности, уже имеются линейные датчики, которые позволяют получать информацию о расстоя- ниях (такие, как точные лазеры). Если определяются только линейные расстояния, то процесс получения количественной оценки степени ограниченности движений может оказаться менее эффективным, поэтому становится более приемлемым гиб- ридный подход, предусматривающий дополнительное использование методов высо- кого уровня, указанных выше. Состояние игрока Проще всего поддается контролю личное состояние участника игры. Для этого необходимо лишь предусмотреть запросы, позволяющие определить жизнеспособ- ность, наличие индивидуальной защиты и используемого в настоящее время оружия. Эта информация обычно предоставляется человеку-игроку с помощью ин- дикации на козырьке шлема (Head-Up Display — HUD) и становится легко доступ- ной в игровой машине для запросов, осуществляемых средствами ИИ. Но определить жизнеспособность противника не так уж просто (или, по крайней мере, такая задача не должна быть простой). С концептуальной точки зрения пре- доставление участнику игры возможности непосредственно запрашивать информа- цию о других персонажах игры противоречит принципам воплощения; большинство истинных ценителей игры назвали бы это “жульничеством”. А для разработчиков игровых средств ИИ заинтересованность в соблюдении принципов воплощения обусловлена тем, что отсутствие информации о состоянии противника позволяет реализовывать правила поведения и вырабатывать решения по выбору оружия, вы- текающие из оценки текущей ситуации.
368 Часть IV. Выбор оружия Для наблюдения за состоянием других участников игры могут применяться раз- личные косвенные способы, причем некоторые из этих способов обладают преимуще- ствами над другими в том, что являются правдоподобными с точки зрения биологии. Одним из наиболее простых подходов, который также проявил себя на практике как наиболее эффективный, является подход, управляемый событиями. Как только про- исходит запуск поражающего элемента, ближайшие участники игры воспринимают звук. Поэтому анимат получает возможность определить, какое оружие применил его противник. Аналогичным образом, если какой-то участник издает крик боли или об- наруживаются брызги крови, то это событие может использоваться для уменьшения оценки его жизнеспособности. Важно также отметить, что анимату для отслеживания состояния противника необхо- димо использовать внутренние переменные, а его реакция становится уже не такой неза- медлительной, хотя восприятие и осуществление действий, касающихся персонального состояния, все еще характеризуются быстрой реакцией. Безусловно, указанная проблема не является столь значимой, поскольку применяются простые модели поведения про- тивников, допускающие возможность выполнения с ними несложных операций, но все равно важно учитывать, к чему приводит применение указанного дополнения. Свойства оружия В процессе выработки решения могут также использоваться свойства оружия (например, время перезарядки и скорострельность). Ниже приведены три способа учета этих показателей. > Декларативный. Каждая из характеристик оружия может быть записана в память в виде набора правил и предоставлена для доступа модулю обработки данных анимата. Преимуществом такого подхода является разделение данных и кода. Правила, используемые средствами ИИ, могут быть независимыми от игровой логики, хотя эти средства часто позволяют воспользоваться точными фактами. > Неявный. Простейший способ учета свойств оружия (с точки зрения определе- ния спецификации) состоит в том, чтобы не ссылаться на них явно. Каждое свойство оружия оказывает неявное влияние на среду, поэтому каждое свойство может быть определено относительно легко с помощью логического вывода (например, отслеживание того, как происходит подготовка оружия к бою, по- зволяет определить время перезарядки, а подсчет количества поражающих эле- ментов, выпускаемых в секунду, позволяет определить темп стрельбы). > Основанный на запросах. Наконец, может быть разработан выделенный ин- терфейс к модулю реализации игровой логики, который возвращает точные значения свойств оружия на этапе прогона. Что касается людей-игроков, то они используют неявный подход, поскольку практически не получают статистические данные о свойствах оружия до начала игры (или не обращают на них внимание). Люди способны изучить, как ведут себя разные виды оружия, на практике. Действия Чтобы приступить к применению выбранного оружия, требуется интерфейс. В ча- стности, оружие должно быть готово к использованию вскоре после начала выполне- ния принятого решения.
^ataHaus^k Глава 24. Формализация процесса выбора оружия 369 Действие по выбору оружия может представлять собой результат непосредствен- ного выбора и осуществляться с использованием только одного вызова процедуры. Применяемая для этого модель аналогична той, в соответствии с которой люди- игроки нажимают клавиши, указывающие на конкретные виды оружия (обычно это — цифровые клавиши в верхнем ряду клавиатуры). Еще один вариант состоит в том, что выбор оружия может осуществляться путем цик- лического перебора всех элементов, имеющихся в запасе. Этот вариант осуществляется с использованием последовательности команд, по аналогии с тем, как для выбора оружия применяется колесико мыши. Преимущество этого способа состоит в том, что не требу- ется непосредственно представлять знания о видах оружия, имеющихся в настоящий момент в распоряжении участника игры; средства ИИ могут просто обрабатывать в цик- ле текущее содержимое запасов, независимо от того, что в них входит. Рационализация Выше приведены краткие наброски вариантов реализации способов выбора ору- жия, а после этого необходимо найти наиболее подходящую спецификацию. Но для этого требуется определить, каких целей должны достигать разрабатываемые про- граммные средства. Наиболее важные факторы На первый взгляд кажется, что задача моделирования действий является относи- тельно несложной, но для решения задачи обработки данных от датчиков может по- требоваться больше усилий. Составляя спецификацию для решения этой задачи, мы должны придерживаться двух основных принципов, которые немного отличаются от описанных ранее. > Совместимость. Интерфейсы должны оставаться совместимыми со всеми создан- ными ранее. А в идеальном случае все дополнения должны быть единообразными (например, что касается обрабатываемой информации и формата данных). > Простота. С концептуальной точки зрения применяемый интерфейс фактиче- ски не должен быть слишком сложным, хотя его реализация может оказаться более затруднительной, поскольку связана с необходимостью обеспечить сбор информации. Мы должны стремиться, несмотря ни на что, упростить реали- зацию средств ИИ. В ходе реализации решения по выбору оружия мы должны не только придержи- ваться этих двух принципов, но и формализовать предположения, касающиеся иг- ровой машины. Принятые предположения Как обычно, при создании средств ИИ предполагается, что нижний уровень ор- ганизации программного обеспечения предназначен для осуществления анимации. Такой подход позволяет обеспечить выбор наиболее подходящего цикла ключевых
370 Часть IV. Выбор оружия кадров для подготовки оружия. А после того как оружие будет выбрано, может про- изойти краткая задержка перед тем, как оружие станет доступным для использова- ния. Эта задержка соответствует продолжительности времени, необходимой для по- иска и подготовки оружия. Тем не менее при разработке средств ИИ может быть принято предположение, что оружие после его выбора всегда становится доступным автоматически, с учетом приемлемой задержки. Те же правила распространяются и на людей-игроков. Предложенная спецификация Предпочтительным является наиболее абстрактный подход, при котором оружие моделируется в виде символа. С другой стороны, подход, предусматривающий при- менение средств более низкого уровня, в котором в распоряжение средств ИИ пере- дается детализированная модель оружия, является излишним и сложным в реализа- ции. А способ передачи средствам ИИ информации о типах оружия на этапе компи- ляции с использованием статических определений (таких, как перечисления enum в языке C++) может быть реализован без особых усилий. Но следствием примене- ния такого подхода с использованием перечисления является то, что средства ИИ становятся зависимыми от реализации игровой машины. Вместо этого мы опреде- лим символы, не связанные какими-либо числовыми закономерностями с каждым из десяти используемых видов оружия. Информация о доступных видах оружия может быть передана средствам ИИ с по- мощью одной из функций нового интерфейса доступа к запасам. В дальнейшем такая функция может быть расширена в целях обеспечения ее универсального использова- ния, но более подходящим представляется подход, в котором запросы, касающиеся оружия, реализованы отдельно. Это более удобно, как с точки зрения разработки средств ИИ, так и с точки зрения реализации функций, доступ к которым предостав- ляется с помощью интерфейса. Интерфейс, применяемый на этапе прогона, не дол- жен показывать свойства оружия (например, скорострельность и время перезарядки); эта информация должна быть заложена в самих аниматах (предусмотрена в проекте) или выведена логически в оперативном режиме. По-видимому, целесообразно также обеспечить совместимость с интерфейсом, предназначенным для людей-игроков, поскольку это позволяет сократить объем тре- буемого кода. Для выбора оружия игроки нажимают клавишу или вращают колесико мыши. Перебор в цикле данных об имеющихся видах оружия может поддерживаться спецификацией интерфейса косвенно, но практика показала, что для обеспечения разработки средств ИИ достаточно предусмотреть непосредственный выбор оружия. Что касается компоновки местности, то запрос высокого уровня возвращает единственное значение, которым обозначается складчатость местности. Способ оп- ределения такого значения может быть реализован незаметно для участников игры с использованием линейных трассировок для вычисления среднего расстояния до близлежащих препятствий. А более совершенная реализация может предусматри- вать кеширование результирующих значений в пространственной структуре данных, для того чтобы не приходилось каждый раз вычислять одни и те же значения.
^alaUaus^k Глава 24. Формализация процесса выбора оружия 371 Интерфейсы Для успешной реализации интерфейса выбора оружия осталось только наделить его способностью выполнять принятое решение. Эта задача решается путем приме- нения одной дополнительной функции, которая принимает на входе символ и воз- вращает булев индикатор успеха: bool Select (const Symbolic weapon); В идеальном случае для определения того, какое оружие может использовать анимат, необходимо иметь доступ к наличным запасам. Для поддержки других пози- ций запасов может быть дополнен собственный интерфейс анимата, но более удоб- но, если функция проверки наличия различных видов оружия реализована отдельно: void WeaponsAvailable(vector<Symbol>& weapons); Для передачи запроса, касающегося жизнеспособности анимата, используется следующее простое дополнение к собственному интерфейсу анимата: int Health(); Для выбора оружия необходимо также определить степень ограниченности окру- жения с помощью запроса, в котором обрабатываются пространственные данные. Было решено использовать запрос высокого уровня, который легко встраивается в интерфейс доступа к визуальному представлению; это позволяет реализовать код выполнения данного запроса в составе кода игровой машины. Соответствующая функция может быть задана отдельно, на тот случай, что потребуется расширить ее реализацию: float GetSpatialRestriction(); Функция GetSpatialRestriction () возвращает среднее значение расстоя- ния до любого препятствия в любом направлении от текущей позиции. Наконец, средства ИИ должны предусматривать способ количественного опре- деления ущерба, которому подверглись другие участники игры. Соответствующая функция принимает форму функции обратного вызова, связанной с событием: void OnDamage( const Event_Damage& e ); Само событие должно содержать информацию о том, где оно произошло, вклю- чать количественную оценку ущерба, а также в случае необходимости возвращать символическое обозначение участника игры, которому причинен ущерб. Набросок кода Итак, сведя воедино все приведенные выше фрагментарные сведения, мы можем составить грубый набросок того, что должны реализовать разрабатываемые аниматы: void Think() { // Определить, какое оружие является доступным vector<Symbol>& weapons; personal->WeaponsAvailable( weapons ); // Извлечь данные о свойствах из анализа ситуации
372 Часть IV. Выбор оружия float f = vision->SpatialRestriction(); int h = personal->Health(); // Принять решение о выборе оружия weapon->Select( weapons[i] ); } Для того чтобы функция обратного вызова OnDamage () могла успешно вызы- ваться с помощью указателей на функции языка C++, она должна быть реализована как отдельная функция. Остальная часть кода также может быть реализована в виде отдельных функций, но решение о том, следует ли это делать, зависит от принятого стиля разработки (т.е. не является обязательным). Резюме В настоящей главе рассматриваются изложенные ниже принципы взаимодейст- вия между средствами выбора оружия и игровой машиной, на основе которых про- исходит сбор информации и осуществляется смена оружия. > Для моделирования различных видов оружия применяются их обозначения в виде символов; в процессе моделирования решается задача обучения в целях определения свойств оружия или включения информации об этих свойствах в состав исходных данных для средств ИИ. > Интерфейсы в среде дополняются в целях обеспечения выполнения запросов, касающихся пространственных ограничений. > Предусмотрена также возможность использовать запросы, касающиеся пер- сонального состояния и наличия запасов, что позволяет анимату определять свою жизнеспособность и получать сведения о том, какое оружие находится в его распоряжении. > Обработка информации о том, какой ущерб нанесен противнику, осуществля- ется опосредованно; для этого применяются функции обратного вызова и со- общения о событиях, передаваемые из среды. > Выбор всех интерфейсов осуществлялся в целях обеспечения совместимости с существующими интерфейсами и удобства в использовании. В следующей главе приведен простой прототип средств, обеспечивающих выбор оружия, в котором используются языки поддержки сценариев и система голосования. Применение интерфейсов, которые определены в данной главе, показано на примере анимата Sir Obvious. Этот анимат проверяет запасы, чтобы узнать, какие виды оружия и соответствующие бое- припасы являются доступными, после чего выводит полученные результаты на отладочный терми- нал. Кроме того, Sir Obvious дает свои комментарии, касающиеся изменений жизнеспособности и складчатости местности. Исходный код и демонстрационная программа для этого анимата доступ- ны В оперативном режиме ПО адресу http: / /AiGameDev. сот/.
ftataHausiiify Гпава 25 Сценарная поддержка ТАКТИЧЕСКИХ РЕШЕНИЙ В ЭТОЙ ГЛАВЕ- • Основные сведения о сценарной поддержке • Выбор оружия с применением сценариев • Оценка полученных результатов • Резюме В предыдущих главах показано, как подгото- вить все необходимое для осуществления предварительной реализации, проведен анализ платформы, определена задача (на основании определенной принятой трактовки) и предос- тавлена спецификация средств взаимодействия с миром игры. А в данной главе будет разработан первый прототип, осуществляющий выбор ору- жия с использованием системы голосования, реализованной на одном из языков сценариев. В настоящей главе рассматриваются пере- численные ниже темы. > Обзор языков сценариев с точки зрения самых общих принципов. Основное вни- мание уделено анализу преимуществ сце- нарной поддержки как существенно важ- ного инструментального средства для ис- пользуемых нами архитектур, позволяю- щих реагировать на текущие ситуации и дополняющих универсальные методы ИИ, которые рассматриваются во всей книге. В настоящей главе рассматриваются типич- ные особенности среды сценарной под- держки, языки сценариев и способы вклю- чения сценариев в состав всех прочих ком- понентов системы ИИ. > Изложение принципов, составляющих ос- нову систем голосования, в частности, опи- сание того, как эти системы могут обеспе- чить выбор оружия. Для реализации одной из систем голосования в настоящей главе будет применяться сценарий. > Оценка системы и описание процедуры проведения экспериментов, которая ис- пользуется для ввода в действие системы
374 Часть IV. Выбор оружия голосования на практике. Кроме того, в настоящей главе описано, как можно устранить некоторые проблемы, связанные с неравномерным распределением голосов путем осуществления подхода, основанного на обучении. К концу данной главы сильные и слабые стороны систем голосования со сценар- ной поддержкой станут более очевидными. Это особенно касается тех систем, кото- рые предложены в качестве решения задачи выбора оружия. Кроме того, анализ, проведенный в этой главе, указывает, что системы голосования должны развиваться в направлении использования гибридного подхода, в котором предусматривается также применение обучающегося компонента. Но в первую очередь приведены под- робные сведения о языках сценариев, используемых в игровых средствах ИИ. Основные сведения о сценарной поддержке Безусловно, средства сценарной поддержки не являются результатом исследова- ний исключительно в области ИИ, но невозможно отрицать и то, что эти средства очень широко используются в приложениях ИИ, и особенно в компьютерных играх. Необходимость в применении удобных языков сценариев не исчерпывается тради- ционными подходами к созданию игровых средств ИИ; по мере усовершенствова- ния приложений ИИ сценарная поддержка в них не исключается, а просто начинает обслуживать другие потребности (отличные от потребностей реализации форм пове- дения). Системы, которые действуют на основе применения современных методов ИИ, выигрывают за счет использования языков сценариев также и в том, что эти языки полностью обеспечивают взаимодействие основных компонентов. В настоящем разделе кратко рассматриваются языки сценариев. При этом какое- либо особое внимание не сосредоточивается только на одном решении. Основную часть сведений, касающихся использования каждого конкретного языка програм- мирования (например, Python или Lua), можно найти в их полной документации. Языки сценариев Как правило, сценарии оказываются гораздо более простыми для написания по срав- нению со стандартными программами. Приступая к работе с использованием языка сце- нариев, программист сразу же получает большую свободу по сравнению с компилируе- мыми языками, поскольку он имеет возможность применять переменные с произвольно заданным типом или даже нетипизированные (поскольку в оГгъявлениях переменных не всегда требуется явно указывать типы данных). Еще одним преимуществом языков сце- нариев является динамическая типизация; проверка типов данных происходит только во время выполнения команд. По этим причинам обычно требуется использовать меньший объем кода для реализации одних и тех же алгоритмов. Кроме того, языки сценариев часто становятся идеальным дополнением к стан- дартным языкам программирования. Например, C++ является компилируемым языком со статическим контролем типов, который обеспечивает возможность доби- ваться буквально поразительной производительности приложений. А языки сцена- риев обычно предусматривают интерпретацию на этапе прогона и динамическую типизацию. Из этого следует, что сценарии, созданные с помощью этих языков,
Глава 25. Сценарная поддержка тактических решений 375 могут оказаться очень гибкими, хотя и менее быстродействующими. Сценарии до- пускают возможность легко вносить изменения и исключают необходимость компи- ляции и связывания с помощью жестко заданных ссылок (поэтому ввод в действие новых версий становится менее дорогостоящим), учет требований заказчика стано- вится гораздо проще, а разработка прототипов осуществляется быстрее. Варианты среды поддержки сценариев Самым важным преимуществом сценариев является то, что они могут загружать- ся и выполняться на этапе прогона, не требуя отдельной фазы компиляции. Тем не менее обычно фаза компиляции в определенном смысле осуществляется всегда, но чаще всего данный этап обработки сценария происходит динамически, в то же вре- мя как загружается сценарий. В целях повышения эффективности откомпилиро- ванный при этом код часто может быть записан на диск для дальнейшего использо- вания в виде байт-кода (т.е. в виде последовательности команд, представленных с помощью двоичного кода, независимого от платформы). На следующем этапе выполнения сценария происходит обработка байт-кода с по- мощью интерпретатора, или виртуальной машины. Интерпретатор выполняет каждый оператор в сценарии в виде отдельных операций (например, модифицируя значения переменных или вызывая встроенные функции). В результате сценарии приобретают способность поддерживать такие же функциональные возможности, как и обычные программы. Среда поддержки сценариев представляет собой область памяти, в которой хранят- ся все необходимые переменные, а также код каждой из функций, определенной в сценарии. Среда поддержки сценариев — это ядро системы сценарной поддержки, содержащее основную часть кода, необходимого для обеспечения возможности при- менения языка сценариев. Интеграция в системе на основе применения отдельных компонентов Большинство других средств реализации методов ИИ могут рассматриваться как компоненты, выполненные в виде “черных ящиков” с полностью определенными интерфейсами, предоставляющими доступ к их функциональным возможностям. Применяемые варианты среды поддержки сценариев не составляют в этом исклю- чения. Именно по этим причинам мы можем предоставить краткий обзор средств высокого уровня, не углубляясь в описание каких-либо подробных сведений, ка- сающихся конкретных языков. Цнтшрацию среды поддержки сценариев в приложение принято называть ее вне- дрением. И наоборот, интеграция средств поддержки собственного языка приложе- ния в среду поддержки сценариев называется расширением этой среды поддержки. После такого расширения машина ИИ приобретает способность загружать и выпол- нять любой сценарий, сочетая эти вызовы с вызовами собственного кода. Могут применяться два способа включения средств поддержки сценариев в единую архи- тектуру, которые описаны в следующих двух разделах.
376 Часть IV. Выбор оружия Экспорт интерфейсов Компоненты, расположенные на верхних уровнях структурной иерархии, вклю- чающей средства поддержки языков сценариев, часто требуют обеспечения взаимо- действия с этими средствами. Как и при использовании других компонентов ИИ, эту задачу можно решить путем экспорта интерфейсов. После этого можно легко обеспечить вызов в компонентах, предоставленных сторонними разработчиками, функций, реализованных в языке сценариев. Применение подобного интерфейса высокого уровня предоставляет возможность передавать все необходимые данные в сценарий еще до вызова его на выполнение. Это означает, что сценарий может быть полностью изолирован от другого про- граммного обеспечения и ему предоставлен доступ только к той информации, кото- рая ему передана во время вызова. Как показано на рис. 25.1, слева, один из вариан- тов предусматривает экспорт только интерфейса высокого уровня, что позволяет обеспечить взаимодействие со сценарием родительского компонента. А на рис. 25.1, справа, показан второй вариант, в котором среда поддержки сценариев импортирует входные и выходные интерфейсы, поэтому сценарий может непосредственно взаи- модействовать с миром игры. Рис. 25.1. Способы интеграции архитектуры среды поддержки сценариев в архитектуру ИИ Импорт интерфейсов С другой стороны, модуль сценарной поддержки может также импортировать ин- терфейсы из других компонентов. Это позволяет предусматривать сбор данных не- посредственно в самих сценариях, что дает возможность отказаться от передачи им информации. С концептуальной точки зрения компоненты интерфейса становятся вложенными в среду сценарной поддержки, поскольку работа сценария зависит от этих компонен- тов. В подобной архитектуре сценарии находятся на более высоком уровне иерархии. Модуль сценарной поддержки Доступ к среде сценарной поддержки может осуществляться с помощью интер- фейса, входящего в рассматриваемую инфраструктуру ИИ. И действительно, нам требуется лишь обеспечить возможность вызывать функции и передавать запросы в среду сценарной поддержки. Один из сценариев подобного типа приведен в лис- тинге 25.1. Этот сценарий не демонстрирует свое взаимодействие с интерфейсом, а просто выполняется под управлением интерпретатора.
Глава 25. Сценарная поддержка тактических решений 377 Листинг 25.1. Простая функция на языке Python, позволяющая определить числовую оценку преимуществ оружия def EvaluateWeapon(type,ammo): i f ammo > 0: if type == "railgun": return 2 return 1 return 0 Реализация вызовов функций является относительно несложной, поскольку мы можем сослаться на конкретную функцию, указав ее имя: bool Run( const string& function ); В некоторых случаях функции должны быть переданы параметры, а доступ к ре- зультату должен быть обеспечен с помощью запроса (например, во фрагменте кода на языке Python, показанном в листинге 25.1). Задача поддержки подобных произ- вольных прототипов функций является весьма затруднительной, поскольку необхо- димо обеспечить, чтобы интерфейс позволял обрабатывать параметры любых типов. Один из перспективных вариантов состоит в создании двух перегруженных функций, Param и Result; в настоящей главе показаны только переменные с пла- вающей точкой, но столь же просто можно обеспечить обработку целочисленных и строковых данных: void Param( const float f ); void Result( const float& f ); Наконец, иногда возникает необходимость в создании универсальных функций для передачи запросов и модификации среды сценарной поддержки. Такие универ- сальные функции должны быть перегруженными, что позволяет задавать и выпол- нять выборку содержимого глобальных переменных произвольных типов: void Set( const string& name, const float f ); bool Get( const string& name, const float& f ); Процесс импорта интерфейсов в среду сценарной поддержки осуществляется по- другому, поскольку для этого не требуется применение интерфейса этапа прогона. Вместо этого такая задача обычно осуществляется во время инициализации. Идея этого подхода состоит в том, что существующие интерфейсы, которые определены на языке C++ (например, интерфейсы обеспечения зрения или передвижения), могут быть преобразованы в интерфейсы, которые заданы в коде Python, с использо- ванием автоматизированных средств создания оболочек для интерфейсов. Выбор оружия с применением сценариев Для выполнения основной части тех небольших операций, о которых шла речь в нескольких предыдущих главах (например, для извлечения основных характери- стик, анализа свойств оружия и определения временных показателей), могут ис- пользоваться сценарии. Сценарии очень хорошо подходят для получения специа- лизированных решений нестандартных проблем, поэтому в подходе, рассматриваемом в данной книге, такая особенность сценариев применяется в полную силу. А методы ИИ,
378 Часть IV. Выбор оружия описанные в следующих главах данной части книги (такие, как деревья решений), превосходно подходят для получения общих решений часто встречающихся задач. Тем не менее, в этих главах найдет свое место также сценарий, рассматриваемый в данном разделе, поскольку он может использоваться во время создания и обучения деревьев решений. Краткий обзор В данной главе не только используется подход, основанный на сценарной под- держке, но и реализуются описанные ниже методы (о которых уже шла речь в пре- дыдущих трех главах). > Проведение логических рассуждений. Решения могут быть получены логиче- ским путем на основании исходных фактов. Мы будем руководствоваться дан- ными о свойствах оружия (например, о степени нанесенного ущерба и темпе стрельбы) для выбора наиболее подходящего оружия. > Применение декларативного подхода д ля определения свойств оружия. Это по- зволяет предоставить средствам ИИ информацию о скорострельности и ожи- даемом ущербе. Для определения способа ранжирования каждого из этих свойств оружия служит система голосования. По существу, в расчет берутся многие разные характеристики и происходит голосование в целях выяснения того, какое свойство оружия является наиболее важным. После этого каждый вид оружия оценивается в соответствии с полученным числом голосов и происходит возврат данных о наилучшем оружии. Такой подход действует успешно, поскольку чаще всего количество кандидатов на звание наилучшего оружия больше двух, причем основная их часть соответствует полностью допустимому варианту выбора. В настоящем разделе каждый аспект решения рассматривается более подробно: определение свойств оружия, организация работы системы голосования, сбор голо- сов, определение характеристик и учет простых ограничений. Свойства оружия Достаточно провести краткий поиск в World Wide Web, и мы избавляемся от не- обходимости просматривать исходный код игры для получения информации об оружии. В частности, в документе Quake 2 Weapons and Combat FAQ [63] можно найти статистические данные, приведенные в табл. 25.1. А данные о скорости поражающих элементов, которые также приведены в указанной таблице, пришлось искать в ис- ходном коде игры Quake 2. Таблица 25.1. Статистические данные о большинстве видов оружия, применяемых в игре Quake 2 Оружие Темп стрельбы Ущерб Ущерб, причиненный в секунду Скорость Рассеяние Бластер 0.5 20 40 1000 0 Дробовик 1 48 40 500/500
ftalalfausiiik. Глава 25. Сценарная поддержка тактических решений 379 Окончание табл. 25.1 Оружие Темп стрельбы Ущерб Ущерб, причиненный в секунду Скорость Рассеяние Автомат 0.1 8 80 — 300/500 Пулемет 0.05 и 0.025 6 120 и 240 — 300/500 Гранатомет 1 120 ‘ 120 400-800 0 Ракетная пусковая установка 1.25 120 ‘ 96 650 0 Гипербластер 0.1 20 200 1000 0 Рельсотрон 1.5 100 67 — 0 Таким образом, рассматриваются указанные ниже свойства оружия, с учетом той последовательности, в которой они приведены в табл. 25.1. > Темп стрельбы. > Ущерб, причиненный в расчете на выстрел. > Ущерб, причиненный в секунду. > Скорость поражающего элемента. > Точность (величина, обратная рассеянию). Единицами измерения времени являются секунды, а расстояния в игре Quake 2 из- меряются юнитами (18 юнитов равны 1 шагу). В табл. 25.1 учитывается возможность радиального поражения (обозначается звездочкой, *) вокруг мест взрыва ракет и гра- нат, а также ущерб от прямого попадания. В таблицу не включены данные о BFG (Big Fucking Gun — большое чертово глушило), поскольку эта пушка оказывается в распо- ряжении участников игры лишь при очень редком стечении обстоятельств (и почти никогда не используется). Данные о свойствах, приведенные в таблице, должны быть объявлены в отдельном файле, чтобы их можно было легко модифицировать. В сцена- рии предусмотрено включение этого файла, для того чтобы данные о свойствах оружия можно было учитывать при осуществлении логического вывода. Система голосования Средства ИИ должны принять в рассмотрение указанные факты и выработать решение, касающееся того, насколько подходит тот или другой вид оружия в теку- щей ситуации. Общее определение концепции функции пригодности, которая по- зволяет применять критерии выработки решения для оценки характеристик текущей ситуации, представлено в главе 23, “Выбор оружия”. Результатом применения функции пригодности становится единственное значение, которое представляет степень пригодности оружия. В рассматриваемом случае в состав характеристик входят компоновка среды, рас- стояния между участниками игры, текущий уровень жизнеспособности и т.д. Крите- рии принятия решения о том, какой вид оружия должен использоваться, фактиче- ски представляют собой результаты анализа комбинаций этих характеристик. В основе системы голосования лежит такая идея, что характеристики используются для выработки решения о том, какое свойство оружия в наибольшей степени требуется
380 Часть IV. Выбор оружия для их реализации, и сформированная при этом оценка рассматривается как голос в пользу этого свойства (рис. 25.2). В отличие от той системы голосования, которая при- меняется в человеческом обществе, в данной системе голосования можно проще пре- дусмотреть возможность подавать больше чем один голос, и даже есть возможность использовать дробные значения количества голосов (т.е. числа с плавающей точкой меньше единицы). После этого, как показано ниже, полученные голоса применяются д ля масштабирования свойств оружия. Если за какое-то свойство подано много голо- сов, то это означает, что свойство является важным, поэтому его числовое значение умножается на большее число; и наоборот, получение меньшего количества голосов свидетельствует о том, что свойство не является слишком важным. f(w) = Pi (w) *Vi + Pn(w)*Vn В приведенной формуле f (w) обозначает пригодность оружия w, Pi (w) обозна- чает i-e свойство рассматриваемого оружия (например, скорость или ущерб от вы- стрела), a Vi показывает общее количество голосов, поданное за это свойство. Характеристики Голоса Свойства оружия Соединения с весовыми коэффициентами Рис. 25.2. Схема организации применяемой системы голосования, в которой свой вклад в определе- ние количества голосов вносят характеристики; значение количества голосов умножается на зна- чение свойства оружия и вычисляется взвешенная сумма, определяющая пригодность оружия Сбор данных о количестве голосов, соответствующих отдельным характеристикам Прежде всего необходимо привлечь к работе эксперта, чтобы он определил важность свойств в различных ситуациях. Прежде чем начнется голосование, необходимо выявить возможных кандидатов. В данной главе используются все свойства оружия, которые бы- ли перечислены в табл. 25.1, и к ним добавляются два указанных ниже свойства. > Точность стрельбы. Определяется как величина, обратная рассеянию. > Потенциал поражения. Потенциал поражения определяется как максимальный ущерб в расчете на выстрел, но используется другое определение весового ко- эффициента, для того чтобы этот фактор стал менее значимым.
Глава 25. Сценарная поддержка тактических решений 381 Напомним, что свойство поражения осколками обозначено в табл. 25.1 звездочкой и определяет величину поражения осколками. А свойство DPS (Damage Per Second) обозначает величину причиненного ущерба в секунду. На следующем этапе необходимо выбрать характеристики ситуации, учитывае- мые при проведении голосования. Решение об использовании тех или других харак- теристик основано, главным образом, на интуиции, а их относительная значимость, несомненно, должна уточняться на этапе проведения экспериментов. Как показано в табл. 25.2, некоторые характеристики обладают голосами, величина которых пре- вышает единицу, а другие характеристики предоставляют свои голоса в пользу многих других характеристик. Данные последней строки таблицы применяются не- зависимо от того, какую величину имеют все прочие характеристики, а сам голос определяется пропорционально количеству боеприпасов. Таблица 252. Список характеристик с указанием соответствующих им голосов Характеристика Количество голосов Несколько игроков Длинное расстояние Среднее расстояние Короткое расстояние Движение вперед Движение назад Движение в ограниченном пространстве Нападение из засады Поиск Бегство Ущерб, +4 Точность, +2 Количество повреждений в секунду, +1; точность, +1 Количество повреждений в секунду, +2 Точность, +1 Рассеяние, +1 Поражение осколками, +3 Точность, +2 Ущерб, +1 Количество повреждений в секунду, -«-1 Потенциальная вероятность поражения, +ammo (количество боеприпасов) После сбора всех значений голосов полученные данные умножаются на значение каждого свойства оружия. Сумма взвешенных значений свойств представляет собой окончательную величину пригодности оружия. Оружие с наивысшим значением пригодности выбирается как самое лучшее. Временные ограничения На величину затрат времени при выборе оружия вручную должны распростра- няться некоторые ограничения. В настоящей главе применяются два описанных ниже ограничения. > Смена оружия не допускается, если предыдущая смена произошла только за несколько секунд перед этим. > Переход к использованию другого вида оружия во время стрельбы по против- никам, у которых еще остались боеприпасы, не допускается; необходимо по- дождать до того момента, когда противники на время скроются из виду или прекратят вести огонь.
382 Часть IV. Выбор оружия На этом общее описание условий реализации сценария выбора оружия заверша- ется. Данный сценарий фактически реализован на языке Python, поскольку разра- ботчики FEAR предпочитают именно этот язык. Но вместо него можно легко под- ставить модуль и сценарий на языке Lua. Практическая демонстрационная версия Для ознакомления с практической реализацией принципов, рассматриваемых в этой главе, можно вос- пользоваться аниматом, который был назван Picky. Этот анимат можно найти на Web-узле по адресу http://AiGameDev.com/, в разделе, посвященном демонстрационным версиям. Систему голосо- вания, используемую для выбора наилучшего оружия, реализует небольшой сценарий. Этот сценарий, обладает способностью непосредственно запрашивать интерфейсы к миру игры для сбора необходимой информации. Данные о выбранном оружии возвращаются через интерфейс высокого уровня. Оценка полученных результатов Для успешного проведения этапа экспериментирования требуется применение большого количества поправок. Должна быть проведена корректировка не только значений количества голосов, но и весовых коэффициентов свойств оружия. На- стройку обоих этих значений можно осуществлять одновременно, поскольку нет не- обходимости в использовании весовых коэффициентов, если голоса выражаются числами с плавающей точкой. Но если в распоряжении разработчика остаются и те, и другие величины, то ему становится проще добиться правильного выходного зна- чения с помощью небольших последовательных корректировок. Поэтому мы можем рассматривать данные о количестве голосов как целочисленные и учитывать лишь их относительную значимость. В таком случае появляется возможность настраивать значения весовых коэффициентов независимо от свойств оружия. На этапе экспериментирования необходимо организовать наблюдение над тем, как происходит выбор оружия тем или другим персонажем во время игры. Если по- лученное решение является сомнительным, то производится анализ процедуры го- лосования для определения того, в чем была допущена ошибка. В частности, имеет- ся возможность определить, какое свойство оружия получило слишком много голо- сов, и выявить характеристики, внесшие наибольший вклад. Затем значения таких характеристик корректируются до тех пор, пока суммарное количество голосов не начинает входить в пределы разумного. После этого, как только станет ясно, что го- лоса, в основном, уравновешены, можно приступать к корректировке весовых ко- эффициентов, относящихся к каждому свойству оружия. Эти значения можно кор- ректировать, выявляя те свойства, которые внесли слишком большой вклад в окон- чательную оценку пригодности, и уменьшая их весовые коэффициенты соответст- вующим образом. Благодаря использованию такой методологии задача корректировки всех рас- сматриваемых значений становится немного проще. Кроме того, рассматриваемая система голосования обладает тем преимуществом, что ее можно относительно лег- ко дополнить. В частности, в эту систему голосования можно легко ввести новые ха- рактеристики, причем эти характеристики, в основном, становятся независимыми от других существующих характеристик. Полученная в итоге система относительно
^alaHaus,^. Глава 25. Сценарная поддержка тактических решений 383 неплохо справляется с задачей выбора оружия. Безусловно, поведение этой системы далеко от оптимального, но его практически невозможно отличить от поведения лю- дей-игроков. Недостатком рассматриваемой системы голосования является то, что для ее на- стройки требуется проведение этапа экспериментирования, описанного выше, по- скольку результаты подсчета голосов не всегда становятся известными. В таких слу- чаях невозможно применение методов контролируемого обучения. Обнаруживается также проблема, связанная с тем, что принятые предположения не всегда являются обоснованными; и действительно, навыки участника игры редко соответствуют тем характеристикам оружия, которые были определены на основании точных статисти- ческих данных. Из этого следует, что в своем поведении система голосования- не подстраивается к способностям отдельных игроков. Резюме В настоящей главе рассматриваются указанные ниже важные преимущества сце- нариев, которые не теряют своей значимости, даже если используются самые совре- менные методы ИИ. > Задача модификации сценариев является несложной; в технологии программи- рования на основе сценариев не предусмотрена отдельная фаза компиляции. > Синтаксис сценариев является простым, гибким и высокоуровневым, что способствует уменьшению объема разрабатываемого кода. > Сценарии могут быть отделены от исполняемого кода и обработка сценариев может осуществляться по принципу использования программных средств, управляемых данными. > Сценарии идеально дополняют код, созданный с использованием обычных языков программирования, поскольку позволяют создавать определяемые пользователем интерфейсы между универсальными компонентами. Кроме того, в данной главе подробно рассматривались идеи, лежащие в основе систем голосования. Применительно к задаче выбора оружия определены изложен- ные ниже концепции. > Голосование осуществляется по поводу свойств различных видов оружия. > Количество поданных голосов определяется на основе оценки характерных особенностей ситуации. > При обработке данных о полученных голосах могут применяться такие методы, как масштабирование с использованием различных весовых коэффициентов и агрегирование с учетом голосов, поданных в пользу нескольких кандидатов. Разработанное программное решение действует очень качественно и соответст- вует предъявленным требованиям, касающимся оправданности сделанного выбора и окончательности самого выбора. Для достижения такого успеха от разработчика требуется, чтобы он затратил определенные усилия на проведение экспериментов
384 Часть IV. Выбор оружия и внесение поправок. Но иногда принятые предположения не ведут к получению наилучших решений, а сама система не позволяет учитывать отдельные навыки. В следующей главе приведены теоретические сведения о деревьях решений. Это — метод ИИ, который может использоваться для принятия решений путем оценки преимуществ того или иного выбора. Сильной стороной этого подхода явля- ется то, что обучение выбору оружия может осуществляться с применением приме- ров. Пример использования изложенных в данной главе теоретических сведений приведен в главе 27, “Обучение оценке оружия”.
^alaflaus^i Гпава 26 В ЭТОЙ ГЛАВЕ- Деревья классификации и регрессии • Описание структуры деревьев решений • Классификация и регрессия • Формирование дерева • Процедура обучения • Обсуждение полученных результатов • Резюме Деревья регрессии и классификации, извест- ные также под общим названием как деревья решений (Decision Tree— DT), представляют собой структуры данных, позволяющие интер- претировать шаблоны данных с целью их распо- знавания. Деревья решений организованы в ви- де иерархической структуры, состоящей из узлов принятия решений по оценке значений опреде- ленных переменных для прогнозирования ре- зультирующего значения. Применение деревьев классификации приводит к получению симво- лического обозначения класса, а в результате Использования деревьев регрессии происходит возврат непрерывных значений. Для обучения деревьев решений должны быть предусмотрены примеры данных, поэтому необходимо создавать или собирать такие дан- ные заранее. С одной стороны, данные могут быть подготовлены экспертом, а с другой сторо- ны, может быть предусмотрено накопление кол- лекции фактов, касающихся рассматриваемой Задачи. На основе исключительно только интер- претации (или классификации) подобных дан- ных могут быть созданы многие приложения, в том числе модели ИИ. На практике каждая рас- сматриваемая при этом задача может быть пред- ставлена с помощью множества атрибутов, при- менительно к которому дерево решений прогно- зирует неизвестный атрибут (решение). В настоящей главе обсуждаются перечислен- ные ниже темы. > Определение понятия выборки данных, которая включает переменные прогнози- рования и отклика.
386 Часть IV. Выбор оружия > Описание структуры деревьев решений, состоящих из узлов принятия реше- ний и ребер. > Организация процесса классификации и регрессии на основе существующего дерева. > Определение способов обучения (или формирования на основе логического вывода) деревьев решений на базе наборов данных, с использованием рекур- сивного секционирования. > Описание применения процедуры обучения для решения более общей задачи, цель которой состоит в поиске дерева решений, которое в наибольшей степе- ни соответствует рассматриваемой задаче. Деревья решений могут использоваться в качестве компонента, отвечающего за принятие решений в ходе реализации персонажей игры. Каждая ситуация представ- ляется в виде множества атрибутов, поэтому в каждой конкретной ситуации дереве решений может предложить наилучший способ действий. Кроме того, деревья рег- рессии могут использоваться для оценки сильных сторон любого объекта (или для прогнозирования результата, как положительного, так и отрицательного). В сле- дующей главе эта возможность используется в контексте выбора оружия. Описание структуры деревьев решений Прежде чем приступать к рассмотрению того, что позволяют достичь деревья ре- шений, или даже к рассмотрению вопроса об их устройстве, необходимо понять ос- новные концепции, лежащие в основе такой структуры данных, как дерево решений. Любое дерево решений выводит прогнозируемое значение, полученное в резуль- тате оценки некоторых входных атрибутов. Деревья решений подразделяются на два разных.типа: деревья классификации и деревья регрессии. Это различие не зависит от типов входных данных, поскольку деревья того и другого типов могут принимать либо непрерывные, либо символические значения. Определяющим фактором, от которого зависит тип дерева, является выходное значение. Дерево решений с непре- рывными выходными значениями именуется деревом регрессии, а деревья класси- фикации вместо этого выводят конкретные значения. Итоговые сведения, опреде- ляющие различия между типами деревьев решений, приведены в табл. 26.1. Таблица 26.1. Различие между двумя типами деревьев решений, определяемое тем, результат какого типа они возвращают Тип дерева Прогнозирование Тип данных Дерево классификации Дискретное Символы Дерево регрессии Непрерывное Вещественные числа В первом подразделе данной главы приведено определение понятия выборки данных и показана его значимость. Выборки данных предназначены для обработки деревьями решений и часто служат также в качестве определения формата ввода- вывода. В следующих разделах рассматриваются способы представления структуры
'Xalaliaus^l Глава 26. Деревья классификации и регрессии 387 деревьев решений и раскрываются секреты того, благодаря чему деревья решений становятся столь простыми и быстродействующими. Наконец, более подробно ис- следуются наиболее важные части деревьев решений, такие как узлы принятия ре- шений и листовые узлы. Общие сведения о выборках данных Безусловно, без применения данных становится невозможным не только распо- знавание образов, но и в целом машинное обучение. Совокупности данных часто представляют в виде отдельных выборок. Такие выборки иногда называют события- ми, экземплярами, шаблонами, а также, безусловно, применяют для их обозначения многие другие названия. По существу, любая выборка данных представляет собой множество атрибутов, которые принято также называть переменными прогнозирования. Каждый атрибут может представлять собой непрерывное значение (т.е. число с плавающей точкой) или символ (т.е. множество неупорядоченных дискретных значений). Такие атрибу- ты позволяют концептуально представить почти любую информацию; в контексте выбора оружия в качестве атрибутов рассматриваются такие свойства, как вес, ско- рострельность и максимальное количество боеприпасов. Предусмотрена также возможность применять дополнительные атрибуты, имеющие специальное значение, которые известны под названием переменных от- клика (или зависимых переменных). Такой атрибут может быть выражен с помощью символа, представляющего дискретные категории (в деревьях классификации) или непрерывное значение (в деревьях регрессии). Переменные отклика могут служить в качестве критериев для принятия решений по отношению к каждой из выборок при решении задач обоих типов — и классификации, и регрессии. В табл. 26.2 приведен пример данных, относящихся к задаче прогнозирования общего причиненного ущерба исходя из свойств оружия. В качестве переменной от- клика используется ущерб, поэтому остальные переменные выполняют роль пере- менных прогнозирования. Значения веса и типа заданы как конкретные данные, а остальные значения являются непрерывными. Таблица 262. Четыре выборки данных с многочисленными атрибутами Вес Скорострельность Емкость Дальность стрельбы Тип Ущерб Легкий 47 10 40 м Пистолет 5% Тяжелый 200 500 100 м Автомат 10% Очень легкий 6 6 25 м Пистолет 4% Очень тяжелый 280 1000 200 м Автомат 13% Во всем остальном между переменными прогнозирования и отклика нет никаких различий; в качестве переменной отклика может использоваться почти любой атри- бут. Переменная, используемая в качестве основы для процесса классификации, может быть выбрана с учетом специфики каждой задачи. Например, для классифи- кации типов оружия можно, кроме всего прочего, выбрать атрибут, определяющий ущерб или мощность.
388 Часть IV. Выбор оружия £ ПРИМЕЧАНИЕ Выборки данных обычно используются во всех областях ИИ, включая все прочие методы, которые мо- гут служить для распознавания образов и прогнозирования. Особенно ярким примером этого являют- ся нейронные сети. Пояснения по поводу проблемы классификации были приведены в главе 17* “Персептроны”, и в главе 19, “Многослойные персептроны” (в этих главах основное внимание было уделено аппроксимации функций), но основная часть концепций, рассматриваемых в настоящей гла- ве, может непосредственно применяться к нейронным сетям. Деревья решений Любое дерево решений по существу представляет собой древовидный граф, в бу- квальном смысле этого понятия, сформулированного в компьютерных науках. Эта структура данных состоит из узлов, соединенных друг с другом ребрами (рис. 26.1). При этом не допускается, чтобы ребра образовывали цикл, так как в противном слу- чае дерево превращается в граф, отличный от древовидного (а при использовании такого графа для принятия решений возникают затруднения). Рис. 26.1. Простое дерево решений, в котором корневой узел показан сверху, а каждый узел принятия решений обозначен кружком; листовые узлы обозначаются прямоугольниками В дереве имеется один особый узел, известный как корневой. По существу, этот узел является основой дерева, поскольку от корня можно перейти по дереву к любо- му другому узлу. Еще к одной особой разновидности узлов относятся узлы, находя- щиеся в конце любой цепочки подряд идущих ребер, — листовые узлы. Приведенное выше описание древовидной структуры данных является очень ши- роким. С этими сведениями должен быть знаком любой специалист, имеющий при- емлемый опыт работы с языками программирования. Но если речь идет об исполь- зовании деревьев решений в искусственном интеллекте, то каждое из изложенных выше понятий приобретает особый смысл. Каждый уровень в дереве может рассматриваться как одно из решений; узел при- нятия решений обеспечивает проверку условия, а каждое ребро обозначает один из возможных вариантов. Более формально можно отметить, что узлы принятия реше-
^lataHaus^i Глава 26. Деревья классификации и регрессии 389 ний содержат критерии выбора, а ребра выражают взаимоисключающие результаты проверки соответствия этим критериям. По существу, при каждой проверке условия происходит сортировка выборок данных таким образом, что каждый элемент данных определяется как соответст- вующий только одному ребру. Если все выборки рассматриваются как одно общее множество данных, то критерии принятия решений разбивают это множество на не- пересекающиеся подмножества, как показано на рис. 26.2. В результате объедине- ния таких проверок в некоторую иерархию фактически организуется процесс раз- биения всех данных на все меньшие части, происходящий до тех пор, пока не дос- тигается листовой узел. Каждый листовой узел соответствует небольшой, но исклю- чительной (неповторяющейся) части исходного множества. Исходный набор данных Подмножество разбиения Рис. 26.2. Разбиение выборки данных на взаимоисключающие подмножества с использованием узла принятия решений Способы проверки условий Нет никакого сомнения в том, что количество возможных способов представле- ния решений должно быть весьма велико, поэтому выбор применяемого способа за- висит от типа проверяемого атрибута, а также от операции, используемой в проверке условия. Поскольку атрибуты могут выражаться в виде символов или непрерывных значений, сами проверки могут быть организованы в виде булевых условий или не- прерывных отношений. А от количества возможных результатов проверки зависит то, сколько ребер должно исходить из рассматриваемого узла принятия решений. Ниже перечислены наиболее часто применяемые проверки условий. > Проверка булева значения. При проведении такой проверки определяется то, приводит ли применение какого-то конкретного оператора к получению ис- тинного или ложного значения. Очевидно, что возможными результатами проверки становятся истина или ложь. > Определение знака. При выполнении такой проверки определяется знак вы- ражения. Результатом может быть либо положительное, либо отрицательное
390 Часть IV. Выбор оружия значение. Указанная проверка может рассматриваться как частный случай проверки булева значения. > Проверка принадлежности к классу. При выполнении такой проверки опреде- ляется, к какому классу принадлежит данный символ. Результатом проверки становится обозначение одного из возможных классов (количество которых может быть произвольным). > Проверка принадлежности к области значений. При проведении такой проверки должно быть выяснено, к какой области значений относится данное значение. Каждый из возможных результатов указывает, к какой области значений, на ко- торые делится вся область значений переменной, относится данное значение. Такая проверка может рассматриваться как проверка принадлежности к классу. Как правило, в каждом узле принятия решений выполняется единственная про- верка условия, охватывающая только один атрибут (в качестве примера можно ука- зать операцию проверки B==true). Такой подход часто становится вполне прием- лемым, поскольку дерево решений позволяет создавать иерархические комбинации проверок для формирования более сложных структур принятия решений. Однако некоторые более сложные разновидности деревьев решений допускают проведение проверок условий, в которых рассматривается большее количество атрибутов (например, одновременно проверяются условия А==1 и в<0), что позволяет повы- сить точность проверок, за счет усложнения. Но в этом случае возрастает количество возможных комбинаций, поэтому увеличивается количество исходящих ребер, как показано в табл. 26.3. Таблица 26.3. Четыре примера простых проверок условий и операций выработки решений с использованием большего количества атрибутов Проверка условия Возможные результаты а (булево значение) true false в (знак) В > 0 В < 0 с (принадлежность к диапазону) С in [0..4] С in [5..9] С in [10..14] А, В А == true and В > 0 А == false and В > 0 А == true and В < 0 А == false and В < 0 Вообще говоря, увеличение количества переменных прогнозирования, исполь- зуемых при проверке условия в узле принятия решений, приводит к увеличению ко- личества исходящих ребер. Но не исключена возможность применять произвольное
^atattaus,^. Глава 26. Деревья классификации и регрессии 391 количество атрибутов и отображать их на единственное булево решение. Для этого может потребоваться вычислять в узле принятия решений такие выражения, как (A and В) or С. Аналогичные выражения могут также использоваться для преоб- разования непрерывных значений в единственное число. Но недостатком подхода, предусматривающего использование подобных сложных выражений, является то, что при этом задача обучения дерева решений становится сложнее! Листовые узлы и переменные отклика Кроме того, в деревьях решений предусмотрено применение таких отдельных пе- ременных отклика, которые относятся только к листовым узлам дерева. Эти значе- ния переменных отклика также могут быть либо дискретными, либо непрерывными. Каждый из листовых узлов соответствует одному конкретному подмножеству значений выборок данных (рис. 26.3). В деревьях классификации переменная от- клика соответствует прогнозируемой категории для всех выборок, отображаемых на этот листовой узел. С другой стороны, непрерывные переменные отклика, приме- няемые в деревьях регрессии, обычно показывают среднее значение для всех выбо- рок, соответствующих данному листовому узлу. Дерево классификации I Дерево регрессии I Среднее Наборы данных Рис. 26.3. Соответствие между значениями, хранящимися в каждом листовом узле, и переменными отклика, для тех выборок, которые отображаются на этот узел Очевидно, что структура дерева решений не зависит от выбранного типа перемен- ных отклика, так как от типа переменных отклика, прежде всего, зависит то, какой способ хранения данных (условно говоря, контейнер для данных) будет использовать- ся в листовых узлах. От типа переменных отклика существенным образом зависит так- же возможный способ формирования дерева, но эта тема будет рассматриваться после того, как мы ознакомимся со способами использования деревьев решений.
392 Часть IV. Выбор оружия Классификация и регрессия После создания дерева решений появляется возможность оценивать значение пе- ременной отклика для неизвестных выборок данных с учетом лишь значений атри- бутов. При выполнении такой операции одна выборка обрабатывается за другой, что позволяет проверять на соответствие критериям и оценивать целые наборы данных. Обработка каждой выборки данных и, в частности, определение класса и (или) зна- чения для выборки осуществляются путем перехода по дереву, начиная от корневого узла, в направлении к листовым узлам. Каждый этап перехода осуществляется с учетом результатов проверки условий, а выбор направления перехода происходит с учетом пе- ременных прогнозирования (рис. 26.4). Пример: А = Истина, В = 4,7, С = 11 Рис. 26.4. Использование выборки данных для управ- ления переходом по дереву решений На каждом уровне дерева решение принимается на основе значений атрибутов. Для оценки значений переменных прогнозирования используются проверки условий в каж- дом узле. Результат оценки всегда си< лъетстнует только одному из ребер, исходящих из узла принятия решений. Наличие в любых обстоятельствах только одного применимого ребра гарантированно, поскольку условия являются полными (т.е. допускающими не меньше одного варианта решения) и взаимоисключающими (т.е. допускающими только один вариант решения). Во время перехода прослеживается ребро, ведущее к следующе- му узлу принятия решений, в котором этот процесс повторяется. Переход по дереву прекращается после достижения конца цепочки ребер (листинг 26.1). Каждый листовой узел в дереве соответствует одному из классов (или определенному значению), поэтому выборка данных, которая использовалась для прохождения по дереву, должна принадлежать данному классу (или иметь данное
Глава 26. Деревья классификации и регрессии 393 значение). Дерево решений гарантирует, что каждая выборка будет соответствовать одному и только одному листовому узлу, и поэтому ей будет присвоено единствен- ное обозначение класса или одна оценка. Листинг 26.1. Алгоритм, применяемый для перехода по дереву решений с использованием значения выборки данных node = root repeat result = node.evaluate{ sample У for each branch from node if branch.match( result ) node = branch.child end if end for until node is a leaf return leaf class or value С концептуальной точки зрения, процесс применения дерева решений является чрезвычайно простым, и это позволяет понять, с чем связана его эффективность. Наи- большая сложность заключается в проектировании программного обеспечения, по- зволяющего реализовать какой-то гибкий способ моделирования деревьев решений. Формирование дерева Большинство деревьев решений имеют чрезвычайно простую структуру, к тому же, на практике обычно не достигают больших размеров, особенно в компьютерных играх. Поэтому задача формирования таких деревьев вручную вполне осуществима. Тем не менее подобный подход аналогичен созданию экспертной системы в виде иерархической структуры, но в нем игнорируются основные преимущества деревьев решений — возможность проводить их обучение автоматически. Для решения задачи обучения деревьев решений применялось много разных схем обучения. Как правило, в этих методах используются алгоритмы формирования де- ревьев решений на основе предположений, принятых в результате исследований вы- борок данных; такой подход принято называть формированием деревьев решений. Каждый из таких методов имеет свои преимущества и недостатки. Но один из под- ходов стал основой большинства других решений, поскольку оказался очень быст- родействующим и простым в реализации. Применяемый в этом подходе алгоритм известен под названием рекурсивного секционирования. По существу, этот алгоритм сводится к тому, что дерево создается инкрементно в результате пакетной обработки множества данных. Для создания узлов принятия решений и соответствующих про- верок условий используются статистические данные и предпринимается попытка сформировать эффективные и компактные деревья. Краткое описание алгоритма рекурсивного секционирования Алгоритм, впервые предложенный Куинланом (Quinlan), действуег по принципу' ре- курсивного секционирования набора данных и инкрементного построения дерева [64]. По такому же принципу действуют многие другие алгоритмы, поэтому вначале рассмот- рим общее описание, а затем перейдем к анализу деталей этого алгоритма.
394 Часть IV. Выбор оружия В основе алгоритма рекурсивного секционирования лежит принцип “разделяй и властвуй”. Алгоритм применяется с целью формирования дерева, позволяющего распределять по категориям выборки данных; набор данных разбивается на грубо классифицированные подмножества, после чего предпринимается еще одна попыт- ка, до тех пор пока классификация не станет идеальной (или, по крайней мере, дос- таточно качественной). Этот процесс является рекурсивным, и в ходе его осуществ- ления формируется дерево решений. Работа алгоритма начинается с пустого дерева и полного набора данных. Вначале необходимо найти приемлемую точку разбиения, чтобы разделить с помощью этой точки первоначальное множество на подмножества. Как правило, для выбора атрибута (или нескольких атрибутов), который служит для секционирования данных, применя- ется эвристический метод. С точки зрения реализации алгоритма, применяемый спо- соб выбора атрибута не имеет значения, при условии что он позволяет успешно созда- вать узлы принятия решений и секционировать набор данных. Таким образом может быть создан первый узел в дереве, соответствующий данной проверке условия. После первой итерации алгоритма появляется дерево с одним узлом, разбиваю- щим набор данных на два (или больше) подмножества. После этого данный процесс может быть выполнен повторно, применительно к каждому из подмножеств, для создания поддеревьев. Процесс разбиения прекращается после того, как отпадает необходимость дальнейшей разбивки набора данных. Решение по прекращению разбивки может быть выработано с помощью той же процедуры, которая применя- ется для создания узлов принятия решений, как показано в листинге 26.2. Листинг 262. Набросок алгоритма рекурсивного секционирования, с помощью которого предпринимается попытка создавать новые узлы принятия решений, а затем осуществлять разбивку набора данных соответствующим образом function partition( dataset, node ) if not create_decision( dataset, node ) return end if for each sample in dataset result = node.evaluate( sample ) subset[result].add( sample ) end for for each result in subset partition( subset, child ) node.add( branch, result ) branch.add( chiId ) end for end function Такой процесс секционирования по самой своей сути является рекурсивным, но редко позволяет достичь значений глубины, выходящих за пределы первого десятка. Но в действительности количество этапов рекурсивного выполнения алгоритма, в ос- новном, определяется тем, насколько сложна рассматриваемая задача. В случае при- менения простых наборов данных работа функции partition прекращается быстро. Еще одним фактором, который служит критерием прекращения рекурсии, является количество атрибутов; каждый уровень в дереве представляет собой одно из решений, поэтому чем больше атрибутов могут использоваться для разбиения данных, тем больше возможное количество рекурсивных повторов алгоритма. Если в процессе применения рекурсии возникают проблемы, то рекурсивный метод может быть преоб-
^ataHaus,^. Глава 26. Деревья классификации и регрессии 395 разован в итерационный, основанный на применении стека, но создается впечатле- ние, что современные компьютеры с наибольшей вероятностью позволят обработать большинство наборов данных без каких-либо затруднений (поскольку сам этот алго- ритм был разработан с учетом возможностей масштабирования). Одна и та же проверка условия никогда не используется в дереве дважды; дело в том, что дублирующаяся проверка не приведет к дальнейшему разбиению набора данных (связанный с ней узел окажется избыточным). Причем избежать проблемы появления дублирующихся проверок неявно позволяют все алгоритмы, поскольку все другие варианты проверок, по сравнению с дублирующимися, всегда оценива- ются как лучшие! Но это не исключает возможности снова применить какой-то кон- кретный атрибут для разбиения набора данных. Необходимость в этом может воз- никнуть, если атрибут является непрерывным или имеет много возможных симво- лических значений. Обработка некоторых наборов данных может осуществляться более успешно, если разбиение по одной и той же размерности осуществляется не- однократно, но в разных местах. Разбиение наборов данных Единственный аспект применения рассматриваемого алгоритма, который требу- ет более глубоких размышлений, состоит в создании узлов принятия решений. Для этого необходимо при наличии определенного набора данных установить, какими должны быть критерии секционирования этого набора. Как правило, при выборе атрибутов применяется жадный алгоритм, т.е. алгоритм, предусматривающий выбор наилучшего из приемлемых атрибутов. Для выявления ат- рибута, обеспечивающего наилучшее разбиение, может применяться статистический анализ. Разбиение множества в соответствии с таким атрибутом приводит к созданию подмножеств, характеризующихся минимальной статистической ошибкой. Тем не ме- нее такой подход не гарантирует, что все сформированное дерево окажется оптималь- ным. В действительности, любой жадный алгоритм не позволяет по определению за- глядывать далеко вперед, поэтому, как правило, не позволяет выработать оптимальное решение. Но несмотря на это, деревья, сформированные с помощью жадного алго- ритма, позволяют добиваться приемлемых результатов (рис. 26.5). Рис. 26.5. Рекурсивное секционирование по одному узлу, приводящее к разбиению набора данных на взаимоисключающие подмножества
396 Часть IV. Выбор оружия На практике пакетная обработка позволяет выявить наилучший способ разбие- ния. Просматриваются все выборки и измеряется количество посторонних включе- ний в наборе применительно к каждому атрибуту. Если набор данных определяется как “содержащий посторонние включения”, это означает, что набор содержит весь- ма разнообразные переменные отклика. Необходимо выявить все посторонние ат- рибуты, чтобы преобразовать их в относящиеся к набору данных, в частности, для того чтобы уменьшить разнообразие переменных отклика. Это позволяет добиться лучших результатов классификации и регрессии. Для уменьшения количества по- сторонних включений может применяться жадный алгоритм, позволяющий секцио- нировать набор данных с учетом атрибута, который является для этого набора дан- ных в наибольшей степени посторонним. Для измерения количества посторонних включений необходимо определить рас- четным путем энтропию. Понятие энтропии означает почти то же самое, что и коли- чество посторонних включений, и если вы хотите произвести впечатление на своих руководителей или сбить их с толку, то можете вместо термина “количество посто- ронних включений” использовать термин “энтропия”! Ниже приведено общепри- нятое определение количества посторонних включений для булевых и (или) двоич- ных значений, взятых из множества S. Entropy (s) = -p+log2 (р+) -p-log2 (р-) В этой формуле р+ обозначает относительное количество истинных значений, а р_ показывает относительное количество ложных значений. Энтропия становится равной О, если все примеры относятся к одной и той же категории, и 1, если величины пред- ставлены в соотношении 50 %/50%. Более общая формула для множеств с количеством классов, равным с, является таковой: с I Si I Entropy(s)= £ -Pilog2(pi), где pi - Энтропия определяется как сумма взвешенных логарифмических значений для ка- ждого класса i, а р± обозначает долю выборок, относящихся к классу i (иными слова- ми, количество выборок | Si | в общем количестве выборок в наборе данных | S |). Чтобы определить, какой наилучший атрибут следует выбрать для осуществления секционирования, недостаточно просто вычислить энтропию. Если какой-то атри- бут намечен для использования при разбиении, то необходимо определить прирост информации, измеряющий ожидаемое уменьшение энтропии: . с Gain (S, A) =Entropy (S) - £ pi Entropy (Si) i=l Эта формула выражает прирост информации в виде суммарной энтропии множе- ства, но за вычетом энтропии подмножеств, созданных в результате разбиения. По- сле приведения такого метода к процедурной форме может быть создан алгоритм, псевдокод которого показан в листинге 26.3.
^laiattaus^. Глава 26. Деревья классификации и регрессии 397 Листинг 26.3. Функция, используемая для поиска наилучшего атрибута, обеспечивающего секциониро- вание набора данных, если таковой атрибут имеется function create_decision( dataset, node ) max = 0 # Определить количество посторонних включений для всех обучающих данных entropy = compute_entropy( dataset ) for each attribute in dataset # Включить разбиение и вычислить общую энтропию подмножеств е = entropy - compute_entropy_split( attribute, dataset ) # Найти наилучшие положительное приращение if е > max max = е best = attribute end if end for # Создать проверку при наличии качественного атрибута if best node.evaluation = create_test( attribute ) # В противном случае найти значение листового узла else node.class = find_class( dataset ) end if end function Процедура обучения При создании дерева решений окончательный результат во многом зависит от са- мого применяемого набора данных. Но это, вообще говоря, нежелательно, поскольку нам необходимо, чтобы результат отражал суть рассматриваемой задачи, а не характе- ризовал используемые данные. Управление набором данных Подход, предусматривающий управление набором данных, особенно важен при создании деревьев решений, когда требуется предотвратить в ходе применения алго- ритма обучения возможность создания слишком конкретизированных моделей. Как и при создании многослойных персептронов, появление чрезмерно конкретизиро- ванной модели характеризуется симптомом, известным под названием чрезмерно тщательной подгонки. Дерево решений, отличающееся такой особенностью, стано- вится недостаточно общим, чтобы обеспечить обработку других данных. Для манипулирования наборами данных в методы создания деревьев решений могут быть внесены многочисленные усовершенствования, которые фактически сводятся к несложным приемам. А фундаментальные понятия остаются такими же, как и при обучении персептронов. Прежде всего необходимо подготовить три раз- личных набора данных, которые перечислены ниже. > Обучающее множество, которое используется в алгоритме рекурсивного сек- ционирования.
398 Часть IV. Выбор оружия > Аттестационное множество, которое позволяет осуществить процесс усовер- шенствования дерева решений, полученного в результате обучения (особенно важным усовершенствованием является отсечение лишних частей дерева). > Проверочное множество, позволяющее выполнить окончательную проверку результатов обучения для подтверждения применимости полученного дерева решений. Разделение всего набора данных может быть выполнено на равные части, в которых примерно треть выборок введено случайным образом. Размеры полученных множеств, в основном, зависят от общего объема имеющихся данных, но количество данных, требуемых для обучения, не может быть меньше определенного минимума. Аттестация проводится намного успешнее при значительно большем количестве выборок, а про- верка при желании может быть пропущена, если наблюдается нехватка данных! Отсечение ребер Как правило, отсечение частей дерева решений осуществляется на этапе обра- ботки, который следует за обучением. Для отсечения очень важно использовать от- дельный набор данных, поскольку применение того же набора данных, который рассматривался во время обучения, не будет указывать на необходимость каких- либо изменений! Для отсечения используются аттестационные множества. На уров- не интуитивного понимания процедуру отсечения можно описать так, что если вслед за отсечением какого-то ребра результаты классификации становятся лучше, то данное ребро необходимо отсечь. Чтобы выполнить такое сравнение результатов, необходимо знать, какое значе- ние переменная отклика имела бы в каждом узле принятия решений, если бы этот узел был листовым. Определение расчетным путем ссютветствующего класса (или значения) может осуществляться таким же образом, как и для листового узла; ис- пользуется класс с наибольшим количеством экземпляров (или средним значением). После этого выполняется проверка применительно ко всему набору данных. В каждом узле подсчитывается количество случаев успешной классификации (или общее количество ошибок регрессии). После завершения такой обработки может быть выполнена простая проверка того, имеет ли какой-либо узел лучшую оценку, чем все его дочерние узлы, вместе взятые. Если дело обстоит таким образом, то до- черние узлы фактически не нужны, поэтому в рассматриваемом узле может быть выполнено усечение дерева (рис. 26.6). Успешно классифицированный — 26
Глава 26. Деревья классификации и регрессии 399 Рис. 26.6. Отсечение ребра после подсчета количества успешно классифицированных примеров в каждом узле Конгломерация и усиление В основе методов конгломерации и усиления лежит такая идея, что классификато- ры низкого качества могут применяться в сочетании для создания более качественных классификаторов. Дело в том, что могут создаваться целые коллекции деревьев реше- ний с помощью многочисленных различных параметров и обучающих множеств. На- пример, на этапе конгломерации может произвольно осуществляться извлечение из обучающего множества различных выборок, а на этапе усиления — присваивание им весовых коэффициентов, влияющих на обучение. В таком случае, как описано ниже, для комбинирования решений могут использоваться два различных подхода. > Метод конгломерации действует по принципу подсчета голосов. Комбиниро- ванный классификатор выводит данные о классе, за который подано боль- шинство голосов отдельными деревьями классификации. > В отличие от этого, метод усиления действует по принципу присваивания каждо- му из деревьев весовых коэффициентов исходя из того, насколько успешным ока- залось применение рассматриваемого дерева при классификации аттестационного множества. В качестве выходного значения комбинированного классификатора используется сумма взвешенных голосов отдельных деревьев классификации. Преимуществом применения этих методов является то, что качество окончатель- ного решения, полученного с помощью классификатора, обычно становится выше. Но эти результаты получены исключительно эмпирическим путем. Нет никакой гарантии того, что комбинированные классификаторы проявят себя как самые лучшие во время решения всей задачи в целом, хотя для закрытых множеств предложено доказательст- во, что полученные с их помощью результаты должны быть не хуже всех прочих. Затраты на создание комбинированных классификаторов возрастают линейно с увеличением количества используемых деревьев решений. Для хранения структур данных требуются дополнительные объемы памяти, а выработка каждого решения связана с дополнительными затратами на прохождение по каждому из деревьев? Обсуждение полученных результатов Деревья решений проявляют себя как основа чрезвычайно эффективного метода вычисления оценок для неизвестных выборок. Лежащая в их основе структура дан- ных является простой и небольшой, а для прохождения по дереву решений требуется мало усилий. Деревья решений особенно хорошо подходят для задач анализа скры- тых закономерностей в данных, поэтому с их помощью устраняется проблема массо- вой обработки информации в реальном времени. Кроме того, для использования деревьев решений требуется малый объем ин- формации, поэтому они занимают в памяти очень мало места. После того как необ-
400 Часть IV. Выбор оружия ходимые знания представлены в виде дерева, чаще всего отпадает необходимость хранить выборки данных, применявшиеся для обучения дерева. Наконец, деревья решений являются относительно гибкими. Они могут исполь- зоваться для обработки непрерывных и символических переменных прогнозирова- ния. Для решения задач регрессии или классификации могут также использоваться переменные отклика, благодаря чему появляется возможность без особых сложно- стей применять деревья решений для самых разнообразных задач. Однако следует отметить некоторые недостатки. Деревья решений хорошо подхо- дят для пакетной обработки наборов данных. Но после того как возникает необходи- мость проводить их обучение в оперативном режиме, существующие алгоритмы могут оказаться довольно громоздкими (требующими большого объема памяти и сложными в реализации). С учетом сказанного, создается впечатление, что наиболее простой подход заключается в том, чтобы инкрементно накапливать выборки, а затем приме- нять пакетное обучение, что обычно приводит к созданию деревьев решений, которые обнаруживают такое же поведение, как и после обучения в оперативном режиме. Применяемый для обучения деревьев решений алгоритм рекурсивного секциониро- вания по своему характеру является жадным. Этот алгоритм показывает относительно высокую произво.тительность, но обычно не позволяет достичь оптимальных результатов с точки зрения качества и размера дерева. Относительное количество сформированных деревьев, в которых проявляется этот недостаток, удивительно велико, хотя достигаемое при этом качество вполне приемлемо с точки зрения разработки игр. Последним, но не наименее важным недостатком является то, что в процессе обучения может произойти чрезмерно тщательная подгонка. Для устранения этого недостатка может использоваться еще один этап обработки дерева, на котором осу- ществляется его усечение, но для этого требуются дополнительные вычисления и дополнительные данные, позволяющие провести аттестацию результатов. Но, к сожалению, интегрированные алгоритмы теряют такое преимущество, как простота. Резюме Деревья решений подразделяются на два типа. Применение деревьев классифи- кации приводит к получению категорических ответов, а деревья регрессии возвра- щают непрерывные значения. Как описано ниже, способ представления деревьев решений является чрезвычайно наглядным и почти одинаковым в обоих случаях. > В каждом узле принятия решений предусмотрена проверка условия, которое определено на переменных прогнозирования. > Количество ребер соответствует количеству возможных результатов проверки (взаимоисключающих). > Уровни дерева образуют иерархическую структуру. > Листовые узлы возвращают ответы, либо категорические, либо непрерывные. В алгоритме моделирования используется выборка данных для прохождения по дереву в соответствии с результатами каждой проверки условия. Алгоритм обучения
Глава 26. Деревья классификации и регрессии 401 ^alatiaus^k. (или формирования) дерева действует по принципу рекурсивного секционирования, который формулируется, как описано ниже. > Секционирование набора данных (т.е. разбиение на непересекающиеся под- множества) осуществляется на основе использования наиболее подходящей для этого переменной, что приводит к получению подмножеств, содержащих минимальное количество посторонних включений. > В дереве создается соответствующий узел принятия решений, и процесс про- должается рекурсивно. Наилучший способ усовершенствования обучения состоит в том, чтобы сделать на- бор данных наиболее управляемым, используя дополнительные аттестационные и про- верочные наборы. В компьютерных играх может также применяться очень эффективный метод, обеспечивающий отсечение частей дерева, но другие методы, такие как конгломе- рация и усиление, не очень хорошо подходят для использования в разработке игр. Деревья решений позволяют находить повторяющиеся шаблоны в данных, а так- же допускают возможность провести обучение в целях распознавания шаблонов, по- этому, как описано в следующей главе, деревья решений могут применяться при вы- боре оружия. В результате обучения дерево решений приобретает способность оце- нивать пригодность каждого вида оружия с учетом ситуации. Практическая демонстрационная версия В основе анимата Detox лежит архитектура, при создании которой использовалось дерево решений. Де- ревья решений управляют всеми действиями, которые рассматривались до сих пор в данной книге (например, движением, прицеливанием и выбором оружия), а также соответствующими средствами по- лучения информации о среде. Анимат Detox обучается по принципу имитации, собирая данные о дейст- виях людей-игроков. Его производительность является относительно низкой, поскольку каждое дейст- вие осуществляется в отрыве от другого (иными словами, в нем не предусмотрена декомпозиция дейст- вий с учетом различных форм поведения или способностей). Исходный код и демонстрационная про- грамма для этого анимата доступны в оперативном режиме по адресу http: / /AiGameDev. сот/.

^laiaHaus^i Гпава 27 Обучение оценке оружия В предыдущих главах рассматривались все- возможные разновидности деревьев реше- ний (Decision Tree — DT), а в этой главе приве- дено описание того, как с их помощью усовер- шенствовать поведение аниматов при выборе оружия. Основным недостатком системы голо- сования, которая применялась для этой цели, является то, что задача ее создания является тру- доемкой, а для организации процесса выбора оружия требуются теоретические обоснования. В настоящей главе вся мощь алгоритмов обу- чения деревьев решений будет направлена на решение проблемы выбора оружия. Особое вни- мание в ней уделено приобретению способности обучаться выбору оружия на опыте, полученном во время игры, что позволяет исключить воз- можность принятия необоснованных предполо- жений. Кроме того, обучение позволяет умень- шить трудозатраты на создание средств, обла- дающих приемлемым поведением. Тем не менее, в связи с тем, что у нас уже имеется система го- лосования, мы можем ею воспользоваться. В данной главе рассматриваются перечис- ленные ниже темы. > Описание четырех различных способов использования деревьев решений для обу- чения выбору оружия. > Анализ возможных вариантов и обоснова- ние способа выбора наиболее подходящего варианта, при котором фактически отдель- ные виды оружия оцениваются в целом, в с<хпъетствии с названием данной главы. > Проектирование интерфейса, позволяю- щего обращаться с деревом решений как с модульным компонентом. В ЭТОЙ ГЛАВЕ, • Четыре возможных подхода • Обоснование принятого подхода • Проект модуля • Реализация • Приложение • Оценка полученных результатов • Резюме
404 Часть IV. Выбор оружия > Реализация алгоритмов, описанных в предыдущей главе. > Осуществление прикладной фазы, суть которой состоит в применении дерева решений для выбора оружия. > Краткая оценка системы и анализ возможных усовершенствований. К концу этой главы должен быть создан полностью работоспособный робот- анимат для игры на выживание, способный не только двигаться и стрелять, но и принимать тактические решения, какое оружие следует использовать. Четыре возможных подхода Привлекательной особенностью деревьев решений является то, что они могут найти очень широкую сферу применения. С другой стороны, велико и количество способов, позволяющих обеспечить выбор оружия. Как и следовало ожидать, коли- чество возможных вариантов совместного применения деревьев решений и таких способов еще больше. Тем не менее, как показано на рис. 27.1, наиболее подходя- щими являются четыре варианта, перечисленные ниже. ; Боеприпасы : Характеристики Расстояние ; ; Жизнеспособность • • • Голоса Поражение осколками * Свойства Ущерб Точность * Рассеяние * Гипербластер Рельсотрон Ракетная пусковая установка Рельсотрон Рис. 27.1. Различные концепции и процессы, связанные с принятием решения по выбору оружия Пригодность Оружие 1. Обучение выбору подходящего оружия. 2. Обучение оценке пригодности оружия. 3. Определение с помощью обучения свойств оружия. 4. Обучение оценке важности свойств.
Глава 27. Обучение оценке оружия 405 В каждом из этих случаев в дереве решений характеристики текущей ситуации используются в качестве переменных прогнозирования (таких, как расстояние, жиз- неспособность и складчатость местности), как было описано в главе 23, “Выбор оружия”. Но в этих четырех различных моделях допускается также использование дополнительных переменных прогнозирования и разных переменных отклика. Обучение выбору подходящего оружия Первый подход состоит в том, что дерево решений применяется для получения информации об оружии, наиболее подходящем в каждой ситуации. Такой подход равносилен формированию отображения из множества характеристик среды на тип оружия. С точки зрения теории, в этом подходе сосредоточивается все, что требуется для выбора оружия. Но, к сожалению, как описано ниже, использование единствен- ного компонента системы ИИ для решения лишь задачи определения наилучшего оружия приводит к возникновению на практике многих проблем. > Дерево решений возвращает только одно предложение по выбору оружия, поэтому не может применяться в тех условиях, когда требуемое оружие недоступно. > Дерево решений возвращает единственный вариант и не позволяет понять ход процесса, в котором этот вариант был сформирован. > Средства ИИ должны иметь в своем распоряжении какой-то способ самостоя- тельно определять наилучшее оружие для контроля над обучением дерева ре- шений. Очевидно, что д ля решения указанных проблем могут быть предложены три разных способа, позволяющих в большей или меньшей степени найти выход из положения. Во-первых, можно продублировать деревья решений, чтобы можно было использовать различные деревья в зависимости от того, какие виды оружия имеются в наличии, но для реализации этого метода требуется больше памяти, а процесс обучения замедляет- ся. Во-вторых, можно указать имеющиеся виды оружия в качестве дополнительных входных данных, но это приводит к комбинаторному взрыву объема пространства за- дачи, поэтому попытка приближенного формирования дерева решений может быть чревата ошибками. В-третьих, можно сохранить результаты выбора оружия, получен- ные с помощью дерева решений, в виде списка видов оружия, ранжированного по приоритетам, но для этого требуется адаптация дерева решений, чтобы его можно бы- ло использовать в условиях наличия многомерных переменных отклика. Краткий вывод состоит в том, что все эти способы являются применимыми, но не идеальными. Более приемлемый подход может предусматривать обучение оценке пригодности оружия в каждой ситуации, как описано в следующем разделе. Обучение оценке пригодности оружия Второй подход предусматривает использование дерева решений для отображения характеристик ситуации на единственное значение пригодности (рис. 27.2). После этого применяется небольшой сценарий (или функция на языке C++) для поиска наивысшего значения пригодности и выбора соответствующего вида оружия.
406 Часть IV. Выбор оружия Расстояние -------> Жизнеспособность---------► Складчатость местности----► Боеприпасы---------► РЕЛЬСОТРОН Оружие Расстояние -----> Жизнеспособность------► Складчатость местности —► Боеприпасы------► Оружие -----► Рис. 27.2. Варианты использования деревьев решений: вверху — дерево решений, применяемое для непосредственного обучения выбору подходящего вида оружия, внизу — дерево решений, применяемое для оценки пригодности оружия Для каждого вида оружия может быть предусмотрено отдельное дерево решений, позволяющее оценивать его пригодность на основании информации о текущей си- туации. В игре Quake 2 для этого требуется девять деревьев решений (поскольку применяемое по умолчанию оружие исключается из рассмотрения). При использо- вании данного подхода навыки выбора оружия структурируются применительно к отдельным видам оружия, поэтому обучение оценке пригодности оружия можно легко обеспечить по модульному принципу. Тем не менее в связи с необходимостью использовать несколько деревьев решений вместо одного происходит увеличение издержек, связанных с потреблением дополнительной памяти и увеличением объема кода. Вместо этого можно было бы использовать обозначение типа оружия в качест- ве переменной прогнозирования в дереве решений, чтобы иметь возможность при- менять для оценки пригодности всех видов оружия только одно большое дерево. Этот вариант более удобен, поскольку необходимо лишь одно дерево, для которого может потребоваться меньше ресурсов, чем для отдельных деревьев. Наибольшая проблема, с которой приходится сталкиваться при использовании данного подхода, состоит в том, что в некоторых ситуациях для контроля над обучени- ем приходится вычислять значения пригодности. По существу, в некоторых случаях приходится решать эту задачу отдельно, позволяя средствам обучения дерева решений формировать общее поведение. Это можно сделать проще всего путем повторного ис- пользования системы голосования, разработанной в главе 25, “Сценарная поддержка тактических решений”. Для этого функционирование дерева решений должно быть основано точно на таких же характеристиках, как и функционирование системы голо- сования. В таком случае для обучения дерева решений могут использоваться оконча- тельные результаты голосования. Дерево решений, сформированное в результате обу- чения, будет способно эффективно представлять приближенный результат голосова- ния, поэтому не потребуется каждый раз проходить через весь процесс голосования.
Глава 27. Обучение оценке оружия 407 Определение с помощью обучения свойств оружия Данный подход основан на формировании в результате обучения дерева реше- ний, действующего на более низком уровне, которое позволяет выявлять различные свойства оружия исходя из характеристик текущей ситуации. Вполне естественно, что такие свойства, как темп стрельбы и скорость поражающих элементов, не тре- буют обучения (по крайней мере не требуют обучения с помощью деревьев реше- ний), поскольку представляют собой постоянные значения. С другой стороны, такие свойства, как максимальный ущерб или оцениваемый ущерб, причиненный в се- кунду, во многом зависят от текущей ситуации (о чем в данной книге шла речь при обсуждении навыков стрельбы). Преимущество данного подхода состоит в том, что его применение приводит к по- лучению точных показателей для свойств оружия, на которых были основаны методы, описанные в главе 25, “Сценарная поддержка тактических решений”. Деревья реше- ний позволяют установить, насколько полученные статистические данные зависят от навыков анимата, а также от различных ситуаций. С другой стороны, дерево решений не представляет собой автономный метод, и при его использовании приходится учи- тывать другие аспекты функционирования средств ИИ. Если мы примем данный под- ход, то получим возможность еще раз воспользоваться всей системой голосования, ко- торая, к тому же, будет усовершенствована в результате обучения. Обучение подсчету голосов в пользу отдельных свойств В этом последнем подходе применяется обучение подсчету голосов в пользу от- дельных свойств оружия, поданных с учетом характеристик. В данной модели мы отказываемся от использования системы голосования и заменяем ее иерархией средств принятия решений, которые должны быть более эффективными, но при- ближенными. Но все равно в процессе обучения требуется применение системы го- лосования, позволяющей подготовить для дерева решений некоторые примеры, но эту систему голосования можно исключить из окончательной архитектуры. В таком случае пригодность оружия рассматривается как сумма пригодностей его свойств. Обоснование принятого подхода Среди перечисленных выше вариантов проектов выбран второй. В нем применя- ется метод прогнозирования пригодности каждого вида оружия в целом на основа- нии определения характеристик ситуации, поэтому разбиение формируемого реше- ния на отдельные атрибуты не требуется. Благодаря этому количество требуемых де- ревьев решений сводится к приемлемому уровню, что способствует повышению эф- фективности средств ИИ (поскольку затраты памяти невелики, а запросы должны быть адресованы лишь небольшому числу деревьев решений). С другой стороны, разрабатываемое приложение становится более сложным и в нем приходится обра- батывать больший объем данных.
408 Часть IV. Выбор оружия Методология Обучение оценке пригодности оружия происходит в процессе игры. Для этого вначале осуществляется отдельно обучение оценке преимуществ каждого вида ору- жия в оперативном режиме с использованием инкрементно формируемого дерева регрессии. Дерево обучается оценке среднего ущерба, причиненного целям, на ос- новании характеристик текущей ситуации. Сбор необходимой информации происходит с помощью обычных интерфейсов к переменным прогнозирования (которые, например, описывают положение про- тивника, жизнеспособность противника и складчатость местности). А примени- тельно к переменной отклика происходит сбор совокупности информации об игре на основании событий, позволяющих определить ущерб (например, крики боли или взрывы), как описано в части III. Для выявления в ходе обучения тенденций, связанных с оружием, в средствах ИИ можно использовать моделирование. Если моделирование будет проводиться с дос- таточно высоким ускорением по времени, это позволит формировать качественные шаблоны в каждом из деревьев регрессии. В результате этого появится возможность передавать каждому дереву запрос, касающийся того, какое оружие является наибо- лее подходящим для выполнения намеченного действия, иными словами, запрос, позволяющий определить, какая оценка ущерба из всех является наивысшей. После этого в случае необходимости можно организовать обработку деревьев рег- рессии в целях формирования единственного дерева классификации, близкого к оп- тимальному (что соответствует первому из рассматриваемых вариантов). Такой окончательный классификатор должен принимать на входе такие же атрибуты, как и каждое из деревьев регрессии, но возвращать обозначение наиболее приемлемого класса оружия, установленное на основании оценок пригодности. Как уже было сказано, такой подход может оказаться не приемлемым во всех случаях, но это уже другая интересная задача. Обсуждение полученных результатов Деревья регрессии как таковые могут применяться для осуществления тех дейст- вий, которые выполняются в большинстве этапов функционирования системы го- лосования. Применение вместо них деревьев регрессии позволяет достичь многих преимуществ, в том числе описанных ниже. > Процесс принятия решения становится менее сложным (состоящим только из двух этапов). > Представление средств принятия решений становится компактным, а эффек- тивность выполнения запросов значительно повышается. > В результате обучения средства ИИ приобретают способность действовать в непредвиденных ситуациях благодаря достигнутому обобщению. > Появляется возможность обосновывать выбор оружия путем получения реко- мендаций эксперта, а не использовать систему голосования. Деревья решений, сформированные в результате обучения, являются очень на- глядными, поэтому могут быть легко модифицированы, если поведение, организо-
Глава 27. Обучение оценке оружия 409 ванное путем проведения обучения, является неприемлемым. Проектировщик мо- жет использовать такую особенность деревьев решений, чтобы заменить сформиро- ванное поведение явно заданными в проекте действиями. Проект модуля Прежде чем приступить к реализации принятого варианта, целесообразно затра- тить определенное время на проектирование дерева решений. Деревья решений ис- пользуются в разработке игровых средств ИИ буквально повсеместно, поэтому весь- ма целесообразно заняться созданием универсальных и гибких интерфейсов. Реализация принятого варианта рассматривается в следующем разделе. Этот про- ект поддерживает и категориальные, и непрерывные переменные (такие, как bool, int и float). Допускается возможность применения неограниченного количества переменных прогнозирования (решение о том, какое количество должно использо- ваться, вырабатывается во время инициализации), но переменная отклика остается единственной. Инициализация Основное назначение инициализации состоит в описании того, для обработки каких данных должно применяться дерево решений. В создаваемом модуле требует- ся указать типы всех применяемых переменных. Кроме того, основополагающий алгоритм может использоваться для общей оценки областей определения непрерыв- ных переменных, а также для определения предлагаемого шага дискретизации: <predictor name="health" type="integer" min="0" max="100" /> <predictor name="distance" type="real" min="0" step="36" /> <predictor name="visible" type="boolean" /> cresponse name="fitness" type="real" min="0" max="l" step="0.1" /> Эта информация позволяет в максимально возможной степени подготовить к ис- пользованию внутреннее представление дерева решений, еще до того как начнут по- ступать данные, предоставляемые интерфейсом этапа прогона. Несомненно, определение самого дерева решений должно быть сохранено на же- стком диске, а затем загружено повторно. Деревья решений имеют относительно наглядное представление, поэтому при желании может быть предусмотрена коррек- тировка дерева вручную, а для этого необходимо ознакомиться с описанием формата его хранения. Для представления структуры деревьев решений хорошо подходит язык XML, поскольку в этом языке можно легко представить иерархию узлов. На- бросок основной структуры дерева решений приведен в листинге 27.1. Дерево реше- ний формируется на основании рекурсивных определений всех узлов. Дескриптор decision определяет критерии выбора исходящего ребра, а дескриптор match по- казывает, какие результаты оценки должны быть получены, для того чтобы был вы- бран этот узел.
410 Часть IV. Выбор оружия Листинг 27.1. Структура отдельного узла дерева решений, представленная на языке XML <Node> <decision> ... </decision> <branch> <match> ... </match> <Node> ... </Node> </branch> </Node> Но прежде чем приступать к подготовке определений узлов принятия решений и ре- бер, необходимо принять фундаментальные предположения, касающиеся характера соз- даваемой реализации. В частности, необходимо выяснить, налагается ли какое-то огра- ничение на количество атрибутов, распространяются ли какие-либо ограничения на вы- бор возможных ребер и должны ли использоваться в данной реализации другие методы распознавания образов для выполнения отдельных решений. Дополнительная информация В архитектуре FEAR (Flexible Embodied Animat aRchitecture — гибкая архитектура воплощенного ани- мата) предусмотрены различные вспомогательные спецификации. Информацию об этих специфика- циях можно найти на Web-странице по адресу http://fear.sf.net/docs/. Особенно важно то, что эти спецификации содержат общепринятые определения дескрипторов decision и match для булевых и непрерывных значений, заданных на отдельных атрибутах. Интерфейс Задача определения интерфейса является сложной, поскольку он должен под- держивать переменные прогнозирования различных типов. В действительности, идеальным был бы вариант, в котором используется один универсальный интерфейс для всех возможных типов, но реализация подобного замысла требует применения определенной формы полиморфизма. Чтобы можно было предусмотреть гибкий способ определения интерфейса, примем предположение, что определен новый тип данных, называемый any: any Predict(const vector< any >& inputs); Функция Predict является основной точкой входа для модуля дерева решений. Эта функция принимает ряд значений (по одному для каждой из переменных про- гнозирования) и вырабатывает на выходе отклик. Применяемые типы данных долж- ны быть согласованы во время инициализации. Тип данных any должен обеспечи- вать возможность представлять различные типы, такие как int, bool и float. Для обеспечения этого требования можно использовать структуры данных union языка С, указатели void или механизм наследования. Один из существующих надежных подходов состоит в применении средства boost: : any, которое также обеспечивает применение изящных способов преобразования данных. Могут также с переменным успехом использоваться другие решения, не требующие модификации кода, при ус- ловии что в связи с их использованием можно применять операции присваивания и приведения типа.
fataUaufi^i Глава 27. Обучение оценке оружия 411 Что касается обучения, то предусмотрены два различных интерфейса, для пакет- ного и инкрементного обучения. Если бы использовался такой же подход, как и для реализации персептронов, то различные реализации потребовали бы применения разных объемов перманентной памяти, поэтому принят подход, способствующий сокращению расхода памяти, в котором реализации интерфейсов остаются отдель- ными. В таком случае разработчик получает возможность определять объемы расхо- дуемой памяти в зависимости от выбранного интерфейса (а не задавать заранее одно и то же значение издержек): float Increment(const Sample& sample); float Batch(const vector< Sample >& samples); Функции Increment и Batch возвращают значение ошибки с плавающей точ- кой, позволяющее проводить обучение на основе представленных обучающих выбо- рок. Параметр Sample обозначает простую структуру данных, в которой хранится вектор, состоящий из всех значений для переменных прогнозирования и желаемого значения отклика с типом данных any. Реализация Задача реализации интерфейсов, допускающих универсальное использование, фактически немного сложнее, чем кажется на первый взгляд, особенно в связи с тем, что в процессе использования интерфейса приходится сталкиваться с различными возможными типами значений, которые определены с типом данных any. Структуры данных В рассматриваемой реализации используются три наиболее важные структуры данных. Очевидно, что первая из этих структур должна представлять узел в дереве, вторая представляет решение, а третья — атрибут. Узлы дерева Узлы дерева содержат три различных элемента, которые представляют дочерние уз- лы, решение и отклик. Дочерние узлы, по существу, хранятся в виде массива узлов. Отклик представляет собой любую переменную, которая является наиболее предста- вительной по отношению к подмножеству данных, сопъетстнующих этому узлу, а ре- шение рассматривается как критерий, используемый для оценки каждой выборки. Решение Решение представлено в виде базового виртуального класса, который применяется для создания других классов путем наследования. Такой подход позволяет реализовать в системе решения любых видов, независимо от количества атрибутов или их типов. Например, для принятия решений, которые выражаются в виде булева значения, осуществляется проверка значения какой-то конкретной переменной прогнозиро- вания, и это сводится к предложению использовать одно из двух ребер. С другой
412 Часть IV. Выбор оружия стороны, решения, которые выражаются числовыми значениями, позволяют разби- вать область определения атрибутов на диапазоны, каждый из которых соответствует одному ребру. Наиболее часто применяемое решение должно быть основано на од- ном атрибуте, ссылка на который осуществляется непосредственно. Атрибуты Атрибуты представляют и переменные прогнозирования, и переменную отклика. Атрибуты хранят такую важную информацию, как имя, область определения или тип переменной, что позволяет относительно легко использовать обучающие алго- ритмы для получения дополнительных знаний об атрибутах. Алгоритм формирования дерева Алгоритм, используемый как для инкрементного, так и для пакетного обучения, основан на принципе рекурсивного секционирования, описанном в главе 26, “Деревья классификации и регрессии”. Алгоритм остается тем же, но в подходе, применяемом для оперативного обучения, предпринимается попытка свести к минимуму возможные изменения в дереве, допуская его повторное обучение только в случае необходимости. А если этот подход проявит себя как неудовлетворительный, мы можем вместо него реализовать какие-то другие алгоритмы инкрементного обучения. Процесс обучения является весьма несложным. Его полностью описывает псевдокод, приведенный в листинге 26.2. Вначале вычисляется ближайшее значение отклика для уз- ла и набора данных. Если полученное значение подходит идеально, осуществляется воз- врат. После этого определяется атрибут с наибольшим приростом информации и подго- тавливается решение. Затем это решение используется для разбиения набора данных на подмножества. К полученным дочерним наборам данных рекурсивно применяется такая же процедура Bui Id (), как описано в главе 26, “Деревья классификации и регрессии”. Прогнозирование Алгоритм, применяемый для моделирования дерева, является очень эффектив- ным и чрезвычайно компактным. По существу, вначале в качестве текущего узла за- дается корневой каталог. После этого вызывается функция выработки решения для данного узла, которая возвращает индекс дочернего узла. Затем данный рекурсив- ный алгоритм применяется к выбранному дочернему узлу. В противном случае, если дочерний узел отсутствует, происходит возврат значения отклика текущего узла. Приложение После создания модульного дерева решений с полностью определенными интер- фейсами и удовлетворительной реализацией полученный модуль можно применить для выбора оружия. Для этого, в основном, остается проделать такую работу, кото- рая сводится к созданию инфраструктуры поддержки этого модуля, а также к пре- доставлению приемлемых входных и выходных данных.
^lataHaus^. Глава 27. Обучение оценке оружия 413 Задача обеспечения эксплуатации дерева решений является относительно не- сложной, сравнимой с заменой системы голосования другим компонентом. В лис- тинге 27.2 показано, как могут использоваться результаты, полученные от датчиков, для интерпретации характеристик, которые применяются в процессе классифика- ции для прогнозирования пригодности оружия. Листинг 272. Функция выбора оружия, вызываемая через регулярные интервалы, после того как возникает необходимость сменить оружие function select_weapon() # Использовать сенсоры для определения жизнеспособности и # расстояния до противника env = interpret_features() # Найти наилучшее оружие среди имеющегося шах = О for each (weapon,ammo) in inventory # Определить пригодность с учетом совокупности возможностей fitness = dt.predict(env + weapon + ammo) # Записать в память данные только о лучшем оружии if fitness > max then fitness = max best = weapon end if end for # Выбор оружия произведен успешно return best end function Задача формирования дерева решений и вычисления выборки, применяемой для обучения, является немного более сложной. Она требует осуществления трех основ- ных фаз, которые описаны ниже. > Интерпретация характеристик среды на основании данных, полученных от датчиков. > Отслеживание борьбы, в которой используются различные виды оружия. > Вычисление желаемого значения пригодности для каждого эпизода. Реализация основана на тех же методах, которые использовались для исследова- ния эффективности ракет. В следующих разделах перечисленные выше фазы рас- сматриваются более подробно. Интерпретация характеристик среды Сбор данных о характеристиках среды осуществляется с применением данных, полученных от датчиков с помощью тех интерфейсов, которые рассматривались в главе 24, “Формализация процесса выбора оружия”, а также с использованием других спецификаций (определяющих, например, способ визуального представле- ния, наличие запасов и физические основы применения оружия). Полученные ре- зультаты представляют собой множество переменных прогнозирования, имеющих представление, показанное в табл. 27.1.
414 Часть IV. Выбор оружия Таблица 27.1. Переменные, используемые в дереве решений для определения пригодности какого-то конкретного оружия Переменная Область определения Расстояние Жизнеспособность Оснащенность боеприпасами Перемещение Складчатость местности Пригодность Близкое, среднее, далекое Низкая, высокая Низкая, средняя, высокая Вперед, назад Низкая, средняя, высокая [0...100] Эти переменные представляют наиболее важные характеристики, которые долж- ны быть учтены в модели, хотя мы можем легко добавлять и удалять некоторые пе- ременные по мере необходимости в поисках идеального компромисса между выра- зительностью и сложностью. Эти переменные прогнозирования используются при выборе оружия, а переменная отклика требуется для обучения. Правильность значе- ния переменной отклика оценивается путем слежения за ходом борьбы. Отслеживание эпизодов борьбы Средства ИИ собирают четыре различных типа информации о ходе игры, причем все эти типы касаются оценки применимости оружия. Так же, как и при обучении анимата выбору цели, используется механизм, управляемый событиями, который по- зволяет выявлять попадания (сигналы, свидетельствующие о возникновении боли) и потенциальные промахи (когда обнаруживаются только взрывы), как описано ниже. > О причинении аниматом ущерба самому себе свидетельствуют любые сооб- щения о возникновении боли, передаваемые от тела анимата, обычно вскоре после пуска поражающего элемента. > Вероятность попадания измеряется путем сравнения количества попаданий в противника с количеством выпущенных поражающих элементов (для этого необходимо передать запрос в модуль представления боеприпасов). > Для отслеживания максимального ущерба накапливается информация о том, какую максимальную боль испытал противник в результате применения ка- кого-то конкретного оружия. > Потенциальный ущерб, причиненный в секунду, вычисляется по данным о сред- нем ущербе за то суммарное время, в течение которого применялось оружие. Наиболее сложной задачей может оказаться идентификация причины ущерба, но она может быть решена путем проверки локализации события, свидетельствующего о возникновении боли, в сравнении с направлением прицеливания. Еще один вари- ант состоит в том, что такая информация может быть предоставлена структурами данных, предназначенных для хранения сообщений. Вычисление пригодности В основе системы голосования лежит такой принцип, что пригодность оружия зависит от ситуации. Это также означает, что критерии, используемые для оценки результатов смены оружия, зависят от сложившихся условий.
^alatlaus^ Глава 27. Обучение оценке оружия 415 Для нас будет довольно сложно углубиться в эту тему без учета тактических сообра- жений высокого уровня (которые рассматриваются в части VII), поэтому вначале при- мем несколько предположений. Рассматривая задачу выбора оружия как отдельно взя- тую, желательно учитывать описанные ниже чрезвычайно упрощенные критерии. > В условиях низкой собственной жизнеспособности анимат должен предпри- нимать меры предосторожности, чтобы свести к минимуму ущерб, причиняе- мый себе самому. > Низкая жизнеспособность противника должна побуждать участника игры к уве- личению вероятности попадания. > Если противник отклоняется от удара, то анимат должен пытаться максими- зировать потенциальный ущерб. В противном случае удобное правило состоит в том, чтобы стремиться максимизировать потенциальный ущерб, прйчиняе- мый в секунду. Безусловно, значение полной пригодности позволяет представить подобные крите- рии в различных ситуациях, поэтому необходимо обеспечить, чтобы указанные крите- рии были представлены примерно в одинаковых масштабах. Для этого производится повторное масштабирование значений, чтобы они вписывались в область определения [ 0.. .100] настолько близко, насколько возможно, как показано в листинге 27.3. Листинг 27.3. Функция, позволяющая определить с помощью обучения желаемую пригодность оружия с учетом характеристик среды funct i on 1earn_weapon(weapon,epi sode) # Собрать информацию от сенсоров env = interpret_features() # Вычислить пригодность на основе информации текущего контроля if episode.self_health < 25 then fitness = -episode.seif_damage else if episode.enemy_health < 40 then fitness = episode.accuracy else if episode.enemy_position.у > 0 then # Противник смотрит в сторону fitness = episode.max_potential else fitness = episode. enemy_damage_per_second # Инкрементно вычислить пригодность по сводным характеристикам dt.increment(env + weapon, fitness) end function Практичесжая демонстрационная версия Для демонстрации идей, изложенных в данной главе, разработан специальный анимат, который можно найти под именем Selector на Web-узле по адресу http: / /AiGameDev. сот/. На этом же узле приведено поэтапное руководство, в котором даны сведения о том, как обеспечить подготовку к работе и запуск этого анимата. Selector использует дерево решений для оценки преимуществ каж- дого из видов оружия с учетом текущей ситуации. Полученные данные интерпретируются исходя из некоторых ограничений, в целях выбора наилучшего оружия.
416 Часть IV. Выбор оружия Биологически правдоподобные ошибки Анализируя данные, полученные с помощью статистических методов, можно уз- нать, какую форму приобретает задача. А применение гистограммы, на которой изо- бражены данные о потенциальном ущербе в секунду, позволяет визуально опреде- лить тенденции, формируемые под влиянием основного показателя (расстояния до противника). Например, супердробовик является чрезвычайно эффективным на ко- ротких расстояниях, но начинает уступать другим видам оружия, после того как рас- стояние до противника увеличивается. Это вполне объяснимо, поскольку во время стрельбы из супердробовика возникает значительное рассеяние. С другой стороны, проявляются и другие, весьма неожиданные тенденции. В част- ности, рельсотрон, как и следовало ожидать, обнаруживает хорошие показатели на больших дальностях. Но после того, как стрельба начинает вестись на все более близ- ких расстояниях, рельсотрон показывает большую эффективность, чем ожидалось. Наряду с этим, во время движения в обратном направлении не возникают дополни- тельные сложности, связанные с прицеливанием, поэтому оружие остается столь же эффективным, независимо от направления движения. Аниматы, вооруженные рельсо- тронами, в полном смысле этого слова начинают напоминать по своей маневренности орудие во вращающейся башне танка и становятся такими же эффективными. Как было указано в предыдущей части книги, чтобы создать реалистичное пред- ставление о процессе прицеливания, достаточно ввести постоянные ошибки прице- ливания, но для того, чтобы такие формы поведения более высокого уровня, как вы- бор оружия, стали в большей степени напоминать поведение людей, требуется более правдоподобная модель ошибок. Процесс выбора оружия уже является весьма реа- листичным, но достоверность происходящего можно повысить в еще большей сте- пени, введя определенную изменчивость в те показатели, от которых зависит точ- ность движения анимата. Для достижения этой цели можно усовершенствовать модель ошибок прицели- вания, чтобы в ней учитывалось то, что анимат во время прицеливания движется, включая также относительное направление передвижения. Чем быстрее анимат движется, тем менее точно он должен поворачиваться; кроме того, двигаясь вперед, анимат должен прицеливаться точнее, чем в той ситуации, когда он убегает назад. Оценка полученных результатов Когда человек ведет игру против анимата, ему не слишком бросается в глаза то, как анимат выбирает оружие. Обычно обоснованными кажутся любые варианты, но очень многое зависит от контекста. В действительности, во многих случаях в распо- ряжении анимата имеется лишь ограниченное количество видов оружия, а выбор оружия, которое не принято использовать в данной ситуации, чаще всего диктуется отсутствием широкого набора альтернативных вариантов. Кроме того, тот факт, что бой обычно заканчивается в течение нескольких се- кунд, говорит о том, что у человека, как правило, остается мало времени, чтобы за- метить упущения анимата при выборе оружия, связанные с тем, что в какой-то программе допущены ошибки! Чтобы действительно проверить правильность выбо- ра оружия, необходимо искусственно продлить борьбу (например, сделать аниматы
Глава 27. Обучение оценке оружия 417 неуязвимыми), лишь для того чтобы проверить единообразие принимаемых реше- ний в течение более продолжительного периода. Кроме того, если аниматы стано- вятся бессмертными, то получают возможность накапливать оружие всех видов. С точки зрения организации самой программы, можно исключить необходи- мость выполнения избыточных вычислений, отбрасывая оружие с низким количест- вом боеприпасов еще до того, как начнется его оценка. Эффективность деревьев ре- шений является на удивление высокой, но дальнейшее усовершенствование этого метода почти невозможно! При реализации решения, предусматривающего применение деревьев решений, возникает одна принципиальная сложность, связанная с тем, что контроль за его осуществлением требует больших трудозатрат. Необходимо вычислить пригодность всех видов оружия вручную или прибегнуть к помощи эксперта, чтобы он предоста- вил примеры, позволяющие провести обучение дерева решений. Безусловно, после завершения обучения дерево решений обнаруживает значительные преимущества (например, становится универсальным и эффективным), но, возможно, был бы проще подход, не требующий применения явно заданной структуры. В частности, хотелось бы иметь такую систему, которая позволяет осуществлять обучение выбору наилучшего оружия, позволяющего повысить общую результативность, и не заду- мываться над тем, каковыми должны быть критерии выбора оружия. Резюме В настоящей главе показано, как можно использовать деревья решений для обу- чения решению задачи по выбору оружия. В действительности имеется превосход- ная возможность применять деревья решений для достижения этой цели с помощью разных способов, указанных ниже. > Обучение деревьев классификации позволяет обеспечить выбор наиболее подходящего оружия в каждой ситуации. > Деревья регрессии позволяют оценивать пригодность оружия в целом. > На практике деревья регрессии обеспечивают также возможность оценивать различные свойства оружия. > Кроме того, деревья регрессии позволяют прогнозировать значения весовых коэффициентов для голосов в пользу каждой характеристики в зависимости от ситуации. Было решено прибегнуть к использованию второго варианта — к оценке общей пригодности оружия, поскольку его реализация связана с большими сложностями, но необходимость в использовании внешнего кода уменьшается. После этого была прове- дена черновая разработка интерфейсов для модульного дерева решений, применяемых как на этапе прогона, так и на этапе инициализации, в соответствии с тем, что указано ниже. > Данные, используемые для инициализации, по-прежнему принадлежат к ка- тегории данных высокого уровня, которые описывают только типы перемен- ных и диапазоны, применяемые во время прогнозирования.
418 Часть IV. Выбор оружия > Интерфейсы этапа прогона в значительной степени подобны тем, что исполь- зовались для персептронов, с учетом реализации функциональных возможно- стей для моделирования и обеих разновидностей обучения. Основное разли- чие между этими интерфейсами состоит в том, что в последнем варианте до- пускается применение входных переменных всех типов. Задача осуществления самой реализации является весьма сложной, поскольку должна быть предусмотрена возможность обработки атрибутов многих типов, как указано ниже. > Требуются три типа данных, относящихся к атрибутам, решениям и узлам. Каж- дый набор этих типов зависит от одного из указанных ранее наборов типов. > Реализация инкрементного обучения осуществляется по такому принципу, что выборки сохраняются в памяти, а дерево обновляется только в случае не- обходимости. В фазе эксплуатации приложения были выделены некоторые задачи, требующие проведения дополнительной работы, которые перечислены ниже. > В ходе реализации большую часть времени занимает сбор информации об эпизодах борьбы. > Во время анализа собранных данных некоторые обнаруживаемые тенденции соответствуют ожиданиям. Но для того чтобы решения по выбору оружия в большей степени напоминали сделанные людьми, необходимо добиться того, чтобы ошибки во время прицеливания стали еще более зависимыми от кон- текста (например, чтобы они зависели от того, происходит ли движение и в каком направлении осуществляется перемещение). > Обучение дерева решений является контролируемым, поэтому для успешного проведения такого обучения должен быть вычислен результат. Из этого следу- ет, что для вычисления желаемой пригодности оружия должна использоваться очень простая функция. В целом, созданная система обнаруживает вполне приемлемую производитель- ность, а наложение временных ограничений (например, связанных с применением системы голосования) также позволяет уменьшить количество проявлений таких форм поведения, которые кажутся человеку странными. Преимуществом деревьев решений является то, что свойства оружия, применяемого в игре, выявляются путем обучения, с учетом индивидуальных навыков и предпочтений, а не определяются с помощью объ- ективных, но обезличенных статистических данных. А недостатком подхода, основан- ного на применении деревьев решений, является то, что для подготовки дерева реше- ний к использованию требуется большой объем работы, в частности, для сбора данных и вычисления примера, на котором мог бы обучаться алгоритм. В части V мы отойдем от контролируемых методик. А такие методики, как гене- тические алгоритмы, имеют свое преимущество в том, что действуют под управлени- ем функции пригодности очень высокого уровня, а не с учетом отдельных примеров. Но прежде чем перейти к ознакомлению с материалом следующей части, мы должны извлечь полезный урок из изучения следующей главы, касающейся трактовки всех решений по искусственному интеллекту в целом, которая содержит рекомендации по проектированию всех систем ИИ.
NaiaHausiiilk. Гпава 28 Понимание сути РЕШЕНИЯ ВЗТОЙ ГЛАВЕ. • Сложность решения • Пространство поиска • Различные подходы к поиску решения • Резюме • Ретроспективный краткий обзор • Общая перспектива Описанию того, насколько важным является понимание сути решения, была посвящена глава 21, “Приобретение знаний о задаче”. В ко- нечном итоге, полностью понять, в чем состоит суть самого решения, позволяет информация, из- ложенная в части IV. Решение предназначено для формирования непосредственного отображения между входными и выходными данными. Про- цесс формирования решения имеет много раз- личных аспектов, поэтому вначале необходимо рассмотреть всю связанную с этим проблематику в широком контексте, прежде чем переходить к дальнейшему изложению темы. Решение состоит из четырех различных частей, описанных ниже. > Представление. Формализм, используе- мый для хранения решения, отражающий структуру экспертных знаний о задаче. > Обучение. Способ поиска приемлемого варианта представления, позволяющего найти решение задачи. > Экземпляр. Результат обучения, или кон- кретное множество внутренних значений, которые представляют отображение вход- ных и выходных данных. > Моделирование. Алгоритм, в котором ис- пользуется экземпляр для вычисления пра- вильного отклика после получения кон- кретного входного образа. Как всегда, с применением одного или двух примеров можно проще добиться понимания. Примеры, иллюстрирующие рассматриваемые концепции, приведены в табл. 28.1. Важно отме- тить, что методы ИИ, приведенные в настоящей книге, позволяют найти подход к проектирова-
420 Часть IV. Выбор оружия нию с учетом каждого из этих четырех аспектов решения. Тем не менее рассматривае- мые концепции на этапах проектирования и разработки обычно учитываются отдель- но (в связи с тем, что для этих концепций могут быть предусмотрены различные реа- лизации, например некоторые алгоритмы обучения являются взаимозаменяемыми). Таблица 28.1. Различные аспекты поиска решений задач Персептрон Дерево решений Представление Весовые коэффициенты соединений между нейронами Узлы принятия решений и ребра Обучение Обратное распространение Рекурсивное секционирование Экземпляр Значения весовых коэффициентов Критерии решения для каждого узла Моделирование Прямое распространение входного образа Управляемый обход дерева В настоящей главе анализируются общие понятия, лежащие в основе каждой из указанных четырех характеристик решений. Это позволяет описать общее назначе- ние проектирования в процессе разработки интеллектуальных систем, а также дает возможность применять средства ИИ для решения все новых и новых задач. К сожа- лению, описать процесс моделирования в общих терминах невозможно, поскольку применяемые для этого алгоритмы зависят от конкретных представлений. В целом, в настоящей главе рассматриваются перечисленные ниже темы. > Описание решений, формируемых с помощью средств ИИ на основе теории информации. В частности, можно оценить избыточность решения, применив методы сжатия к отображению между входными и выходными данными, что по- зволяет определить, присутствуют ли в данных повторяющиеся шаблоны. Именно эта идея лежит в основе принципа минимальной длины описания, ко- торый позволяет определить необходимую сложность решения. В разделе, по- священном этой теме, раскрывается также важность представления решения. > Более подробное объяснение сути процесса формирования представлений для решений, в котором пространство поиска трактуется как совокупность воз- можных экземпляров решения. При этом анализируются такие характеристи- ки пространства поиска, как кардинальность и размерность, по такому же принципу, как и в главе 21, “Приобретение знаний о задаче”. Для раскрытия важных свойств пространства поиска (таких, как рельефность и гладкость) рассматриваются несколько примеров. > Общий обзор различных подходов к проектированию, используемых для соз- дания систем ИИ. Такие подходы охватывают широкий спектр деятельности, начиная от решений, вырабатываемых людьми, и заканчивая алгоритмами, которые предложены экспертами, включая методы случайного и исчерпы- вающего поиска. Изучение данной главы позволяет лучше понять все нюансы решений, приме- няемых в искусственном интеллекте, а также подробно ознакомиться с используе- мыми подходами.
Глава 28. Понимание сути решения 421 Сложность решения Решение задачи может рассматриваться как неструктурированные данные, кото- рые описывают отображение из области определения входных данных в область зна- чений выходных данных. Такие неструктурированные данные позволяют решать за- дачу по принципу применения этих данных в качестве справочных данных, позво- ляющих найти правильный ответ. Безусловно, такой подход нельзя назвать слишком изящным или удобным, но он раскрывает истинный характер решения. Прежде чем приступать к обсуждению более сложных способов выражения ре- шения, можно применить теорию информации для достижения понимания того, насколько сложным должно быть решение. В главе 21, “Приобретение знаний о задаче”, нам уже удалось узнать, как получить представление о сложности задачи, анализируя ее с точки зрения внешнего наблюдателя. А в следующем разделе задача рассматривается изнутри. Теория информации и искусственный интеллект Безусловно, кроме неструктурированных данных, которые выражают решение, интерес представляет информация, скрытая в этих данных. Информация составляет суть данных и показывает, какая часть данных не может быть получена с примене- нием других данных. После определения того, какие данные являются избыточны- ми, мы можем их удалить и раскрыть тем самым фундаментальный аспект самого решения, в котором мы в наибольшей степени заинтересованы. В контексте данного раздела термин “информация” рассматривается как имею- щий свое определение в теории информации. Теория информации — это раздел статистики и теории вероятностей, в котором исследуются сами данные, способы манипулирования данными (например, способы шифрования и сжатия) и обмена данными (например, в системах связи и передачи данных) [85]. Информация может быть получена путем сжатия неструктурированных данных различными способами (т.е. путем преобразования данных в более компактную форму). Термин “сжатие” также используется в своем наиболее общем смысле; оп- ределение этого термина не ограничивается указанием, что сжатие — это способ ко- дирования битовых потоков в виде мелких фрагментов. В сжатии, о котором идет речь, учитывается наличие в данных всевозможных шаблонов, а не только повто- ряющихся фрагментов, которые могут быть описаны статистическими формулами. В частности, рассматриваются отношения симметрии, охватывающие произвольное количество конфигураций входных или выходных данных, а также различные уров- ни ковариации между переменными (вводные сведения по этой теме приведены в главе 21, “Приобретение знаний о задаче”). Рассматривая решение с точки зрения теории информации, мы получаем возмож- ность оценить сложность самого отображения входных данных на выходные данные. Например, может оказаться, что решение, в котором все входные данные отображают- ся на единственную конфигурацию выходных данных, характеризуется высокой сте- пенью сжатия, которая допускает возможность сохранить такое решение в виде всего лишь одного выходного элемента (например, для реализации поведения, предусмат- ривающего движение вперед). Из этого следует, что не все методы ИИ обязательно
422 Часть IV. Выбор оружия должны быть сложными. Аналогичным образом, если обнаруживается чрезвычайное разнообразие решений (т.е. наличие большого количества допустимых конфигура- ций), то выбор тех или иных выходных данных становится не столь важным. При на- личии такого исключительного разнообразия решений может также существовать воз- можность применить высокую степень сжатия и получить краткое решение. (Например, в открытом пространстве не требуется предпринимать какие-либо кон- кретные действия по уклонению от столкновения с препятствием.) С другой стороны, если отображение входа на выход внешне кажется непредска- зуемым, а решения не отличаются хоть каким-либо разнообразием, то сжатие осу- ществляется по принципу “один к одному”, т.е. коэффициент сжатия становится равным единице. В этом случае в применяемом методе ИИ требуется предусмотреть хранение большого объема сложной информации для решения задачи, так что почти достигается теоретически обоснованное максимальное значение кардинальности пространства задач. Но на практике такая степень сложности возникает чрезвычай- но редко; многочисленные повторяющиеся шаблоны (которые выявляются в про- цессе проектирования) возникают даже при осуществлении таких сложных дейст- вий, как ведение игры на выживание. Несмотря на это, чем больше размерность за- дачи, тем больше затрат требуется для осуществления сжатия, поскольку поиск по- вторяющихся шаблонов усложняется. По сути дела, можно ограничиться использованием для описания решения толь- ко неструктурированных данных. Но по мере увеличения в этих данных количества повторяющихся шаблонов повышается степень сжатия отображения входных дан- ных на выходные. А чем лучше сжатие, тем меньше информации требуется для опи- сания решения, что в свою очередь упрощает роль методов ИИ. Минимальная сложность Теория информации не только позволяет оценить сложность задачи, но и дает возможность воспользоваться определенными показателями для выявления наи- лучшего представления. К числу таких показателей относится минимальная длина описания (Minimum Description Length— MDL), которая соответствует форме представления набора данных, характеризующейся максимальным сжатием. В тече- ние последних десятилетий в этой области было проведено много исследований, в которых нашел свое воплощение опыт, накопленный во многих областях науки. Обратите внимание на следующую цитату: В основе принципа MDL лежит такая фундаментальная идея, что для сжатия данных могут ис- пользоваться любые проявления закономерностей в каком-то конкретном наборе данных, ины- ми словами, для описания данных с применением меньшего количества символов по сравнению с тем, что требуется для буквального описания данных. [33] По существу, длина описания измеряется количеством битов, необходимых для кодирования повторяющихся шаблонов в данных, наряду с битами, требуемыми для выражения производных от этих шаблонов. Вообще говоря, шаблоны кодируются внутри решения, а исключения, не укладывающиеся в эти шаблоны, могут быть из- мерены как объемы необходимых поправок по отношению к выходным данным. В идеальном случае хотелось бы найти все возможные решения задачи. Но, как оказалось, чрезвычайно плодотворным направлением работ по созданию средств ИИ
^laiattaus^. Глава 28. Понимание сути решения 423 является направление, основанное на применении принципа соблюдения во всем предельно простого подхода — принципа бритвы Оккама (Occam's razor). Отыскивая решение с минимальной длиной описания, мы получаем возможность выявить самое простое решение — решение, требующее наименьшего объема информации для вы- ражения всего набора данных в виде коллекции битов. Принцип поиска минимальной длины описания — это принцип, позволяющий пожертвовать малозначащей информацией в данных ради поиска в данных лучших шаблонов, а следовательно, и лучшего решения. Применение принципа минималь- ной длины описания позволяет, прежде всего, выявить наиболее подходящее пред- ставление, а также найти наилучший экземпляр такого представления. Теория и практика Приступая к поиску решений, важно прежде всего понять основные концепции теории информации, оценить сложность данных и найти компромисс между универ- сальностью и точностью. На основании указанных принципов были разработаны все- объемлющие подходы; к числу наиболее известных из них относятся деревья решений (которые рассматриваются в главе 26, “Деревья классификации и регрессии”). Несмотря на сказанное, когда дело касается проблем проектирования и вариан- тов выбора способов представления, указанные рекомендации, скорее, становятся для разработчика средств ИИ общей теоретической платформой. А для проектиро- вания наиболее качественных систем необходимо понимать характер решения, на- ходить различные способы отображения входных данных на выходные, а также помнить о том, что всегда нужно сравнивать друг с другом разные подходы. Напри- мер, в том случае, когда рассматривается задача выбора оружия, мы можем опреде- лить, являются ли нейронные сети более подходящими для прогнозирования при- годности оружия, чем деревья решений. Рассчитывая объем памяти, используемый в рассматриваемом представлении, и количество битов, необходимых для выражения погрешности в каждой выборке, разработчик получает возможность сравнить длину двух описаний и выбрать минимальное (нейронную сеть или дерево решений). Безусловно, такие формальные методы могут оказать значительную пользу, но не менее важную роль при выборе используемого способа представления может сыг- рать опыт. В настоящей книге уже рассматривались такие методы ИИ, как нейрон- ные сети, системы, основанные на правилах, и деревья решений, а также было отме- чено, какие типы решений предоставляются указанными методами в наиболее при- емлемой форме. Как оказалось, каждый из этих методов позволяет создавать мини- мальные описания для определенных задач. Краткая сводка сведений, относящихся к такой неуловимой задаче, как выбор метода ИИ, приведена в части VIII, после краткого описания каждого метода. До тех пор пока мы не ознакомимся с этим опи- санием, мы должны руководствоваться изложенными в данной главе теоретически- ми сведениями о сложности отображения как общей рекомендацией по оценке сложности поиска решения.
424 Часть IV. Выбор оружия Пространство поиска Предположим, что выбрано некоторое представление в надежде на то, что оно позволит выразить шаблоны, встречающиеся в решении. Но представление не толь- ко характеризуется применимостью для отображения входных данных на выходные, но и отличается другими свойствами, от которых может зависеть решение. Среди та- ких свойств с точки зрения создания средств ИИ наиболее важными являются поня- тие пространства поиска и его гладкости (поскольку от этих свойств зависят эффек- тивность и надежность указанных средств). Изучая материал, приведенный в данном разделе, следует постоянно помнить, что внутреннее представление решения может оказаться полностью отличным от представления задачи. А в действительности такая ситуация встречается на практике весьма часто, поскольку интерфейсы к компонентам проектируются, главным обра- зом, на основе относительно универсального подхода. Внутреннее представление Представление может рассматриваться как один из подходов, используемых для выражения решения, или как структура для хранения внутренних переменных, но не как само решение. В таком случае решение представляет собой конкретный экземп- ляр среди всех возможных экземпляров представлений, состоящий из множества конкретных значений для каждой из внутренних переменных. Общая совокупность конфигураций, состоящих из таких внутренних значений, называется пространством поиска; согласно такому определению, пространство по- иска — это множество всех возможных решений, качественных или некачествен- ных. В полном соответствии с тем, как рассматривается область определения задачи, представляемая таким образом область определения решения характеризуется двумя описанными ниже показателями. > Размерность. Количество переменных в решении. > Кардинальность. Количество возможных значений, которые может принимать каждая переменная. От того, какую область определения имеет представление, зависит возможность моделирования (вычисления ответа), а также обучения (поиска правильного экзем- пляра). Осуществление обеих указанных функций с увеличением размеров про- странства поиска значительно усложняется. Примеры Рассмотрим несколько примеров. В случае персептрона внутренним представлением знаний о задаче являются данные о весовых коэффициентах связи, хранимые в памяти. Как правило, топология персептронов определена раз и навсегда, поэтому про- странство поиска состоит только из таких весовых коэффициентов. Если имеется восемь весовых коэффициентов и одно смещение, то область поиска имеет размерность, равную девяти. Теоретически кардинальность каждой размерности измеряется количеством пе- рестановок из 32 бит числа с плавающей точкой (т.е. 2^2 = 4 294 967 296). Но в случае персептронов значения весовых коэффициентов оцкшичинакггся небольшим диапазо-
Глава 28. Понимание сути решения 425 ном чисел, сосредоточенных вокруг нуля, а слишком высокие значения точности требу- ются редко. Поэтому на практике кардинальность каждой размерности измеряется тыся- чами, а не миллиардами. Что же касается деревьев решений, рассмотрим наихудший случай — полное де- рево. Дерево с четырьмя булевыми атрибутами имеет три уровня ветвления, в кото- ром нижние узлы являются листовыми. Внутренние переменные, которые относятся к представлению решения, используются в каждом узле. В корневом узле могут быть заданы четыре возможных атрибута, из которых выбирается один атрибут, рассмат- риваемый в данном узле; на следующем уровне количество вариантов выбора равно трем, но количество узлов увеличивается до двух; а на последнем уровне ветвления имеются четыре узла, но для выбора предоставляются только два возможных атрибу- та. В листовых узла решения не принимаются. Таким образом, в худшем случае про- странство поиска в бинарном дереве решений с п атрибутами должно иметь размер- ность 2° * 21 * 22 * ... * 2П~2. Начиная от корня кардинальность этих раз- мерностей должна составлять п, п-1, п-2, ..., 2. С точки зрения теории, приведен- ные рассуждения указывают на то, что пространство поиска для полного дерева с четырьмя атрибутами имеет кардинальность 576 или, в худшем случае, 6 480, если допускается, чтобы дерево было частичным (если допускается наличие по одной до- полнительной опции в расчете на каждое решение). Свойства пространства поиска Правильный выбор внутреннего представления важен не только в связи с про- блемами размерности, но и по многим другим причинам. Представление должно не только обеспечивать моделирование задачи в наиболее приемлемой форме, но и предоставлять возможность использовать методы ИИ для поиска решения. От представления зависит также, насколько гладким является пространство по- иска. Гладкость определяет, насколько влияют небольшие изменения внутренних значений на отображение входных данных на выходные. В некоторых случаях не- большие корректировки внутреннего представления приводят лишь к небольшим изменениям отображения; часть пространства поиска, характеризующаяся таким свойством, является гладкой. С другой стороны, небольшие изменения могут также приводить к крупным скачкам в отображении; такая часть пространства поиска яв- ляется чрезвычайно рельефной (рис. 28.1). Существенные изменения в отображении являются особенно нежелательными по двум основным причинам. Если пространство поиска характеризуется значи- тельной рельефностью, то управляющие воздействия со стороны людей-экспертов, вносящих корректировки в рассматриваемое решение, кажутся хаотическими. В ре- зультате этого вся деятельность по корректировке решения в целом становится весьма затруднительной. Если же пространство поиска является гладким, то экспер- ты получают все шансы добиться успеха. То же относится и к методам ИИ, посколь- ку во многих случаях для поиска решений задачи применяются алгоритмы. Отобра- жение, формируемое в условиях использования рельефного пространства поиска, может стать очень нестабильным, а это значительно затрудняет функционирование средств ИИ. И наоборот, из того, что пространство поиска является гладким, следу- ет, что средства ИИ способны легко контролировать и оценивать результаты коррек- тировок, вносимых в решение.
426 Часть IV. Выбор оружия Гладкое Грубое Выход Внутреннее значение Рис. 28.1. Слева показано гладкое отображение, позволяющее легко настраивать внут- ренние значения, справа — рельефное отображение, при использовании которого для управления и обучения возникают значительные сложности На практике проверка того, насколько гладким является пространство поиска, может быть выполнена относительно просто. Начиная со случайно выбранных кон- фигураций решения, корректируются внутренние значения и измеряются соответ- ствующие изменения в выходных данных. Появление скачков в отображении во многом зависит от наличия взаимозависимостей между внутренними переменными. Например, корректировка единственного весового коэффициента в многослойном персептроне может привести к возникновению эффекта домино, который приводит к воздействию на все последующие элементы и полностью изменяет все отображе- ние. С другой стороны, изменение единственного правила в системе, основанной на правилах, влияет только на несколько изолированных выходных условий. Проектировщик системы имеет непосредственный контроль над свойствами пространства поиска. В главе 21, “Приобретение знаний о задаче”, приведены све- дения о том, какие решения на уровне задачи могут оказать влияние на пространст- во поиска (например, правильный выбор входных и выходных данных). А когда речь идет о самих решениях, то контроль над параметрами представления приобретают инженеры по искусственному интеллекту (которые, например, могут задавать коли- чество элементов в скрытом слое или максимальную степень ветвления дерева ре- шений). Кроме того, разработчики, отказавшись от какой-либо предвзятости, полу- чают возможность выбирать наиболее подходящие методы. Все указанные факторы находятся под нашим контролем, а это почти полностью гарантирует возможность получения работоспособного решения в условиях гладкого пространства поиска. Различные подходы к поиску решения После того как определено представление, на его основе необходимо обеспечить поиск приемлемого экземпляра внутренних значений для получения действительного решения. Но если задачу невозможно решить в общем виде, то существование реше- ния, достижимого с помощью грубой силы (возможность получения которого вытека- ет из положений теории информации, описанных в первом разделе настоящей главы),
^atatiaus^k Глава 28. Понимание сути решения 427 и гладкость пространства поиска не дают нам почти никаких преимуществ (о чем сви- детельствует анализ представления, приведенный во втором разделе)! В обязанности разработчика входит выбор такого метода ИИ, чтобы внутренние переменные решения были заданы правильно. При условии что данный тип представ- ления позволяет выразить решение, можно воспользоваться различными подходами для определения приемлемых значений для каждой из этих внутренних переменных. Экспертное решение Некоторые методы ИИ основаны на том, что инженер по искусственному интел- лекту создает внутреннее представление знаний о решении. Так обстоят дела при использовании систем, основанных на правилах, в которых разработчик отвечает за создание правил (например, для реализации поведения, необходимого для следова- ния вдоль стены). По такому же принципу эксперт может также создать вручную де- рево решений, применяемое для выбора оружия. При таком подходе разработчик средств ИИ использует весь свой опыт и знания для поиска наилучшего возможного экземпляра. Разработчик несет также ответст- венность за обновление решения, если оно на первых порах оказывается неприме- нимым (такая ситуация часто возникает в фазе проведения экспериментов). Экспертные рекомендации Если указанный подход будет трактоваться еще шире, то разработчик может также принять участие в работе других участников проекта, помогая им найти решение. Вме- сто того чтобы заниматься непосредственно поиском решения (вклад нулевого уровня), эксперт может создать алгоритмы поиска подходящих конфигураций (вклад первого уровня). Так обстоят дела при создании проектов на основе многослойных персептронов, в которых для внесения корректировок в весовые коэффициенты из конфигурации, близкой к оптимальной, применяется метод градиентного спуска. Еще меньшее участие эксперта в работе предусматривает такой подход, в котором эксперт разрабатывает технологию, позволяющую находить приемлемое решение с по- мощью общих алгоритмов (вклад второго уровня). Именно так складывается ситуация при использовании деревьев решений; статистически обоснованные эвристические функции, применяемые для определения наилучшего атрибута, позволяют воспользо- ваться общим алгоритмом рекурсивного секционирования для поиска решения. В действительности участие эксперта в поиске решения может осуществляться на еще более высоком уровне (вклад n-го уровня), а это приводит к еще большему со- кращению выполняемого экспертом объема работы. Трактовка алгоритмов стано- вится все более и более абстрактной, но вместе с тем усложняется также понимание последствий применения подходов столь высокого уровня. При разработке игр уча- стие на низком уровне обеспечивает достижение явного контроля, но может потре- бовать больших затрат времени. Если же эксперт участвует в разработке на доста- точно высоком уровне, то ему приходится выполнять меньше работы, но контроль над происходящим в игре становится менее естественным, и это может стать недос- татком игры.
428 Часть IV. Выбор оружия Исчерпывающий поиск решения В менее сложном (но полностью автоматизируемом) подходе для поиска решения применяется грубая сила. При этом предусматривается проверка всех подряд кон- фигураций, пока не обнаружится та из них, которая соответствует критериям, за- данным для проекта. В этом случае в процессе поиска методически проверяется ка- ждое значение, часто с использованием вложенных циклов “for”. Таким образом, проводится исчерпывающий поиск всех экземпляров (в связи с тем фактически и возник термин “пространство поиска”). Основным преимуществом этого подхода является его исчерпывающий характер. Если с использованием данного представления можно найти какое-либо решение, оно будет найдено! Но за обеспечение такой гарантии приходится платить вычисли- тельной мощью, затрачивая большие объемы ресурсов. Такой подход может оказать- ся применимым только для предварительной обработки данных при создании игро- вых средств ИИ, но больше ни для чего иного. Случайный поиск решения По существу, при использовании подхода со случайным поиском решения выбор рассматриваемого экземпляра осуществляется стохастическим способом. После этого происходит оценка качества экземпляра решения с помощью отдельного компонента, и процесс повторяется до тех пор, пока обнаруженное решение не окажется приемлемым. Преимуществом указанного подхода является то, что отсутствует какая-либо тен- денциозность, которая вынуждала бы предпочесть решение определенного типа. Это означает, что получению приемлемого решения предшествует этап, на котором соз- дается представительное распределение всех возможных экземпляров решения. Но такой подход по своему характеру является весьма непредсказуемым, и нет гаран- тии, что удастся найти решение в отведенном для этого интервале времени. Гибридные подходы В большинстве методов ИИ используется определенное сочетание этих подходов. Безусловно, свои преимущества есть у каждого из описанных выше подходов, но чаще всего наибольшего успеха можно добиться путем применения их в сочетании. Во многих случаях конкретные решения в большей степени подходят для осуществ- ления только определенных подходов, поэтому всегда приходится искать метод, наиболее подходящий для выполнения предстоящей работы. Как правило, в качест- ве одного из приемлемых вариантов можно выбрать методы, представленные в дан- ной книге, которая содержит описание самых разных подходов. Резюме В настоящей главе рассматриваются различные, описанные ниже аспекты при- нятия решений с самой общей точки зрения, начиная с исследований в области тео- рии информации.
Глава 28. Понимание сути решения 429 > Решение — это отображение входных данных на выходные, которое охваты- вает шаблоны многих типов. > Сжатие данных позволяет выделить наиболее существенную информацию, по которой можно судить о сложности отображения. > Важно также отметить, что сжатие данных, с одной стороны, позволяет нахо- дить шаблоны, обеспечивающие приближенное представление данных, а с другой стороны, приводит к потере информации из-за чрезмерного упрощения. > О качестве представления или экземпляра можно судить на основании прин- ципа минимальной длины описания, который обеспечивает достижение оп- тимального компромисса между точностью и обобщением. > На основе этих принципов разработаны необходимые алгоритмы, но разра- ботчики средств ИИ, используя алгоритмы, должны понимать и лежащие в их основе концепции, чтобы находить лучшие решения. После этого в настоящей главе изложены описанные ниже концепции, на кото- рых базируются указанные способы представления. > Представление решения часто отличается от представления задачи. > От выбранного представления косвенно зависит размер пространства поиска. > Общее количество конфигураций может быть вычислено довольно легко, пу- тем перемножения значений кардинальности внутренних переменных. > От выбранного представления зависит гладкость пространства поиска. > Свойствами пространства поиска можно управлять, корректируя параметры пред- ставления или даже заменяя одно представление другим, более подходящим. Возможность моделирования решения (т.е. вычисления результата) зависит от того, какое представление было для этого выбрано. С другой стороны, механизмы обучения в меньшей степени опираются на произвольный выбор, поскольку в их основе лежат некоторые общепринятые концепции, изложенные ниже. > Должна быть предусмотрена возможность для людей-экспертов вмешиваться в работу механизмов обучения на разных уровнях и брать на себя функции ру- ководства поиском решения. > В число других подходов, позволяющих учитывать свойства самой задачи, входят исчерпывающий поиск и просмотр пространства поиска в случайно выбранной последовательности. > Очень часто для обеспечения эффективного поиска решения требуется соче- тание этих различных подходов, а иногда без этого невозможно обойтись. Концепции, изложенные в настоящей главе, часто оказываются весьма продук- тивными при использовании методов ИИ для решения новых задач. Безусловно, на первый взгляд изложенные идеи могут показаться несколько абстрактными, но они неизменно позволяют достичь понимания сути проблемы, на основе чего может быть организовано проектирование решений. Единственный способ полностью ос- воить данный процесс состоит в том, чтобы неуклонно применять его на практике!
430 Часть IV. Выбор оружия Практическая демонстрационная версия Примером анимата, способности которого к движению и стрельбе реализованы с помощью модулей, может служить Guinea. Модули используются для сбора всех данных, касающихся принятия решения, и приведения их к виду, готовому для анализа. Исследуя отображения, относящиеся к каждой из ука- занных способностей, можно выбрать наилучший метод ИИ. В анимате Guinea предусмотрены все средства, необходимые для применения на практике идей, истоком которых является теория инфор- мации; с ним можно ознакомиться в оперативном режиме по адресу http: / /AiGameDev.com/.
^laiattaus^i Часть IV Заключение Информация, приведенная в данной части, является исключительно интересной; в ней представлены два успешно разработанных прототипа средств ИИ, предназна- ченных для выбора оружия. Эти прототипы относятся почти что к противополож- ным концам спектра доступных методов (начиная от статического проектирования и заканчивая оперативным обучением) и в то же время являются, на удивление, ана- логичными во многих отношениях. Реализуемые в них формы поведения, несо- мненно, вносят вклад в повышение интеллектуальности аниматов и позволяют до- биться еще большей их реалистичности. Вполне очевидно, что разработанные сред- ства ИИ позволяют еще больше приблизиться к цели создания достойного против- ника в игре на выживание! Краткий ретроспективный обзор После изучения материала, изложенного в части IV, мы можем подвергнуть его критическому анализу и сделать некоторые выводы. Используемые методы В разработке игр многими преимуществами, указанными ниже, обладают систе- мы голосования. > Мощность. Системы голосования позволяют успешно справиться со многими задачами. > Гибкость. В системе голосования в качестве участников голосования могут рассматриваться весьма разнообразные объекты. > Расширяемость. Системы голосования позволяют легко вводить в действие новых участников голосования и новых кандидатов. К сожалению, разработка системы голосования может потребовать значительных усилий по настройке на этапе экспериментирования, особенно для достижения пра- вильного баланса голосов и подбора подходящих весовых коэффициентов. Кроме того, одним из чрезвычайно полезных методов ИИ являются деревья ре- шений. Будучи используемыми в соответствии с их назначением, деревья решений обнаруживают много преимуществ. В основе организации деревьев решений лежат
чрезвычайно простые концепции; достаточно лишь воспользоваться одним из спо- собов представления дерева. Деревья решений проектируются так, чтобы обеспечи- вать высокое быстродействие, поэтому способны обрабатывать огромные объемы данных в реальном времени. Кроме того, они весьма успешно справляются с реше- нием общей задачи распознавания образов и обладают способностью к обработке непрерывных и категориальных переменных. Недостатком деревьев решений является то, что их обучение связано с опреде- ленными сложностями, как и при использовании других методов контролируемого обучения. А в действительности, прежде чем приступить к обучению дерева реше- ний, все еще необходимо получить предназначенные для этого данные! Для этого требуется применить предварительную обработку или ввести отдельную фазу, пред- назначенную для сбора информации. Реализация необходимых форм поведения Вообще говоря, реализация форм поведения, связанных с выбором оружия, ока- залась вполне удовлетворительной. Во многих случаях перечень применимых видов оружия является ограниченным, но количество приемлемых вариантов достаточно велико. Это означает, что к средствам ИИ можно не предъявлять слишком жестких требований в части достижения реалистичности при выборе оружия, поскольку их действия все равно будут казаться реалистичными. Чаще всего обнаруживаются вполне приемлемые формы поведения, при условии что не наблюдается такая кар- тина, в которой анимат внезапно и беспричинно отказывается от одного оружия и выбирает другое. И система голосования, и дерево решений опираются на предположения, приня- тые на определенном уровне. Система голосования создается с учетом статистиче- ских данных, касающихся применения оружия, и благодаря этому приобретает воз- можность определять наиболее подходящее оружие, по крайней мере теоретически. В процессе разработки деревьев решений проводится обучение, позволяющее опре- делить свойства оружия, но за основу берутся предположения, используемые для вычисления обучающих данных. В настоящей книге описан вариант, в котором применяется для этой цели упрощенная система голосования и удается добиться ус- пешной реализации требуемых форм поведения. Тем не менее выбор оружия не всегда бывает оптимальным. У анимата нет ощущения, что от выбора оружия зави- сит его выживание, а также отсутствует стремление подсчитывать очки, поэтому нет и представления о том, с какой целью осуществляется выбор наилучшего оружия. Общая перспектива При подготовке глав данной части автор стремился в максимально возможной степени избегать анализа тактических задач высокого уровня. Тем не менее все по- ставленные задачи удалось успешно решить благодаря использованию экспертных знаний и контролируемого обучения. Но во многих случаях поведение, связанное с выбором оружия, должно осуществляться в комплексе с поведением, связанным с решением тактических задач. Очень часто критерии, используемые при выборе ору-
^laiaHaus,^. жия, зависят от тактических форм поведения и текущего состояния. Проблемы так- тических действий высокого уровня рассматриваются в части VII, в ней также при- ведено обсуждение вопроса о том, как встроить необходимые для этого средства в существующий проект дерева решений. В частях III и IV основное внимание было уделено наступательным формам по- ведения, включая стрельбу и выбор оружия. Но такие способности зачастую необхо- дииы и для организации оборонительного поведения, такого как ведение загради- тельного огня или сбор доспехов. Эти возможности рассматриваются в следующей части, наряду с описанием таких нейтральных форм поведения, как подъем по лест- ницам или использование платформ. После освоения такого поведения аниматы на- чинают в большей степени казаться всесторонне развитыми личностями и поэтому представляются более реалистичными для других участников игры.

^atattaus^ii Часть V Работа с предметами и объектами Аниматы, создание которых рассматривалось до сих пор в настоящей книге, были спо- собными воспринимать определенные аспекты мира игры (например, препятствия), но неспособными получать информацию о большинстве объектов. Эти аниматы име- ли широкий набор сенсорных компонентов, но избирательное восприятие, поскольку в предыдущих частях данной книги основное внимание было уделено описанию наи- более важных способов организации поведения, а мелкие детали игнорировались. Цель данной части состоит в том, чтобы компенсировать эти недостатки и наде- лить создаваемых аниматов разносторонними навыками. В частности, в следующих главах будет показано, как провести обучение аниматов навыкам взаимодействия с различными объектами в мире игры (например, чтобы они могли собирать нужные им предметы, нажимать кнопки и вести погоню). Кроме того, будет показано, как отменять бесперспективные попытки использования объектов (например, попытки снова вставить чеку в гранату или остановить запущенную ракету). Общее назначение части Основное назначение данной части состоит в том, чтобы восполнить все те неболь- шие пробелы, из-за которых несобственный персонаж (NonPlayer Character — NPC) иг- ры на выживание не может стать действительно качественным. Для этого персонаж дол- жен научиться активно собирать такие предметы, как доспехи, оружие и боеприпасы. Кроме того, необходимо обеспечить, чтобы анимат, наделенный искусственным интел- лектом, не выглядел растерянным, встретив лестницу, платформу или дверь. Аниматы не должны обходить двери как препятствия, не обладая способностью воспринимать по- добные хитроумные изобретения и справляться с ними. По существу, средства ИИ должны уверенно обращаться со всеми предметами в мире игры. В данной части рассматривается еще один аспект поведения анимата — оборо- нительное поведение. Поведение, связанное с уходом от погони, или маневры, обеспечивающие уклонение от удара, могут также рассматриваться как способы ис- пользования объектов, присутствующих в мире игры; особенно характерной формой поведения является стремление избежать попадания поражающих элементов. Эти навыки, направленные на выживание, также уравновешивают наступательные фор- мы поведения, реализованные в предыдущих частях данной книги. Аниматы должны также обучиться выполнению прыжков с помощью ракетных пуско- вых установок (или просто ракетных прыжков), в которых используется та же технология,
как и при уклонении от огня. В действительности, с формальной точки зрения следую- щие главы содержат описания способов, позволяющих реализовать многочисленные разнородные формы поведения с применением одной и той же технологии ИИ. Что касается обучения, то в следующих главах применяется наглядная форма пред- ставления знаний, позволяющая закрыть брешь между формами поведения, спроекти- рованными вручную и освоенными в результате обучения. С этой целью последова- тельности действий представляются с помощью такого способа, который является удобным и для программиста, и для проектировщика, а также предоставляет значи- тельные преимущества участникам разработки с той и другой специализацией. Краткое содержание По мере того как процесс разработки средств ИИ приближается к завершению, уменьшаются необходимые затраты времени на определение интерфейсов, поэтому остаются резервы, которые можно направить на усовершенствование той или иной технологии. Краткое содержание глав этой части приведено ниже. В трех главах рас- сматриваются теоретические сведения, две главы посвящены вопросам практики, в одной главе имеется упражнение, а еще одна глава посвящена обсуждению подго- товительных действий. Глава 29, “Анализ и разработка спецификаций”. В этой главе три фазы, осуществ- ляемые до начала разработки, объединяются и рассматриваются как единый подго- товительный процесс: анализ среды разработки, трактовка форм поведения с точки зрения человека-игрока и разработка спецификаций будущих дополнений к сущест- вующим интерфейсам. Глава 30, “Нечеткая логика”. Эта глава, в основном, посвящена изложению тео- ретических сведений, лежащих в основе подхода, называемого нечеткой логикой, который широко применяется при создании средств ИИ. В данной главе показано, что нечеткая логика в большей степени приспособлена для представления лингвис- тических концепций, определяемых людьми. Для применения нечеткой логики на практике необходимо иметь нечеткую экспертную систему, аналогичную по своему назначению стандартным системам, основанным на правилах. Глава 31, “Усовершенствование двигательных форм поведения с использованием нечет- ких систем”. В этой главе нечеткая логика используется для усовершенствования двига- тельных форм поведения. В частности, для управления передвижением аниматов по ле- стницам, восхождением на платформы и прохождением через двери применяются не- четкие правила. Нечеткий подход позволяет создавать формы поведения, которые внеш- не кажутся очень плавными. Глава 32, “Генетические алгоритмы”. Это — еще одна глава, посвященная вопро- сам теории, а именно, генетическим алгоритмам. По существу, такие алгоритмы по- зволяют применять для оптимизации форм поведения эволюционные принципы, допуская дальнейшее существование только наиболее пригодных решений. Глава 33, “Обучающиеся системы классификаторов”. В этой главе приведено вводное описание процесса обучения систем классификаторов, в котором объеди- няются генетические алгоритмы и представления, основанные на правилах. Такой метод обучения может использоваться для адаптации форм поведения к новым ус-
ftalaHausiik ловиям задач путем осуществления метода проб и ошибок в рассматриваемой среде. Благодаря этому обеспечивается возможность усвоить в результате обучения наи- лучшее множество правил. Глава 34, “.Адаптивные оборонительные стратегии, основанные на генетических ал- горитмах”. В этой главе показано, как обеспечить обучение аниматов выполнению последовательностей действий с использованием генетического алгоритма на основе таких же концепций, которые применяются в системах классификаторов. В частно- сти, аниматы адаптируют оборонительные стратегии к складывающейся обстановке, уклоняясь от огня или используя превентивные маневры. В этой главе показано также, как провести обучение анимата выполнению ракетных прыжков с помощью эволюционных методов ИИ. Глава 35, “Проектирование обучающихся средств ИИ”. Это — последняя глава данной части. Здесь приведено упражнение по обучению средств ИИ. В главе рас- сматриваются различные способы моделирования процесса обучения, а также пред- ставлены всевозможные подходы, которые могут быть выбрана для этой цели. Кро- ме того, в этой главе приведены советы и рекомендации о проектировании обучаю- щихся средств ИИ, позволяющие избежать обычных ловушек. Исходные предположения Ко времени начала изучения данной части выполнен впечатляющий объем рабо- ты. Вполне очевидно, что можно повторно использовать основную часть созданного при этом кода, как описано ниже, наряду с инструментальными средствами, инфра- структурой и игровой машиной. > При создании средств ИИ используются реализованные ранее формы поведе- ния, применяемые при обучении аниматов. Аниматы должны иметь базовые двигательные навыки, а их противники должны быть способными к стрельбе. > В мире игры необходимо предусмотреть предпосылки для использования таких хитроумных изобретений, как двери и платформы, которые действуют автома- тически под управлением игровой логики. Предполагается, что для персонажей игры должна быть предусмотрена необходимая низкоуровневая анимация. > В мире игры находятся такие предметы, как оружие, доспехи и боеприпасы, на- личие которых может восприниматься аниматом. Взаимодействие с этими предметами также обеспечивается игровой машиной, а реализация в виде ани- мации осуществляется прозрачно (без привлечения разработчика средств ИИ). Во всех пре. идущих частях данной книги выдвигались аналогичные предположения, поэтому читатель должен быть уже знаком с такой организацией изложения. Для полу- чения кода, относящегося к теме данной части, и ознакомления с инструкциями по его установке обязательно посетите Web-узел по адресу ht tp: / /AiGameDev. сот/.

^atallaus^k Гпава 29 Анализ и разработка спецификаций В ЭТОЙ ГЛАВЕ- • Объекты в мире игры • Совершенствование форм поведения • Спецификация • Резюме Информация, приведенная в предыдущих главах настоящей книги, позволяет созда- вать аниматы, реагирующие на внешнюю среду, которые являются достаточно подготовленными для выполнения таких разнообразных заданий, как передвижение на местности и проведение несложных боев. Но для того чтобы эти аниматы стали более интеллектуальными, необходимо повысить их способности, предоставляя воз- можность выполнять короткие последователь- ности действий (такие, как использование две- рей или платформ, а также уклонение от веду- щегося по ним огня). Безусловно, такие корот- кие планы все еще реализуются в виде форм поведения, представляющих собой непродолжи- тельную реакцию, но благодаря их применению могут создаваться аниматы, которые кажутся удивительно реалистичными. В начале данной главы показано, как подгото- виться к разработке подобных форм поведения путем проведения анализа платформы, разработ- ки приемлемой трактовки задачи и определения интерфейсов к миру игры. Такой процесс уже должен быть достаточно знаком читателю, по- скольку он подробно рассматривался в предыду- щих частях, поэтому в последующем изложении указанные фазы рассматриваются очень кратко. В настоящей главе представлены перечис- ленные ниже темы. > Объекты, находящиеся в среде игры. К этим объектам, с одной стороны, относятся пред- меты, которые могут быть собраны анима- том, а с другой стороны, хитроумные изо- ’ бретения, влияющие на выбор двигательных форм. Игровая машина определяет и то, как
440 Часть V. Работа с предметами и объектами хитроумные изобретения влияют на движения участника игры, и то, как с ними сможет справиться анимат. > Способ, с помощью которого люди-игроки могут справиться с заданием по разработке форм поведения, позволяющих использовать предметы и хитро- умные изобретения. Для дальнейшего использования в фазе создания прило- жения приведены практические примеры, относящиеся к каждой отдельной форме поведения. > Спецификация, которая дополняет многие из существующих интерфейсов, описанных в предыдущих частях настоящей книги. К концу данной главы будет создан набросок кода, готовый для реализации ука- занных форм поведения. Объекты в мире игры Среда игры заполнена многими разнообразными объектами, причем большинст- во из них имеет определенное назначение. В частности, проекты игр со стрельбой от пррвого лица включают такие предметы, как жизнеобеспечивающие пакеты, доспе- хи и глушители, что в целом позволяет повысить интерес к игре. Кроме того, игро- вая обстановка становится более разнообразной в результате применения таких хит- роумных изобретений, как лестницы, платформы и двери. Предметы Некоторые предметы в игре оказывают непосредственное влияние на состояние участника игры. После того как участник игры подбирает жизнеобеспечивающие и стимулирующие пакеты, его жизнеспособность немедленно повышается. То же от- носится и к различным видам доспехов; боевые доспехи, бронекостюм и бронежилет, а также шлемы положительно влияют на оснащенность участника игры доспехами. Безусловно, в игре Quake 2 имеются некоторые нюансы, касающиеся выбора доспехов различных типов (например, преобразования между зелеными, желтыми и красными доспехами), но по своей общей организации эта игра весьма напоминает большинство игр со стрельбой от первого лица; участник игры автоматически получает преимуще- ства, воспользовавшись жизнеобеспечивающими пакетами и доспехами, а в ходе даль- нейшей игры не обязан уделять лишнего внимания тому, что в его распоряжении имеются подобные предметы, просто пользуясь ими. С другой стороны, некоторые предметы не всегда используются непосредственно; к таковым относятся предметы, обеспечивающие нанесение учетверенного ущерба (четырехкратное повышение мощи оружия), восстанавливающие жизнеспособность, позволяющие стать непобедимым, а также такой предмет, как глушитель. В режимах игры с одним участником подобные предметы сохраняются в виде запасов и активизи- руются только тогда, когда игрок прибегает к их использованию. В играх с участием нескольких игроков, таких как игра на выживание или игра с захватом флага, подоб- ные предметы активизируются автоматически, как в игре Quake 2. Благодаря этому иг- ра ускоряется, но для осуществления данного подхода должна быть предусмотрена стратегия максимизации преимуществ сбора объектов, поэтому важность правильного размещения необходимых предметов повышается.
Глава 29. Анализ и разработка спецификаций 441 Хитроумные изобретения Мир игры в играх со стрельбой от первого лица весьма реалистичен, поэтому уча- стникам игры часто приходится преодолевать затруднения, связанные с использова- нием дверей, лестниц и лифтов. Во многих случаях при создании конструктивных проектов подобных хитроумных изобретений преследуются определенные цели, та- кие как замедление побега из ключевой области или предотвращение легкого досту- па к важному оружию. Для активизации таких хитроумных изобретений часто требуются определенные последовательности действий, в соответствии с тем, что определено игровой логи- кой. Например, чтобы вызвать подвижную платформу, необходимо щелкнуть на вы- ключателе, чтобы открыть дверь — воспользоваться ключом, а прежде чем забраться на лестницу, участник игры должен коснуться ее поверхности. Эти действия явля- ются для любого участника игры, находящегося в мире игры, предпосылками, без которых он не сможет воспользоваться указанными объектами. Испытательная площадка Безусловно, жизнеспособность и доспехи представляют собой существенные ком- поненты игр на выживание, поэтому большинство уровней игры проектируется так, чтобы, проходя их, участник игры мог встретить многочисленные подобные предметы, разбросанные повсеместно. Иными словами, мы можем без особых сложностей найти уровни с подобными предметами или проверить возможности средств ИИ по сбору та- ких предметов. С другой стороны, такие хитроумные изобретения, как двери, средства телепортации, лестницы, платформы или даже площадки для прыжков, встречаются относительно ред- ко. А если подобные объекты присутствуют в мире игры, то обычно становятся цен- тральными по отношению к архитектуре данного уровня. В процессе разработки средств ИИ необходимо ознакомиться с широким перечнем уровней игры и применить эти уровни в качестве испытательной площадки, поскольку трудно найти единственный уровень, на котором были бы представлены все необходимые средства. Но так или иначе задача разработки средств ИИ для передвижения по лестницам и платформам сама по себе является довольно сложной. Кроме того, в действительности хитроумные изобрете- ния встречаются весьма редко, поэтому для анимата не раскрываются слишком большие возможности для проверки освоенных им форм поведения. В подобных случаях может применяться такой общепринятый подход, как исполь- зование специально упрощенных уровней, но необходимо соблюдать осторожность, чтобы можно было гарантировать сохранение средствами ИИ способности к обобще- нию своего поведения на реальные уровни игры. Чтобы повысить вероятность того, что анимат встретится с ситуациями, способствующими обучению, само обучение анимата можно проводить поэтапно, путем чередования взаимодополняющих форм поведения, например подъем по лестнице и спуск с лестницы. Такой подход раскры- вает огромные возможности по формированию в аниматах необходимых навыков, хо- тя его применимость зависит от того, возможно ли выделение отдельного периода обу- чения. (Поскольку в ходе игры анимат, например, не может совершать бессмысленные пробежки вперед и назад.)
442 Часть V. Работа с предметами и объектами Совершенствование форм поведения Для того чтобы участники игры могли воспользоваться указанными предметами и хитроумными изобретениями в своих интересах, они должны обучиться опреде- ленным формам поведения. Такие формы поведения рассматриваются в настоящем разделе, начиная с изучения того подхода, который характерен для людей. Затем об- суждаются критерии оценки успешного выполнения подобных заданий с помощью средств ИИ. Раздел завершается рассмотрением практических примеров проявления требуемых форм поведения. Подход, характерный для людей Для людей наиболее важной способностью является способность пользоваться предметами, на втором месте находится способность обращаться с хитроумными изобретениями и, наконец, люди должны обнаруживать формы поведения, в кото- рых объекты участвуют косвенно. Сбор предметов В играх со стрельбой от первого лица чаще всего сбор необходимых предметов сводится к тому, что анимат движется к ним, а затем проходит над ними. После этого подобранные предметы автоматически поступают в распоряжение участника игры, либо добавляясь к запасам, либо проходя более непосредственную обработку. Выше уже рассматривались возможности использования движения в качестве превентивной меры по предотвращению столкновения с препятствиями и даже об- суждалось движение с такими свободно сформулированными целями, как исследо- вание территории или просто блуждание. Процесс сбора предметов является более сосредоточенным на определенных целях; для его осуществления требуется пере- движение в очень точно заданном направлении. Люди выполняют подобные задания почти бессознательно, сочетая осуществ- ляемые действия с другими двигательными формами поведения (такими, как пре- дотвращение столкновений). Сбор предметов может рассматриваться как кратко- срочное поведение, управляемое целями, реализация которого ведет лишь к не- большому отходу от общего течения игры. Например, поиск цели редко влияет на осуществление таких примитивных двигательных способностей, как огибание вы- ступов и предотвращение столкновений; люди очень успешно справляются с зада- чей объединения таких иногда противоречивых требований. Использование хитроумных изобретений Гораздо сложнее обучить анимата правильно обращаться с различными хитроум- ными изобретениями, представленными в среде (например, с лестницами или плат- формами); для этого требуются виды движения, которые невозможно определить как частный случай форм поведения, проявляющихся, допустим, во время произ- вольного обхода местности. Такие дополнительные навыки, как нажатие выключа- телей (добровольное вступление в контакт с объектом), ожидание события или пере- движение в вертикальном направлении по лестницам, реализуются с помощью бо- лее сложных форм поведения.
Глава 29. Анализ и разработка спецификаций 443 Реализуя такие формы поведения, участники игры должны также проявлять не- которые другие способности, чтобы в целом иметь возможность воспользоваться хитроумными изобретениями. Чтобы проходить через открытые двери или вызывать лифты, необходимо осуществлять определенные последовательности действий. При этом каждое действие активизируется с учетом событий или условий, которые выте- кают из предыдущего действия. По этой причине подобные короткие “планы” могут рассматриваться как обусловленные реакциями на текущую ситуацию, поскольку в ходе выполнения намеченных последовательностей действий анимат руководству- ется прямыми наблюдениями. Поэтому подобные последовательности действий являются очень простыми. По- сле принятия решения о том, что нужно воспользоваться рассматриваемым хитро- умным изобретением, остается только действовать, реагируя в соответствии с задай- ным шаблоном, с небольшими отклонениями или вообще без отклонений. Кроме действий, требуемых для активизации хитроумных изобретений, осуществляется лишь небольшое количество других действий. Средства усовершенствования поведения В настоящей части книги рассматриваются не только способы непосредствен- ного использования объектов, но и такие формы поведения, в которых объекты уча- ствуют менее очевидным образом, например, когда аниматы совершают ракетные прыжки или даже уклоняются от запущенных в их сторону поражающих элементов. В полной аналогии с формами поведения, связанными с использованием хитроум- ных изобретений, средства усовершенствования поведения могут рассматриваться как последовательности действий, представляющих собой реакцию на сложившуюся ситуацию. Но между теми и другими есть различие, обусловленное тем, что активи- зация средств усовершенствования поведения происходит в произвольно выбран- ные моменты, а не в связи с переходом в определенные местонахождения. Очевидно, что участники игры, чтобы уклониться от поражающего элемента или совершить ракетный прыжок, определяют наиболее подходящий момент, а не про- сто совершают такие действия, когда в этом нет никакого смысла. Задача определе- ния момента для уклонения от поражающих элементов является довольно простой, поскольку уклониться от удара можно только сразу после того, как произошел вы- стрел из оружия. С другой стороны, определение того момента, когда должен быть осуществлен ракетный прыжок, зависит от высоты находящегося впереди препятст- вия, а также от готовности участника игры потерять некоторую долю жизнеспособ- ности для преодоления этого препятствия. Применяемые критерии Так же, как и при осуществлении других форм поведения, представляющих собой реакцию на сложившуюся ситуацию, предполагается сохранение некоторых свойств, позволяющих поддерживать иллюзию реалистичности. К счастью, средства ИИ, рас- сматриваемые в данной главе, могут быть созданы на основе реализации существую- щих двигательных способностей, разработанных в части II, поэтому можно считать, что значительная часть работы, гарантирующей плавное человекоподобное движение, уже проделана.
444 Часть V. Работа с предметами и объектами Разрабатывая средства ИИ, которым посвящена данная часть книги, мы должны также обращать внимание на то, что не следует чрезмерно увлекаться применением “усовершенствованных” форм поведения, поскольку иначе они могут стать слиш- ком явно выраженными. Причем, даже если эти формы поведения являются доста- точно реалистичными, хорошим практическим занятием может стать осуществление попытки свести их использование к минимуму. Один из приемлемых способов дос- тижения этой цели состоит в соблюдении приведенных ниже критериев. > Эффективность. Добиваясь того, чтобы поведение стало настолько эффектив- ным, насколько это возможно (например, избегая ненужных движений или па- уз), можно достичь результата, близкого к тому, который обусловлен самим про- ектом двери или платформы. В таком случае удается не только легко провести обучение средств ИИ, но и достичь поведения, близкого к человеческому. > Адекватность. Любые действия должны быть оправданными. Наихудшая си- туация, которую можно себе представить, состоит в том, что средства ИИ вы- полнят одно какое-то действие, но за ним не последует другое необходимое действие, например, анимат откроет дверь, но не пройдет через нее. Вся по- следовательность действий должна быть адекватной ситуации. Таковы основные критерии, которые используются для оценки поведения ани- матов с точки зрения их общего назначения. А для ознакомления с более подробны- ми сведениями рассмотрим приведенные ниже практические примеры. Практические примеры Безусловно, рассматриваемые формы поведения почти не имеют общей основы, поэтому должны быть проанализированы отдельно. > Открывая дверь, участник игры подходит к кнопочному пульту, после чего нажатие необходимых кнопок происходит автоматически. На то время, как дверь открывается, участник игры должен отойти назад, а затем пройти через дверной проем, как только дверь откроется достаточно широко. > Чтобы попасть на платформу, участник игры должен вначале нажать выклю- чатель, а затем подождать, пока платформа не окажется там, где он находится. После того как платформа оказывается на месте, участник игры забирается на нее, а затем платформа обычно приходит в движение автоматически. > Чтобы взобраться на лестницу, участник игры должен продвигаться в направле- нии к лестнице до соприкосновения с ней. Участник игры должен быть постоянно направлен лицом к лестнице, чтобы не упасть. Эффект восхождения на лестницу достигается за счет того, что участник шры смотрит вверх и движется вперед. > Чтобы воспользоваться площадкой для прыжков, участнику игры необходимо лишь взойти на нее, и в этот же момент участник игры взлетает в воздух. В про- цессе своего движения в воздухе участник игры может контролировать падение. > Для уклонения от поражающих элементов, направленных в сторону участника игры, достаточно сойти с линии огня, а также отойти в сторону от ожидаемой точки падения поражающего элемента.
Глава 29. Анализ и разработка спецификаций 445 > Чтобы совершить ракетный прыжок, достаточно посмотреть вниз, прыгнуть с помощью стандартной команды, а затем выпустить ракету в землю. Благодаря использованию указанных способностей поведение аниматов стано- вится усовершенствованным до такой степени, что начинает соответствовать пове- дению людей, реагирующих на конкретные ситуации. Спецификация Прежде чем приступать к реализации этих форм поведения, необходимо опреде- лить интерфейсы к миру игры. К этому моменту представлено уже больше половины материала, намеченного для включения в настоящую книгу, поэтому мы имеем воз- можность воспользоваться многими готовыми интерфейсами для усовершенствования форм поведения разрабатываемого анимата. В данном разделе, в основном, речь идет о том, как дополнить существующие интерфейсы, поэтому обычные фазы составления чернового проекта, рационализации и формализации рассматриваются очень кратко. Движение Существующий интерфейс к миру игры, обеспечивающий движение, в настоя- щее время поддерживает операции поворота и перемещения. Эта спецификация об- ладает значительной гибкостью; применяемые средства ИИ позволяют останавли- ваться, ходить и бежать в соответствии с заданием, формулируемым в виде векторов движения с разной величиной. Кроме того, анимат способен нацеливать свой взгляд в любом направлении. Но средства ИИ почти не имеет контроля над позой тела анимата. Например, ани- мат не может ползать или прыгать в любом направлении. Тем не менее могут быть до- полнительно введены две модифицирующие функции, позволяющие реализовать с помощью средств ИИ такие действия, как ракетные прыжки или уклонение от огня: void Jump(); void Duck(); Команда Jump соответствует такому же действию, которое могут выполнять лю- ди-игроки. Эта команда в сочетании с командой Move позволяет совершать направ- ленные прыжки. В результате выполнения команды Duck анимат приседает, а при- менение этой команды в сочетании с командами движения позволяет заставить анимата ползти. Управление запасами В предыдущей части книги был предложен запрос, позволяющий определить, ка- кие виды оружия являются доступными. Тот же интерфейс может быть дополнен в целях получения возможности свободно обращаться с любыми предметами, имеющимися в запасе: void ItemsAvailable(vector<Entity>& items, const Entity::Type& unifier = 0);
446 Часть V. Работа с предметами и объектами Интерфейс доступа к оружию используется весьма часто, поэтому способ органи- зации работы, в котором этот запрос реализуется отдельно, позволяет повысить удоб- ство его использования, а для интерпретации полученных результатов требуется меньше кода. Чтобы действительно активизировать какой-то предмет, применяемый в игре, можно воспользоваться идентифицирующим символом, хранимым с помощью некоторого объекта, и вызвать другую функцию: bool Useltem( Symbol& item ); Благодаря этому может быть обеспечена возможность предоставить в использо- вание аниматам такие предметы, как глушитель, разрешение на учетверенный ущерб или даже ключи, если эти предметы не активизируются автоматически. Зрение Интерфейс доступа к зрению не требует каких-либо функциональных дополне- ний; через этот интерфейс передаются лишь дополнительные данные. Например, двери и платформы могут просто рассматриваться наравне с другими сущностями, поэтому для восприятия с помощью зрения достаточно выполнить такой же вызов функции visibleEntities (), как и для определения других сущностей. Плат- форма как сущность должна гарантировать предоставление относящейся к ней ин- формации, но, например, лестницы в машине игры Quake 2 не рассматриваются как сущности, поэтому необходимо предусмотреть возможность обращения с этими объектами в рамках создаваемой инфраструктуры. Такие сущности, как двери, несут некоторую дополнительную информацию, ука- зывающую, являются ли они открытыми, закрытыми или запертыми на замок. Ос- новой трактовки этой информации может стать наследование сущностей в игре. (Иными словами, для реализации сущности двери применяется своего рода объект.) Для реализации такого подхода с помощью наиболее простого способа, подобного предусмотренному в языке С, может применяться специальный указатель на дан- ные, связанный с каждой сущностью, который должен интерпретироваться средст- вами ИИ в зависимости от его типа. Еще один вариант состоит в том, чтобы обеспе- чить возможность наследования каждой сущности от базового класса и обработки ее с помощью интерфейса путем приведения типа. Оба подхода являются аналогичны- ми по используемым в них средствам, хотя подход, основанный на наследовании классов C++, более надежен. Для удобства обращения с дверями и платформами требуется также механизм пе- редачи сообщений. Например, как показано ниже, для передачи сигналов о том. что дверь открыта или платформа остановилась после достижения места ее назначения, должны использоваться события. Для передачи анимату предупреждений о возник- новении этих событий могут также применяться функции обратного вызова. void OnDoorOpen( const Event& event ); Содержимое полученного сообщения должно предоставлять информацию, необ- ходимую для определения местонахождения двери.
^latattaus,^. Глава 29. Анализ и разработка спецификаций 447 Физическое состояние Наконец, необходимо дополнить физический интерфейс так, чтобы он мог воз- вращать информацию о состоянии анимата. Для получения такой информации могут применяться, в частности, запросы, касающиеся того, схватился ли анимат за лестни- цу, стоит ли на платформе, или даже того, в какой среде он находится (например, в воздухе или воде). Для достижения указанной цели может использоваться коллекция простых запро- сов. Как оказалось, такой подход более удобен по сравнению с подходом, который предусматривает применение одного универсального запроса с параметрами и слож- ными типами выходных данных: bool isPlatform(); bool isLadder() ; bool isWater(); bool isAir(); Эти запросы можно легко заключить в оболочку, имеющую вид одной функции, которая может принимать в случае необходимости в качестве параметра данные та- кого типа, как перечисление. Резюме Изложение материала в данной главе началось с анализа платформы для ИИ. Особое внимание было уделено описанию объектов и хитроумных изобретений, применяемых в среде, и объяснению того, как может быть организовано обращение с ними с помощью машины. В частности, была представлена указанная ниже информация. > Предположения. Сбор предметов осуществляется автоматически. Некоторые из собранных предметов мгновенно активизируются, а другие пополняют за- пасы. Хитроумные изобретения действуют в основном автономно, но некото- рые из них требуют, чтобы игрок нажимал кнопки. > Ограничения. Некоторые предметы имеют ограниченную применимость. (Напри- мер, глушитель действует только при ведении огня, а разрешение на нанесение учетверенного ущерба реализуется, только если участник игры имеет возможность причинить кому-либо ущерб.) Чтобы можно было использовать хитроумные изо- бретения правильно, требуется выполнение определенных последовательностей действий. > Рекомендации. Для упрощения разработки средств ИИ требуются такие вари- анты среды, в которых можно найти много разных предметов. А для того что- бы средства ИИ могли предпринять попытку воспользоваться всеми хитроум- ными изобретениями, должны быть доступными многие разные уровни игры. Во втором разделе настоящей главы осуществляется попытка дать общую трак- товку рассматриваемой задачи путем исследования поведения людей-игроков. Это позволяет дать определение задачи на следующих двух уровнях.
448 Часть V. Работа с предметами и объектами > Критерии. Определены свойства высокого уровня, характерные для этой зада- чи (эффективность и адекватность), после чего эти критерии применены для оценки форм поведения средств ИИ. > Определение задачи. Описание ожидаемых результатов каждого задания было представлено в виде поэтапного обзора. Эти данные могут служить для про- верки успешной реализации в предстоящей фазе разработки приложения. В последнем разделе данной главы определяется спецификация необходимых ин- терфейсов или, скорее, дополняются существующие интерфейсы. Это позволяет опре- делить, какие требуются дополнительные входные и выходные данные, и уточнить формы взаимодействия средств ИИ с той платформой, на которой они реализованы. Прежде чем перейти к использованию этих интерфейсов, необходимо рассмот- реть еще некоторые методы ИИ. Таковыми, в частности, являются нечеткие экс- пертные системы, которые можно считать расширенным вариантом систем, осно- ванных на правилах, поскольку они позволяют реализовать более сложные формы поведения, связанные с применением дверей и платформ, или даже обеспечить подъем по лестницам. Практическая демонстрационная версия Для демонстрации лежащих в основе форм поведения концепций, которые обеспечивают сбор пред- метов, разработан анимат Greedy. Он пытается подобрать любые предметы, находящиеся в его поле зрения, передвигаясь в сторону предметов, которые еще не собраны или остаются недоступными. Применяемые при этом средства ИИ основаны на использовании форм поведения, обеспечивающих управлением движением, которые описаны в главе 10, “Изменение направления движения при огибании препятствий”. Исходный код и двоичные файлы для этого анимата находятся по адресу http: / /AiGameDev.com/.
Гпава 30 Нечеткая логика В ЭТОЙ ГЛАВЕ- Классическая логика позволяет моделировать только четко обозначенные ситуации, напри- мер показывать, является ли противник мертвым или нет. С другой стороны, вероятности выражают степень правдоподобия того, что четкая перемен- ная имеет какое-то конкретное значение, напри- мер позволяют указать, что имеются 80%-ные шан- сы на то, что данная конкретная дверь открыта. Понятие нечеткости является концептуально иным, поскольку позволяет условно обозначать степени истинности, например указывать, что про- тивник почти полностью расстался с жизнью, а не- которая дверь почти совсем закрыта. Дело в том, что иногда средства ИИ, действующие на основе четкой логики, не позволяют преодолеть недостат- ки, вызванные чрезмерно определенными реше- ниями и чрезвычайно роботизированным управле- нием. Подход, основанный на использовании не- четкой логики, позволяет преодолеть эти недостат- ки, выбирая полутени между черным и белым. В результате этого аниматы становятся способны- ми выбирать степень интенсивности нападения (принимая соответствующие решения) или точно поворачиваться на небольшие углы (под плавно изменяющимся воздействием средств управления). Форма представления знаний, основанная на нечеткой логике, является вполне доступной для понимания и удивительно напоминает результа- ты моделирования мышления человека. Приме- нение модели, более похожей на лингвистические определения, позволяет упростить проектирова- ние систем, благодаря чему возможность вводить дополнительные знания в систему приобретают рядовые пользователи (а не только эксперты). • Дополнения к теории множеств • Нечеткие представления и преобразования • Нечеткая логика • Нечеткое управление и принятие решений • Обсуждение полученных результатов • Резюме
450 Часть V. Работа с предметами и объектами Большинство робототехнических архитектур позволяют легко реализовать кон- цепцию нечеткости (применяя нечеткие средства восприятия или осуществления действий), но воспользоваться всей мощью нечеткой логики позволяют лишь нечет- кие экспертные системы. В настоящей главе рассматриваются перечисленные ниже темы. > Теория нечетких множеств как логический фундамент применяемых методов. > Общие принципы представления информации с помощью нечеткой логики, а также способы прямого и обратного преобразования четких и нечетких представлений. > Нечеткая логика как способ манипулирования нечеткими переменными с по- мощью операций и выражений. > Основные сведения о реализации принципов нечеткой логики в экспертных системах, позволяющих осуществлять принятие решений и управление. Теоретические сведения, приведенные в настоящей главе, могут использоваться для решения широкого спектра задач, с которыми приходится сталкиваться при раз- работке игр, достигая таких степеней реалистичности, которые трудно осуществить с помощью каких-либо методов четкой логики. В следующей главе рассматриваются методы на основе нечеткой логики, с помощью которых аниматы получают возмож- ность взбираться по лестницам и использовать платформы. Дополнения к теории множеств Нечеткие подходы, главным образом, основаны на теории нечетких множеств. В настоящем разделе приведены формальные определения, на которых базируется теория нечетких множеств, и дано их сравнение с классической теорией множеств. Фактически теория нечетких множеств может рассматриваться как расширение классической теории множеств, которая широко используется в программировании. Основные принципы В классической теории множеств все множества являются четкими. Истинность высказываний, касающихся того, принадлежит ли элемент к множеству, также четко определена (может принимать лишь значения “истина” или “ложь”). Иными словами, элемент может либо принадлежать, либо не принадлежать к множеству. Числовые зна- чения также четко выражены. Под этим подразумевается, что каждая величина досто- верно известна и однозначно выражена (например, health = 68, armor = 41). Тем не менее известно, что не все в нашей жизни может быть выражено с полной определенностью. Но четкие формулировки не позволяют выразить идею, что неко- торый элемент достаточно близко соответствует множеству, но не может рассматри- ваться как полностью принадлежащий к нему. С другой стороны, классическая ло- гика не позволяет выразить мысль о том, что некоторое высказывание можно счи- тать почти полностью истинным или не совсем ложным. А классическая теория множеств не позволяет создать множество, не являющееся точно определенным,
’Nataltauslik Глава 30. Нечеткая логика 451 или задать число, которое является относительно близким к некоторому значению. Поэтому необходимо найти способ представления частичной принадлежности эле- мента к множеству. Нечеткие множества Теория нечетких множеств позволяет преодолеть указанные ограничения. Для этого каждое множество, по существу, определяется с использованием функции принадлежно- сти, позволяющей плавно варьировать степень принадлежности элементов к множеству, а не задавать четкие границы множества. Для каждого значения в предметной области X функция принадлежности задает вещественное число в области определения [0,1]. Это число называется степенью принадлежности; значение 1 указывает, что элемент полно- стью принадлежит к множеству, а 0 говорит о том, что элемент не находится в множест- ве. Промежуточные значения позволяют обозначить частичную принадлежность: Ца : X—> [1,0] х а цА(х) |—> х е х Примеры графиков функции принадлежности показаны на рис. 30.1. Как прави- ло, функция принадлежности обозначается с помощью греческой буквы мю (р). Приведенное выще уравнение указывает на то, что функция принадлежности рА, от- носящаяся к данному конкретному множеству А, отображает область определения х на интервал [0,1]. Иначе эту мысль можно выразить так, что функция принадлеж- ности ставит в соответствие каждому элементу х значение степени его принадлеж- ности к множеству А, которое записывается как рА (х). Но в целях упрощения часто используется обозначение цА (х) = А (х). а вс Рис. 30.1. Примеры различных функций принадлежности к нечет- ким множествам: функция с графиком треугольной формы (А), функция с графикам криволинейной формы (в) и функция с графи- ком в виде четкого одноэлементного множества (С) Строго говоря, нечеткое множество представляет собой коллекцию упорядочен- ных пар, состоящих из элементов области определения и соответствующих им сте- пеней принадлежности, (х, рА (х)). Каждая такая пара может рассматриваться как нечеткое одноэлементное множество [41]. Следующее уравнение описывает А как множество таких одноэлементных множеств: А={(х, цА(х))) |—> х е X
452 Часть V. Работа с предметами и объектами На практике зачастую проще представить множество А с помощью вектора а, а не представлять его в виде коллекции одноэлементных множеств. Вектор содержит значе- ния степеней принадлежности, соответствующие элементам области определения. Что- бы иметь возможность использовать такой способ представления, необходимо знать, как связаны между собой значения степеней принадлежности в векторе и элементы из об- ласти определения. Такого соггветствия можно достичь, располагая элементы и значе- ния в одном и том же порядке. Предположим, что А — множество объектов, проявляю- щих враждебные намерения, которые-определены для всех объектов в X: X = {door, gun, fred, botl} A = {0 0 0.3 botl} Таким образом, векторное определение должно соответствовать следующему оп- ределению А в виде одноэлементных множеств: А = {(door,0), (gun,0), (fred,0.3), (botl,0.8)} В данном определении для каждого объекта указана степень его враждебности. Представив все необходимые данные в виде подобных векторов, можно приступить к манипуляциям этими векторами. В частности, для комбинирования нечетких множеств могут применяться различные операции, по аналогии с тем, что использу- ется в классической теории множеств. Теория множеств Для подготовки базисных определений, позволяющих манипулировать нечетки- ми множествами, необходимо разработать теорию нечетких множеств. Прежде всего отметим, что два множества равны, если и только если (<=>) две функции принад- лежности двух множеств являются одинаковыми для всех значений х, Vx: А = В <=> Vx: А(х) = В(х) Кроме того, могут быть выражены отношения между множествами, такие как от- ношения включения (строгое подмножество, обозначаемое как с). Определение от- ношения включения может применяться вместе с определением отношения равен- ства для получения определения нестрогого подмножества. Множество является строгим подмножеством другого множества, если и только если все его элементы х имеют меньшую степень принадлежности: А С В <=> Vx: А(х) < В(х) Операции с нечеткими множествами, такие как and (пересечение множеств, п) и OR (объединение множеств, о), определяются следующим образом: С = А П В <=> Vx: С(х) = min(A(x), В(х)) С = А О В « Vx: С(х) = тах(А(х), В(х)) Если требуется определить функцию принадлежности, которая включает два множества, используется максимальное значение двух функций (логическая опера- ция OR). Если же необходимо определить общую часть множеств, применяется ми- нимальное значение (логическая операция AND). Указанные определения можно проще проиллюстрировать на графике, как показано на рис. 30.2.
^aiattaus,^. Глава 30. Нечеткая логика 453 Рис. 30.2. Операции с нечеткими множествами; операция OR определяет максимум двух значений, а операция AND — минимум двух значений Дополнение А множества А определяется следующим образом (логическая опера- ция NOT): А(х) = 1 - А(х) Множество является пустым, если и только если значения принадлежности для всех его элементов всегда равны 0: А = 0 <=> Vx: А(х) = 0 Нечеткие модификаторы Теория нечетких множеств позволяет представить выражение very dangerous (очень опасен). В таком случае прилагательное dangerous представляется с помо- щью нечеткого множества; принадлежность участников игры к этому нечеткому множеству определяется путем указания той или иной степени принадлежности. Наречие very— это лингвистический модификатор, позволяющий изменить смысл высказываний, в которых используются подобные выражения. Таким обра- зом, нечеткий модификатор может рассматриваться как операция на множестве: dangerous =[0 0.1 0.4 0.8 1] very dangerous = [0 0.01 0.16 0.64 1] Приведенный пример показывает, что элемент, не характеризующийся как опас- ный (имеющий степень принадлежности 0), не является очень опасным (0). С дру- гой стороны, элемент, степень принадлежности которого к категории опасных оце- нивается как 1, является очень опасным. Для всех элементов, имеющих промежу- точную степень принадлежности, соответствующее значение степени принадлежно- сти уменьшается, как показано на рис. 30.3.
454 Часть V. Работа с предметами и объектами Рис. 30.3. Примеры модифицированных множеств, созданных на основе исходного нечеткого множества; одно из множеств полу- чено с использованием ограничительного модификатора (very), а другое — с помощью модификатора, задающего смещение С более формальной точки зрения модификатор m может рассматриваться как функция, заданная в области определения всех нечетких множеств, F (X). Эта функ- ция преобразует любое множество а в другое модифицированное множество, m (а): m: F(X)—>F(X) х а Ца(х) |-> х е х На практике для определения того, является ли некоторый объект “очень опасным”, исходя из оценки, насколько он опасен, используется непосредственное отображение, которое может быть применено к отдельному элементу и ко всему множеству: very а = а2 extremely а = а3 Выше приведены примеры модификаторов very (очень) и extremely (чрезвычайно), которые принято называть ограничительными, поскольку модифи- цированное с их помощью нечеткое множество является подмножеством первона- чального множества, А с т(А), поэтому все модифицированные значения степе- ней принадлежности становятся ниже. И наоборот, могут также применяться рас- ширительные модификаторы, обеспечивающие соблюдение соотношения т(А)сА, когда значения степеней принадлежности для модифицированного множества больше или равны значениям исходного множества, как в следующем примере: more or less а = y[a 3r- slightly a = y]a Важно помнить, что значения степеней принадлежности должны находиться в диапазоне [ 0.. 1 ], поэтому при значениях х больше 1 значения ах становятся мень- ше, а при значениях х меньше 1 — больше. При х = +°° модификатор называется ехас 11у (точно), а при х = 0 — ближайшим по смыслу лингвистическим термином, по-видимому, становится always (всегда), как в примере с a® = 1.
^alaitaus,^. Глава 30. Нечеткая логика 455 Предусмотрена также возможность использовать сдвигающие модификаторы, которые “сдвигают” значения степеней принадлежности к нечеткому множеству на постоянную величину, А (х) = ш (А (х + к)). Такие модификаторы иногда точнее выражают интуитивный смысл наречий, применяемых в человеческом общении. Нечеткие представления и преобразования Теория нечетких множеств позволяет определять нечеткие значения, хранящиеся в отдельных нечетких переменных. Такие нечеткие переменные могут применяться в различных сочетаниях для создания так называемых лингвистических переменных; понятие лингвистических переменных более доступно для интуитивного понимания. Для инициализации таких нечетких значений исходя из четко заданных чисел используется функция принадлежности. Преобразование четких значений в нечет- кие принято называть переходом от четкого представления к нечеткому или фаззи- фикацией (fuzzification), а обратное преобразование — переходом от нечеткого представления к четкому или дефаззификацией (defuzzification). Нечеткие переменные и значения Любая нечеткая переменная может рассматриваться как терм, связанный с един- ственным числом с плавающей точкой, представляющим нечеткое истинностное значение. По существу, в этом определении нет ничего сложного; оно лишь указы- вает на то, что задана некоторая пара “символ-число”. Например, переменные, по- казанные в табл. 30.1, могут представлять противника в игре на выживание. Таблица 30.1. Коллекции нечетких переменных, каждой из которых присвоено конкретное значение, представляющее противника Терм Значение Healthy (ЖиЗНвСПОСОбНЫЙ) 0.9 Dangerous (Опасный) 0.3 Moving (Перемещение) 0.0 С концептуальной точки зрения эти переменные являются независимыми друг от друга. Чтобы дать каждому понятию более интуитивно доступное определение, можно применять сочетание нечетких переменных. Лингвистические переменные Эти переменные имеют более сложное представление, но, как показывает практи- ка, в большей степени доступны для понимания. В лингвистических переменных вся мощь нечеткой логики применяется для моделирования реальных концепций, что по- зволяет не ограничиваться отдельной нечеткой переменной и не быть вынужденным задавать значения четких переменных со всей необходимой для этого точностью.
456 Часть V. Работа с предметами и объектами В виде лингвистической переменной можно выразить понятия высокого уровня, такие как жизнеспособность (табл. 30.1) и преданность (табл. 30.2). Но лингвистиче- ская переменная связана не только с одной нечеткой переменной, а соответствует целой коллекции таких переменных, каждая из которых представляет собой пару “символ-вещественное число”. Каждый подобный символ рассматривается как терм; группа нечетких термов именуется множеством термов. Таблица 302. Лингвистическая переменная, представляющая понятие преданности Множество термов Значения {enemy,neutral, friendly} [0.0, 0.4, 0.9] Эти нечеткие переменные используются в сочетании друг с другом для представ- ления лингвистической переменной. Но отдельно взятые нечеткие переменные не имеют того же смысла, что и вся лингвистическая переменная. Лингвистические переменные определяются на базовых переменных. А базовые переменные соответствуют множеству значений, на котором определены термы. Ба- зовые переменные могут соответствовать непрерывным четким значениям и нечет- ким термам (рис. 30.4). Множество терминов Рис. 30.4. Лингвистическая переменная, представляющая понятие преданности, определена как коллекция функций принадлежности, заданных с помощью единственной базовой переменной (любовь) Термы представляются в виде нечетких множеств. За некоторыми термами за- креплены модификаторы, а другие термы неизменно применяются без модификато- ров; такие термы принято называть первичными. Фаззификация Фаззификация — это процесс создания нечеткой переменной исходя из четко заданного значения. Фаззификация осуществляется с использованием нечетких множеств. Функция принадлежности определяет значение нечеткой переменной, как показано на рис. 30.5. Область определения фактически представляет собой диапазон изменения четкого значения. Подстановка четкого значения в функцию принадлежности приводит к получению значения Степени принадлежности.
^lalaHausii Глава 30. Нечеткая логика 457 Рис. 30.5. Использование функции принадлежности для определения нечеткого значения с помощью четкого зна- чения, относящегося к некоторой области определения Вполне очевидно, что быстродействие процесса фаззификации полностью зави- сит от эффективности функции принадлежности. Если функция принадлежности является достаточно простой, то более быстродействующим становится подход, пре- дусматривающий динамическое вычисление ее значений с помощью реализации на языке, поддерживаемом системой. А если функция принадлежности является более сложной, то для ускорения процесса вычисления ее значений может потребоваться применение поисковых таблиц. Дефаззификация Процесс дефаззификации предназначен для достижения цели, прямо противопо- ложной фаззификации, — преобразования нечеткого значения в четкое. Если преоб- разуемые нечеткие значения являются атомарными, то процесс их преобразования осуществляется довольно просто, а в случае лингвистических переменных этот про- цесс может стать более сложным. Возникающая при этом проблема состоит в том, что должно быть найдено единственное четкое значение, соответствующее понятию, вы- раженному с помощью множества нечетких значений. При осуществлении такого процесса, в принципе, невозможно обойтись без потери информации; процесс преобразования может осуществляться без потерь только в про- стейших случаях (но таким свойством обладают не все методы). Поэтому с каждым ме- тодом должен быть связан отдельный набор исходных предположений, а сами эти ме- тоды характеризуются различными преимуществами и недостатками. Кроме того, иногда при решении некоторых типов задач для дефаззификации могут применяться различные подходы (рис. 30.6). Единый подход к решению этой задачи отсутствует, поскольку даже сами люди переходят от нечеткого представления лингвистических понятий к четкому, применяя способы, зависящие от конкретной задачи. Для дефаззификации применяются два основных подхода, описанных ниже. > В подходах, основанных на использовании максимумов, определяются наивыс- шие точки графика функции, принадлежности. В варианте этого подхода с исполь- зованием первого из максимумов, по существу, выбирается четкое значение, соот- ветствующее наивысшей точке из всех графиков функций принадлежности, а в разновидности, предусматривающей использование среднего из максимальных значений, вместо этого для определения четкого значения применяется среднее среди всех максимумов. Иногда к этому значению среднего применяется коэффи- циент, представляющий собой значение степени принадлежности.
458 Часть V. Работа с предметами и объектами Рис. 30.6. Применение нечетких множеств для определения чет- кого значения на основе заданных нечетких значений > Для осуществления подходов, основанных на определении центров масс, тре- буется вычисление площадей, покрываемых графиками функций принадлеж- ности. Четкое значение может соответствовать центру масс всего нечеткого множества или среднему значению центров каждой площади. Осуществление подобного подхода требует значительных вычислительных ресурсов, посколь- ку для этого необходимо либо выполнение большого объема аналитических расчетов, либо применение математических формул для вычисления интегра- ла функции принадлежности (для определения площади). Если в качестве нечетких множеств используются простые множества, состоящие из отдельных элементов, то подход, основанный на применении максимумов, пока- зывает вполне удовлетворительные результаты. Этот подход является более удобным в реализации, а его быстродействие на порядок выше. К тому же, в действительно- сти вычисление максимальных значений иногда не требуется, поскольку эти значе- ния часто уже известны (ведь они используются для определения самой функции принадлежности). Методы, основанные на вычислении центров масс, многие рас- сматривают как более правильные с математической точки зрения, но обеспечивае- мая ими точность часто кажется неуместной в связи с неформальным характером самих нечетких рассуждений. Нечеткая логика Выше в данной главе было показано, что нечеткие множества могут применяться для прямого и обратного преобразования четких значений в нечеткие, но при вы- полнении операций над нечеткими значениями можно полностью обойтись без ис- пользования нечетких множеств. Для этого служит нечеткая логика.
flafattaus^ Глава 30. Нечеткая логика 459 Операции В основе нечеткой логики лежат понятия, аналогичные тем, которые позволяют перейти от классической теории множеств к теории нечетких множеств, но гораздо более простые. И в этом случае для замены операндов логических операций and/or используются операции min/хпах. Основные операции нечеткой логики предикатов определены в табл. 30.3. Таблица 30.3. Нечеткие операции, соответствующие им обозначения булевой логики и уравнения, используемые для вычисления результирующего нечеткого значения Операция Обозначение Формула NOT l-x AND л MIN(x,y) OR v МАХ(х,у) IMPLIES МАХ(1-х,у) МАХ(0,х+у-1) Для реализации систем, основанных на использовании нечеткой логики, приме- няются различные способы, но каждому из этих вариантов реализации может быть сопоставлен соответствующий ему аналог на основе булевой логики. Очевидно, что операции, приведенные в табл. 30.3, могут применяться в различных сочетаниях для создания сложных выражений. Лингвистические выражения Нечеткая логика позволяет создавать сложные выражения, соответствующие ин- туитивно понятным высказываниям на естественном языке (таком, как английский). В этом состоит одна из причин, по которым стоящая перед экспертами задача преоб- разования своих знаний в нечеткую форму, как показано в табл. 30.4, становится отно- сительно несложной. Таблица 30.4. Некоторые выражения на английском языке и соответствующие им нечеткие выражения, в которых используются нечеткие значения, операции и модификаторы Оператор Dead or alive Выражение Extremely nasty and more or less dead Shot and bleeding badly implies dying 2 s л b => d Лингвистические выражения могут рассматриваться как множества нечетких зна- чений, объединенных с помощью нечетких операций. Для изменения смысла нечетких значений могут также использоваться лингвистические модификаторы (такие, как extremely (чрезвычайно) и slightly (слегка)), о чем в данной главе шла речь в раз- деле, посвященном теории нечетких множеств.
460 Часть V. Работа с предметами и объектами В процессе преобразования обычного текста на английском языке в нечеткие лин- гвистические выражения могут возникнуть некоторые сложности. Очевидно, что боль- шинство прилагательных соответствует нечетким значениям. Но далеко не так легко оп- ределить смысл наречия; например, как сформулировать смысл выражения bleeding badly (истекающий кровью) в терминах понятия bleeding (кровотечение)? Очевид- но, что в данном случае слово badly — модификатор. Но найти уравнение, позво- ляющее передать смысл модификатора, не так легко, как высказать определенную мысль на естественном языке, поэтому для этой цели часто требуется привлечение инженера по знаниям. Возражения против применения нечеткой логики Тот факт, что в основу нечеткой логики легла теория множеств, все еще вызывает определенные возражения, особенно в сообществе специалистов по классической логике. На первый взгляд кажется очевидной причина, по которой требуется приме- нение нечетких значений, характеризующихся различными степенями принадлеж- ности, но разве нельзя промоделировать ту же конструкцию с использованием сло- жившихся математических понятий? По этой причине исследователи, занимающиеся проблемами нечеткой логики, приложили большие усилия для выявления различий между нечеткостью и вероят- ностью. В действительности эти понятия являются аналогичными, но между ними имеются концептуальные различия. Нечеткость фактически представляет собой де- терминированную неопределенность. Нечеткое значение измеряет ту степень, в ко- торой некоторое высказывание является истинным. С другой стороны, вероятность выражает правдоподобие того, что некоторое высказывание является либо истин- ным, либо ложным. Еще одной важной проблемой, связанной с теоретическими основами нечеткой логики, является кажущаяся несовместимость. Например, если для выявления ис- кусных игроков применяется гладкая функция принадлежности, то нечеткое множе- ство игроков, которые являются, с одной стороны, опытными, а с другой стороны, неопытными, не пусто! Этому факту может быть дано формальное объяснение; дело в том, что некоторые предположения, касающиеся булевой логики, не распростра- няются на нечеткую логику. Это связано с самим характером нечетких операций, но если в их основу будут положены какие-то другие функции, а не min/max, то воз- никнут другие проблемы несовместимости. Тем не менее, кажется немного странным то, что теория, столь доступная для по- нимания (и характеризующаяся наличием глубоких аналогий с человеческими рассу- ждениями), может проявлять логическую несовместимость в таких простых примерах. Но создается впечатление, что нечеткая логика все равно позволяет лучше моделиро- вать человеческие знания и рассуждения, даже несмотря на эти недостатки. К тому же, для исследователей в области нечеткой логики оказалось весьма бла- гоприятным то обстоятельство, что нечеткая логика проявила себя как чрезвычайно успешный подход к созданию механизмов управления (что на первый взгляд пред- ставляется довольно неожиданным). Нечеткая логика находит свое практическое применение в многочисленных научных отраслях, начиная от распознавания обра- зов и заканчивая анализом скрытых закономерностей в данных. В числе других при-
Глава 30. Нечеткая логика 461 ложений можно назвать регрессионный анализ, создание систем управления и даже функциональную аппроксимацию. Тем не менее в некоторых системах могут использоваться важные упрощения, вытекающие из теории нечетких множеств (например, позволяющие непосредст- венно применять булевы выходные значения). Из этого следует, что весь процесс рассуждений просто сводится к стандартной логике. Подобные ситуации регулярно возникают в машинах, реализующих игровые средства ИИ; нечеткость используется в качестве основополагающего понятия, но в целях повышения эффективности не- четкая логика упрощается так, что позволяет обрабатывать четкие значения [3]. Нечеткое управление и принятие решений В настоящем разделе речь идет о том, как можно применить нечеткую логику для создания систем управления или архитектур принятия решений. Подобные прило- жения являются весьма успешно действующими, и причины этого можно легко по- нять, поскольку применяемые методы столь близко напоминают методы систем, ос- нованных на правилах (а как показано в главе 11, “Системы, основанные на правилах”, эти методы ИИ относятся к числу наиболее успешных). На первый взгляд кажется, что само понятие нечеткого управления является па- радоксальным, и возникает вопрос, может ли вообще успешно применяться нечет- кое управление. Очевидно, что ответ на этот вопрос является положительным. На- пример, сами люди демонстрируют способность осуществлять в высшей степени адаптивное управление, не используя точной цифровой информации. Представля- ется вполне очевидным, что на практике требуется использование таких программи- руемых контроллеров, которые допускают ввод неточных и зашумленных данных. Подобная система может оказаться способной справляться со сложными ситуация- ми в более интеллектуальной форме, а также может быть проще в реализации. Такое же преимущество способствует успешному принятию решений с использованием рассуждений, в которых применяются факты, отличающиеся различными степеня- ми истинности, и которые осуществляются по такому же принципу, как человече- ские рассуждения. Рабочая память В нечетких системах, кроме прочих конструктивных компонентов, применяется также рабочая память. Вполне естественно, что символы, хранящиеся в рабочей па- мяти, не относятся к категории четких значений, а являются нечеткими. Но разли- чия между рабочей памятью в нечетких системах и стандартных системах, основан- ных на правилах, не столь велики, есть не считать тех очевидных различий, которые обусловлены применением понятия нечеткости. В действительности в большинстве реализаций для хранения нечетких переменных может использоваться один и тот же универсальный контейнер.
462 Часть V. Работа с предметами и объектами База знаний В основе функционирования нечетких систем, как и систем, основанных на прави- лах, лежит база знаний, содержащая определенное множество правил. Эти правила не определены с использованием четких символов, а включают в себя нечеткие переменные (табл. 30.5). В табл. 30.5 нечеткими переменными яшыкггся unconfident (неуверен- ный), vulnerable (уязвимый), attack (нападение) и retreat (отступление). Кроме того, enemy (противник) и accuracy (точность) представляют собой лингвистические переменные, a heal thy/damaged/dying (жизнеспособный/раненый/умираЮщий) и high/medium/ low (высокий/средний/низкий) — это нечеткие термы. Таблица 30.5. Нечеткие правила, определенные в базе знаний Индекс Правило 1 IF NOT unconfident THEN attack 2 IF very unconfident OR somewhat vulnerable THEN retreat 3 IF ammo IS low AND extremely damaged THEN more or less unconfident 4 IF enemy IS healthy THEN NOT unconfident 5 IF enemy IS dying and accuracy IS very high THEN attack Как и в системах, основанных на правилах, правила состоят из конструкции ан- тецедента (с ключевым словом if) и конструкции консеквента (с ключевым сло- вом THEN). Правила в нечеткой системе могут быть представлены не только в ос- новной форме, но и в виде двух важных расширений, как описано ниже. > В качестве элементов правил могут использоваться лингвистические переменные. Например, если в виде лингвистической переменной выражено понятие предан- ности (allegiance), то в правилах может применяться ссылка на соответствую- щий конкретный нечеткий терм. Такая ссылка формируется с использованием ключевого слова IS, например IF allegiance IS friendly THEN happy. Конструкция (M is X) упрощается до единственной нечеткой переменной; та- кая переменная может рассматриваться как средство доступа к переменной X, от- носящейся к м. > К переменным для уточнения их смысла могут применяться нечеткие модифи- каторы. Модификаторы чаще всего применяются к конструкции антецедента, но в некоторых случаях могут использоваться и в конструкции консеквента. Несмотря на то что нечеткие системы допускают применение указанных допол- нений, сам процесс приобретения знаний в такой системе может оказаться немного проще. В действительности нечеткие правила позволяют гораздо точнее передавать человеческие знания, что позволяет сократить общее количество необходимых пра- вил. Лингвистические выражения и модификаторы, применяемые в процессе рабо- ты, являются весьма доступными для понимания, поэтому выполнение задачи до- бавления правил в систему можно поручить почти любому. Основная проблема состоит в том, что для каждой из нечетких переменных должны быть созданы функции принадлежности. Выходные данные системы в зна- чительной степени зависят от функций принадлежности, поэтому очень важно пра-
Глава 30. Нечеткая логика 463 вильно решить задачу их создания. Как описано ниже, для создания функций при- надлежности могут использоваться различные подходы. > Инженер по знаниям может проконсультироваться с экспертами обычным образом и получить достаточный объем информации, чтобы понять характер функции принадлежности. > Может быть также проведен опрос. При этом разные специалисты должны сообщить, как они определяют те или другие концепции, после чего для соз- дания функций принадлежности, которые отражают усредненные мнения, можно воспользоваться статистическими методами. > В обоих случаях часто возникает необходимость в выполнении последова- тельной настройки. Если полученные результаты не соответствуют ожидани- ям, разработчик может попытаться проследить за ходом рассуждений и откор- ректировать ошибочные функции принадлежности. После создания базы знаний и подготовки всех правил и функций принадлежно- сти можно приступить к их обработке интерпретатором. Интерпретатор нечеткой системы Интерпретатор нечеткой системы обеспечивает манипулирование переменными в рабочей памяти с помощью правил. Между нечеткими системами и четкими система- ми, основанными на правилах, обнаруживаются два ключевых различия, которые обу- словлены тем, как происходит согласование и формирование результатов с помощью правил. Таким образом, различия обнаруживаются в самых глубинных основаниях! Согласование Четкие системы позволяют однозначно определить, какие факты согласуются с пра- вилами, находящимися в настоящий момент в рабочей памяти. Все символы имеют либо истинное, либо ложное значение, поэтому можно легко выявить, какие конструкции ан- тецедентов являются применимыми. В нечеткой логике такие значения, как “истина” и “ложь”, представляют собой лишь частные случаи. Нечеткие значения главным образом характеризуются только частичной принадлежностью к множествам. Сама по себе такая ситуация не состав- ляет проблемы, ведь нечеткие правила предназначены для обработки нечетких вход- ных данных. Проблема возникает в связи с тем, что в любом случае невозможно исключить из рассмотрения большинство правил, поэтому приходится подставлять в соответст- вующие правила даже такие нечеткие значения, которые характеризуются неболь- шими степенями истинности. На практике большинство нечетких значений стано- вятся отличными от нуля после осуществления небольшого количества этапов экс- плуатации системы. Поэтому приходится проверять почти каждое правило! Наилучший способ справиться с этой проблемой состоит в ее предотвращении. Для этого необходимо постоянно следить за тем, чтобы количество правил в системе неизменно оставалось небольшим! Некоторые исследователи предлагали способы справиться с комбинаторным взрывом количества правил путем реорганизации пра-
464 Часть V. Работа с предметами и объектами вил, но предложенные ими способы оказались математически неточными и приме- нимыми лишь в нескольких случаях. В связи с этим создается впечатление, что единственный способ, позволяющий обеспечить работу с многочисленными нечеткими правилами, состоит в том, чтобы аппроксимировать вычисления для получения возможности отбрасывать ненужные правила, как и в четких системах, основанных на правилах. Для этого достаточно добиться того, чтобы интерпретатор мог просто игнорировать нечеткие значения, не превышающие определенного порогового уровня (рассматривая их как ложные). Например, можно предусмотреть, чтобы все нечеткие значения меньше 0.5 игно- рировались, а значения больше 0.5 повторно масштабировались таким образом, чтобы они попадали в диапазон [0,1]. Такой подход может рассматриваться как равнозначный корректировке всех функций принадлежности, но осуществление его не по указанному принципу, а в интерпретаторе должно стать более гибким и не ме- нее быстродействующим. Чем выше указанное пороговое значение, тем в большей степени система начинает напоминать четкую систему, основанную на правилах. Создается впечатление, что описанный выше способ позволяет найти наилучший компромисс между точностью и быстродействием. Но, к сожалению, окончательные результаты работы системы изменяются в зависимости от выбранного порогового значения, поэтому при проектировании подобной системы необходимо соблюдать осторожность. Логический вывод Логический вывод — это процесс, применяемый к каждому правилу. По существу, этот процесс предназначен для определения степени истинности части THEN правила исходя из части IF. Указанный процесс может быть осуществлен с использованием нечеткой логики, а для приведения любого лингвистического выражения к единствен- ному нечеткому значению могут применяться соответствующие нечеткие операции. Результирующее нечеткое значение может рассматриваться как выходное значе- ние правила. Но само выходное значение так же ассоциируется с одним из нечетких множеств, как и все прочие нечеткие переменные. Единственное назначение такого множества состоит в том, что с его помощью осуществляется дефаззификация. Как описано ниже, предусмотрены два различных способа вычисления нечеткого вы- ходного множества (рис. 30.7). Min Рис. 30.7. Пример использования нечеткого логического вывода для масштабирования выходного множества на основе метода с ис- пользованием функции PRODUCT; фактически применяемые нечет- кие значения приведены под кривыми функций принадлежности
Глава 30. Нечеткая логика 465 > При логическом выводе с помощью функции MIN, по существу, отсекается верхняя часть графика выходной функции принадлежности для формирова- ния выходного множества. > С другой стороны, при использовании логического вывода на основе функции PRODUCT график функции принадлежности масштабируется с учетом выход- ного значения. При использовании такой реализации обычно не возникает необходимость осу- ществлять манипуляции какими-либо нечеткими множествами. Две указанные раз- личные операции (MIN и product) могут рассматриваться как способы интерпрета- ции выходного значения и множества. Как таковые, эти интерпретации могут быть приняты в расчет на этапе дефаззификации; подобный способ вычисления принято называть отложенными вычислениями. Композиция Может оказаться, что одна и та же нечеткая переменная представлена в теле многих правил. На этапе формирования композиции должны быть приняты в расчет все конст- рукции консеквента, от которых зависит значение каждой отдельной переменной, и должно быть сформировано значение, в котором учитываются все значения переменных (рис. 30.8). И в этом случае применяются два описанных ниже общепринятых способа. Рис. 30.8. Пример нечеткой композиции по двум множествам с использованием суммирования > В методе композиции на основе функции МАХ используется максимальное значение из всех выходных значений правил. Поэтому окончательно получен- ное нечеткое значение может рассматриваться как конъюнкция (AND) по всем результатам, полученным на этапе логического вывода. > В методе композиции на основе функции SUM берется суммарное значение всех значений принадлежности. При этом может возникнуть проблема, по- скольку не исключена возможность получения итогового нечеткого значения, большего единицы. Поэтому за этапом суммирования часто следует этап де- фаззификации, позволяющий устранить указанную проблему. Альтернатив- ный способ состоит в том, чтобы все значения принад лежности усреднялись.
466 Часть V. Работа с предметами и объектами И в этом случае операция композиции может интерпретироваться как форми- рующая два набора выходных результатов — действительное нечеткое значение и соответствующее нечеткое множество. Само это множество используется на этапе дефаззификации, а полученное нечеткое значение снова вводится в рабочую память. Применяемый алгоритм В этом разделе рассматривается имитация нечеткой системы, в которой требует- ся, чтобы две копии рабочей памяти были согласованными. В одной из этих копий хранятся текущие результаты, а в другой запоминается предыдущее состояние (данные о предыдущем состоянии сохраняются до завершения обновления). Необ- ходимость в этом связана с тем, что обновление одной и той же рабочей памяти при- водит к получению в определенной степени непредсказуемых результатов, в зависи- мости от последовательности обработки. Все правила обрабатываются, как показано в листинге 30.1. Система может отбра- сывать некоторые правила, если значение конструкции антецедента точно равно 0. Чтобы можно было организовать такую обработку достаточно эффективно, необходи- мо применять структуру, подобную дереву, как указано в описании систем, основан- ных на правилах. В нечетких системах такой прием оправдывается не полностью, по- скольку указанные значения почти никогда не бывают равными 0. Листинг 30.1. Основной цикл имитации нечеткой системы current is the working memory with the latest fuzzy variables previous is the last state of the working memory for each value in the working memory previous[value] = current[value] current[value] = 0 end for for each rule result = evaluate( rule.expression, previous ) current[rule.body] = MAX( current[rule.body], result ) end for Обсуждение полученных результатов Нечеткие системы проявляют себя как удивительно надежные, способные справ- ляться с зашумленными и неполными данными. Несмотря на наличие некачествен- ных входных данных, нечеткие системы продолжают вырабатывать выходные дан- ные, изменяющиеся исключительно плавно, а также обнаруживают способность решать сложные задачи управления. Для обеспечения успешной эксплуатации таких систем достаточно предусмотреть лишь небольшую обратную связь. Нечеткие экспертные системы способны удивительно точно имитировать чело- веческие рассуждения, благодаря чему они становятся идеальным средством приня- тия решений. В системах на основе правил эмпирические правила применяются по такому же принципу, каким руководствуются эксперты, а нечеткое представление знаний напоминает представление знаний, используемое человеком.
Глава 30. Нечеткая логика 467 Нечеткие системы, как и системы, основанные на правилах, позволяют легко на- ращивать реализуемые возможности поэтапно. Каждое правило является модульным, и корректировка различных правил может осуществляться независимо друг от друга. Разработка правил для нечеткой системы осуществляется еще проще, чем для системы, основанной на правилах. Сами правила нечеткой системы тесно связаны с естественным языком, а это означает, что задача добавления новых правил может быть поручена почти любому. Применение в правилах лингвистических выражений не приводит к возникновению каких-либо проблем, касающихся основополагаю- щих средств нечеткой логики. При использовании нечетких систем не возникает необходимость разрабатывать математические модели решаемой задачи. Нечеткие системы позволяют использо- вать для управления своей работой простые эмпирические правила, созданные экс- пертами, которые тем не менее позволяют решать сложные нелинейные задачи. При эксплуатации нечетких систем приходится сталкиваться с такой присущей им особенностью, что в каждом цикле должны проводиться вычисления с использо- ванием большинства правил. Это связано с тем, что невозможно заранее отбросить даже те значения, которые почти не отличаются от ложных, поскольку эти значения рассматриваются наравне с теми, которые обрабатываются в стандартных системах, основанных на правилах. Такая организация работы требует значительных затрат вычислительных ресурсов, хотя необходимые затраты времени остаются пропор- циональными количеству используемых правил. Кроме того, могут возникать сложности при создании функций принадлежности для нечетких систем. Процесс создания функций принадлежности почти не поддается формализации и вполне может потребовать проведения многочисленных итераций. Кроме того, в литературе часто встречаются сообщения, что эксплуатация нечетких систем связана с возникновением комбинаторного взрыва. И действительно, если бы мы должны были перечислять правила, применимые для всех возможных комбинаций входных данных, то количество требуемых правил возрастало бы экспоненциально в зависимости от количества нечетких переменных. Но откровенно говоря, такая необ- ходимость возникает лишь в немногих случаях! Для решения подобной задачи не толь- ко требуются большие затраты времени (в связи с чем перед экспертами возникает не- осуществимая задача ввода всех необходимых правил в базу данных), но и такой под- ход является полностью необоснованным. При решении большинства задач нет необ- ходимости вводить в рабочую память все возможные правила, поскольку для их решения не нужно прибегать к подобным сложностям. Вместо этого можно восполь- зоваться идеями, на базе которых созданы системы, основанные на правилах, и пред- ставить знания в нечеткой системе неявным образом. Благодаря этому для решения задачи могут применяться только необходимые правила (причем количество этих пра- вил не должно превышать количество нечетких переменных). Резюме Основой нечетких методов являются теория нечетких множеств и нечеткая логи- ка. Краткие сведения об этих методах приведены ниже. > Нечеткое множество моделируется с помощью функции принадлежности, ко- торая плавно изменяется в единичном диапазоне.
468 Часть V. Работа с предметами и объектами > В качестве нечеткой переменной используется символ, связанный со степе- нью принадлежности к функции. > Лингвистические переменные представляют собой коллекции нечетких пере- менных, определенных на основе базовой переменной. > В нечеткой логике такие логические операции, как конъюнкция (and) и дизъюн- кция (OR), реализуются с помощью операций min и мах. > Нечеткие модификаторы — это функции, применяемые в целях модифика- ции смысла множеств и значений. Методы формирования нечеткого представления и обработки нечетких значений отличаются от тех, что используются при обработке обычных четких значений, по- этому часто возникает необходимость обеспечить прямое и обратное преобразова- ние четких значений в нечеткие, как указано ниже. > Фаззификация — это процесс преобразования четких значений в нечеткие с использованием функции принадлежности. > Процесс дефаззификации сводится к тому, что осуществляется интерпретация нечетких значений и соответствующей им функции принадлежности для оп- ределения наиболее точных оценок четких значений. Все возможности нечеткой логики реализуются с помощью нечетких экспертных систем, которые используются в такой же форме, как и системы, основанные на правилах. Тем не менее между системами первого и второго типа существуют сле- дующие важные различия. > Согласование правил осуществляется на основе одинаковых принципов, но значения нечетких переменных в теле правила изменяются в зависимости от значения нечеткого условия. > Для определения значения нечеткой переменной к телам правил применяется операция композиции. > Чтобы можно было обеспечить согласованность, применяются два массива в рабочей памяти; один содержит текущие значения нечетких переменных, а другой — расчетные значения. Нечеткие системы особенно подходят для обеспечения плавного управления и при- нятия решений с частичными истинностными значениями. В следующей главе показа- но, как можно применять нечеткую логику для управления поведением аниматов, в ча- стности, связанным с подъемом по лестницам и открытием дверей. Практическая демонстрационная версия В анимате, получившем название Domlnator, для управления всеми аспектами функционирования средств ИИ используется нечеткая экспертная система. Нечеткие правила служат в качестве основы метода управления движением и стрельбой, а принятие решений, касающихся выбора оружия, осу- ществляется с помощью нечеткой системы. Анимат Dominator показывает наилучшие характеристики среди всех аниматов, для управления которыми используются исключительно только методы ИИ. Исходный код и файлы данных для этого анимата можно найти в оперативном режиме по адресу http://AiGameDev.сот/.
JValaHaHs;^* Гпава 31 Усовершенствование ДВИГАТЕЛЬНЫХ ФОРМ ПОВЕДЕНИЯ С ИСПОЛЬЗОВАНИЕМ НЕЧЕТКИХ СИСТЕМ В ЭТОЙ ГЛАВЕ- • Нечеткие переменные и функции принадлежности • Нечеткие правила • Проект модуля • Оценка полученных результатов • Резюме Очевидно, что в сложных вариантах среды аниматы, обладающие лишь простыми на- выками предотвращения столкновений с препят- ствиями, будут испытывать трудности. В целях устранения этой проблемы можно использовать нечеткую логику для выработки форм поведения, необходимых при взаимодействии с такими хит- роумными изобретениями, как лестницы, двери и платформы. Подобные возможности создаются в результате проектирования, а не приобретаются с помощью обучения. А после того как анимат при- обретет способность формировать короткие после- довательности действий, он сможет столь же про- сто создавать другие, необходимые ему короткие последовательности. В настоящей главе основное внимание уделено рассмотрению указанных трех основных хитроумных изобретений, но несмотря на это, с применением идентичной методологии могут быть реализованы любые другие формы по- ведения, которые рассматривались в преды сущих главах. Вначале рассмотрим наиболее сложные фор- мы поведения, чтобы предусмотреть для себя возможность всегда воспользоваться каким-то альтернативным методом. Это особенно важно, если решение, основанное на обучении, оказы- вается неприменимым или требует слишком больших затрат времени на разработку, не пре- доставляя почти никаких преимуществ. Кроме
470 Часть V. Работа с предметами и объектами того, решение указанной задачи представляет собой хорошую практику для специа- листа, находящегося на пути профессионального становления. В настоящей главе рассматриваются перечисленные ниже темы. > Нечеткие переменные, применяемые как во внешнем интерфейсе (в поста- новке задачи), так и во внутреннем представлении (используемом в решении), с описанием в случае необходимости соответствующих этим переменным функций принадлежности. > Конкретные нечеткие правила, относящиеся к каждой из форм поведения, в том числе предусматривающие осуществление действий по нажатию кнопок и перемещению в прямом направлении. > Переменные, которые применяются при осуществлении таких действий, как подъем по лестнице, открытие двери и проезд на платформе. > Проект простого модуля нечеткой логики, предназначенного для исполнения правил, в котором раскрываются аналогии между системами, основанными на правилах, и интерпретаторами выражений нечеткой логики. > Незначительные недостатки, которые вызывают нарушения в работе в неко- торых редких случаях, и возможные усовершенствования. К концу данной главы будут созданы средства ИИ, усовершенствованные до такой степени, чтобы с их помощью анимат мог действовать в сложной среде, по-прежнему используя активизируемые в зависимости от обстоятельств формы поведения. Нечеткие переменные и функции принадлежности Усовершенствованные двигательные формы поведения определены в терминах концепций, применяемых в реальном мире, которые необходимо моделировать с ис- пользованием либо нечетких переменных, либо лингвистических переменных (иными словами, с помощью сочетаний термов). С концептуальной точки зрения эти пере- менные применяются в работе нечеткой экспертной системы либо в качестве входных данных системы, либо как выходные данные, связанные с действиями. В действитель- ности в процессе работы интерпретатора нечеткой системы можно обойтись без внут- ренних переменных, поскольку реализуемые формы поведения являются в полном смысле этого слова активизируемыми в зависимости от обстоятельств. Действия Прежде всего необходимо обеспечить управление движением с помощью нечет- кой системы. Для этого определим лингвистическую переменную move (двигаться) с тремя различными термами — forwards (вперед), stop (останов) и backwards (назад). В качестве базовой определена переменная со значением в виде скорости движения. Терм forwards определен с помощью половины графика треугольной функции принадлежности, которая соответствует степени принадлежности (Degree of Membership — DoM), равной 0, когда скорость является нулевой, и имеет значе- ние DoM, равное 1, когда скорость является максимальной. Терм backwards опре-
^alaHausj^ Глава 31. Усовершенствование двигательных форм поведения... 471 делен как прямо противоположный, так что значение DoM равно 1, если движение происходит с максимальной скоростью в обратном направлении. Для определения третьего терма, stop, используется следующее нечеткое уравнение, состоящее из первичных термов: stop = not (forwards or backwards) Описанная здесь зависимость между термами является относительно доступной для интуитивного понимания. Тем не менее смысл понятия останова необходимо подчеркнуть, поскольку в этом случае наклон кривой функции принадлежности все еще остается недостаточно крутым. Поэтому используется нечеткий модификатор extremely (чрезвычайно) для получения более крутой кривой, что позволяет го- раздо точнее передать интуитивный смысл понятия останова. К процессу движения необходимо применить вторую форму управления для обеспечения поворота тела, поскольку от ориентации тела зависит направление движения. Чтобы добиться этой цели с использованием интерпретатора нечеткой системы, необходимо применить еще одну лингвистическую переменную, turn (поворот). Базовая переменная для переменной turn определена как относитель- ный угол поворота в градусах. На основе этой базовой переменной заданы пять не- четких термов, позволяющих сформировать лингвистическую переменную, причем каждый из этих термов указывает объект, к которому должен повернуться анимат: button (кнопка), door (дверь), ladder (лестница), platform (платформа) и exit (выход). Функции принадлежности изменяются динамически, поскольку относи- тельная позиция этих объектов изменяется со временем. Используемая функция принадлежности имеет график треугольной формы; точка на этом треугольнике со- ответствует угловой позиции объекта, а основание всегда проходит через начало ко- ординат (иными словами, нулевое значение принадлежности показывает, что пово- рот не был выполнен). Наконец, предусмотрена отдельная переменная look, позволяющая управлять уг- лом наклона головы. Эта лингвистическая переменная является более простой по сравнению с другими и определяется статически. На ее основе заданы два нечетких терма, up (вверх) и ahead (вперед). Терм up соответствует углу наклона, равному 90°, при котором основание треугольника проходит через начало координат. С другой сто- роны, терм ahead о «ответствует углу наклона, равному 0°, при котором основание треугольника находится под углом ±90°. Восприятия Еще одна категория лингвистических переменных описывает восприятия. В ча- стности, двери, дверное полотно которых сдвигается вверх, могут открываться на всю высоту проема (базовая переменная), но дверь рассматривается как “открытая”, если участник игры способен под ней проползти, что в пределе приводит к достиже- нию степени принадлежности, равной 0, когда дверь касается пола. Кроме того, мо- жет быть определен нечеткий терм f ul ly open (полностью открытый) как сочета- ние первичного терма open и модификатора сдвига fully. Если участник игры мо- жет пройти через дверной проем, степень принадлежности равна 1, а если может проползти под дверью, степень принадлежности равна 0.
472 Часть V. Работа с предметами и объектами После этого можно определить терм button_pressed, который в действитель- ности является булевым одноэлементным значением, а не нечеткой переменной. По отношению к этому терму не может использоваться какая-либо непрерывная базо- вая переменная (за исключением, возможно, переменной с обозначением времени); мало того, применение какой-либо базовой переменной в данном случае практиче- ски не дает почти никаких преимуществ. Лингвистическая переменная platform (платформа) может быть определена с помощью двух термов — ready (готовая) и arrived (прибывшая). Готовность определяется тем, на каком расстоянии от пола находится платформа и насколько легко на нее можно взойти. Степень принадлежности равна 1, если платформа нахо- дится в стартовой позиции и полностью опустилась на пол. Если же участнику игры требуется совершить двойной прыжок, чтобы попасть на платформу, степень при- надлежности, определяемая функцией с графиком треугольной формы, достигает 0. Состояние arrived определяется как расстояние до конечного местонахождения; максимальное значение степени принадлежности соответствует расстоянию, равно- му 0, а если степень принадлежности составляет 0, то требуется двойной прыжок, чтобы сойти с платформы. Еще один простой терм, называемый aboard (совершивший посадку), указыва- ет, находится ли анимат на платформе. Этот терм определяется со степенью принад- лежности, равной 0, если анимат не находится на платформе. Максимальное значе- ние со степенью принадлежности, равной 1, достигается в центре платформы. Базо- выми переменными являются координаты х и у, привязанные к полу, а не расстоя- ние до центра платформы. В результате этого график функции принадлежности, которая определена на поверхности платформы, приобретает форму, напоминаю- щую пирамиду. Наконец, лингвистическая переменная, относящаяся к лестнице (ladder), оп- ределена с помощью двух термов — held (занятый) и top (верх). Терм held опре- делен во времени и принимает максимальное значение степени принадлежности, равное 1, через 1 секунду после того, как анимат касается лестницы, и снова воз- вращается к 0 через секунду вслед за тем, как анимат сойдет с лестницы. Терм top определяется на основе базовой переменной height (высота). К тому моменту, как участник игры уже готов сойти с лестницы, эта переменная принимает значение степени принадлежности, равное 1, а после того как будет сделан один шаг от верх- ней ступени лестницы, значение степени принадлежности, определяемой функцией с графиком треугольной формы, достигает 0. Нечеткие правила Используя переменные, которые были определены в предыдущем разделе, можно приступить к созданию форм поведения, описываемых как наборы правил. Чтобы достичь этой цели, воспользуемся практическими примерами, приведенными в гла- ве 29, “Анализ и разработка спецификаций”.
Глава 31. Усовершенствование двигательных форм поведения... 473 Использование дверей Набор правил, необходимый для того, чтобы пройти через дверной проем, явля- ется таковым, что вначале необходимо нажать кнопку, а затем пройти через дверной проем, после того как все для этого будет готово. Эта задача является несложной, как показывают правила, приведенные в табл. 31.1, в которых используются всего лишь четыре нечетких терма. Таблица 31.1. Нечеткие правила, которые управляют аниматом во время того, как он открывает произвольно заданные двери и проходит сквозь них Условие Действие If not button_pressed Повернуться в сторону кнопки, двинуться вперед If button_pressed Повернуться к двери If button_pressed and door not fully open Прекратить движение If door fully open Двинуться вперед, повернуться к двери Важно отметить, что в основе использования этого набора нечетких правил лежит то, что во время прохождения дверного проема возникает прерывание. Средства ИИ более высокого уровня обнаруживают это прерывание и прекращают вызывать данную нечеткую форму поведения. Это позволяет устранить такую проблему, при которой анимат мог бы продолжить попытки снова пройти через дверной проем (в обратном направлении), только что воспользовавшись им. Для предотвращения такой проблемы может потребоваться применение еще нескольких символов и дополнительных пра- вил, в результате чего система становится более сложной. Безусловно, вполне осуще- ствимо (и даже весьма желательно) добиться того, чтобы эти правила предотвращали только указанную проблему с использованием двери и не распространялись больше ни на какие другие ситуации. Короче говоря, при организации этой формы поведения в действительности тре- буется обеспечить, чтобы анимат останавливался и поворачивался в направлении к кнопке; в правиле 1 значение степени принадлежности, относящееся к этому дейст- вию, должно упасть до 0 после того, как кнопка будет нажата. То же самое относится и к прохождению через дверной проем. Использование лестницы С помощью нечетких правил можно столь же просто обеспечить использование ле- стниц. Наиболее трудная работа состояла в том, чтобы написать сами эти правила. Чтобы взобраться на лестницу, анимат должен вначале подойти к ней и схватиться за поручни (последняя операция осуществляется автоматически). После этого анимат должен направить свой взгляд вверх и осуществлять движение в прямом направлении до тех пор, не достигнет верха лестницы; в этот момент анимат может направить свой взгляд вперед, чтобы перейти с лестницы на пол. В табл. 31.2 приведены нечеткие пра- вила, в которых выражаются указанные принципы использования лестниц.
474 Часть V. Работа с предметами и объектами Таблица 312. Набор нечетких правил, которыми руководствуется анимат, подходя к лестнице, взбираясь по ступенькам и покидая лестницу после достижения верха Условие Действие True Двинуться вперед If ladder is not held Повернуться к лестнице If ladder is held Посмотреть вверх If ladder is top Посмотреть вперед, повернуться к выходу И в данном случае предполагается, что указанные нечеткие правила больше не вызываются средствами ИИ более высокого уровня, после того как анимат покинет лестницу. Эти нечеткие правила рассчитаны лишь на то, что они будут применяться в той области определения, на которую рассчитаны. Использование платформ Для использования платформ приходится выполнять последовательно большее количество действий, чем при организации двух других описанных выше форм по- ведения. Следовательно, база правил становится немного более сложной, но прин- ципы ее применения остаются теми же. Анимат нажимает кнопку и переходит на платформу (табл. 31.3). Таблица 31.3. Более длинная последовательность правил, необходимая для того, чтобы анимат поднялся на платформу, дождался прибытия платформы на место и сошел с нее Условие Действие if not button_pressed Повернуться к кнопке, двинуться вперед if button_pressed and platform not ready Прекратить движение if button_pressed and not aboard Повернуться к платформе if platform is ready Двинуться вперед if aboard Повернуться к выходу if aboard and platform has not arrived Прекратить движение if aboard and platform has arrived Двинуться вперед И в данном случае предполагается, что после ухода анимата с платформы рас- сматриваемая форма поведения становится неприменимой. Кроме того, используе- мые правила конкретизированы в максимально возможной степени, что позволяет избежать необходимости задавать такие формы поведения, как “прекращение ос- мотра платформы”. Проект модуля Прежде чем приступать к разработке интересующего нас приложения, необходимо определить интерфейсы к модулю нечеткой системы. Рассматриваемая реализация пред- ставляет собой элементарное приложение теории, приведенной в главе 30, “Нечеткая
^atatlaus^k Глава 31. Усовершенствование двигательных форм поведения... 475 логика”, но при взаимодействии с этим приложением невозможно обойтись без интер- (|>ейсов. Нечеткие экспертные системы отличаются удивительно близким сходством с системами, основанными на правилах, поэтому данный проект главным образом заим- ствован из части II. Инициализация Прежде всего необходимо продумать способ обеспечения того, чтобы модуль не- четкой системы мог инициализировать сам себя, загружая отдельно с диска различ- ные компоненты. Рабочая память Рабочая память содержит определения нечетких термов, используемых интерпре- татором. Эти термы могут быть представлены в виде отдельных переменных, а также могут входить в состав лингвистических переменных. Какие-либо различия между этими двумя типами нечетких термов отсутствуют, если не считать того, что в даль- нейшем для ссылки на них в правилах применяются разные способы. Для некоторых нечетких термов необходимо определить соответствие определен- ной функции принадлежности. Такая необходимость существует применительно к нечетким переменным, которые требуют осуществления фаззификации со сторо- ны системы (входные данные), или к тем, которые требуют автоматической дефаз- зификации (выходные данные). Мы определяем функцию принадлежности как имеющую график в виде симметрического треугольника, поскольку чаще всего такая функция является вполне приемлемой (листинг 31.1). Листинг 31.1. Набор из двух лингвистических переменных, содержащий суммарное количество нечетких термов, равное трем <memory> cVariable name="platform"> «Term name="ready" /> <Term name="arrived" /> </Variable> «Variable name="door"> «Term name="open"> «triangle center="0" base="45" /> </Term> </Variable> </memory> ПРИМЕЧАНИЕ Терм open определен как функция принадлежности, заданная на базовой переменной door. Два других терма должны быть заданы вручную пользователем. Если функции принадлежности являются более сложными или изменяются ди- намически, то пользователю рекомендуется выполнять соответствующие преобразо- вания вручную, а не так, как описано выше. Из этого следует, что в последнем слу- чае можно обойтись без использования функций принадлежности.
476 Часть V. Работа с предметами и объектами База правил База правил должна выражать отношения между нечеткими переменными. Такую задачу можно решить с применением набора правил, каждое из которых содержит ус- ловия и действия. В примере, приведенном в листинге 31.2, правило определяется с использованием одного нечеткого термина и лингвистической переменной. И в голо- ве, и в теле правила допускается использовать произвольное количество операторов. Условия неявно трактуются как конъюнкции (результаты применения операции AND) всех операторов. Точно так же как и в системе, основанной на правилах, нет каких-либо конкретных ограничений использования такого подхода, поскольку дизъюнкции (результаты применения операции OR) могут быть разбиты на несколько правил. Листинг 312. База правил для нечеткой системы, содержащей единственное правило <rulebase> <Rule> <conditions> «Term name="aboard" /> <Variable name="platform" value="arrived" /> </conditions> <body> <Variable name="move" term="forward" value="1" /> «Variable name="turn" term="exit" value="l" /> </body> </Rule> </rulebase> Учет наличия модификаторов сводится к тому, что нечеткие термы вкладываются в дескрипторы модификаторов, такие как very, extremely, somewhat и т.д. В настоя- щее время такие дескрипторы должны быть определены в самой нечеткой системе. Интерфейс Определив указанные механизмы инициализации, можно перевести тему обсуж- дения на функциональные возможности этапа прогона. Применяемый интерфейс является предельно простым, поскольку в нем для повышения удобства и эффек- тивности обработка обратных вызовов осуществляется автоматически. Интерфейс другого типа допускает применение динамических запросов; информация на эту те- му приведена ниже. Синхронизация Для приложения определен собственный интерфейс, позволяющий избежать не- обходимости направлять данные непосредственно в нечеткую систему. Применение функций обратного вызова на языке C++ позволяет добиться того, чтобы нечеткая система сама собирала необходимую информацию. Практика показала, что такой подход является более удобным и позволяет существенно упростить код: void SetSensor( const SensorFunc& s, const string& symbol ); void SetEffectorf const EffectorFuncb e, const string^ symbol );
Глава 31. Усовершенствование двигательных форм поведения... 477 Используются две функции: одна собирает содержимое нечетких термов (сенсор), и другая передает полученное значение нечеткого терма обратно клиенту (эффектор). Функции обратного вызова должны быть определены в соответствии с существующем прототипом, который задан для данной нечеткой системы. Этими двумя функциями удобно пользоваться, только если доступ осуществляет- ся к отдельным нечетким термам, поэтому фактически применяются еще два спосо- ба объявления сенсоров и эффекторов. Эти способы предусматривают применение двух строковых параметров, а не одного; в первом параметре задается лингвистиче- ская переменная, а второй ссылается на вложенный нечеткий терм. Динамический доступ Для тех ситуаций, в которых не требуются обычные функции обратного вызова, необходимые дополнительные возможности могут быть реализованы с помощью следующих двух простых функций доступа: void Set( const string& symbol, const float value ); float Get( const string& symbol ) const; Эти функции доступа позволяют запрашивать сведения о содержимом любого отдельно взятого нечеткого терма. И в этом случае еще две подобные функции при- меняются для работы с лингвистическими переменными; в этих функциях в качест- ве параметров также используются две строки. Дополнительная информация Рассматриваемая реализация нечеткой экспертной системы представляет собой непосредственное приложение теории, изложенной в главе 30, “Нечеткая логика”. Эта реализация создана как версия описанного ранее модуля системы, основанной на правилах. Безусловно, в ходе разработки проекта программного обеспечения и создания самих программ приходилось преодолевать некоторые труд- ности, но они обсуждаются не в этой главе, а в документации, предоставляемой на Web-узле по ад- ресу http:/ /AiGameDev. сот/, и в комментариях в самом коде. Оценка полученных результатов Нечеткое управление осуществляется очень плавно. Движения анимата являются немного резковатыми лишь при нажатии кнопки, но этого и следовало ожидать, по- скольку при осуществлении таких движений часто приходится учитывать наличие стены. В некоторых случаях может показаться, что скорость реакции является не- много замедленной. Например, анимат может немного задержаться, прежде чем по- смотреть вверх, взбираясь на первую ступеньку лестницы или ожидая прибытия платформы. Этот недостаток можно исправить, корректируя функции принадлеж- ности, как правило, с использованием модификатора переноса (например, так, что- бы степень принадлежности достигала значения 1 всего лишь через полсекунды по- сле того, как анимат коснется лестницы).
478 Часть V. Работа с предметами и объектами Практическая демонстрационная версия Анимат, в котором реализованы указанные возможности осуществления действий под управлением нечетких правил, носит имя Jacky. Этот анимат может взбираться по лестницам, открывать двери и вызывать лифты. Во всех прочих обстоятельствах по умолчанию применяется такая форма поведе- ния, как бесцельное блуждание по местности с реагированием на возникающие ситуации. Исходный код анимата и нечеткие правила можно найти на Web-узле по адресу ht tp: / /AiGameDev. сот/. Сами движения анимата являются довольно эффективными, поскольку он, по- видимому, не теряет время понапрасну. В действительности после нажатия кнопки анимат, как правило, направляется прямо к двери или платформе, используя крат- чайший путь. При этом фактически анимат движется очень близко от стены, не от- ходя от нее ни на шаг. Можно было бы потребовать от анимата, чтобы он отступал от стены после нажатия кнопки, но для этого необходимо принять некоторые другие предположения, касающиеся компоновки местности. Анализируя эти обстоятельства, мы начинаем постигать суть проблемы — непосред- ственное управление движением передано интерпретатору нечеткой системы. В боль- шинстве случаев такой подход вполне себя оправдывает, но встречаются и такие случаи, которые выходят за обычные рамки, поскольку в них не опрантываюгся предположения, на основе которых сформулированы правила. Например, если между кнопкой и плат- формой имеются препятствия, аниматы пытаются идти напролом, невзирая на их нали- чие; по этой причине аниматы, как правило, ударяются в стену и скользят вдоль нее, а если на пути встречаются ямы, падают в эти ямы. Поэтому в идеальном случае выходные данные нечеткой системы должны ис- пользоваться в качестве рекомендаций более высокого уровня для улучшения орга- низации уже разработанных форм поведения. Например, выбранное направление может рассматриваться как исходное для формы поведения, связанной с поиском, но при этом не должны исключаться такие движения, которые требуются для пре- дотвращения столкновения с препятствиями. Что касается самих рассматриваемых нечетких правил, то они не слишком хоро- шо подходят для моделирования последовательностей действий, подобных описан- ным в этой главе. Если речь идет о последовательности, то в ней определенные усло- вия должны активизировать переходы к следующим действиям в последовательно- сти, а интерпретатор должен неявно обеспечивать отслеживание за позицией в по- следовательности. В правилах, приведенных в данной главе, указанный подход почти не проявляется, если не считать того, что сами правила необходимо было спе- циализировать в максимально возможной степени. (Например, анимат, взбираясь на платформу, должен был отвести взгляд от кнопки вызова платформы.) Более при- емлемый подход к организации такого управления на низком уровне мог бы преду- сматривать использование нечеткого конечного автомата, который осуществлял бы такие же действия, будучи концептуально более простым для проектирования. С другой стороны, нечеткие правила в большей степени подходят для осуществле- ния задач принятия решений, а не задач управления (иными словами, для задач, в которых необходимо искать ответы на полностью определенные и неизменные во- просы, такие как выбор наилучшего оружия). Вполне естественно, что совместное применение обоих этих подходов позволяет добиваться превосходных результатов!
Глава 31. Усовершенствование двигательных форм поведения... 479 Резюме В настоящей главе для создания надежных и реалистичных последовательностей форм поведения, позволяющих справляться с затейливыми и хитроумными изобрете- ниями и активизируемых в зависимости от обстоятельств, применялась нечеткая логика. Разработка началась с двух указанных ниже важных шагов, которые должны предприни- маться во всех случаях, когда для решения задач применяется нечеткая логика. > Подготовлены объявления всех нечетких переменных, которые требуются для поиска решения задачи. > Для нечетких переменных, которые должны участвовать в операциях фазэи- фикации и дефаззификации, описаны функции принадлежности. Как описано ниже, принятый подход состоял в том, чтобы определить нечеткие правила и простые способы достижения с их помощью решения поставленной задачи. > Для отслеживания позиции в последовательности с использованием только сенсорных входных данных применялись нечеткие правила. > Знания были представлены настолько неявно, насколько это возможно, в це- лях уменьшения количества правил. > Каждое правило было сформулировано настолько конкретно, насколько это возможно, чтобы исключить появление неприятных побочных эффектов, свя- занных с нарушением порядка выполнения правил. После этого потребовалось создать простой интерпретатор нечеткой логики. Эта задача была решена следующим образом, в основном, на базе системы, основанной на правилах, которая описана в части II. > Для загрузки перманентной информации из файлов, хранящихся на диске, применяется интерфейс данных. > Для обработки обратных вызовов C++ служит собственный интерфейс. > Все необходимые дополнительные возможности предоставляют динамические средства доступа, такие как Set () и Get (). Проведенная оценка полученных результатов показывает, что движения анима- тов становятся настолько плавными и эффективными, что могут даже показаться для нетренированного глаза весьма привлекательными. Но некоторые предположе- ния, приюггые в соответствии с нечеткими правилами, могут стать причиной воз- никновения определенных проблем, поэтому для достижения лучших результатов необходимо встраивать вывод нечеткой логики в формы поведения высокого уров- ня, связанные с управлением навигацией. Основная проблема, связанная с применением подхода на основе нечетких сис- тем, состоит в том, что он требует от проектировщика задавать формы поведения. В следующей главе рассматриваются генетические алгоритмы, которые предостав- ляют возможность находить почти оптимальные формы поведения с использовани- ем критериев высокого уровня.

NalattauslliLj!. Гпава 32 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ Эволюционные алгоритмы представляют собой совокупность научных подходов, основанных на теории эволюции. А генетические алгоритмы — это одна из разновидностей эволюционных алго- ритмов, реализующих широко применяемый под- ход к оптимизации параметров в многомерном пространстве. В генетических алгоритмах исполь- зуется определенная форма моделирования задачи для определения наиболее подходящих решений в популяции решений. Применение генетических алгоритмов способствует повышению качества по- лученных результатов во времени, поскольку эти алгоритмы предусматривают возможность сохра- нения только самых пригодных экземпляров ре- шений, которые вносят свой вклад в набор призна- ков, называемый генофондом. Например, в игре Quake 3 генетические алго- ритмы используются для корректировки страте- гий выбора оружия [80]. Оптимизация различных параметров, таких как идеальное расстояние для использования оружия, производится с учетом производительности. Такой эволюционный под- ход позволяет вносить поправки в реализуемые формы поведения на этапах проектирования иг- ры, относящихся к периоду постпроизводства. В настоящей главе рассматриваются пере- численные ниже темы. В ЭТОЙ ГЛАВЕ- • Сущность биологической эволюции • Генетика и представление • Генетические алгоритмы • Генетические операции и правила осуществления эволюции • Более сложные проблемы • Обсуждение полученных результатов • Резюме > Биологическая эволюция и естественный отбор как источники идей для искусст- венной модели. > Важность выбора наиболее приемлемой формы представления в генетических ал- горитмах (с учетом концепций генотипов и фенотипов).
482 Часть V. Работа с предметами и объектами > Краткое описание алгоритма, используемого при искусственном моделирова- нии эволюции. > Сведения о конкретных генетических операциях и эволюционных способах действий, осуществляемых на каждой стадии эволюции. Сущность биологической эволюции Эволюция — это явление, которое отражается на существовании биологических видов в крупных временных масштабах и реализуется в ходе воспроизводства под влиянием основополагающих генетических свойств каждого организма. Теория эволюции Чарльз Дарвин принадлежит к кругу исследователей, которые пришли к выводу, что каждое живое существо является уникальным. Каждый организм обладает соб- ственным набором признаков, которые передаются потомству. В результате появ- ляются потомки, являющиеся столь же уникальными, но несущие признаки обоих родителей. Специалисты по генетике освоили методы, позволяющие обращать из- менения в наборах признаков у потомства в свою пользу, применяя выборочное размножение (например, спаривая домашних животных, которые имеют желатель- ные признаки). Эволюция — это результат влияния природы на процесс размножения, который приводит к тому, что происходит постепенное изменение целых видов живых существ. Согласно Дарвину, эволюция — это следствие борьбы за жизнь, в которой участвуют все живые существа без исключения. При этом каждый индивидуум испытывает эво- люционное давление, выражающееся в трех описанных ниже основных формах. > Среда. Каждое живое существо постоянно борется за выживание в своей сре- де, занимаясь поиском таких ресурсов, как пища и вода. > Конкуренция. Кроме того, живые существа, относящиеся к одному и тому же виду, конкурируют друг с другом, поскольку каждый из них пытается решать аналогичные задачи (например, найти партнера для спаривания). > Соперничество. Разные виды живых существ могут оказывать влияние на жизнь других видов, либо вступая в прямую конфронтацию (например, во время охоты), либо ведя борьбу за одни и те же ресурсы среды, т.е. вступая в конфронтацию косвенно. Дарвин предположил, что указанные ограничения влияют на поведение всех и каж- дого живого существа, а также определяют их шансы на выживание. Живые существа, не добившиеся успеха в тех или иных аспектах своего существования (например, за- нимаясь охотой или поиском партнера для спаривания), имеют меньше шансов оста- вить потомство. С другой стороны, немного более эффективно действующие существа с большей вероятностью сумеют передать свои признаки следующему поколению. В этом заключается принцип сохранения благоприятных индивидуальных различий.
Глава 32. Генетические алгоритмы 483 Такая возможность возникает благодаря тому факту, что размножение происхо- дит относительно быстро, поэтому рождается все больше и больше живых существ, способных продолжить свое существование. Но окружающая среда продолжает ока- зывать свое давление, а это значит, что в живых останутся только наиболее приспо- собленные. Этот принцип получил название естественный отбор. Естественный отбор происходит в кратких масштабах времени, в течение суток или даже часов. Но сама эволюция — очень медленный процесс, который требует смены нескольких поколений, для того чтобы благоприятные признаки распростра- нились по всему виду. Биологическое воспроизводство Эволюция становится возможной благодаря тому, что в ее основе лежат биологи- ческие принципы воспроизводства, позволяющие живым существам передавать благоприятные признаки своему потомству. Воспроизводство осуществляется на клеточной основе с использованием генетического кода, представленного в хромо- сомах. Рассмотрим в качестве примера воспроизводство человека. В каждой клетке человеческого тела имеются 23 пары хромосом. Каждая хромо- сома может рассматриваться как структура, несущая генетический код. Репродук- тивные клетки (сперматозоид и яйцеклетка) содержат только по 23 одинарные хро- мосомы. В фазе, называемой мейозом, одна обычная клетка делится на две репро- дуктивные клетки. Прежде чем происходит деление клетки, пары хромосом пере- крещиваются и содержащийся в них генетический код подвергается небольшим изменениям. Каждая репродуктивная клетка содержит гены, относящиеся к обоим членам пары хромосом. Во время оплодотворения яйцеклетки сперматозоидом эти хромосомы снова объединяются друг с другом для повторного формирования 23 пар. Образовавшаяся в результате этого клетка представляет собой первую клетку потомка и содержит по- ловину генетического кода, полученного от отца, и половину — от матери. Весь этот процесс является чрезвычайно сложным, поскольку в нем участвуют многочисленные и разнообразные органические молекулы. В некоторых случаях может произойти мутация. Мутация — это ошибка при копировании генетического кода, возникающая либо на уровне гена, либо на уровне хромосомы. В некоторых случаях мутация может оказаться благоприятной, но чаще всего вызывает неиспра- вимые нарушения воспроизводства. Биология как источник идей для ИИ Эволюция может рассматриваться как процесс оптимизации. Врожденные призна- ки живых существ со временем оптимизируются по отношению к ограничениям внешней среды. Джон Холланд (John Holland) изложил эти идеи в [38]. А специалисты в области компьютерных наук сумели создать модели эволюции и применить указан- ные идеи для решения задач с помощью таких методов, как генетические алгоритмы. В основе существования большинства форм жизни на Земле лежит генетический код, и эволюция становится возможной именно благодаря этому, поскольку генетиче- ский код позволяет передавать удачные признаки следующим поколениям. Выбор правильного способа представления очень важен также д ля генетических алгоритмов.
484 Часть V. Работа с предметами и объектами Генетика и представление Генетические алгоритмы, по существу, представляют собой реализацию опреде- ленной стратегии оптимизации. Но в отличие от большинства методов оптимизации, предназначенных для определенной проблемной области (например, градиентного спуска), функционирование генетических алгоритмов, в основном, не зависит от вы- бора какого-либо конкретного способа представления. Но это не означает, что для ге- нетических алгоритмов выбор правильного представления не имеет значения; дело об- стоит совсем иначе. Указанное выше лишь означает, что при выборе способа пред- ставления знаний допускается значительная степень свободы. Большая часть данной главы посвящена обсуждению способов представления знаний, и эта тема является еще одной областью непосредственного применения генетических алгоритмов. Итак, для всей научной области, связанной с применением генетических алго- ритмов, источником идей является биология, поэтому в ней также заимствовано много биологических терминов. Благодаря этому появляется возможность проще описать основные принципы функционирования генетических алгоритмов, но еще раз отметим, что такая возможность быстрого формирования интуитивных пред- ставлений может иметь отрицательные побочные следствия, такие как принятие не- обоснованных предположений. По мере необходимости в дальнейшем изложении такие моменты будут отмечены особо. Геном и генотип В основе эволюции лежит генетический код, выраженный в виде последователь- ности генов. Такая последовательность называется геномом. Каждый вид живых существ характеризуется наличием отдельного типа генома, имеющего отличную от других длину последовательности и другие гены. В отношении генома необходимо всегда учитывать одно важное замечание — геном описывает общую структуру гене- тического кода (т.е. смысл этого кода, а не его фактическое значение). Геномика — это наука, которая изучает смысл генов для конкретных видов живых существ. Геномы, обнаруживаемые у разных представителей одного и того же вида, яв- ляются почти идентичными. В частности, как показано на рис. 32.1, каждый ген в гено- мах разных индивидуумов находится в одной и той же позиции (называемой локусом). Аллель X Y Z Z Y Z X X Y Z Локус Рис. 32.1. Концептуальное прегктанление генотипа, отображае- мого как пиыедовательность букв, которые представляют гены В организме каждого отдельного живого существа гены могут выражать конкрет- ные особенности, называемые аллелями. Аллель — это одна из возможных форм, ко- торые может принимать ген. Последовательность аллелей называется генотипом. Ге-
Глава 32. Генетические алгоритмы 485 нотип выражает не только структуру, но и последовательность информации (в этом состоит определение генома). Предметом генетики является изучение роли аллелей (форм генов) в наследовании биологических признаков. Для программистов связь между геномом и генотипом можно описать как отно- шение “класс-экземпляр”. А генотип может рассматриваться как конкретизация ге- нома в виде определенного экземпляра, в котором каждому гену присвоены значе- ния в виде аллелей. Геном — это генетический проект живого существа, а генотип — конкретное во- площение этого проекта. В живом организме генотип представлен как набор хромо- сом, содержащихся в каждой клетке. Хромосомы обнаруживаются в клетках боль- шинства видов живых существ, и это позволяет понять, почему некоторые специа- листы используют слово “хромосома” в контексте эволюционных алгоритмов. Но, строго говоря, хромосомы — это лишь один из возможных вариантов (найденных самой природой) для представления генотипа, поэтому в данном контексте приме- нение указанного термина часто неоправданно. Однако у большинства специали- стов по генетическим алгоритмам применение подобной терминологии не вызывает каких-либо затруднений. А в данной книге термин “генотип” используется потому, что он обладает семантической точностью, позволяет установить связь с научными истоками его происхождения и достаточно удобен (к тому же, этот термин является наиболее кратким и однозначным). Вообще говоря, реализация способа хранения информации с помощью генома обычно не рассматривается как основное назначение генома. С точки зрения обыч- ного человека, геном — это хранилище всех сведений, необходимых для того, чтобы все клетки организма получили достаточное развитие для создания полностью зрелого тела. Тем не менее каждый из нас может почувствовать восхищение при мысли о том, что столь компактный генетический код позволяет вырастить совокупность клеток, которая в конечном итоге становится полноценным человеческим существом. Именно эти мощные механизмы взяты на вооружение в генетических алгоритмах. Информация генотипа обычно представлена в сжатом виде и поэтому требует применения некоторой “интерпретации”. Это выражается в том, что генетический код используется в растущих клетках организма не только для создания самой клет- ки, но и для определения назначения этой клетки, а это косвенно влияет на форми- рование всего тела. Однако в генетических алгоритмах очень трудно достичь реше- ния такой двуединой задачи, но если это удается, то полученные результаты оказы- ваются весьма полезными. В генетических алгоритмах для представления генотипа используются гораздо более явно выраженные формальные средства, поскольку практика показала, что такой подход гораздо проще в реализации. Тем не менее, общие принципы остаются неизменными — генотип содержит существенную информацию о решении, обычно в наиболее компактной форме из всех возможных. Общая идея состоит в том, что форма представления должна обеспечивать возможность сформировать решение за- дачи на основании заданного генотипа. Феном и фенотип Изучением физических характеристик и морфологии живых существ без учета их генетических основ занимается специальная наука — фенетика. Эта область знаний не слишком популярна, но в ней предпринимаются попытки глубже исследовать
486 Часть V. Работа с предметами и объектами понятие фенома. Феном — это общая структура тела живого существа, состоящего из клеток, нервов, сосудов, мозга, внутренних органов, кожи и т.д. Все эти компо- ненты структуры тела могут рассматриваться как набор физических признаков. Выше были перечислены лишь основные структурные компоненты живого суще- ства, но описания феномов могут быть очень сложными и очень подробными, осо- бенно когда объектом исследования становятся люди. Моделирование фенома мо- жет осуществляться на разных уровнях, со все возрастающей сложностью (клетки, органы, конечности и т.д.), как показано в табл. 32.1. В действительности феном че- ловека описан далеко еще не полностью даже в результате всей колоссальной дея- тельности, проведенной в области биологии, анатомии и медицины! Таблица 32.1. Упрощенное описание фенома как неполного множества признаков и значений для конкретного фенотипа Феном Фенотип Цвет волос Блондин Цвет кожи Темный Количество ног 2 Рост 2 метра 10 сантиметров Фенотип — это конкретный экземпляр фенома. Если речь идет о человеке, то в ка- честве фенотипа рассматривается такое уникальное человеческое существо, как каж- дый из нас. Феном определяет набор физических признаков, а фенотип представляет конкретные значения этих признаков. Еще раз отметим, что фенетика в данное время позволяет описать признаки кон- кретного индивидуума лишь на очень высоком уровне. В определение самого фено- типа по существу должно войти описание каждой клетки тела исследуемого орга- низма. В отличие от генотипа, фенотип изменяется во времени чрезвычайно быстро (клетки умирают и рождаются, органы испытывают повреждения и восстанавлива- ются, тело растет и стареет). Фенотип— это продукт развития генотипа и воздействия ограничений окру- жающей среды. С точки зрения генетических алгоритмов, фенотип — это явное представление готового решения. В действительности именно подобное представле- ние может применяться для решения интересующей нас задачи либо непосредст- венно, либо с использованием алгоритма независимого разработчика. Структура фенотипа как таковая часто проектируется таким образом, чтобы было удобно ею манипулировать и тем самым проще решать поставленные задачи. Преобразования Отношения между геномом и генотипом, с одной стороны, а также между феномом и фенотипом, с другой, связывает глубокая аналогия. В каждой из этих пар рассматри- ваемых концептуальных объектов второй является экземпляром первого. Но интерес представляет также вопрос — существует ли связь между генотипом и фенотипом? Как уже было сказано выше, генотип определяет способ развития каждой клетки и тем самым косвенно влияет на создание фенотипа. Сами признаки фенотипа как
Глава 32. Генетические алгоритмы 487 таковые не определяются какими-то отдельными генами, а, скорее, выражаются как наблюдаемый результат действия всех генов организма. Генотип оказывает мощное влияние на то, каковым будет результат формирова- ния фенотипа, но это влияние не является исключительным. Форма, в которой гены управляют ростом организма, определена весьма неявно, поэтому в процессе роста очень важную роль играет среда. Таким образом, наблюдаемые признаки организма складываются под воздействием этих двух факторов (например, организм сохраняет отпечаток тех физических условий, в которых он вырос, или носит следы несчаст- ных случаев, которым он подвергся). Подходы, применяемые при создании средств ИИ с помощью генетических алго- ритмов, остаются далеко не такими сложными. Например, персонажи игры обычно представлены как непосредственные отображения генотипов в фенотипы. А инженер по искусственному интеллекту обязан лишь предусмотреть функцию, осуществляю- щую необходимое преобразование генотипа в фенотип. В частности, он обязан преду- смотреть наиболее подходящий способ формирования фенотипа на основе генотипа (рис. 32.2). В большинстве случаев такая цель достигается в результате декодирования одной и той же формы представления для получения разных структур данных. Рис. 32.2. Схема преобразования генотипа в фенотип, которая показы- вает связь с применяемым эволюционным алгоритмом и самой задачей Таким образом, в большинстве методов моделирования, основанных на исполь- зовании генетических алгоритмов, различия между генотипом и фенотипом почти полностью игнорируются, поэтому многие специалисты по искусственному интел- лекту предпочитают полностью отказаться от генотипов и развивать непосредствен- но сами фенотипы. Преимуществом указанного подхода является то, что в нем не требуется обеспечивать преобразование информации из одного формата в другой с помощью программных средств. Поэтому такая практика, когда д ля представления решения эволюционного алго- ритма используется указанный подход, становится все более распространенной. Пред- ставления данных, создаваемые на основе этого подхода, иногда называют эволюци- онными структурами данных, но в действительности эти представления в большей степени связаны с осуществлением операций, относящихся к фенотипам. Часто быва- ет намного проще приспособить генетические операции для работы с другими струк- турами данных, чем заниматься кодированием и декодированием фенотипов. Эта тема рассматривается в следующих двух разделах.
488 Часть V. Работа с предметами и объектами $ ПРИМЕЧАНИЕ ; В генетических алгоритмах применяются чрезвычайно простые преобразования между генотипами » и фенотипами, и в этом состоит одна из причин, по которым генетические алгоритмы не могут срав- j ниться по своим возможностям с биологической эволюцией, ведь в них используется далеко не таков ₽ сложное представление, как в живой природе. Для самой природы потребовались миллиарды лет на < разработку емкого и надежного представления генетического кода, а также сложного, но эффектив- « ного способа создания на основе этого кода живых организмов. С другой стороны, в искусственном | интеллекте на подготовку представлений инженеры затрачивают не больше нескольких часов, и даже неявно заданные способы кодирования в искусственном интеллекте проектируются вручную. Генетические алгоритмы В основе биологической эволюции лежит то, что предоставленные самим себе существа живут и воспроизводятся в определенной среде. Для решения большинства задач применение столь развитых, автономных и самовоспроизводящихся созданий не требуется, да и сама среда не является настолько сложной, чтобы служить при- водным механизмом эволюции. Поэтому, чтобы иметь возможность воспользовать- ся генетическими алгоритмами, необходимо понять суть эволюционного процесса и научиться воспроизводить те важные операции, которые направляют эволюцию. В эволюционных алгоритмах процесс эволюции моделируется шаг за шагом, по- этому с их помощью этот процесс может быть воспроизведен искусственно в ком- пьютере (рис. 32.3). Используя генетические алгоритмы, можно не заниматься ис- кусственным выращиванием живых существ, а “применять” эволюционные преоб- разования к статическим структурам данных (например, к тем структурам данных, которые описывают стратегии или формы поведения). Генетические алгоритмы по- зволяют находить решения для любых задач, которые по определению требуют вы- работки решения с использованием всех возможностей эволюционных алгоритмов. Рис. 32.3. Краткая схема организации функционирования эволюционного алгоритма, включая основной цикл, в котором создаются новые потомки существующих родителей Ниже приведено краткое описание эволюционного процесса с точки зрения его реализации в генетическом алгоритме.
^ataHaus,^. Глава 32. Генетические алгоритмы 489 > Инициализация. Создается популяция индивидуумов. > Отбор. Из популяции выбираются будущие родители для участия в воспроиз- водстве. > Скрещивание. Генетический код родителей комбинируется для создания по- томков. > Мутация. Осуществляется произвольная замена нескольких генов в потомстве. > Замена. С учетом определенных условий происходит включение потомства в ту же популяцию. Описанный процесс может служить в качестве шаблона для создания искусст- венной модели жизни на том уровне понимания, который нами достигнут. Очевид- но, что общий результат применения алгоритма зависит от того, какие методы ис- пользуются на каждом этапе. В последней части данного раздела показано назначе- ние каждого этапа и описаны относящиеся к этим этапам основные требования. А следующий раздел содержит вводное описание широкого перечня подходов, из числа которых может быть выбран наиболее подходящий. Популяция Популяция, по существу, представляет собой набор индивидуумов, а в программ- ном обеспечении популяции фактически рассматриваются как контейнеры, в которых хранится каждый из генотипов. В популяциях живых существ изменяются отдельные индивидуумы, а в популяциях, используемых в генетических алгоритмах, со временем изменяются генотипы. В состав популяции входят вновь созданные потомки, а те объ- екты, срок существования которых подошел к концу, исключаются. Компьютерная модель обладает определенным преимуществом, которое заклю- чается в том, что некоторые индивидуумы могут сохраняться на протяжении суще- ствования любого количества поколений. Но это преимущество может обернуться недостатком, поскольку возникает необходимость удалять такие индивидуумы вруч- ную, когда для этого настанет время. С концептуальной точки зрения, популяция может рассматриваться как находя- щаяся в установившемся состоянии или проходящая этапы смены поколений. Попу- ляция, находящаяся в установившемся состоянии, подвергается очень медленным, инкрементным изменениям, проявляющимся на уровне отдельных индивидуумов. Это означает, что при внесении изменения в текущую популяцию включается новый гено- тип и процесс эволюции начинается сначала. С другой стороны, в алгоритмах, преду- сматривающих смену поколений, после появления каждого очередного поколения создается новая популяция, а вновь созданные потомки индивидуумов из предыдущей популяции вводятся в следующее поколение до тех пор, пока не появится достаточное количество индивидуумов для того, чтобы можно было перейти к новому циклу эво- люции. Различные типы популяций показаны на рис. 32.4. На концептуальном уровне могут также рассматриваться другие формы хранения информации об индивидуумах, а не только структуры данных. С одной стороны, по- пуляцией можно считать группу индивидуумов, не имеющую конкретной организа- ции. С другой стороны, может быть предусмотрена возможность учитывать какое-то пространственное распределение. Индивидуумы могут рассматриваться как нахо- дящиеся в одномерном или двухмерном пространстве, как расположенные по одной линии или привязанные к определенной координатной сетке.
490 Часть V. Работа с предметами и объектами Популяция, состоящая из нескольких поколений Установившаяся популяция Рис. 32.4. Различные типы популяций; слева показаны три популя- ции, развитие которых организовано в виде отдельных поколений, а справа — популяция, находящаяся в установившемся состоянии Указанные модели позволяют условно представить некоторые важные свойства тех или иных вариантов реальной среды, и от выбора этих моделей зависит, можно ли достичь определенных преимуществ на разных этапах осуществления алгоритма. Основным преимуществом модели, учитывающей пространственное распределение, является то, что с ее помощью можно налагать определенные ограничения на рас- пространение генов в пространстве. Инициализация В идеальном случае в качестве начальной популяции должна использоваться представительная выборка в области поиска (т.е. выборка, включающая все возмож- ные решения). Такой подход позволяет эксплуатировать генетический алгоритм, уже имея общее представление о том, насколько пригодными являются индивидуу- мы, относящиеся к каждой области пространства. Для достижения этого вполне можно воспользоваться таким подходом, в котором инициализация каждого инди- видуума осуществляется полностью случайным образом. Если в распоряжении программиста имеется качественный генератор случайных чисел (такой, как Mersenne Twister [51]) и существует возможность воспользоваться процедурой, позволяющей создать широкое разнообразие генотипов, сформирован- ных случайным образом, то степень покрытия первоначального пространства поис- ка может стать очень значительной. Чем больше количество индивидуумов в началь- ной популяции, тем лучше охват (рис. 32.5). Во время инициализации можно также повторно использовать существующие генотипы (иными словами, закладывать генофонд эволюции). Например, в популя- цию можно включить качественные решения, созданные с помощью других матема- тически обоснованных алгоритмов, решения, промоделированные или предложен- ные экспертами-людьми, или генотипы, полученные в предыдущих сеансах приме- нения эволюционных алгоритмов. Преимущество такого подхода состоит в том, что он позволяет сразу же выявить в пространстве поиска области, характеризующиеся высокой степенью пригодности, для того чтобы генетический алгоритм мог приме- няться для их исследования и усовершенствования.
Глава 32. Генетические алгоритмы 491 Рис. 32.5. Начальная популяция в двухмерном про- странстве поиска; эта популяция характеризуется ка- чественным охватом большинства областей, а также включает в себя некоторые экспертные решения Оценка полученных результатов Прежде чем приступать к описанию самих генетических алгоритмов, необходимо по- святить несколько слов наложению концепций пригодности и оценки. Эти понятия яв- ляются очень важными, поскольку позволяют направлял» процесс эволюции в пользу наиболее пригодных индивидуумов, что способствует повышению качества решений. Каждый индивидуум в популяции может рассматриваться как решение некоторой задачи. Назначение операции оценки состоит в определении того, насколько качест- венным является это решение. Определяемый при этом показатель выражает степень пригодности индивидуума. В основе процесса оценки индивидуума лежит применение так называемой функции пригодности. Входными данными для этой функции является фенотип, а возвращаемым значением служит степень пригодности, выраженная в виде числа с плавающей точкой. Сама реализация этой функции характеризуется тем, что позволяет моделировать рас- сматриваемую задачу вместе с данным предложенным решением. После этого, с учетом того, насколько хорошо проявляет себя фенотип, ему присваивается оценка. Шкала оце- нок может быть выбрана вполне произвольно, при условии что эта шкала позволяет ранжировать индивидуумов относительно друг друга. Не считая указанных требований к генетическому алгоритму, во всем прочем нет ограничений, поэтому при его разработ- ке допускается использование даже несоизмеримых значений пригодности. Функция пригодности лежит в основе генетических алгоритмов, а также любых стратегий многомерной оптимизации в целом. Функция пригодности управляет процессом оптимизации, оценивая преимущества индивидуумов, как указано ниже. > Основным преимуществом данного подхода является его простота. В процессе эксплуатации генетических алгоритмов нет необходимости применять какие- либо математические модели; моделирование используется лишь для провер-
492 Часть V. Работа с предметами и объектами ки значения, полученного в качестве решения, а это не более сложно, чем со- ставление формулировки самой задачи. > Таким образом, правильный выбор функции пригодности фактически стано- вится наиболее важным аспектом использования всего генетического алго- ритма, но следует учитывать, что этот факт может стать причиной нарушений в работе. В частности, даже если некоторая функция пригодности внешне ка- жется простой, будучи неправильно выбранной, она может стать узким ме- стом для всего процесса оптимизации. Вполне естественно, что функция пригодности должна быть выбрана с учетом особенностей рассматриваемой задачи; если с помощью генетического алгоритма должны быть созданы персонажи игры, умеющие медленно ползать, то функция пригодности будет иной по сравнению с той, которая применяется для оценки ани- матов, способных быстро бегать. Кроме того, много разных способов реализации функции пригодности можно найти даже в рамках одной и той же задачи. В действительности можно смело сказать, что основная проблема, связанная с при- менением генетических алгоритмов, состоит в создании функций пригодности. Модели- рование эволюции не позволяет достичь хоть каких-то ценных результатов даже при на- личии идеальной системы, если для оценки используется неподходящая функция при- годности. С другой стороны, даже простейший генетический алгоритм позволяет полу- чить качественные результаты, если функция пригодности тщательно продумана. [^Дополнительная информация Практика показала, что при решении многих задач процесс проектирования функции пригодности может оказаться весьма сложным. А если дело касается создания функций пригодности для выработки с по- мощью генетических алгоритмов требуемых форм поведения, то весь процесс начинает напоминать черную магию! Эта тема является очень важной с точки зрения применения компьютеризированных средств ИИ и подробно обсуждается в главе 35, “Проектирование обучающихся средств ИИ". Отбор Процесс отбора осуществляется в целях выявления в популяции наиболее при- годных индивидуумов для их дальнейшего использования в качестве родителей бу- дущего потомства. В процессе отбора применяются две разные методологии, опи- санные ниже (но иногда эти методологии используются одновременно). > Сексуальное размножение. Для осуществления этой методологии требуется два родителя; генетические коды индивидуумов, выбранных в качестве родителей, комбинируются для формирования потомства. > Асексуальное воспроизводство. При использовании этой методологии подра- зумевается, что в формировании потомства участвует только один родитель. Пригодность потомства в весьма значительной степени зависит от правильной организации процесса отбора. Дарвин заметил, что вероятность распространения по генофонду генов успешно действующих индивидуумов является более высокой. Благодаря тому, что в процессе отбора предпочтение отдается лучшим индивидуу- мам, средняя пригодность популяции, как правило, возрастает от поколения к поко- лению. Предпочтительный отбор наиболее пригодных индивидуумов принято назы- вать элитизмом.
1\a1allausfk Глава 32. Генетические алгоритмы 493 Принципы элитизма можно применять и в других стадиях генетического алго- ритма, но особенно важное значение они имеют при выборе родителей. Если для размножения выбраны пригодные индивидуумы, то их потомство, по всей вероят- ности, также будет пригодным, но в этом нет абсолютно никаких гарантий. Замеча- тельное потомство может также появиться и у малопригодных родителей. Но, как правило, применение принципов элитизма способствует повышению средней при- годности популяции и обнаружению лучших решений. Выбирая либо подход, основанный на принципах элитизма, либо подход, преду- сматривающий исследование всего пространства поиска (при котором в размноже- нии разрешается участвовать любому индивидууму), необходимо прийти к опреде- ленному компромиссу. Чем меньший вес придается принципам элитизма, тем шире становятся части пространства поиска, в которых проводятся исследования. Если же принципы элитизма рассматриваются как более значимые, то основное внимание сосредоточивается на тех частях пространства поиска, которые тяготеют к наиболее подходящим индивидуумам. Чем менее выражен элитизм, тем сильнее замедляется процесс эволюции, но гарантируется более полный охват пространства поиска. С другой стороны, эволюция, осуществляемая в условиях более полного примене- ния принципов элитизма, приводит к ускорению сходимости процесса достижения результата (хотя и не обязательно оптимального). Скрещивание В этой фазе генетический код обоих родителей комбинируется для формирова- ния потомства. Такое комбинирование становится возможным, только если исполь- зуется сексуальное воспроизводство; скрещивание кода одного лишь родителя не приносит какого-либо эффекта (поскольку гены, подлежащие “смешиванию”, яв- ляются идентичными). Источником идей скрещивания, применяемых в генетических алгоритмах, служит процесс создания репродуктивных клеток. Прежде чем стать сперматозоидом и яйце- клеткой, обычные клетки организма подвергаются такому преобразованию, что в них пары хромосом разделяются непосредственно в точке их соединения и снова подвер- гаются сборке в виде альтернативных пар. Благодаря этому достигается тот результат, что в репродуктивные клетки попадает примерно половина генов от каждого родителя. В организмах живых существ этот процесс осуществляется исключительно благо- даря биохимическим реакциям. А при использовании метода искусственной эволю- ции скрещивание необходимо осуществлять вручную. Как правило, такая операция выполняется путем копирования некоторых генов из индивидуума, выполняющего роль отца, а остальных генов — из индивидуума, выполняющего роль матери. При- менение случайных факторов в ходе осуществляемого при этом отбора позволяет га- рантировать, что родительские индивидуумы не всегда будут иметь полностью оди- наковых потомков, как и в реальной жизни. Рекомендуется, чтобы в процессе скрещивания, применяемого в генетических алгоритмах, соблюдался приемлемый баланс генов, взятых от обоих родителей, на- пример 60/40. (Иногда для этого достаточно поменять местами гены для создания дополняющего потомства, как описано в следующем разделе.) Другие несбаланси- рованные распределения возникают не столь часто, поскольку наилучшие признаки должны быть взяты от обоих родителей. А для того чтобы эти признаки были пере- даны в неискаженном виде, должна использоваться генетическая последователь-
494 Часть V. Работа с предметами и объектами ность достаточно большой длины. (Безусловно, нельзя гарантировать, что этого всегда можно добиться при использовании генетических алгоритмов, но в природе это требование обычно соблюдается.) При использовании таких распределений, как 95/5, преимущества сексуального скрещивания полностью исчезают, и сам процесс реализации генетического алго- ритма начинает напоминать асексуальное воспроизводство. Вместо этого, как пра- вило, лучше непосредственно заниматься моделированием асексуального воспроиз- водства, используя высокую частоту мутаций. Мутации В живых организмах мутации регулярно возникают в процессе деления клеток, но вероятности их возникновения особенно велики при создании репродуктивных клеток. Сбои могут возникать при проведении биохимических реакций, необходи- мых для осуществления процесса деления клеток, а хромосомы и гены постоянно подвергаются изменениям. В некоторых случаях клетки погибают или процесс оп- лодотворения оканчивается неудачей. В других случаях изменения закрепляются в потомстве, но мутация приводит к созданию “аномальных” индивидуумов, при- годность которых может изменяться в широких пределах. Мутации могут происходить на двух уровнях — в хромосомах (уровень генома) или в ДНК (уровень генотипа). Изменения на уровне генома обычно в гораздо большей сте- пени угрожают стабильности процесса воспроизводства, но встречаются весьма редко. В генетических алгоритмах операция мутации обычно применяется к генотипу потомства после его создания в целях имитации ошибок, возникающих во время оп- лодотворения. Как правило, мутации происходят только в аллелях; при этом с не- большой вероятностью (например, 0.001) изменяется их значение. Структура гене- тического кода (геном) чаще всего остается неизменной. Важность применения мутаций подтверждается тем, что успешно осуществляют- ся такие стратегии эволюции, в которых предусмотрены лишь мутации, а скрещива- ние не происходит. Применение мутаций позволяет достичь многих важных пре- имуществ, особенно связанных с тем, что поддерживается разнообразие генетиче- ского кода. Несмотря на это, мутации не являются настолько важными, как перво- начально считали специалисты по генетике, но мутации важнее, чем принято считать в настоящее время (как обычно, истина лежит где-то посередине). Выбор способа осуществления мутаций в процессе моделирования фактически зависит от того, какое представление применяется для самого генома. Как правило, мутации подвергаются только гены, поэтому достаточно обеспечить лишь простой переход из одного состояния в другое, чтобы можно было применять операции му- тации к некоторым генам случайным образом. Если же для мутаций открыт сам ге- ном (т.е. остальная часть генетического алгоритма позволяет применять произволь- но выбранные геномы), то может оказаться приемлемым подход, в котором мутаци- ям подвергается также и геном. Замена Создание одного или нескольких потомков осуществляется под влиянием каждого из описанных выше этапов. А этап замены предназначен для определения того, следу- ет ли вводить созданных потомков, рассматриваемых как новые индивидуумы, в ту же
Глава 32. Генетические алгоритмы 495 популяцию. Если ответ на этот вопрос отрицательный, то вновь созданные потомки должны быть отброшены. В противном случае, в соответствии с принятой политикой замены, должно быть решено, каким образом следует ввести того или иного индиви- дуума в популяцию. Если популяция не имеет какой-то конкретной организации, то значение имеет лишь то, происходит ли сама замена, а не то, как она происходит. На этом этапе генотип потомка полностью известен, поэтому в случае необходимо- сти может быть выполнена его оценка. В действительности в большинстве подходов к осуществлению замены для определения того, следует ли ввести индивидуума в попу- ляцию, учитывается значение его пригодности, полученное в результате оценки. Процесс эволюции популяции непосредственно зависит от применяемой функ- ции замены. Желательно иметь возможность постоянно контролировать качество решений, поэтому следует отдавать предпочтение наиболее пригодным индивидуу- мам. Иными словами, при проектировании схемы замены также необходимо руко- водствоваться принципом элитизма. В действительности благодаря этому появляет- ся возможность полностью исключить ввод в популяцию потомков с низкой при- годностью. Аналогичным образом новые индивидуумы могут применяться для за- мены в популяции существующих индивидуумов с низкой пригодностью. При выборе функции замены необходимо также учитывать, что эволюция может осу- ществляться в виде процесса, либо находящегося в установившемся состоянии, либо пре- дусматривающего смену поколений. В том случае, если эволюция осуществляется в устано- вившемся состоянии, каждый индивидуум обрабатывается отдельно и вводится в ту же по- пуляцию. А в случае смены поколений формируется другая популяция, содержащая сле- дующее поколение, и индивидуумы вводятся не в ту же, а в следующую популяцию. Благоприятной особенностью генетических алгоритмов является то, что они по- зволяют сохранять определенный круг одних и тех же индивидуумов в течение лю- бой продолжительности времени. Если используется подход, основанный на смене поколений, то в потомках сохраняется только генетический код индивидуума. Если же применяется подход, в котором популяция находится в установившемся состоя- нии, то существует возможность сохранять пригодных индивидуумов нетронутыми на протяжении всего процесса эволюции. За соблюдение этого требования также косвенно отвечает принятая политика замены, поскольку давно существующие ин- дивидуумы или родители, выполнившие функцию воспроизводства, могут заме- няться новыми генотипами. Генетические операции и правила осуществления эволюции Генетические операции — это инструментальные средства, используемые в каж- дой стадии реализации генетического алгоритма. Эти операции моделируют биохи- мические процессы, выполняемые на генетическом уровне, а правила осуществле- ния эволюции представляют собой принципы, применяемые в других частях гене- тического алгоритма и позволяющие оказать влияние на результат эволюции. В на- стоящем разделе рассматривается целый ряд широко используемых генетических операций, а также приведено описание правил осуществления эволюции.
496 Часть V. Работа с предметами и объектами Инициализация При порождении случайным образом все новых и новых индивидуумов важно добиться того, чтобы они были как можно более разнообразными. Это означает, что в идеальном случае применяемый механизм создания фенотипов должен обладать способностью к соз- данию всех допустимых решений. В результате этого можно добиться, чтобы начальная по- пуляция, составляющая пространство поиска, была достаточно представительной. Эго тре- бование полноты распространяется также на другие генетические операции. Задача обеспечения возможности вырабатывать случайным образом любые ре- шения не является слишком сложной, особенно если речь идет об обычных геноти- пах. Если же требуется вырабатывать более редко встречающиеся решения, то долж- ны быть более глубоко изучены используемые структуры данных. Массивы и списки Как правило, массивы содержат последовательности генов, относящиеся только к одному типу данных (например, используемые для представления последователь- ностей действий). Для этого чаще всего применяются числа с плавающей точкой и отдельные биты. При инициализации подобных структур должны быть правильно выбраны значения их длины, а также значения каждого гена. В соответствии с общепринятым подходом, на списки не распространяются огра- ничения по использованию одного и того же типа данных. Списки могут содержать числа с плавающей точкой, целые числа, булевы значения и т.д. Разумеется, списки могут быть промоделированы с помощью массивов (с использованием одного из многих программистских приемов), но, вообще говоря, различие между списками и массивами сохраняется только в силу традиции. Аналогичным образом можно задать длину списка, а также определить значения каждого гена; то же касается их типов. При выявлении признаков каждого индивидуума могут учитываться определен- ные ограничения. Это означает, что в ходе решения задачи может потребоваться учитывать конкретные свойства генотипа. Например, иногда возникает необходи- мость использовать массивы определенной длины или ввести ограничения на выбор типов данных в списке. В этом случае указанные ограничения должны учитываться в применяемом механизме инициализации. Это позволяет сэкономить ценное вре- мя, расходуемое как в процессе осуществления оценки, так и в ходе реализации са- мого генетического алгоритма, а также повысить качество решений. На рис. 32.6 по- казаны инициализированные случайным образом массив и список. Случайный массив | 4 | 8 j 1 | 6 | 7 | 5 | 2 | 3 Рис. 32.6. Пример массива и списка, которые были инициализированы случайным образом Случайный список
TWaMausifti Глава 32. Генетические алгоритмы 497 Деревья и графы Чем выше степень связности структур данных, тем сложнее становится задача их инициализации случайным образом. Поэтому хорошо зарекомендовали себя такие методы общего назначения, в которых вначале вырабатываются узлы, а затем между этими узлами формируются связи случайным образом. Что касается дерева, то каждый узел должен иметь только одно исходящее соеди- нение (кроме корневого, в котором такое соединение отсутствует). При выборе со- седнего узла, с которым должен быть соединен текущий узел, алгоритм не должен выбирать одного из потомков (из числа уже подключенных к узлу). Это позволяет гарантировать, что не будут формироваться какие-либо циклы. Благодаря этому также гарантируется создание остовного дерева, включающего в себя все узлы. Для получения бинарного дерева необходимо выбирать только родительские узлы, имеющие меньше двух входящих соединений. При использовании графов процедура формирования структуры становится немного проще. Необходимость предотвращать циклы отсутствует, поскольку в графах циклы яв- ляются допустимыми (и необходимыми). Но остается проблема создания единственного графа, охватывающего все узлы. Иногда вместо одного графа могут быть созданы два подграфа. Если такая ситуация является недопустимой, она может быть выявлена путем перехода по структуре данных. Если граф не охватывает все узлы, то может быть установ- лено случайным образом еще одно соединение. Такие шаги повторяются до тех пор, пока не будет окончательно создан требуемый полносвязный граф. Скрещивание Скрещивание осуществляется с помощью генетических операций, обеспечи- вающих комбинирование двух генотипов. При этом необходимо добиться того, что- бы в потомстве была представлена жизнеспособная смесь генов, полученных и от отца, и от матери. Достижение этой цели может быть связано с проблемами, по- скольку для решения этой задачи необходимо добиться сохранения качественных комбинаций генов и устранения неподходящих комбинаций. Тем не менее нелегко определить заранее, какие именно комбинации генов окажутся “пригодными”, по- этому функция скрещивания должна быть достаточно гибкой, для того чтобы пре- доставить возможность извлекать подобные комбинации. И в этом случае для разработки функции скрещивания чрезвычайно важно выбрать подходящую форму представления генотипа. Линейные структуры данных позволяют воспользоваться методами скрещивания, созданными на основании результатов изу- чения биологических закономерностей, а применительно к структурам данных, харак- теризующимся наличием высокой степени связности, может потребоваться примене- ние операций, специально предназначенных для обработки таких структур данных. Независимо от используемой разновидности генотипа, важно добиться того, чтобы в результате скрещивания под держивалась единообразная структура данных; в частно- сти, если должен соблюдаться какой-то конкретный синтаксис формирования этой структуры данных, то применение операции скрещивания не должно приводить к его нарушению. Кроме того, соблюдение данного требования способствует уменьшению объема избыточных вычислений, выполняемых в ходе реализации генетического алго- ритма.
498 Часть V. Работа с предметами и объектами Массивы и списки Как описано ниже, к таким линейным структурам данных, как массивы и спи- ски, может применяться широкий перечень операций скрещивания (рис. 32.7). В одной точке (унарное) В двух точках (бинарное) Равномерное Рис. 32.7. Применение различных видов скрещивания к двум генотипам > При унарном скрещивании (скрещивании в одной точке) определяется одна точка разбиения в родительских генотипах. После этого осуществляется раз- биение генотипов в этой точке, а также происходит перестановка и повторная сборка полученных четырех частей. > При бинарном скрещивании (скрещивании в двух точках) для разбиения ро- дительских структур используются две точки. С помощью этих точек опреде- ляется средний сегмент генотипа, который вставляется вместо сегмента с ге- нетическим кодом другого родителя. > При равномерном скрещивании какие-либо отдельные точки разбиения не используются. Вместо этого случайным образом копируется каждый ген от одного или другого родителя. Такой подход соответствует подходу с одной точкой разбиения, но порядок генов не учитывается. Каждая из этих операций имеет свою предпочтительную область применения, в за- висимости от того, дня чего предназначен основополагающий геном. Но относительно надежный вариант состоит в использовании равномерного скрещивания, поскольку этот метод неизменно обеспечивает получение качественной смеси генов. Деревья и графы При использовании деревьев операция выделения поддеревьев и обмена узлами в ге- нетическом коде является довольно тривиальной. Если деревья невелики, то достаточно выполнить такую операцию единожды, а при использовании более крупных древовид- ных структур данных может потребоваться повторить ее несколько раз (рис. 32.8). Если деревья формируются с использованием вполне определенного синтаксиса, то важно добиться того, чтобы в операциях скрещивания предусматривалась про- верка их совместимости с синтаксисом (такая необходимость возникает достаточно часто, особенно при использовании деревьев, а не списков или массивов). Присту- пая к решению любой задачи, необходимо следить за тем, чтобы операция скрещи- вания осуществлялась с учетом этих ограничений.
NataHautfiiik Глава 32. Генетические алгоритмы 499 Рис. 32.8. Обмен поддеревьями при выполнении операции скрещивания применительно к деревьям Что же касается графов, то описанная проблема становится сложнее. В частно- сти, определенные усилия требуются для поиска наиболее приемлемой линии раз- биения. Прежде всего множество узлов делится на два. Все ребра, полностью при- надлежащие каждому из полученных подмножеств (внутренние ребра), остаются неизменными, а внешние ребра разъединяются и снова соединяются со случайно выбранными узлами в другом родительском генотипе (рис. 32.9). Рис. 32.9. Результаты операции скрещивания в графах, при которой происходит разбиение структуры данных на две части и повторное соединение частей путем вос- становления связей, но между другими парами Сохранение всех внешних ребер может привести к созданию в графе плотных со- единений (с количеством ребер о (п2)), поэтому достаточно сохранить только поло- вину внешних ребер. В ориентированном графе в качестве таковых могут быть взяты либо только входящие, либо только исходящие ребра, а в неориентированном гра- фе — ребра, относящиеся только к индивидууму, выполняющему роль матери, или к индивидууму, выполняющему роль отца.
500 Часть V. Работа с предметами и объектами Мутация Операция мутации обеспечивает осуществление мутации в генотипе для модели- рования ошибок, возникающих во время оплодотворения. При осуществлении та- ких операций, как правило, модифицируются значения отдельных генов, в результа- те чего изменяется аллель. Но некоторые операции могут также осуществляться на уровне генома. В результате мутации в генофонд вводится новый генетический код, поэтому не- обходимо обеспечить, чтобы операция мутации позволяла вырабатывать любые ва- рианты генетического кода. В идеальном случае операция мутации должна также обеспечивать преобразование любого генотипа в любой другой, с учетом заданной последовательности произвольных преобразований. Это позволяет добиться того, чтобы генетический алгоритм был способен исследовать все пространство поиска. Чаще всего встречаются мутации в одном гене, и такой способ мутаций применя- ется почти ко всем структурам данных. Что же касается битов, то мутация может сводиться просто к изменению их значений на противоположные. А применительно к целым и вещественным числам в качестве мутации может использоваться инициа- лизация этих чисел случайным образом с помощью значений, относящихся к неко- торому диапазону. Еще один широко применяемый подход состоит в том, что числа складываются с небольшим случайно заданным значением в соответствии с тем, что определено гауссовым распределением (предусмотренным в большинстве генерато- ров случайных чисел). Массивы и списки Наиболее часто встречающаяся форма мутации происходит на генном уровне, а это — удобный способ внесения изменений в линейные структуры данных. Для проведения операции мутации достаточно знать, как вырабатываются все возмож- ные аллели для каждого гена. Значение гена должно подвергаться мутациям с низ- кой вероятностью (обычно, 0.001). В случае необходимости может также преду- сматриваться перестановка аллелей местами. Иногда предусматривается также изменение длины структуры данных, но с еще меньшей вероятностью. Размеры массивов могут увеличиваться или уменьшаться на небольшую величину, а списки — модифицироваться аналогичным образом. Такие операции выполняются глобально и приводят к существенному изменению разме- ров контейнеров еще до начала обработки данных. Возможен также еще менее явно выраженный подход, при котором происходит вставка или удаление генов из после- довательности со значительно меньшей вероятностью. В результате этого возникают косвенные изменения длины генетического кода (рис. 32.10). Рис. 32.10. Пример мутации, применяемой к одному из значений массива и к двум элементам списка
Глава 32. Генетические алгоритмы 501 Такая мутация фактически может повлечь за собой нежелательное изменение са- мого генома, в результате чего создаваемые генотипы становятся неприменимыми. Еще раз отметим, что если дела обстоят таким образом, то операция мутации должна обеспечивать возможность выявления и устранения указанной проблемы. Иногда внесение подобных структурных изменений вообще не требуется, поскольку обычно геном полностью определен и имеет постоянную структуру. Деревья и графы Применительно к более сложным структурам данных операция мутации осуще- ствляется столь же просто, как и на генном уровне. И действительно, всегда можно применить операцию мутации к аллели без особых усилий, независимо от того, представлена ли она в виде узла дерева или узла графа. Наряду с этим могут также осуществляться перестановки аллелей. Деревья допускают также возможность осуществлять много разных структурных мутаций. При этом изменения могут касаться количества уровней или дочерних уз- лов. Некоторые операции позволяют даже переставлять местами целые поддеревья. Задача осуществления структурных мутаций в графах немного сложнее. Тем не менее может использоваться такой же прием, как и при скрещивании; при этом узлы разбива- ются на две группы, а затем снова соединяются случайным образом. Вставка новых узлов может осуществляться в индивидуальном порядке, но может оказаться преимуществен- ным такой подход, который позволяет формировать со временем целые циклы. Основ- ная сложность при организации эволюционного процесса в графах фактически состоит в том, чтобы в результате эволюции сформировались осмысленные циклы. Отбор Отбор осуществляется по правилам, назначение которых состоит в том, чтобы с их помощью вырабатывалось решение по выявлению родительских индивидуумов, пригодных для размножения, и тех индивидуумов, которые не должны участвовать в воспроизводстве. Если принятые правила основаны на учете значений пригодно- сти, то появляется возможность ввести в действие принципы элитизма. Безусловно, каждая из генетических операций (т.е. операций, применяемых для скрещивания и мутации) может быть спроектирована таким образом, чтобы ее ис- пользование способствовало повышению производительности, но такая попытка редко оказывается успешной и чаще всего приводит лишь к лучшему пониманию рассматриваемой проблематики. А правила отбора, с другой стороны, оказывают непосредственное влияние на качество популяции, что может быть подтверждено объективными показателями. Масштабирование показателей пригодности До начала процесса отбора может быть предусмотрена предварительная обработ- ка результатов оценки. Необходимость в этом может возникнуть по многим причи- нам, в том числе описанным ниже [47]. > Значения должны быть положительными, чтобы существовала возможность интерпретировать их как вероятности.
. 502 Часть V. Работа с предметами и объектами > Из-за отсутствия эволюционного давления поиск может оказаться ориентиро- ванным в ошибочном направлении в связи с появлением “индивидуумов высшего качества”. > В некоторых случаях оценочные значения как таковые отсутствуют, посколь- ку возможно лишь ранжирование. Для решения указанных проблем предусмотрены некоторые широко применяе- мые подходы, в том числе описанные ниже. > Линейное масштабирование с помощью функции f (х) =ах+Ъ, параметры ко- торой, как правило, задаются отдельно для каждого поколения. > Экспоненциальное масштабирование на основе моделирования отжига, при котором используется функция f (х) =е Рх, позволяющая повторно нормали- зовать каждую из оценок, присвоенных значению 0. > Ранжирование с присваиванием значения пригодности каждому индивидууму с учетом его ранга, в связи с чем полученные оценки больше не составляют пропорцию. Например, первому элементу может быть присвоено значение 10, второму — 9, третьему — 8 и т.д. Применение этих методов позволяет устранить недостатки, возникающие при использовании нерегулярных функций пригодности, путем создания эволюцион- ного давления, распространяющегося на наиболее качественных индивидуумов. По- сле того как значения пригодности становятся масштабированными, появляется возможность использовать в процессе отбора различные правила, как описано ниже. > При использовании правила колеса рулетки каждому индивидууму назначает- ся сектор колеса, пропорциональный его пригодности. Колесо вращается со случайно выбранной скоростью, а после его останова индивидуум-победитель выбирается для спаривания! > В правиле отбора по принципу проведения турнира выбирается наилучший индивидуум из случайно выбранной группы. В одном из вариантов этого ме- тода предусматривается выработка случайного числа, соответствующего вели- чине показателя пригодности, а затем выбирается наивысшее значение. > Правило ранжирования, по существу, позволяет участвовать в спаривании только п индивидуумам с наивысшими значениями пригодности. Формиро- вание пар индивидуумов для участия в спаривании может осуществляться по- следовательно. > В правиле, основанном на методе случайного блуждания, происходит стохас- тический переход от одного индивидуума в популяции к другому и выбирается наилучший из всех, которые при этом встретились. Это правило действует особенно успешно применительно к популяциям, характеризующимся про- странственной связностью (например, в двухмерном пространстве). > Правило стохастического формирования выборки с учетом остатка позволяет участвовать индивидуумам в спаривании определенное количество раз, если их пригодность превышает среднее значение. Величина остатка от частного может использоваться для оценки вероятности повторного спаривания.
^laiaVaus^. Глава 32. Г енетические алгоритмы 503 Пригодность часто рассматривается как связанная со значениями вероятностей для воспроизводства. Основанные на этом правила предоставляют возможность ис- пользования вероятностей для создания новых популяций (или их частей). Замена Правила, используемые при осуществлении замены, во многом зависят от того, какой характер имеет сама эволюция. В подходах, основанных на формировании поколений, не происходит замена каких-либо индивидуумов, а просто предотвраща- ется их включение в следующую популяцию! С другой стороны, в подходах, осно- ванных на применении установившегося состояния, замена является неотъемлемой частью, поскольку позволяет освободить место в популяции для индивидуумов, сформированных в самую последнюю очередь. В настоящем разделе рассматривают- ся методы, как правило, используемые для исключения или замены индивидуумов, независимо от разновидности популяции. Существует возможность инкрементно промоделировать подход, основанный на формировании поколений (возможно, с использованием временной популяции), поэтому подход, основанный на применении установившегося состояния, может рассматриваться как более общий. Это означает, что при проектировании про- граммного обеспечения, в котором обеспечивается выполнение операции замены, может оказаться целесообразным воспользоваться гибкостью последнего подхода. Для замены индивидуумов могут применяться два основных критерия — при- годность и возраст. Тем не менее замена индивидуумов может осуществляться с по- мощью других специальных приемов. Ниже описаны правила, чаще всего приме- няемые при замене индивидуумов. > Если индивидуум находится в верхней части списка, составляющей п% от об- щего списка, найти другого индивидуума, относящегося к нижнему концу спектра пригодности, и заменить последнего. > Заменить родителей, имеющих потомство (один из вариантов этого правила состоит в том, что замене должны подвергаться родители, потомки которых оказались обладающими меньшей пригодностью). > Заменить самого старого индивидуума в популяции потомством, полученным в самую последнюю очередь (это — подход, гибридный по отношению к под- ходам на основе установившегося состояния и формирования поколений). > Индивидуумы, обнаруженные в ближайших окрестностях популяции (которая определена на двухмерной координатной сетке), могут быть заменены ло- кально сформированным потомством. Применяемые в этих правилах различные критерии могут комбинироваться для вычисления оценки вероятности замены индивидуума. Полученное значение оцен- ки может интерпретироваться с применением такого же способа, который аналоги- чен используемому в правиле отбора (например, турниры могут служить для опреде- ления того индивидуума, который должен умереть, а случайное блуждание — для поиска наименее пригодного индивидуума).
504 Часть V. Работа с предметами и объектами Более сложные проблемы После определения правил, операций и других параметров генетического алго- ритма может быть предпринята попытка использования алгоритма для решения конкретных задач, в связи с чем иногда обнаруживаются непредвиденные явления, как описано ниже. Преждевременная сходимость Как правило, гены индивидуумов, действительно превосходящих всех прочих, должны распространиться по всей популяции. А если какая-то конкретная аллель оказывается намного лучше по сравнению со всеми другими, она должна вытеснять все остальные. В конечном итоге может оказаться, что определенный ген представ- лен лишь с одной такой сохранившейся аллелью. Указанное явление известно под названием генетического дрейфа. Может ли сохранение наиболее пригодных аллелей рассматриваться как желатель- ное? Если полученное при этом решение является оптимальным, то возможность дос- тижения такой сходимости является благоприятной. Но, как и при использовании других форм оптимизации, сходимость может быть достигнута слишком рано, и в свя- зи с этим полученное решение иногда оказывается не самым лучшим. В таком случае генетический дрейф представляет собой проблему, поскольку под действием этого яв- ления исчезает разнообразие генофонда. Сохраняются только определенные аллели, поэтому сложно становится снова запустить механизм эволюции. Особенно серьезную проблему генетический дрейф представляет для небольших по- пуляций. При возникновении такого явления может потребоваться лишь несколько по- колений, чтобы победил генетический код успешно действующих индивидуумов. А если популяция более велика, риск преждевременной сходимости уменьшается. Проще всего проблему генетического дрейфа можно устранить, используя гораздо более высокую интенсивность мутаций, особенно в той части популяции, где обнару- живается сходимость. Применение такого подхода с большей вероятностью приводит к изменению значений генов, а также способствует активизации попыток ввести неко- торые новые аллели. Этот вариант организации работы позволяет снизить вероятность преждевременной сходимости, но для генетического алгоритма применение значи- тельного количества случайных мутаций является неблагоприятным. Более приемлемый способ может предусматривать предотвращение генетиче- ского дрейфа, а не его исправление. В основе соответствующего метода лежит нало- жение на популяцию таких ограничений, которые позволяют осуществлять размно- жение только в определенном подмножестве этой популяции, как описано ниже. > Могут быть подготовлены многочисленные популяции, имеющие относи- тельно небольшие размеры. Эти популяции должны обмениваться друг с дру- гом индивидуумами для обеспечения распространения генов, но при этом также предотвращается преждевременная сходимость. > Широко применяется также метод с использованием отдельных популяций, имеющих пространственную структуру. В таких популяциях индивидуумы представлены с помощью двухмерной координатной сетки и размножение
Глава 32. Генетические алгоритмы 505 разрешается с участием лишь индивидуумов, находящихся близко друг от друга. Повторный ввод в популяцию потомства также осуществляется локаль- но. Распространение генетического кода ограничивается в пространстве, в ре- зультате чего появляются островки пригодности — участки, на которых гене- тический код является аналогичным. Практика показала, что такие методы предотвращения преждевременной сходи- мости являются очень мощными. При использовании нескольких популяций повы- шается вероятность того, что объем занимаемой ими памяти будет больше, но с этим недостатком можно смириться, поскольку сам этот метод не требует создания ог- ромных популяций, которые позволяли бы устранить генетический дрейф более ра- дикальным способом. Удобным вариантом является также применение пространст- венной организации в популяциях. Медленная сходимость Могут также возникнуть трудности при попытке вообще заставить алгоритм схо- диться, если этого не наблюдается. Такая проблема возникает, если функция при- годности фактически почти не способствует выработке решения (иными словами, все формируемые ею значения пригодности являются аналогичными). Кроме того, процесс сходимости к определенному результату может также стать затруднитель- ным, если в результатах оценки пригодности обнаруживается шум. В подобных случаях настоятельно рекомендуется повторно спроектировать функ- цию пригодности (см. главу 35, “Проектирование обучающихся средств ИИ”). Но есть и другой подход, предусматривающий более широкое использование принципов эли- тизма, которые действительно способствуют тому, чтобы наиболее пригодные инди- видуумы распространяли свои гены по всей популяции. Безусловно, при этом увели- чивается риск преждевременной сходимости, но чаще всего остается возможность найти правильный компромисс между этими двумя противоположными тенденциями! Ситуация может быть также немного улучшена с использованием адаптивного подхода, основанного на принципах элитизма. На первых этапах целесообразно на- чать с применения высокой степени элитизма, что способствует быстрому улучше- нию результатов. После этого с преждевременной сходимостью часто позволяет справиться уменьшение степени элитизма по мере возрастания пригодности всей популяции. Наряду с этим, для более полного исследования пространства поиска может применяться введение все более случайных мутаций. Недостатки, связанные с использованием большого количества параметров Задача применения генетических алгоритмов часто усложняется в связи с тем, что в этих алгоритмах используется большое количество параметров. К ним относятся часто- та мутации, тип и параметры скрещивания, размер популяции и применяемые правила масштабирования пригодности, но на этом список параметров далеко не исчерпывается. Обычно известны такие приемлемые значения, с которых можно начать проведение экспериментов, но чаще всего выбор идеальных значений зависит от самой задачи.
506 Часть V. Работа с предметами и объектами Как описано ниже, вместо проведения экспериментов вручную можно использо- вать несколько других вариантов, но с этим обычно связано увеличение затрат вре- мени на вычисления. > Существует возможность использовать иерархию генетических алгоритмов. В частности, один из так называемых метагенетических алгоритмов определен на базе обычного генетического алгоритма и обеспечивает оптимизацию ука- занных ему параметров, но этот подход характеризуется особенно значитель- ными затратами времени. > Предусмотрен также так называемый “не имеющий параметров” генетический алгоритм. Фактически этот алгоритм имеет параметры, но они выбираются та- ким образом, чтобы не требовался ввод данных человеком. При этом использу- ется комбинация приемлемых вариантов параметров для частот скрещивания и частот мутации, а после этого при моделировании с помощью многих разных размеров популяции применяется метод поиска решения путем перебора [36]. На практике вполне оправдывает себя применение параметров, заданных по умолчанию. Для реализации той или иной из указанных стратегий может потребо- ваться много времени, но создается впечатление, что нельзя исключить возможность найти метод решения подобного рода задач, превосходящий все остальные методы. Поэтому гораздо более конструктивный подход состоит в том, чтобы посвятить ос- новное время разработке качественного проекта. Знания в проблемной области Генетические алгоритмы по принципу своего действия могут оказаться довольно примитивными; в частности, в них не используются знания о задаче, позволяющие помочь быстрее найти ее решение. Безусловно, всегда есть такая возможность, что- бы инженер по искусственному интеллекту лучше организовал работу генетического алгоритма, введя в проект более конкретные правила и генетические операции. Например, во время инициализации может непредвиденно возникнуть сдвиг в пользу некоторых генотипов. Если же эксперт может указать, какие из генотипов, по всей вероятности, должны обладать хорошими характеристиками, то в алгоритме можно предусмотреть выработку случайным образом большего количества решений, подобных тем, что указаны экспертом. Кроме того, могут быть разработаны не только генетические операции, но и спе- циализированные процедуры выполнения этапов скрещивания и мутации. В этих процедурах должны учитываться рекомендации по выбору наиболее удобных мест разбиения генетического кода, по использованию значений частоты мутации, зави- симых от генов, или даже по предотвращению бесплодных манипуляций генами еще до того, как эти манипуляции произойдут. Наконец, успешному применению генетических алгоритмов может способство- вать правильный выбор самого представления. Может оказаться возможным выбор такого представления, которое способствует минимизации размеров пространства поиска или даже позволяет уменьшить сложность этого пространства. Взаимозави- симые гены могут быть расположены ближе друг к другу, чтобы было проще хранить их вместе при передаче потомкам.
Глава 32. Генетические алгоритмы 507 Обсуждение полученных результатов Генетические алгоритмы представляют собой очень гибкую форму оптимизации и могут применяться как универсальный способ решения большинства задач. Для выбора способа представления и подготовки процедур преобразования часто достаточно выпол- нить лишь небольшой объем работы, причем чаще всего большего и не требуется. Генетические алгоритмы, как правило, позволяют успешно избежать локальных минимумов, а при наличии достаточного времени часто позволяют найти решение, близкое к оптимальному. Такая особенность генетических алгоритмов обусловлена гем, что они имеют глобальный характер; поиск, осуществляемый с их помощью, не ограничивается лишь определенными областями пространства поиска. Во многих случаях существует возможность дополнить эволюционные алгорит- мы, спроектировав специализированные генетические операции. Это позволяет ин- женеру по искусственному интеллекту ввести в систему свои знания о проблемной области в целях повышения качества решения или ускорения сходимости. С другой стороны, успешному применению генетических алгоритмов может способ- ствовать ввод в действие специализированных операций, но это не всегда позволяет вос- пользоваться преимуществами наличия знаний о свойствах задачи для более успешного ее решения (например, знаний, представленных в виде математических формул). Генетические алгоритмы успешно действуют в глобальных масштабах, но не де- монстрируют высокой эффективности при локальной оптимизации (иными слова- ми, не позволяют вносить небольшие изменения в решение для его улучшения). Указанной цели можно добиться с использованием мутаций, но, вообще говоря, для этого требуются большие затраты времени. В таких случаях лучше себя проявляют жадные методы восхождения к вершине. В основе функционирования генетических алгоритмов лежит использование слу- чайных чисел. Это означает, что нелегко предсказать заранее, будет ли достигнут ус- пех или неудача. Поэтому может оказаться, что в одном случае правильное решение обнаруживается после формирования всего лишь нескольких поколений, а в другом могут потребоваться целые династии! Как правило, не рекомендуется использовать алгоритм, в основе которого лежит выработка случайных чисел, если решение долж- но быть получено быстро. В процессе эксплуатации генетических алгоритмов требуется выработка целых популяций решений. Это означает, что даже если генотипы являются несложными, могут очень быстро возрастать затраты на эксплуатацию алгоритма, как с точки зре- ния используемой памяти, так и с точки зрения расходуемых вычислительных ре- сурсов. При решении сложных задач часто не удается осуществлять процесс оптими- зации с такой скоростью, чтобы можно было обеспечить выработку решений в инте- рактивном режиме. Резюме Как описано ниже, в основе использования генетических алгоритмов лежат такие понятия, как биологическая эволюция и форма представления.
508 Часть V. Работа с предметами и объектами > Генетические алгоритмы основаны на использовании естественного отбору под воздействием которого выживают только самые пригодные индивидуумы. > Для кодирования решений применяются последовательности генов, извест- ных как генотипы. Эволюционные методы оптимизации могут также приме- няться к произвольным структурам данных, таким как деревья или графы. > Для оценки пригодности каждого решения используется функция оценки. Значение пригодности может также подвергаться последующей обработке в целях поддержания эволюционного давления. Функционирование самого генетического алгоритма осуществляется в несколько стадий, которые описаны ниже. > Во время инициализации создается популяция индивидуумов случайным об- разом. Возможность направить эволюцию в нужную сторону обеспечивается путем ввода в популяцию заранее подготовленных индивидуумов. > В процессе отбора из популяции выбираются два родительских индивидуума, как правило, на основе принципа элитизма. > Для комбинирования генетического кода двух родителей используется скре- щивание, а в ходе мутации происходит изменение случайным образом вы- бранных для этого генов. > На основе используемого правила замены принимается решение о том, долж- но ли полученное в результате потомство быть введено в популяцию. При практической реализации эволюционных методов необходимо учитывать определенные их особенности, в силу которых возникают такие недостатки, как преждевременная и медленная сходимость. Указанные недостатки можно преодо- леть, настраивая параметры должным образом. Безусловно, генетические алгоритмы не являются особенно эффективными, но представляют собой чрезвычайно надеж- ную и гибкую стратегию оптимизации. В главе 34, “Адаптивные оборонительные стратегии, основанные на генетических алгоритмах”, генетические алгоритмы применяются для усвоения путем обучения таких простых форм поведения, как ракетные прыжки и уклонение от ракет. А в следующей главе рассматривается широко распространенный способ использования генетических алгоритмов, которые объединяются с представлением, подобным правилам. Практическая демонстрационная версия В качестве примера рассматривается простой анимат, получивший имя Evolvee, в котором используется генетический алгоритм для усвоения с помощью обучения присущих ему форм поведения. В анимате Evolvee используются существующие представления, такие как нейронные сети, усовершенствование которых с помощью эволюционных методов осуществляется в соответствии с некоторыми показателя- ми высокого уровня. Действия анимата Evolvee характеризуются довольно низкой реалистичностью, хо- тя простые задания (в частности, нападение на противника) для него не составляют проблемы.
^atatiau^ik Гпава 33 Обучающиеся системы КЛАССИФИКАТОРОВ В ЭТОЙ ГЛАВЕ- • Представление классификаторов • Краткий обзор системы классификаторов • Архитектура системы классификаторов • Обсуждение полученных результатов • Резюме Обучающиеся системы классификаторов (Lear- ning Classifier System— LCS) проще всего можно описать как объединение трех широко при- меняемых методов ИИ: генетических алгоритмов, систем, основанных на правилах, и средств обуче- ния с подкреплением. Обучающиеся системы классификаторов способны обучаться в целях предсказания наилучших действий исходя из те- кущей ситуации (решать задачу классификации). При разработке систем, основанных на прави- лах, требуются значительные усилия со стороны проектировщика; в этом состоит так называемое узкое место в приобретении знаний. Вместо этого в системе можно использовать творческий потен- циал генетических алгоритмов и средств управле- ния, реализуемых с помощью методов обучения с подкреплением, для самостоятельного поиска правильных форм поведения; именно так проис- ходит самостоятельное обучение большинства животных. Согласно теории, такая система спо- собна найти наиболее подходящее множество правил, используя в качестве исходных данных информацию, полученную из среды, а в качестве обратной связи— показатели производительно- сти высокого уровня. На практике могут возни- кать затруднения при достижении адаптации в ходе эксплуатации, достаточно реалистичной с точки зрения участника игры, но обучающиеся системы классификаторов обладают несомнен- ными преимуществами по сравнению с другими подходами (например, позволяют автоматизиро- вать их работу). В настоящей главе рассматриваются пере- численные ниже темы.
510 Часть V. Работа с предметами и объектами > Основополагающее представление обучающейся системы классификаторов в виде множества правил, рассматриваемых как отдельные классификаторы и состоящих из головы (согласующейся с сенсорным входом) и тела (соответствующего эффек- торному выходу). > В правилах хранится также дополнительная информация, в частности, ка- сающаяся прогнозирования, преимуществ этих правил и оценки их ошибок. > Вводное описание систем классификаторов, в том числе анализ их внутреннего функционирования (с точки зрения архитектуры) и каждого из компонентов. > Различные характеристики обучающихся систем классификаторов, всевоз- можные практические задачи, решаемые с их помощью, а также примени- мость этих систем с точки зрения разработчика игр. В настоящей главе не только описаны теоретические основы систем классификато- ров, но и показан один из способов применения генетических алгоритмов на практике. Представление классификаторов Основной элемент системы классификаторов, рассматриваемый как отдельный клас- сификатор, можно сравнить с правилом, поскольку он также состоит из головы и тела. Голова и тело классификатора Как правило, условия классификаторов моделируются с помощью троичной стро- ки (т.е. строки, в которой каждый символ может иметь три разных значения). Это тро- ичное представление включает стандартные двоичные значения 0 и 1, а также символ “безразличия”, обозначенный как #, позволяющий системе делать обобщение. Эта троичная строка условия имеет такую же длину, как и двоичная входная строка (как правило, таковой является строка с записью восприятия анимата). Благодаря приме- нению символа “безразличия”, #, появляется возможность согласовывать разнообраз- ные входные данные с условиями классификаторов. Согласование происходит, если соответствующие биты равны или одним из сравниваемых символов является #. Что же касается действий классификаторов, то они, как правило, кодируются как двоичные строки, соответствующие эффекторам анимата. Классификаторы описы- вают конкретные действия, поэтому в выходных данных не требуется абстракция (иными словами, выходные данные задаются без символа #). Другие атрибуты Каждый классификатор хранит также прогноз, который соответствует ожидае- мому результату выполнения ссмяъстствующего действия. Результат может быть оп- ределен как итог накопления вознаграждений во времени (например, единиц доспе- хов, успешно собранных в игре). По существу, результат измеряет качество функ- ционирования конкретного классификатора в долгосрочной перспективе. Вместе с прогнозом в классификаторе хранится также значение его ориентиро- вочной точности. Чтобы иметь возможность подтверждать единообразие функцио-
Глава 33. Обучающиеся системы классификаторов 511 пирования классификатора, необходимо измерять точность его прогноза. Если классификатор имеет низкую точность, то он не принесет пользы своим прогнозом (независимо от возвращаемого им результата). В таком случае нельзя доверять клас- сификатору как основе конкретного правила действия. С другой стороны, правила, обладающие высокой точностью, позволяют правильно интерпретировать события, происходящие в мире, и поэтому с большей вероятностью способствуют достиже- нию успеха при их применении. До появления системы XCS Уилсона [87] (принципиально новой системы класси- фикаторов) пригодность классификатора оценивалась с точки зрения вырабатывае- мого им прогноза результата. По существу, применявшаяся ранее система вознаграж- дала классификатор с учетом того, насколько качественными были достигнутые в нем результаты. Такой подход чаще всего оказывался неприменимым, поскольку лишь очень общие классификаторы позволяют добиться высококачественного прогноза ре- зультата, но обладают особенно низкой точностью. В связи с этим в применявшихся системах как приемлемые рассматривались все охваченные ими правила, а из этого следует, что система классификаторов не позволяет найти наилучшее представление, а, скорее, вырабатывает смутный образ, состоящий из общих понятий. А после того как для оценки пригодности стала применяться точность, появилась возможность на- ходить наилучшее множество классификаторов. По существу, это открытие стало ре- шающим шагом к созданию современных обучающихся систем классификаторов. Для вычисления результата и ошибки прогноза в каждом правиле используется счетчик. До тех пор пока значения не инициализированы, счетчик остается равным 0. По мере возрастания показаний счетчика возрастает и точность значений (поскольку увеличивается количество доступных обучающих примеров). Краткий обзор системы классификаторов Система классификаторов состоит из многих компонентов, напоминающих ком- поненты, применяемые при реализации трех других методов ИИ (генетических ал- горитмов, систем, основанных на правилах, и систем обучения с подкреплением). По умолчанию обучение происходит в оперативном режиме, но в системах, приме- няемых для создания игрового программного обеспечения, в качестве предвари- тельной обработки может использоваться моделирование. Архитектура системы классификаторов Процесс функционирования системы классификаторов следует за процессом пе- редачи потока данных через систему, как показано на рис. 33.1. Процесс начинается с проверки сенсорных входных данных и определения множества согласующихся классификаторов с помощью вычислений. Классификаторы, согласующиеся с вход- ными данными, в дальнейшем могут принять участие в работе генетического алго- ритма. После этого осуществляется обработка согласующегося множества для извле- чения значения прогноза, касающегося каждого из действий. После того как станут известны прогнозы, появляется возможность выбрать наиболее подходящее дейст-
512 Часть V. Работа с предметами и объектами вие. Затем осуществляется фильтрация согласующегося множества таким образом, чтобы в нем остались лишь такие правила, которые указывают на необходимост» выполнения выбранного действия. Наконец, это действие осуществляется с помо- щью эффекторов. Предсказанное возвращаемое значение Рис. 33.1. Блок-схема системы классификаторов, на которой функциональные компо- ненты обозначены кружками, а структуры данных — прямоугольниками После этого, на следующем этапе моделирования, компонент, обеспечивающий подкрепление, корректирует параметры классификаторов в множестве действий на основании данных о вознаграждении и прогнозируемом результате. Это краткое описание позволяет получить общее представление о том, как в целом работает система. В следующих разделах рассматриваются отдельные компоненты. Согласование классификаторов с входными данными В фазе согласования, по существу, анализируются сенсорные входные данные обучающейся системы классификаторов (двоичные), после чего эти данные сравни- ваются с условиями отдельных классификаторов (троичными). Все применимые классификаторы, в том числе выбранные с учетом символов “безразличия”, сохра- няются в множестве согласования в виде, приспособленном для дальнейшей обра- ботки (табл. 33.1).
^alailaus^ii!. Глава 33. Обучающиеся системы классификаторов 513 Таблица 33.1. Популяция классификаторов, в которых показаны условия, действия, прогнозы и ошибки Условие Действие Прогноз Ошибка 01101 11 48 0.1 0#011 00 10 0.09 10110 01 25 0.14 #011# 01 17 0.05 1##1# 10 31 0.23 Ниже двойной линии показаны классификаторы, согласующиеся с входными данными 10110. Создание новых классификаторов Моделирование эволюции осуществляется с целью создания новых классификаторов на основе множества согласования. Классификаторы создаются в двух случаях: если ко- личество правил согласования является недостаточным (охват существующих правил) и если значение вероятности недостаточно велико (открытие новых правил). Эта фаза фактически осуществляется с помощью генетического алгоритма. В качестве генетиче- ских операций используются случайная инициализация, мутация и скрещивание. Охват Соблюдение требований по достаточно широкому охвату пространства поиска га- рантирует, что количество согласующихся классификаторов всегда будет достаточно велико; для этого в случае необходимости вырабатываются случайным образом новые классификаторы. Соблюдение указанного требования позволяет вводить разнообразие в популяцию классификаторов и тем самым уменьшать вероятность преждевременной сходимости (в популяции) или попадания в локальные ловушки (в среде). Значения прогноза и ошибки остаются неинициализированными при значении счетчика, рав- ном 0, так как первая оценка вырабатывается только в фазе подкрепления. Открытие Одним из важных свойств систем классификаторов является то, что их работой не управляет непосредственно сам генетический алгоритм. Вместо этого генетиче- ский алгоритм рассматривается как творческий компонент, который находит новые формы поведения, применяемые тем не менее с низкой вероятностью. Вероятность выбора классификатора из множества согласования пропорциональна его пригодности (в этом выражается подход, основанный на принципах элитизма). Как правило, выбираются два родителя, создаются два новых классификатора, и эти класси- фикаторы вводятся непосредственно в популяцию. И в этом случае счетчику присваива- ется значение 0, а другие величины инициализируются в фазе подкрепления. С каждой генетической операцией связаны разные значения вероятности; вероят- ность того, что произойдет мутация в одном бите, измеряется величиной р (греческая бу- ква мю), а вероятность применения операции скрещивания с разбиением в одной точке определяется величиной % (греческая буква хи), как описано в главе 32, “Генетические алгоритмы”.
514 Часть V. Работа с предметами и объектами Удаление классификаторов Классификаторы вводятся в популяцию через случайно выбранные интервалы времени, поэтому иногда возникает необходимость удалять наименее пригодные классификаторы, чтобы держать размеры популяции под контролем. Удаление клас- сификаторов приводит также к применению эволюционного давления на популя- цию и способствует увеличению пригодности системы. Размеры популяции не должны превышать установленного верхнего предела. Ес- ли количество классификаторов становится слишком большим, происходит удале- ние наименее качественных классификаторов с применением стохастических прин- ципов. Вообще говоря, в каждом классификаторе хранится оценка размера мно- жеств согласования, в которых он участвует. Вероятность удаления классификатора пропорциональна этому оцениваемому размеру и пригодности классификатора. По существу, чем чаще используются классификаторы, тем больше вероятность их уда- ления после того, как они становятся непригодными. Применение в качестве критерия удаления классификаторов размера множества согласования приводит к тому, что между отдельными множествами согласования возникает равновесие. В научной области, связанной с использованием генетиче- ских алгоритмов, такой метод принято называть распределением по нишам. Генетиче- ский алгоритм, распределяющий по нишам, фактически разделяет пространство по- иска на отдельные части и позволяет рассматривать эти части, главным образом, как отдельные друг от друга. Генетические операции, включая операции удаления, про- изводятся с учетом распределения классификаторов по таким нишам. Если такие операции выполняются правильно, то следствием становится сохранение равномер- ного распределения классификаторов по нишам. Поэтому распределение по нишам способствует расширению разнообразия в по- пуляции классификаторов, относящихся к обучающейся системе классификаторов. При этом отдельные классификаторы применяются лишь к определенной части пространства входных данных. В идеальном случае можно даже поставить перед со- бой такую задачу — вынудить систему обеспечить охват всех возможных входных данных (либо явно, либо с помощью обобщения), чтобы эта система всегда предла- гала какое-то действие. Без распределения по нишам система классификаторов не сможет накапливать широкие знания о задаче, а не просто знания о локальных об- ластях пространства поиска, в которых высоки значения пригодности. Прогноз Во множестве согласования условия классификаторов являются аналогичными, поскольку эти условия согласуются с одними и теми же входными данными. В фазе прогнозирования происходит еще большее разделение классификаторов, поскольку классификаторы сортируются по критерию идентичности действий. В каждом из классификаторов имеются разные прогнозы, касающиеся результатов, поэтому в фазе прогнозирования предпринимается попытка оценить суммарный результат для каждого действия, с учетом потенциально различных прогнозов (табл. 33.2).
Глава 33. Обучающиеся системы классификаторов 515 Таблица 332. Множество согласования, сгруппированное по действиям в целях извлечения окончательного прогноза, касающегося результата Условие Действие Прогноз Пригодность 10110 01 48 47 #011# 01 31 13 1##1# 01 7 81 ##1#0 10 27 92 10##0 10 13 58 Как правило, для каждого действия оцениваемое значение результата представляет собой взвешенное среднее всех прогнозов классификаторов. Уилсон рекомендует ис- пользовать для получения взвешенного среднего значения пригодность, чтобы можно было отдать предпочтение прогнозам наиболее точных классификаторов [87]. Отбор действия После того как будут получены прогнозы результатов для каждого из действий, появляется возможность выбрать наиболее подходящее действие. Очевидно, что наиболее перспективным вариантом является действие, характеризующееся наи- высшим результатом. Но может также оказаться более успешным способ, преду- сматривающий использование рандомизированных результатов выбора действий, поскольку указанный способ позволяет приобрести в процессе эксплуатации систе- мы больший опыт взаимодействия с миром. При этом применяются два описанных ниже подхода, которые принято называть правилами отбора действий. > Детерминированное правило предусматривает выбор действия с наивысшим прогнозом результата (жадное правило). > Правило колеса рулетки требует, чтобы выбор действия осуществлялся с веро- ятностью, пропорциональной пригодности. Вообще говоря, обычно используется сочетание этих двух правил, позволяющее достичь компромисса между стремлением использовать наилучшие результаты и ис- следовать случайно выбранные действия. Дополнительная информация Исследование и использование (а также компромиссное сочетание этих подходов), по существу яв- ляются ключевыми элементами схем обучения, осуществляемых без стороннего руководства (особенно задач обучения с подкреплением). Тяготение к одному из этих подходов является недос- татком генетических алгоритмов, в которых он проявляется даже несмотря на то, что генетические алгоритмы представляют собой, прежде всего, стратегию оптимизации, поскольку слишком значи- тельная приверженность принципам элитизма приводит к преждевременной сходимости. Эта тема будет рассматриваться более подробно при описании теории, лежащей в основе обучения с подкреп- лением, в главе 46, “Обучение с подкреплением”.
516 Часть V. Работа с предметами и объектами Подкрепление Компонент, выполняющий функции подкрепления, отвечает за обновление зна- чений в правилах, относящихся к множеству действий, но только после получения вознаграждения из среды. Как правило, средства ИИ должны ожидать наступления следующего шага моделирования, t+1, чтобы получить вознаграждение (иными словами, г (t+1)). Поэтому применяемая реализация должна обеспечивать сохра- нение множества действий до указанного момента. В число значений, которые должны быть модифицированы, входят прогноз, ошибка прогнозирования (точность) и пригодность. Принцип, используемый для обновления этих значений, основан на дельта-правиле Видроу и Хоффа, как описа- но в главе 17, “Персептроны”. Идея состоит в том, что значения должны корректи- роваться в направлении к желаемой цели, с небольшим шагом 0. Желаемый прогноз Р определяется как максимальное значение из массива про- гнозов, умножаемое на коэффициент обесценивания уе [ 0.. 11 (греческая буква гамма) и складываемое с величиной обратной связи по вознаграждению, г (t+1). Это значение используется для обновления оценки ошибки, которая обозначается греческой буквой эпсилон, Ej: Ej +- Ej + 0( |Р - Pj | - Ej) В случае прогноза результата pj соответствующее значение корректируется в на- правлении к желаемому значению Р с использованием дельта-правила, после обнов- ления значения ошибки: Pj <- Pj + 0(Р - Pj) Точность определяется как функция от значения ошибки, которая увеличивает значение точности в сторону единицы по мере уменьшения ошибки. Такая законо- мерность моделируется с помощью функции exp (-Ej) и может быть откорректиро- вана путем масштабирования значения ошибки на величину альфа, а. Эта функция проще по сравнению с функцией, которая была первоначально определена Уилсо- ном [87], но действует на практике вполне приемлемо. Пригодность определяется как относительная точность классификатора. Относи- тельная точность вычисляется как разность между текущим значением точности и средним значением точности для всей популяции. Пригодность оценивается с ис- пользованием среднего значения, относящегося к первым п обновлениям, а затем — с применением дельта-правила (при Т|=1 /0). Обсуждение полученных результатов Обучающиеся системы классификаторов особенно хорошо проявляют себя при оценке преимуществ действий, а из этого следует, что такие системы позволяют также использовать в своих интересах наилучшие действия. Поскольку классифика- торы получают вознаграждения за свою точность, знания о мире, моделируемые с помощью обучающихся систем классификаторов, вообще говоря, представляют истинную суть мира.
^laiaHaus^. Глава 33. Обучающиеся системы классификаторов 517 Основная форма представления классификаторов является относительно про- стой для понимания, поскольку классификаторы почти столь же выразительны, как и системы, основанные на правилах. Но, к сожалению, применяемые в классифика- торах двоичные и троичные значения не слишком удобны для чтения. Двоичные сенсоры могут оказаться весьма эффективными, но при работе с ними приходится сталкиваться с определенными затруднениями. В частности, если из интерфейсов поступают разнородные данные (например, числа с плавающей точкой, целые числа и массивы), то требуется проведение большого объема работы по “сериализации” для их преобразования в двоичные значения. Что же касается разработки игр, то обучающиеся системы классификаторов мо- гут применяться во многих ситуациях. Такие системы, прежде всего, предназначены для обеспечения адаптации персонажей игры к их среде в режиме оперативного мо- делирования, хотя обычно более надежным является подход, при котором решение задач осуществляется в автономном режиме. Чаще всего в качестве приложений обучающихся систем классификаторов рассматриваются задачи управления, но вме- сто этого данная технология может также применяться для оптимизации множества правил, используемых д ля решения задачи. Используемая форма представления может быть без особых сложностей приспо- соблена для обработки других категориальных типов данных. Для этого достаточно лишь перейти к использованию символов, а не двоичных значений, но сохранить символ “безразличия”. Обучающиеся системы классификаторов позволяют учиты- вать иерархию символов (например, Marvin is-а player), поэтому дают воз- можность формировать в результате обучения точные обобщения. С другой сторо- ны, при наличии непрерывных значений невозможно столь же просто добиться расширения указанного принципа, поскольку задача обобщения становится гораздо более сложной. Таким образом, теоретически обучающиеся системы классификаторов, а также их слегка адаптированные версии могут применяться для решения почти любых за- дач создания игровых средств ИИ, начиная от средств предотвращения столкнове- ний с препятствиями и заканчивая средствами обучения оценке оружия, а также включая все задачи обучения с подкреплением, которые будут рассматриваться в части VII. В действительности, для этого требуется лишь предусмотреть применение определенного вида сигнала вознаграждения или значения пригодности, после чего средства накопления знаний, реализуемые с помощью генетических алгоритмов, обеспечат поиск подходящего набора правил. Но на практике могут оказаться более приемлемыми другие методы. Резюме В настоящей главе приведено краткое описание систем классификаторов, кото- рые представляют собой гибридное сочетание средств, рассматриваемых в разных научных областях. Как показано ниже, даже само используемое представление пред- ставляет собой комбинацию средств, которые используются в системах, основанных на правилах, и генетических двоичных кодировках.
518 Часть V. Работа с предметами и объектами > В каждом классификаторе задано условие, которое позволяет использовать символы “безразличия” для формирования обобщения на основе сенсорных входных данных. > Действия согласовываются непосредственно с эффекторами; при этом обоб- щение (или абстракция) не применяется. > Классификаторы хранят все статистические данные об их последнем по времени применении: прогнозируемый результат, ошибка (используется для вычисления точности), пригодность, средний размер множества согласования и т.д. По своей внутренней организации системы классификаторов удивительно напо- минают системы, основанные на правилах, особенно если учесть, что в тех и других применяются фазы разрешения конфликтов и согласования. Но в системы класси- фикаторов внесены некоторые ключевые усовершенствования, указанные ниже, ко- торые обеспечивают обучение этих систем. > Для обработки множества согласования может применяться эволюционный компонент. Если это множество пусто, случайным образом создается класси- фикатор. В противном случае с низкой вероятностью происходит мутация и скрещивание двух классификаторов, которые вновь вводятся в популяцию. Время от времени происходит удаление наиболее избыточных и наименее точных классификаторов. > Для обновления значений классификаторов (например, прогноза и ошибки) в компоненте подкрепления применяется сигнал вознаграждения, полученный из среды, вместе с существующими оценками преимущества классификатора. Со временем указанные процессы приводят к созданию множества высококаче- ственных классификаторов. Такая технология может применяться непосредственно для управления процессом решения задач, в котором решение должно быть найдено путем обучения в оперативном режиме. Но изложенные в данной главе идеи могут быть также в определенной степени модифицированы, чтобы иметь возможность обрабатывать на их основе другие представления (любые категориальные перемен- ные) и решать другие задачи (например, реализовать эволюционный подход с уче- том пригодности, а не вознаграждения). В анимате Cascador система классификаторов используется для обучения ведению игр на выживание в соответствии с индикатором производительности высокого уровня. Анимат Cascador способен пользоваться подсказками, предоставляемыми проектировщиком в качестве обратной связи. Приме- няемая в этом анимате система классификаторов все еще показывает более низкую производитель- ность по сравнению с разнородной архитектурой средств ИИ, но способна автономно создавать в це- лом удовлетворительные формы поведения.
^laiattaus,^. Гпава 34 Адаптивные ОБОРОНИТЕЛЬНЫЕ СТРАТЕГИИ, ОСНОВАННЫЕ НА ГЕНЕТИЧЕСКИХ АЛГОРИТМАХ В ЭТОЙ ГЛАВЕ, • Представление последовательностей действий • Генетические операции • Краткое описание эволюционного алгоритма • Проект модуля генетического алгоритма • Вычисление значений пригодности • Приложение • Оценка полученных результатов • Резюме Итак, целые две части этой книги посвящены описанию наступательных стратегий (напри- мер, связанных с ведением стрельбы и выбором оружия), поэтому создается впечатление, что на- выки аниматов необходимо дополнить с помо- щью оборонительных стратегий, таких как укло- нение от огня или выполнение непредсказуемых прыжков. В предыдущих двух главах обсуждалась новая технология, позволяющая различным созданиям приспосабливаться к своей среде на основе дар- виновских понятий. Поэтому вместо создания вручную нечетких правил, лежащих в основе обо- ронительных стратегий (о чем шла речь в главе 31, “Усовершенствование двигательных форм пове- дения с использованием нечетких систем”), мож- но предусмотреть обучение таких созданий спо- собам успешной защиты самих себя в ходе игры. Эта цель достигается путем помещения аниматов в конкурентную среду и применения эволюцион- ных методов для выбора форм поведения, обеспе- чивающих достижение максимальной степени пригодности (в частности, с использованием ге- нетических алгоритмов). В следующих разделах основные усилия будут сосредоточены на реше- нии задач уклонения от огня и выполнения ра- кетных прыжков, а в качестве упражнения будет оставлено решение задачи выполнения непред- сказуемых прыжков в целях предотвращения по-
520 Часть V. Работа с предметами и объектами ражения выстрелами; возможность решения этой задачи непосредственно вытекает из принципов, лежащих в основе уклонения от огня. В настоящей главе рассматриваются перечисленные ниже темы. > Специализированное представление последовательностей действий, позво- ляющее, в частности, сосредоточиться на параметрах описания каждого дей- ствия и лучше учесть проблемы привязки ко времени. > Определение некоторых генетических операций, которые могут использовать- ся для манипулирования такими последовательностями действий. К ним от- носятся операции мутации и скрещивания, позволяющие манипулировать формами поведения таким образом, как если бы они представляли собой ге- нетический код. > Краткое описание применяемого эволюционного алгоритма с пояснениями, касающимися того, как добиться создания со временем лучших последова- тельностей. > Разработка модуля генетического алгоритма общего назначения. Данный мо- дуль может быть связан с помощью интерфейса с любыми другими компонен- тами, допускающими его усовершенствование с помощь генетического алго- ритма. Это позволяет по меньшей мере воспользоваться возможностью при- менить полученное надежное решение, несмотря на всю простоту рассматри- ваемой задачи. > Обсуждение функции пригодности с точки зрения реализации необходимых форм поведения и использования различных компонентов определения при- годности, которые предотвращают возникновение циклов (ведущих к появле- нию нежелательных форм поведения). > Краткий обзор различных проблем реализации, а также проблем отладки. > Краткий анализ форм поведения анимата и описание теоретических ограни- чений, с которыми связано полученное решение. К концу данной главы будут созданы аниматы, которые больше не выглядят как беззащитные в условиях приближения нацеленных на них ракет. Представление последовательностей действий В данном случае основная проблема связана с тем, что необходимо выбрать пра- вильную концепцию представления. В частности, требуется найти форму представ- ления последовательностей действий, позволяющих вырабатывать активизируемые формы поведения. Действия и параметры Проведенный анализ позволяет явно обнаружить подмножество всех возможных действий, с помощью которых аниматы приобретают способность реализовать две описанные формы поведения (табл. 34.1). Если представление ограничивается толь- ко этими необходимыми действиями, то появляется возможность не только упро-
^alatbaus,^. Глава 34. Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 521 стать разработку, но и ускорить обучение. А в дальнейшем в случае необходимости можно будет без особых проблем расширить реализуемые формы поведения; с этим позволяют также справиться генетические алгоритмы, хотя и требуют больших за- трат времени. Таблица 34.1. Ограниченный набор действий, используемых в каждой из последовательностей, и связанные с ними параметры Действие Параметр look direction move weights fire - jump - Параметр direction представляет собой символ, принимающий значения (up, down, ahead). Параметр weights используется для применения в сочетании воз- можных направлений движения. При выполнении многих действий должны учитываться параметры, а это означа- ет, что количество действий, которые приходится осуществлять без учета парамет- ров, не так уж велико. Применение параметров в действиях позволяет также отдель- но рассматривать в представлении два подхода, касающиеся того, что должно быть сделано и как это сделать (а это позволяет упростить применение эволюционных алгоритмов). Ниже приведено описание двух основных параметров. > Параметр direction (направление) используется в действии look (смотреть). Этот параметр требуется только при выполнении ракетных прыжков, причем для этого анимату фактически достаточно лишь посмотреть вниз. В целях соз- дания более гибкого решения (и предотвращения чрезмерного упрощения зада- чи) в качестве возможных значений для этого параметра предусмотрены три на- правления — up (вверх), ahead (вперед) и down (вниз). > В действии move (двигаться) используются весовые коэффициенты (weights). В этом действии не разрешается указывать все возможные движения, а преду- сматривается возможность задавать множества применяемых по умолчанию на- правлений, выбранных в качестве характеристик, определяемых экспертом. Ко- личество таких направлений равно трем, и они позволяют уклониться, во- первых, от поражающего элемента, во-вторых, от ближайшей точки столкнове- ния и, в-третьих, от прогнозируемого места удара (рис. 34.1). Генетический ал- горитм позволяет вырабатывать решения, касающиеся произвольных значений весовых коэффициентов (как положительных, так и отрицательных), благодаря чему могут определяться практически произвольные движения, связанные с пе- ремещением. После этого остается лишь объединить параметры и действия в последовательно- сти действий.
522 Часть V. Работа с предметами и объектами Рис. 34.1. Вид сверху местности, на которой происходит игра; на этой схеме представлены три вектора выбора направления, формируемые с помощью генетического алгоритма; f решенная комбинация этих трех векторов позволяет выбрать почти любую точку в пространстве Последовательности Для представления последовательностей обычно используются простые массивы. Но способ представления действий в виде элементов массива не позволяет создавать такие последовательности, в которых учитывалась бы привязка по времени; таким образом, действия становятся упорядоченными, но какие-либо сведения о связан- ных с ними задержках отсутствуют. По этой причине средства ИИ должны связать каждое действие со временем. Для этого могут применяться два способа, в которых используется тот или другой подход из числа описанных ниже. > Задается временное смещение, измеряемое относительно предыдущего действия. > Применяется абсолютный отсчет времени, измеряемый относительно начала последовательности. Для принятия решения о выборе того или другого способа представления време- ни необходимо определить, насколько существенно влияют на последовательность небольшие изменения в форме представления. Если используются относительные значения времени, то изменение временных показателей одного лишь действия ока- зывает исключительно неблагоприятное воздействие на абсолютные значения вре- мени всех других действий, следующих за ним. С другой стороны, если применяются абсолютные значения времени, то изменения в любом конкретном значении будут полностью независимыми от всех остальных значений времени действий. В подходе с применением абсолютных значений времени взаимозависимости между перемен- ными в пространстве поиска становятся минимальными, благодаря чему генетиче- ский алгоритм приобретает наибольшую гибкость. Вследствие того, что значения времени действий становятся глобальными, теряет значимость порядок действий в массиве; таким образом, массив действий становится просто одной из форм хранения. Первое действие в последовательности вполне может быть представлено последним элементом в массиве. Для интерпретации такой формы организации массива могут применяться два разных способа, описанных ниже.
Глава 34. Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 523 > Целесообразно, чтобы в генетическом алгоритме применялась свободная форма представления, поскольку такая форма позволяет группировать дейст- вия, которые успешно используются совместно. > Из того факта, что порядок элементов в массиве не имеет значения, следует, что может быть предложено большое количество симметрических решений; таково побочное следствие свободного представления. Размер пространства поиска можно уменьшить, упорядочивая массив действий по времени. Оба указанных фактора влияют на реализацию генетического алгоритма. Но сама рассматриваемая задача не кажется слишком сложной, поэтому решено было вы- брать свободное представление. Массивы можно упорядочить после завершения ра- боты эволюционного алгоритма, поскольку это позволяет повысить эффективность (в связи с отсутствием необходимости просматривать весь массив для проверки вре- менных параметров действий). Генетические операции После принятия решения по выбору способа представления последовательности необходимо определить основные генетические операции. Без таких операций не- возможно обеспечить работу эволюционного алгоритма, каким бы простым ни был рассматриваемый процесс. Случайная выработка действий Вначале рассмотрим задачу случайной выработки действий с учетом трех отдель- ных аспектов описания действий: тип действия, его параметры и смещение во вре- мени, как описано ниже. > Смещение во времени всегда представляет собой значение с плавающей точ- кой, поэтому данное значение может быть инициализировано случайным об- разом с учетом максимальной длины последовательности. > Что касается типа действия, то это значение может быть закодировано про- стейшим образом с помощью символа. Тип действия может быть инициали- зирован случайным образом путем присваивания значения одного из возмож- ных типов действий. > Параметры зависят от действия, поэтому необходимо обеспечить инициали- зацию значений параметров одновременно с выбором действия в зависимости от того, какое действие было выбрано случайным образом. Все значения вы- бираются случайным образом, с учетом их максимального диапазона. Кроме того, в ходе случайной выработки последовательностей необходимо при- нять решение о выборе длины последовательности (т.е. количества действий); это решение также принимается случайным образом, но с учетом пределов максималь- ной длины последовательности. После этого можно приступить к случайной выра- ботке действий, каждое из которых должно занять отдельный элемент массива. На- конец, предоставляется возможность переопределить все значения времени так,
524 Часть V. Работа с предметами и объектами чтобы первое действие начиналось со значения 0. Такая последующая обработка по- зволяет сэкономить значительное количество времени при выработке последова- тельности, хотя и исключает некоторые возможности, связанные с применением эволюционного алгоритма (например, возможность устанавливать период ожидания перед активизацией действия). Скрещивание Для осуществления скрещивания применяется одна из самых простых операций — скрещивание с разбиением в одной точке. Общая идея этой операции состоит в том, чтобы выбрать случайным образом точку разбиения в двух родительских последова- тельностях, после чего поменять местами подмассивы для создания двух последова- тельностей — потомков. Преимущество использования этого подхода состоит в том, что последовательность действий остается, в основном, нетронутой, поэтому дейст- вия, хорошо сочетающиеся друг с другом, с наибольшей вероятностью по-прежнему останутся применяемыми совместно даже после скрещивания. Основные, связанные с этим понятия рассматриваются более подробно в главе 32, “Генетические алгоритмы”, но так или иначе для реализации данной операции не требуются какие-либо особые усилия со стороны программистов. Мутация Для осуществления мутации случайным образом применяются два способа. Преж- де всего может быть предусмотрено изменение длины последовательности, но вероят- ность такой мутации должна быть особенно низкой. Если требуется введение в массив дополнительных элементов, то дополнение осуществляется случайным образом с не- которой вероятностью; в противном случае происходит удаление элементов. Мутации могут также происходить в отдельных действиях, с небольшой вероятно- стью (отличной от той, о которой шла речь в предыдущем абзаце). Мутация значения гена, в котором хранится время, осуществляется путем сложения с числом с плаваю- щей точкой, выработанным с помощью гауссова распределения (как и параметры). Мутация применяется к действию путем выбора другого действия случайным образом. Если действие подвергается изменению, то автоматически выбираются соответствую- щие ему параметры. Краткое описание эволюционного алгоритма Размеры популяции поддерживаются постоянными, что позволяет сократить ко- личество ненужных операций распределения и отмены распределения памяти. Инициализация популяции происходит случайным образом, причем все значения пригодности остаются неприсвоенными. Любой этап эволюционного алгоритма происходит по запросу; если в популяции имеется индивидуум с неприсвоенным значением пригодности, он выбирается и пе- редается компоненту, прошедшему этап эволюции. В противном случае выбираются две родительские последовательности с вероятностью, пропорциональной их при-
^alaHaustik Глава 34. Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 525 годности. Эти последовательности подвергаются скрещиванию и мутации для обра- зования двух потомков, которые снова вводятся в популяцию. Если возникает необходимость удаления из популяции каких-либо индивидуу- мов, выбор этих индивидуумов осуществляется случайным образом, с учетом обрат- ного значения пригодности и их подобия другим последовательностям. Если речь идет о системах классификаторов, то такой подход позволяет увеличить разнообра- зие популяции путем удаления наихудшей формы поведения из двух аналогичных. Проект модуля генетического алгоритма В соответствии со сведениями, приведенными в двух предшествующих разделах, основной объем работы выполняется с помощью простых специализированных ге- нетических операций. Сама эволюционная процедура также осуществляется отно- сительно просто. Такая ситуация встречается довольно часто, и с этим связана необ- ходимость реализовать код генетического алгоритма, в основном, в виде набора вспомогательных функций. А другие операции и шаблоны, применяемые в эволю- ционных алгоритмах, можно легко создать в виде автономных функций. В подобных случаях очень трудно обосновать проектное решение, в котором ге- нетический алгоритм реализуется в виде отдельного модуля, и без использования та- кого модуля действительно вполне можно обойтись. Тем не менее создание надеж- ного модуля генетического алгоритма позволяет воспользоваться тем преимущест- вом, что у нас в руках остается превосходный инструмент. В частности, этот компо- нент может пригодиться в других ситуациях, когда потребуются более надежные решения. В идеальном случае может быть создан модуль, в котором сведены воедино все обычно применяемые эволюционные шаблоны и генетические операции и кото- рый, к тому же, обеспечивает удобную настройку конфигурации и позволяет реали- зовать дополнительные требования. Роль генетического алгоритма Необходимо учитывать, что в большинстве случаев генетический алгоритм пред- ставляет собой не что иное, как одну из стратегий оптимизации. Из этого следует, что функциональные возможности объекта, созданного с помощью эволюционных методов, не подвергаются каким-либо изменениям; изменяется лишь качество пре- доставляемых им услуг. Разработан ряд библиотек генетических алгоритмов, многие из которых, в ос- новном, посвящены реализации цикла эволюционного алгоритма и предоставляют различные обработчики прерываний для оценки специализированных объектов, оп- ределенных пользователем. Такой подход является применимым, если в системе имеется один простой компонент, оптимизируемый на этапе предварительных вы- числений. Если же генетический алгоритм применяется для оптимизации сложных систем с многочисленными компонентами или аниматов, развивающихся на протя- жении всего своего срока существования, то данный алгоритм должен взять на себя вспомогательную роль, а основное внимание необходимо уделить компонентам, предоставляющим требуемые функциональные возможности.
526 Часть V. Работа с предметами и объектами Интерфейсы Внешний интерфейс генетического алгоритма (экспортируемый) включает в себя уникальную точку входа, применяемую для получения отчета с данными о пригод- ности кандидата, рассматриваемого в настоящее время. Если будет обнаружено, что получение этих сведений удобнее организовать с помощью передачи сообщений, та- кой вариант также может быть легко реализован: void ReportFitness( const float f ); Внутренний интерфейс (импортируемый) связывает модуль генетического алго- ритма и компонент, проходящий обучение, с помощью эволюционного метода (такого, как система, основанная на правилах). Этот интерфейс принято называть эволюционирующим, поскольку он экспортируется всеми компонентами, которые могут быть оптимизированы с помощью эволюционного алгоритма. Основной принцип разработки состоит в том, чтобы был реализован действи- тельно гибкий модуль генетического алгоритма, позволяющий использовать для вы- полнения всех генетических операций эволюционирующий компонент. Это позво- ляет избежать существенных издержек (которые могли бы возникать на этапах раз- работки кода и эксплуатации готового программного обеспечения), связанных с прямым и обратным преобразованием фенотипов в генотипы. Применяемые при этом структуры данных иногда называют эволюционными, но автор предпочитает делать акцент на применяемые операции, зависящие от фенотипа. Основная идея состоит в том, что не нужно (и неудобно) заниматься преобразованиями из одних представлений в другие. Но так или иначе часто возникает необходимость в приме- нении специализированных генетических операций. Если используются стандарт- ные структуры данных и генетические операции, то появляется возможность при- менять общие вспомогательные функции. Доступ к операциям, зависящим от фенотипа, предоставляется с помощью эво- люционирующего интерфейса. Предусмотрены также функции, предназначенные для инициализации популяции и управления оценкой: void Crossover( const Individuals: a, const Individuals b, Individuals c ); void Mutate( const Individuals a, const Individuals b, Individuals c ); void Randomize( Individuals a ); void Allocate( vector<Individual*>S population ); void Deallocate( vector<Individual*>S population ); void Evaluate( const Individuals a ); Благодаря этому генетический алгоритм становится полностью независимым от деталей реализации клиентского компонента. В качестве индивидуума используется пустой базовый класс, определяемый с помощью исключительно виртуальной опе- рации копирования (что позволяет осуществлять в генетических алгоритмах опера- ции присваивания без учета подробных сведений о структуре данных). Чтобы воспользоваться рассматриваемым модулем генетического алгоритма для оптимизации с помощью эволюционного метода рассматриваемой последовательно- сти действий, необходимо реализовать каждую из указанных выше функций. Основ- ная часть этих функциональных средств должна быть реализована так или иначе, по- этому вопрос о том, следует ли включать ссхггнстствующие функции в модуль, в основу ном, касается предпочтений самого разработчика.
Глава 34. Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 527 Вычисление значений пригодности Объем кода, выходящего за пределы модулей, является минимальным. Средства ИИ должны, главным образом, вычислять степень пригодности рассматриваемой формы поведения через регулярные интервалы и передавать полученную информа- цию в модуль генетического алгоритма. В данном случае нас интересуют две различ- ные формы поведения, поэтому необходимо подготовить две функции пригодности, как описано в следующих разделах. Ракетные прыжки В идеальном случае желательно избежать необходимости проверять ракетные прыжки непосредственно, а вместо этого дать возможность эволюционному алго- ритму совершить открытие, что использование ракет — наилучший способ выпол- нять прыжки на большую высоту (еще одним приемлемым решением может ока- заться выполнение двойных прыжков или применение площадок для прыжков). По- этому необходимо присваивать вознаграждение только за движение вверх. Чтобы исключить возможность для анимата получать высокое значение пригодности за подъем бегом вверх по лестницам, как движение вверх рассматривается только такое движение, при котором анимат не касается пола. Необходимо также больше вознаграждать очень высокие прыжки, чем множество меньших прыжков. Для достижения этой цели можно определять вознаграждение в зависимости от квадрата расстояния, пройденного в направлении вверх. Генетиче- ские алгоритмы особенно известны тем, что обнаруживают потенциал создания циклов в функциях пригодности, но создается впечатление, что все описанные вы- ше критерии охватывают полный спектр возможных ситуаций. Уклонение от огня Чтобы оценивать навыки уклонения от огня, который направлен на участника игры, воспользуемся методом, предусматривающим измерение расстояния от участ- ника игры до точки взрыва поражающего элемента. Если ракета попадает прямо в анимата, то такое расстояние (поэтому и пригодность) будет близким к 0. С другой стороны, если анимату удается далеко отбегать от точки попадания поражающего элемента, то ему присваивается высокое значение пригодности. Поскольку все раке- ты взрываются достаточно быстро, на значение пригодности не налагается какой- либо предел (если значения расстояния, превышающие определенную величину, бу- дут приравниваться к такому пределу, тем самым не сохранится информация, по- лезная для метода эволюции). Существует возможность, что анимат будет получать высокие оценки значения пригодности, стоя на месте (но далеко от мест падения поражающих элементов); что- бы такая возможность была исключена, средства ИИ контролируют разность расстоя- ний. Указанный подход аналогичен измерению средней скорости удаления от прогно- зируемой точки падения ракеты. Данное значение измеряется только в начале и в кон- це последовательности (вызов функции измерения происходит после запуска ракеты).
528 Часть V. Работа с предметами и объектами Безусловно, необходимость контролировать расстояние служит для генетического алгоритма указанием на то, что расстояние является важным фактором, но средства ИИ должны также контролировать еще один важный фактор — ущерб. Любой полу- ченный ущерб должен вычитаться из значения пригодности анимата (уменьшая оцен- ку способности уклоняться от огня). В том маловероятном случае, что два указанных компонента оценки пригодности окажутся неспособными направить процесс эволюции на создание желаемых форм поведения по уклонению от огня, можно использовать более постоянную обратную связь по вознаграждению (вместо вычисления пригодности только в конце последо- вательности). При этом вознаграждается любое движение, направленное от бли- жайшей точки контакта с поражающим элементом, а в процессе измерения время рассматривается как четвертая размерность. Поэтому для обнаружения ближайшей точки в трехмерном пространстве используются четырехмерные траектории во вре- мени и в трехмерном пространстве. Любое движение прочь от этой точки приводит к получению положительного значения пригодности. Приложение В процессе работы генетического алгоритма создается бесконечный поток последова- тельностей-кавдидатов, которые должны оцениваться аниматом как возможные формы поведения. Д ля запуска любой последовательности на выполнение достаточно просто включить таймер. Функционирование остальной части средств ИИ может осуществлять- ся обычным образом, но после того, как следующий временной интервал выйдет за пре- делы временного смещения действия, это действие должно быть выполнено. Вместо просмотра последовательности для определения действий, которые должны быть выполнены, можно отсортировать последовательность в целях обеспечения мак- симальной эффективности; если же по условиям работы генетического алгоритма тре- буется, чтобы последовательность оставалась нетронутой, можно просто скопировать старую последовательность. Для дальнейшего повышения эффективности можно спе- циально затребовать выполнение обратного вызова ко времени осуществления сле- дующего действия. Для реализации такого подхода необходимо отделить выполнение последовательности от остальной части средств ИИ, но практика показала, что созда- ваемый при этом проект становится гораздо более изящным. Чтобы предотвратить возможность возникновения каких-либо проблем, можно принудительно обеспечить выполнение первого действия в начале последовательно- сти. Этой цели можно достичь, связав со всеми действиями величину сдвига, равную О, если это сделано с помощью генетического алгоритма во время реализации процесса эволюции. Необходимо гарантировать, чтобы выполнение последовательностей всегда заканчивалось или прекращалось, независимо от того, что происходит с аниматом (даже в случае смерти анимата средства ИИ должны вызывать аварийное прекращение выполнения последовательности). Проверка действий созданных аниматов осуществляется гораздо проще, чем про- верка, касающаяся использования хитроумных изобретений. И действительно, ракет- ные прыжки и уклонение от огня могут происходить в любой точке местности. Поэто- му нет необходимости создавать какую-либо особую игровую среду; достаточно просто
^laiattaus,^. Глава 34. Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 529 предоставить другим участникам игры ракетные пусковые установки и дать им воз- можность вести огонь по проверяемому анимату. Как обычно, предусмотрена также возможность осуществлять обучение аниматов необходимым формам поведения, с учетом правил воплощения. Но можно сэконо- мить во время обучения много времени, сделав каждого из них неуязвимым (но все еще учитывающим обычный испытуемый ущерб). Что же касается комбинирования фаз оценки значения пригодности и обучения, то их совместное выполнение долж- но позволить анимату научиться совершать ракетные прыжки в сторону от точек воздействия (с учетом того, что ракетные прыжки приводят к меньшему ущербу по сравнению с воздействием приближающегося поражающего элемента). Наконец, лучше всего проводить обучение ракетным прыжкам и уклонению от огня отдельно (поскольку так или иначе используемые при этом формы поведения являются условно независимыми). Могут быть предусмотрены два способа обеспе- чения такого разделения: во-первых, использование отдельных фаз обучения с по- мощью уникальной функции пригодности; во-вторых, разбиение значений пригод- ности вручную с учетом рассматриваемой формы поведения и одновременное про- ведение обучения двум формам поведения. Оба эти способа позволяют достичь оди- наковой цели, но, вполне очевидно, по-разному. Практическая демонстрационная версия Анимат, демонстрирующий описанные выше принципы, получил имя Капда и “проживает” вместе со всеми своими друзьями на Web-узле http: / /AiGameDev. сот/. Код этого анимата чрезвычайно тщательно документирован, и приведено полное описание того, как подготовить соответствующие средства ИИ к работе и обеспечить их эксплуатацию в составе игры. Анимат Капда фактически сам обучается тем формам поведения, которые он затем применяет для совершения прыжков и уклоне- ния от огня во время игры. Оценка полученных результатов Аниматы действительно очень быстро обучаются тому, как выполнять прыжки! Даже если количество прыжков, совершаемых аниматами, весьма велико, создается впечатление, что это не приводит к возникновению каких-либо проблем. В ходе эволюции немного больше времени уходит на то, чтобы анимат открыл все преиму- щества ракетных прыжков, но к созданию этой формы поведения приводит эволюци- онное давление, поскольку в функции пригодности учитывается возведенное в квадрат значение высоты прыжка. Сама рассматриваемая задача не является слишком слож- ной, поэтому целесообразно поддерживать небольшие размеры популяции. Обучение поведению, связанному с уклонением от огня, также происходит отно- сительно быстро благодаря тому, что используемое представление является очень простым. Как правило, успешно применяется любое взвешенное сочетание весовых коэффициентов, относящихся к векторам направлений движения, что приводит к осуществлению движения прочь от прогнозируемой точки падения ракеты, от бли- жайшей точки столкновения с ракетой, а также от самого поражающего элемента. В некоторых случаях такой подход — неоптимальный, но в среднем достигаемые результаты вполне приемлемы. Для повышения качества функционирования гене-
530 Часть V. Работа с предметами и объектами тического алгоритма может потребоваться включение большего объема информации об относительных позициях (вместо проведения оптимизации вслепую исключи- тельно с помощью весовых коэффициентов). Функция пригодности, предоставляющая вознаграждения за каждый прыжок или за каждое уклонение, фактически действует очень успешно, поэтому нет необ- ходимости предусматривать применение более регулярной формы вознаграждения. Весьма положительное влияние на работу генетического алгоритма оказывает тот факт, что значения пригодности являются непрерывными, поскольку они направ- ляют эволюцию лучше, чем булевы индикаторы успеха. Анализ рассматриваемой схемы показывает, что существует возможность форми- рования с помощью эволюционных методов требуемых форм поведения с использо- ванием простых генетических операций и специализированной формы представле- ния. Это представление лучше приспособлено для моделирования последовательно- стей, чем обучающиеся системы классификаторов и нечеткие правила; в ней все данные представлены явно, и это способствует успешному обучению. Но используемая форма представления является несовместимой с теми схемами, которые основаны на правилах. Кроме того, источником проблем может стать линей- ный характер выполнения последовательности и ее нечувствительность к стимулам окружающей среды, особенно если такое представление применяется для усовершен- ствования форм поведения, рассматриваемых в главе 31, “Усовершенствование двигательных форм поведения с использованием нечетких систем”. По этой причине может оказаться более предпочтительным подход, который предусматривает слияние двух рассматриваемых форм представления и позволяет воспользоваться всеми преимуществами применения последовательностей (а имен- но, нелинейных) и правил. Эта тема фактически рассматривается в следующей части данной книги (во введении к обсуждению конечных автоматов, которые представ- ляют последовательности с помощью правил перехода). После этого рассматривают- ся иерархические конечные автоматы, позволяющие объединять друг с другом клас- сические правила и другие конечные автоматы. Резюме Как описано ниже, настоящая глава началась с создания определяемого пользо- вателем представления для желательных форм поведения. > Проектом предусмотрено использование линейного представления последо- вательностей. Последовательности являются исключительно активизируемы- ми, поэтому после запуска становятся в основном нечувствительными к сен- сорным входным данным. > Определены генетические операции (как для инициализации, так и для со- вершения открытий), способные вырабатывать все возможные последова- тельности в пределах допустимой длины и приемлемых затрат времени. После этого, как описано ниже, мы перешли к рассмотрению способов оптими- зации форм поведения с использованием генетических алгоритмов.
Глава 34. Адаптивные оборонительные стратегии, основанные на генетических алгоритмах 531 > Эволюционный процесс организован чрезвычайно просто; он обеспечивает выбор наиболее пригодных экземпляров и уничтожение самых слабых. > Спроектирован модуль, который может быть подключен непосредственно к любому другому компоненту, который подлежит усовершенствованию на ос- нове эволюционных методов. Эта цель достигнута путем определения эволю- ционирующего интерфейса, который предоставляет доступ к эволюционным операциям, зависящим от фенотипа. Вернувшись в мир практически применяемых игровых форм поведения, мы при- ступили к изучению того, как происходит уклонение от огня и как выполняются ра- кетные прыжки, в соответствии с описанным ниже. > Были определены две функции пригодности и проведена проверка того, что при их использовании в генетическом алгоритме почти не приходится сталки- ваться с ситуациями возникновения циклов. Была также предпринята попыт- ка сделать используемые значения настолько непрерывными, насколько это возможно, чтобы упростить осуществление эволюционного процесса. > В фазе создания приложения обсуждались подробности реализации (например, того, как осуществляется сортировка массива, как используются обратные вы- зовы и как гарантируется достижение конца последовательности), кроме того, было указано, что фаза проверки является достаточно простой. Создаваемые в результате формы поведения относительно близки к тем, которые могли бы проявлять игроки-люди, хотя и недостаточно совершенны. Форма поведе- ния, связанная с уклонением от огня, может оказаться полезной на практике, если удастся ее активизировать в нужный момент, а ракетные прыжки пока что исполь- зуются только для хвастовства! Для принятия решений по их использованию требу- ются высокоуровневые средства ИИ. Технология, рассматриваемая в настоящей главе, позволяет очень хорошо пред- ставлять последовательности действий, но оказывается неспособной обеспечить поддержку некоторых других функциональных возможностей, которые рассматри- ваются в экспертных системах как сами собой разумеющиеся. В действительности способ выражения произвольных последовательностей с помощью правил рассмат- ривается в части VI; этот способ сводится к созданию конечных автоматов. Они яв- ляются более мощными, но менее приспособленными для решения конкретной за- дачи, рассматриваемой в данной главе.

NalaHausiiii Гпава 35 Проектирование обучающихся средств ИИ В ЭТОЙ ГЛАВЕ, • Назначение обучения • Основные подходы к обучению • Разновидности обучающихся компонентов • Методологии обучения формам поведения • Резюме • Краткий ретроспективный обзор • Перспективы применения описанных методов Обучающиеся системы чрезвычайно привле- кательны для разработчиков компьютерных игр, поскольку такие системы позволяют уско- рить разработку и повысить уровень интеллекту- альности несобственных персонажей (NonPlayer Character — NPC). Но задача создания обучаю- щейся системы является сложной; для этого не- обходимо не только знать технологию ИИ, но и уметь проектировать систему таким образом, чтобы с ее помощью могли быть реализованы правильно функционирующие формы поведе- ния и необходимые возможности. В самом начале данной книги, в главе 2, “Про- блемы проектирования интеллекта”, предусмотрен очень краткий вводный обзор тематики обучения. А теперь, после того как по этой теме было приве- дено гораздо больше информации, мы можем при- ступить к более подробному описанию проблем обучения. В частности, в данной главе с использо- ванием примеров рассматриваются обучающиеся средства ИИ с различных точек зрения (например, таких, как формы поведения, технология и компо- ненты). Кроме того, в этой главе рассматриваются преимущества и недостатки различии к методов обучения и даны рекомендации, касающиеся бу- дущих реализаций. В настоящей главе рассматриваются пере- численные ниже темы. > Краткий обзор проблем обучения с наи- более общей точки зрения и осуществле- ние попыток понять, чего позволяет дос- тичь технология обучения.
534 Часть V. Работа с предметами и объектами > Различные подходы к обучению, рассматриваемые как в терминах разработки: игр (оперативные и автономные), так и с точки зрения технической реализа- ции (инкрементные и пакетные). > Описание компонентов средств ИИ, которое позволяет ознакомиться с тем, как с помощью этих компонентов обрабатываются данные в целях усвоения с помощью обучения фактов или форм поведения (т.е. с использованием при- меров или обратной связи). > Методология создания с помощью обучения необходимых форм поведения и другие методологии, которые могут использоваться для того, чтобы аниматы приобрели способность действовать правильно. Всесторонний обзор, приведенный в данной главе, позволяет получить инфор- мацию, необходимую для принятия проектных решений, касающихся использова- ния обучающихся средств ИИ. Нет никакого сомнения в том, что такой глобальный подход представляет собой наилучший способ обеспечения успешного функциони- рования средств обучения (иными словами, он сам несет в себе превентивные меры на случай возникновения любых потенциальных проблем). Практические советы и рекомендации по обеспечению нормальной работы любых адаптивных средств ИИ приведены в главе 48, “Применение адаптивных форм поведения”, но содержимое указанной главы не относится к проектированию! Назначение обучения Как и во время начала работы с любой новой технологией, пользователи могут быть буквально поражены возможностями, открывающимися при использовании средств обучения, забывая о том, что во всех случаях следует занимать критическую позицию. Основной причиной неудачи многих проектов, основанных на использо- вании обучающихся средств ИИ, является злоупотребление этой технологией. За последние несколько лет в технологии ИИ был достигнут значительный прогресс, но она все еще остается в той стадии, что лучше всего по-прежнему сосредоточи- ваться на решении задач, относящихся к конкретной проблемной области. Поэтому в данной главе предпринимается попытка подойти к решению задач обучения с инженерной точки зрения, анализируя то, какие преимущества предос- тавляет этот подход и на какие затраты придется пойти при его использовании. По- сле того как становится ясно, какие компромиссы связаны с применением обоих ас- пектов этой технологии, проектные решения становятся более очевидными. Общее назначение средств обучения Средства обучения применяются по двум основным причинам, и обе из них свя- заны с осуществлением попыток найти интеллектуальные решения задач. Основное различие обусловлено тем, каковой является цель обучения, и, в частности, тем, должен ли быть желаемый результат статическим или динамическим. Рассматривая два этих разных случая, мы будем применять для обозначения первого термин оп- тимизация, а для обозначения второго — термин адаптация.
Глава 35. Проектирование обучающихся средств ИИ 535 Оптимизация Оптимизация представляет собой результат осуществления попыток найти реше- ние известной головоломки, которая не меняется со временем. При этом использу- ются знания обо всех переменных, относящихся к рассматриваемой задаче, а также обо всех критериях, предназначенных для оценки решения. Все это задание факти- чески может рассматриваться как статическое. Примером решения статической задачи является предотвращение столкновения с препятствием; поставленные при этом цели являются четко идентифицируемыми, и могут быть разработаны компетентные формы поведения, которые не потребуется менять, чтобы справиться с новыми ситуациями. Адаптация В случае адаптации определение задачи фактически изменяется с течением времени, поскольку скрытые факторы влияют на используемые формы поведения непредвиден- ным образом. Может быть ясна цель, но не ясен способ ее достижения. Именно такая ситуация возникает после того, как анимат входит в полностью неизвестную среду. Еще один вариант состоит в том, что адаптация становится необходимой после изменения фактической цели обучения, независимо от того, насколько качественно определена сама задача. Например, если отношение анимата к некоторым участни- кам игры меняется в худшую сторону, то должно измениться и поведение анимата, который, вместо того чтобы им помогать, начинает создавать в их жизни трудности. Поэтому для успешной адаптации необходимо находить новые способы приме- нения доступных возможностей, чтобы можно было учесть непредвиденные факто- ры (не только изменение определения задачи, но и смену целей). Аналогии и различия Основное различие между оптимизацией и адаптацией состоит в том, что в пер- вом случае задача имеет статический характер, а во втором — динамический. Важно понять, что динамичность задачи возникает из-за того, что в ней моделируются не все переменные. Во многих случаях из самой среды игры может быть легко получена информация о полном определении задачи; и действительно, мир игры, по меньшей мере, является весьма предсказуемым или даже полностью детерминированным (например, для него определены все законы физики и логики). Проектировщик добровольно отбрасывает значительную часть информации о среде в целях повыше- ния эффективности и упрощения. Поистине динамические задачи возникают лишь в очень редких случаях, когда проявляются действительно неизвестные параметры (например, эмерджентные феномены). Таким образом, по существу оба эти класса задач являются одинаковыми. Статиче- ские задачи проще поддаются определению, поскольку в них может быть легко иден- тифицирована основная часть переменных, в связи с тем что задача невелика или про- ектировщик потратил на ее исследование достаточно много времени. С другой сторо- ны, описание динамических задач с помощью выбранных переменных обычно являет- ся менее качественным, поскольку область определения задачи была слишком велика или проектировщик не имел возможности идентифицировать все параметры. Что же касается используемых средств ИИ, то полученный с их помощью окон- чательный результат становится тем лучше, чем в большей степени рассматриваемая
536 Часть V. Работа с предметами и объектами задача соответствует определению статической. Например, может оказаться, что не требуется анимат, участвующий в борьбе, который способен приспособиться к лю- бым ситуациям, а достаточно лишь создать такого анимата, который способен спра- виться с подавляющим большинством возможных ситуаций с использованием каче- ственных средств ИИ, оптимизированных с помощью статических методов. Для удовлетворительного определения статической задачи достаточно знать применяе- мые переменные и выбрать из них все (или наиболее) подходящие. Эта тема глубоко рассматривается в главе 21, “Приобретение знаний о задаче”. Задачи, решаемые с помощью обучения Для решения различных задач могут применяться разные формы обучения, кото- рые рассматриваются ниже. Факты и знания Проводя наблюдение над миром, можно его понять с использованием фактов или статистических прогнозов. Примером факта является такое утверждение: “После прыж- ка я снова опущусь на землю”. С другой стороны, примером статистического прогноза может служить утверждение: “Данная платформа в течение основной части времени на- ходится в своем первоначальном положении”. После приобретения достаточного опыта можно накопить подобные знания, которые являются удивительно точными. Существует также возможность извлекать информацию об общих принципах из коллекции разрозненных фактов (например, может быть сформулирован такой вы- вод: “Все предметы, находящиеся в воздухе, должны упасть на пол”). Для представ- ления знаний может также применяться менее явный способ, известный под назва- нием обобщения. Процесс усвоения знаний в форме обобщений может оказаться бо- лее быстрым, но менее точным. Формы поведения и процедуры Альтернативным по отношению к усвоению фактов с помощью обучения являет- ся обучение формам поведения. Синтетические создания могут обучаться управле- нию своими движениями, использованию оружия и прохождению через двери. Эти формы поведения могут представлять собой простые действия, а также сложные по- следовательности, осуществляемые под управлением стимулов, поступающих из внешней среды. Важно также, чтобы аниматы обучались тому, как следует приме- нять усвоенные ими формы поведения в общих ситуациях. Унификация форм представления В некоторых случаях относительно легко понять, какие классы в программном обеспечении представляют формы поведения (процедурное представление) и ка- кие — факты (декларативное представление). Но при этом все равно возникает не- которая путаница, поскольку правильное толкование определений часто зависит от выбранных в них слов! Например, стрельба (форма поведения) отчасти обусловлена наличием знаний о том, куда прицеливаться (факт). Поэтому с концептуальной точ- ки зрения существует возможность усваивать путем обучения формы поведения как факты. И наоборот, аниматы неявно используют известные им факты о мире, осу- ществляя формы поведения.
Г лава 35. Проектирование обучающихся средств ИИ 537 Декларативная и процедурная формы представления, как и программные конст- рукции, вполне могут использоваться двояко. Например, дерево решений хранит факты, но вполне может применяться также для организации форм поведения. Ней- ронные сети предназначены для использования в управлении, но позволяют также усваивать путем обучения информацию о задаче. Наилучшим методом провести различие между фактами и формами поведения должна стать реализация подобного способа представления информации, допус- кающего двоякое использование. В таком случае запросы к знаниям, усвоенным пу- тем обучения в оперативном режиме (онтогенетическим), будут поступать от компо- нента, являющегося неизменным (филогенетическим). С другой стороны, формы поведения, усвоенные в результате обучения, будут обрабатываться компонентом, который модифицирует сам себя динамически. Разумеется, после достаточно глубо- кого изучения всех этих форм усвоения знаний мы обнаружим в конечном итоге информацию, накопленную с помощью той или иной технологии. На практике разработчики игр почти всегда предусматривают непосредственное усвоение фактов путем обучения, что позволяет проще отлаживать и оптимизиро- вать компоненты средств ИИ, предназначенные для использования этих знаний. Кроме того, задача разработчиков становится гораздо проще, если функционирова- ние аниматов, прошедших обучение, можно анализировать в форме данных, кото- рые имеют представление, удобное для восприятия человеком. Основные подходы к обучению В настоящем разделе рассматриваются различные способы обучения, что позво- ляет проще разобраться в тематике обучения. Два режима обучения Обучение может осуществляться на этапе разработки (в автономном режиме) или во время ведения самой игры (в оперативном режиме). Обучение в автономном режиме Если обучение используется во время разработки, его можно рассматривать как подготовительную работу, на тех же основаниях, что и уплотнение графических структур данных или сжатие звуковых файлов. Вообще говоря, обучение в автоном- ном режиме применяется, если задача является статической, а ее оптимальное ре- шение может быть найдено автоматически. Разработчик имеет возможность содей- ствовать обучению аниматов и управлять им с использованием различных инстру- ментальных средств и методологий. Такой подход применяют находчивые и продуктивные разработчики, опыт кото- рых позволяет использовать средства ИИ для выполнения работы за них, причем даже быстрее, чем они могли бы сделать сами. Такая возможность обусловлена тем, что имеется полностью определенная цель, а система на всем протяжении игры ос- тается неизменной.
538 Часть V. Работа с предметами и объектами Обучение в оперативном режиме Обучение в оперативном режиме происходит после передачи игры в распоряже- ние пользователя, после каждого запуска средств моделирования участником игры. Во многих случаях такое обучение имеет форму адаптации, которая предусмотрена в составе проекта и предназначена для создания мира игры, более способствующего погружению в него игрока и появлению более правдоподобных созданий. Данный подход требует гораздо больше размышлений, поскольку разработчик обя- зан учитывать многие возможные ситуации и исходы. Во многих случаях инженеры по искусственному интеллекту обязаны гарантировать, чтобы созданный ими проект был безопасным, поскольку, каким бы ни был объем бета-тестирования, любая проверка не позволяет рассмотреть все возможные ситуации. Связанные с этим проблемы рас- сматриваются более подробно в главе 48, “Применение адаптивных форм поведения”. Неправильная идентификация Безусловно, стремление реализовать в проекте игры возможность обучения в опе- ративном режиме часто оправдано, но иногда разработчики, полагая, что требуется оперативное обучение, фактически просто вынуждены его применять, поскольку не- способны определить качественное решение в автономном режиме (например, если задача является слишком крупной или слишком сложной). Если инженер по искусст- венному интеллекту не забывает о существовании автономной формы обучения, аль- тернативной по отношению к оперативной форме обучения, то лишь в этом случае может неопровержимо обосновать необходимость использования оперативного режи- ма! Если же требуется просто найти решение какой-то задачи, то оперативный и авто- номный методы поиска решений должны рассматриваться как равноценные. Например, наиболее простые несобственные персонажи (такие, что играют роль “пушечного мяса”) не нуждаются в обучении в оперативном режиме; обучение по- добных участников игры может осуществляться в автономном режиме. Для таких созданий можно очень просто определить необходимые формы поведения, и решае- мая при этом задача, в основном, является статической. Кроме того, весьма хорошей практикой является использование автономного обучения, даже если требуется опе- ративная адаптация. Это позволяет подготавливать применяемые по умолчанию почти оптимальные формы поведения, благодаря чему используемые средства ИИ кажутся вполне реалистичными с самого начала, еще до дополнительного обучения. Два основных метода С точки зрения технической реализации обучения, существует два основных ме- тода усвоения информации с помощью обучения — пакетный и инкрементный. Пакетное обучение При пакетном обучении для извлечения относящихся к делу фактов используется большой набор данных. Идея этого подхода состоит в том, что для извлечения инфор- мации об общих тенденциях используются огромные объемы данных. Этот принцип лежит в основе анализа скрытых закономерностей в данных, для чего обычно исполь- зуются деревья решений и нейронные сети. Деревья решений представляют собой
Глава 35. Проектирование обучающихся средств ИИ 539 структуры данных, обучающиеся в пакетном режиме, поскольку при их использовании предусматривается обработка всех выборок для рекурсивного формирования дерева. Алгоритмы пакетного обучения, как правило, являются очень эффективными и могут быть легко оптимизированы, поскольку в этих алгоритмах крупные наборы данных об- рабатываются за один проход. Кроме того, алгоритмы пакетного обучения позволяют получать высококачественные решения, поскольку разнообразие обрабатываемых в них примеров весьма велико. По этой причине всегда рекомендуется использовать пакетные алгоритмы или прибегать к ним в первую очередь для проверки принятого подхода. Инкрементное обучение Метод инкрементного обучения предусматривает получение одна за другой раз- личных выборок и корректировку каждый раз внутреннего представления на не- большую величину. Как правило, такое обучение позволяет получить достаточно ка- чественное решение. При инкрементном обучении используется намного меньший объем памяти по сравнению с пакетными алгоритмами, поскольку при инкрементном обучении дан- ные, использованные в процессе обучения, немедленно отбрасываются. Но из-за та- кого подхода может страдать качество результатов, так как намного сложнее органи- зовать инкрементное обучение с сохранением результатов, полученных на предыду- щих этапах. Функциональная совместимость Вообще говоря, инкрементные алгоритмы предназначены для использования в опе- ративном режиме, а пакетные — в автономном режиме. Но оба решения не зависят друг от друга, к тому же, можно легко обеспечить применение той или другой разновидности алгоритма в обоих контекстах. Безусловно, есть такая возможность, чтобы обучение с помощью инкрементного алгоритма осуществлялось на полном наборе данных (например, обучение персептро- на выбору цели по методу обратного распространения), а также возможность приме- нить пакетный алгоритм для обновления дерева решений (например, при обучении выбору оружия). Эффективность вычислений при использовании обоих этих вариан- тов эксплуатации алгоритмов немного снижается, особенно во втором случае. Тем не менее не исключено, что в тех или иных обстоятельствах оба эти варианта могут найти свое применение, особенно если требуется на время уменьшить потребление памяти (с помощью инкрементного алгоритма) или найти более качественную форму поведения (с помощью пакетного алгоритма). Очевидно, что в каждом из этих случаев необходи- мо соблюдать определенные предосторожности, но еще раз отметим, что эта тема бу- дет рассматриваться в главе 48, “Применение адаптивных форм поведения”. Разновидности обучающихся компонентов В основе обоих методов, и пакетного, и инкрементного, лежит обработка (сенсорных) данных. В настоящем разделе рассматриваются конкретные способы из- влечения существенной информации и поиска правильного решения.
540 Часть V. Работа с предметами и объектами Контролируемое обучение В методах контролируемого обучения используются примеры отображений вход- ных данных X на выходные данные Y, где Y означает желаемые выходные данные. Та- кое отображение может быть выражено формально как отношение X —> Y. При ука- занном подходе используется исключительно явное представление; очевидно, что для получения определенного ответа должны быть предоставлены определенные входные данные. В этом выражается суть методов, активизируемых входными данными. В качестве примера контролируемого обучения может рассматриваться форми- рование дерева решений на основе коллекции примеров, собранных по результатам игры эксперта. Для того чтобы контролируемое обучение оказалось успешным, не- обходимо собрать большой объем данных. Такое требование является важным при использовании любых форм обучения; чем больше количество примеров, тем выше вероятность обнаружения наилучшего решения системой ИИ. Контролируемое обучение является очень эффективным, поскольку этот метод может осуществляться непосредственно с помощью активизируемых компонентов. Такое обучение в буквальном смысле слова сводится к корректировке непосредст- венного отображения, а сама эта форма обучения вполне обоснованно считается са- мой быстрой. Качество решения также весьма высоко, поскольку на протяжении последних десятилетий методы ИИ, созданные в результате интенсивных исследо- ваний, достигли высокого совершенства. Обучение с подкреплением Задачи обучения с подкреплением имеют менее явную форму представления. При использовании этих методов требуется, чтобы анимат опробовал действие х в некоторой ситуации Y, а затем получил вознаграждение в соответствии с достигну- тым результатом. Такую организацию функционирования можно формально пред- ставить в виде отношения х х Y —> 9?. Как обычно, 9? — множество вещественных чисел, к которому принадлежит значение вознаграждения. Если в качестве примера рассматривается еще одна форма движения, активизи- руемого в зависимости от обстановки, то анимат должен получать положительный сигнал вознаграждения, двигаясь в прямом направлении, и отрицательный сигнал вознаграждения, сталкиваясь с препятствиями. Эта задача является сложной по двум причинам. Во-первых, трудно найти наи- лучшую форму поведения без проведения большого объема экспериментирования. Во-вторых, чем сложнее задача, тем сложнее и сигналы вознаграждения, которые часто должны интерпретироваться и распределяться по субкомпонентам (иными словами, вознаграждения являются модульными, а не целостными). Что же касается применения такого подхода на практике, то важно учитывать, что затраты на получение правильного результата могут оказаться весьма значительными. При таком подходе требуется выполнение большого количества исследовательских действий, которые могут весьма способствовать нарушению реалистичности событий, происходящих в игре. В связи с этим приходится применять описанные ниже меры. > Минимизировать пространство поиска. > Использовать преимущественно автономный подход.
Глава 35. Проектирование обучающихся средств ИИ 541 С помощью подобных приемов проектировщик может избежать отрицательных последствий и воспользоваться всеми преимуществами обучения с подкреплением. Эволюционный подход Эволюционный подход к обучению основан на использовании функции пригод- ности. Такой подход, с концептуальной точки зрения, аналогичен подходу, приме- няемому при решении задач с помощью обучения с подкреплением, поскольку для обеспечения обратной связи на основе оценки качества вырабатываемой формы по- ведения используется скалярное значение. Но различие по отношению к обычному эволюционному подходу состоит в том, что в этом методе обучения значение при- годности, как правило, вычисляется после каждой попытки, а не с учетом каждого действия. С концептуальной точки зрения это означает, что значение пригодности соответствует п парам входных и выходных данных; это утверждение можно выра- зить формально так, что имеет место отношение (X х Y)n -> 5R. Например, можно применить эволюционный подход для усовершенствования всех форм поведения во время стрельбы, осуществляя ряд попыток стрельбы по движущимся целям и применяя генетические алгоритмы для спаривания наилучших представлений форм поведения во время стрельбы. Эволюционные подходы проявляют себя как чрезвычайно непрактичные во всех методах обучения, кроме автономных, поскольку для правильной настройки аниматов необходимо осуществлять целый ряд попыток, затрачивая при этом много времени. Наблюдение за действиями аниматов в этих фазах создает особое впечатление отсутст- вия реалистичности, хотя иногда это становится забавным! Несмотря на это, как пра- вило, достигаемые при этом результаты являются чрезвычайно эффективными. Неконтролируемое обучение Наконец, отметим, что разработаны методы обучения, непосредственно не рас- сматриваемые в данной книге, которые характеризуются отсутствием контроля над процессом обучения, такие как самоорганизующиеся карты признаков. Общий прин- цип применения этих методов состоит в том, что в компонент передаются большие объемы данных, после чего производится автоматическая реорганизация внутреннего представления, в ходе которой из данных извлекаются шаблоны. После завершения этого этапа может быть проведен анализ внутреннего представления для ознакомле- ния с подробными сведениями о шаблонах. Очевидно, что для интерпретации сфор- мированных шаблонов необходимо использовать независимые методы ИИ, поэтому нет смысла применять лишь отдельно взятые методы неконтролируемого обучения. Тем не менее существует возможность, например, применять методы обучения с подкреплением в сочетании с механизмом внутренней оценки (таким, как сценарий вычисления вознаграждения). Такие подходы полностью реализуются с помощью комбинированного компонента, поэтому могут рассматриваться как неконтроли- руемые (речь о них пойдет в части VII).
542 Часть V. Работа с предметами и объектами Общие выводы Как правило, целесообразно использовать контролируемое обучение. Такой под- ход является вполне оправданным, поскольку позволяет достичь предсказуемых ре- зультатов, кроме того, контролируемое обучение, несомненно, является наиболее эффективной формой обучения. Благодаря этому указанная форма обучения стано- вится идеально приспособленной для разработки игр. При использовании других методов общий контроль над окончательно реализуе- мыми формами поведения становится менее жестким. Безусловно, существует много способов, позволяющих успешно применять такие методы обучения на прак- тике (как показывают примеры и упражнения, приведенные в этой книге), но обыч- но они требуют более значительных усилий при разработке и связаны с большими вычислительными издержками. Кроме того, хотя обучающие компоненты, дейст- вующие на основе подкрепления и эволюционного подхода, позволяют добиться создания лучших форм поведения, в фазе обучения, реализуемой с их помощью, действия выглядят весьма нереалистичными (поскольку, например, автоматически проводятся эксперименты с действиями и формами поведения, которые не соответ- ствуют текущей ситуации). Краткий вывод состоит в том, что для разработчиков игр наилучший способ ос- тавить за собой контроль над текущей ситуацией состоит в использовании контро- лируемых компонентов. С точки зрения создания наилучшего проекта может воз- никнуть соблазн воспользоваться компонентами, основанными на обратной связи, но следует учитывать, что для их реализации требуется более значительное время разработки. Методологии обучения формам поведения В предыдущих разделах основное внимание было уделено изложению теоретиче7 ских сведений, а в следующих нескольких разделах приведены некоторые практиче- ские рекомендации по организации обучения. В этих разделах рассматриваются раз- личные способы, с помощью которых проектировщики могут вступать во взаимо- действие со средствами ИИ, чтобы обеспечить их успешное обучение. Обучение Обучение сводится к тому, что средствам ИИ предоставляются примеры, с по- мощью которых могут быть получены необходимые им знания. В большинстве слу- чаев эксперты анализируют задачу и закладывают в проект готовые решения. Если же знания выражены с помощью удобного представления, то появляется возмож- ность проводить обучение аниматов с использованием соответствующих примеров, а также предусмотреть приемлемые интерпретации для тех случаев, в которых при- меры отсутствуют.
Глава 35. Проектирование обучающихся средств ИИ 543 Моделирование Моделирование аналогично обучению в том, что для усвоения аниматом необхо- димой информации требуются выборки данных. А различие между моделированием и обучением состоит в том, что при обучении накопление примеров осуществляется по результатам наблюдения за действиями любых других участников той же игры. В этом случае больше нет необходимости обращаться за помощью к экспертам; в ка- честве источника информации для обучения могут использоваться результаты реги- страции действий случайно выбранных участников игры. Метод проб и ошибок Еще один путь к усвоению аниматами желаемых форм поведения состоит в ис- пользовании метода проб и ошибок. Общая идея этого метода заключается в том, что анимату не даются какие-либо руководящие указания в отношении того, что он должен делать, и вместо этого оценивается качество действий (после каждого шага) или качество реализуемых форм поведения (по истечении более продолжительных интервалов). Таким образом, проектировщик привлекается к обучению на гораздо более высоком уровне и обычно реализует в проекте способ предоставления анимату обратной связи. Обучение достигается путем осуществления попыток максимизации ожидаемого вознаграждения, независимо от принятой степени детализации, с уче- том действий или форм поведения. Формирование Формирование — это способ, с помощью которого проектировщики могут предос- тавить в распоряжение анимата свои знания о задаче, чтобы помочь ему найти реше- ние [56]. Как правило, при использовании этого метода общая задача подразделяется на меньшие фрагменты, которые проще поддаются решению, и тем самым анимату предоставляются необходимые рекомендации на промежуточных этапах пути к дости- жению общего решения. На практике указанный подход выражается в том, что разра- ботчик организует ряд попыток, позволяющих постепенно раскрыть различные аспек- ты задачи. Как правило, эти попытки структурированы таким образом, чтобы в них вначале выявлялись наиболее фундаментальные концепции, а в конце — наиболее сложные. Аналогичные принципы формирования могут применяться в сочетании с тремя описанными выше подходами. В ходе обучения можно вначале предусмотреть ус- воение информации о наиболее важных случаях. А в процессе моделирования обу- чающий компонент может вначале сделать акцент на демонстрации наиболее про- стых решений. Наконец, при обучении на основе метода проб и ошибок вначале можно сосредоточиться на демонстрации наиболее существенных концепций. Общий обзор используемых методов В играх чаще всего используется обучение, поскольку оно позволяет достичь наи- более предсказуемых результатов. Рекомендуется по умолчанию использовать именно этот подход. При решении относительно небольших задач все чаще применяется мо-
544 Часть V. Работа с предметами и объектами делирование, но обычно для его организации и настройки требуется больше времени и усилий. Метод проб и ошибок является чрезвычайно мощным, но при его реализации приходится сталкиваться с наибольшими техническими сложностями. Вообще говоря, на протяжении всей разработки средств ИИ применяется своего рода формирование, особенно в связи с итеративным характером процесса проектирования (при том, что в процессе разработки значительное участие принимает инженер). Резюме Многие из понятий, представленных в настоящей главе, в значительной степени перекрываются. Но по очень веским причинам некоторые сочетания проектных реше- ний используются чаще других. Тем не менее важно понять, что эти проектные реше- ния являются ортогональными (т.е., главным образом, независимыми друг от друга). Итоговые сведения о надежности различных подходов приведены в табл. 35.1. Таблица 35.1. Решения, которые должны быть приняты при проектировании обучающихся средств ИИ, упорядоченные с учетом вероятности их успешной реализации Надежный Характеризующийся более высоким риском Тип Оптимизация Адаптация Представление Знания Формы поведения Фаза Эксплуатация в автономном режиме Эксплуатация в оперативном режиме Метод Пакетный Инкрементный Компонент Контролируемый Поддерживающий обратную связь Методология Обучение Метод проб и ошибок Чем более надежными являются принятые проектные решения, тем больший кон- троль получает разработчик над несобственными персонажами. Кроме того, аниматы, по всей вероятности, будут демонстрировать более высокую производительность, а средства ИИ — работать более эффективно. Безусловно, трудности возникают и при использовании этих более безопасных опций, но технологии, характеризующиеся бо- лее высоким риском, усложняют работу на несколько порядков величины. Дополни- тельные сведения по этой проблеме приведены в главе 48, “Применение адаптивных форм поведения”. Практическая демонстрационная версия Для иллюстрации идей, изложенных в этой главе, создан демонстрационный анимат, известный под именем Loony. Анимат Loony предоставляет обратную связь в трех формах: контролируемую, по воз- награждению и по пригодности. После того как информация обратной связи становится доступной, вызываются функции обратного вызова, после чего полученная информация может интерпретиро- ваться так, как сочтет нужным инженер по искусственному интеллекту.
^aiaHaus^i Часть V Заключение В последних нескольких главах описано превосходное сочетание технологий, а так- же рассматривается широкий перечень вспомогательных форм поведения, от кото- рых в значительной степени зависит успешное достижение правдоподобности и реа- листичности. Краткий ретроспективный обзор Ниже приведены наиболее важные выводы, сформулированные в разных главах данной части. Применяемые методы Нечеткая логика позволяет представить факты чрезвычайно наглядным способом с использованием степеней принадлежности. Для формирования дедуктивных рас- суждений особенно подходят нечеткие экспертные системы, поскольку они позво- ляют определять новые факты на основании ряда утверждений в форме, удивитель- но напоминающей мыслительную деятельность человека. Для обеспечения гладкого управления могут также использоваться нечеткие правила, но, чтобы добиться их правильного использования, необходимо соблюдать некоторые предосторожности; в действительности попытка представить длинные последовательности с помощью совместимых правил может оказаться практически неосуществимой. Недостатком подхода, основанного на использовании нечетких правил, является то, что в процессе эксплуатации нечетких экспертных систем требуется, чтобы на каж- дом шаге осуществлялась обработка всех правил, а такая организация работы может оказаться довольно дорогостоящей и стать причиной комбинаторного взрыва. На практике комбинаторного взрыва часто можно избежать, представляя знания неявным способом, а также перегруппировывая и упрощая правила соответствующим образом. Что же касается генетических алгоритмов, то они представляют собой чрезвычайно мощный метод оптимизации, который может применяться для решения почти любой задачи. Особенно значительных успехов в использовании генетических алгоритмов можно добиться при поиске решений, близких к глобально оптимальным.
Надежное функционирование генетических алгоритмов во многом зависит от того, насколько качественным является представление решения, оптимизируемого с их помощью. Это означает, что выбор применяемой эволюционной методики со- ставляет лишь небольшую часть общего объема работ по разработке проекта. Очень часто возникает также необходимость в создании определяемых пользователем ме- тодов кодирования и декодирования. Еще один вариант состоит в использовании генетических операций, зависящих от фенотипа. Недостатком генетических алгоритмов является то, что их успешное применение во многом зависит от правильного выбора одного из основных компонентов: функ- ции пригодности. При использовании простых критериев (например, эффективно- сти) задача подготовки функции пригодности может оказаться весьма простой, но, как показывает практика, становится очень трудоемкой, если функцию пригодности требуется откорректировать с учетом более сложных форм поведения (например, для достижения реалистичности). Причина этого заключается в том, что используется неявная, высокоуровневая форма управления, а оптимизация осуществляется осо- бенно медленно, из-за чего инкрементное внесение поправок превращается просто в сплошное мучение. Особенно трудно предотвратить непреднамеренное возникно- вение циклов, хотя иногда слежение за аниматом, который проходит такой этап оп- тимизации, может стать интересным. Эти недостатки относятся ко всем методикам, основанным на использовании значений пригодности, а не только к генетическим алгоритмам. Решение состоит в том, чтобы в максимально возможной степени понизить уровень управления вплоть до контролируемого обучения, выражая пригодность в терминах конкретных ситуа- ций и действий. Превосходным примером того, как могут применяться генетические алгоритмы в рамках простой архитектуры, являются обучающиеся системы классификаторов. Фак- тически обучающиеся системы классификаторов представляют собой чрезвычайно эффективную методику адаптации и даже оптимизации. Представление в виде отдель- ных классификаторов имеет преимущество в том, что является весьма выразительным, причем настолько, что часто вполне доступно для понимания с первого взгляда. Не- смотря на сказанное, на практике более полезна модификация двоичного представле- ния, позволяющая включать в рассмотрение произвольные символы. Формы поведения В этой части разработан целый ряд приемлемых форм поведения, создаваемых либо с помощью правил, составленных вручную, либо с применением последова- тельностей, полученных в результате обучения. Во многих случаях эти подходы мо- гут оказаться взаимозаменяемыми, например, при усвоении путем обучения более сложных форм поведения, таких как использование дверей. Для этого необходимо лишь предоставить приемлемую среду, что позволяет облегчить для анимата процесс обучения (т.е. выработки форм поведения с использованием специализированных игровых уровней). И наоборот, разработка произвольных форм поведения с исполь- зованием нечеткой логики оказалась бы довольно простой задачей. Большинство форм поведения на основе нечеткой логики действуют вполне удов- летворительно, обеспечивая гладкое управление и эффективное движение. А некото-
рые другие формы поведения не опираются на существующие формы поведения низ- кого уровня и не позволяют добиться успехов из-за принятых в них недействительных предположений (например, о наличии стены между кнопкой и дверью). Для обеспече- ния высокой эффективности и реалистичности форм поведения необходимо исполь- зовать в них существующие возможности. Что касается уклонения от огня, то данная форма поведения действует удиви- тельно успешно, несмотря на простую модель взвешенных векторов предположе- ний. Этот пример может служить наглядной иллюстрацией того, что предоставление возможности использовать характеристики, спроектированные экспертом, способ- ствует более успешному применению алгоритма обучения. Несмотря на сказанное, в некоторых случаях возникают проблемы, связанные с выбором неоптимальных способов действий, но, вообще говоря, создаваемые аниматы действуют столь же эффективно, как и люди. Что же касается ракетных прыжков, то внешне они выглядят как цирковые номе- ра. В настоящее время эта форма поведения применяется без какой-либо цели, но со временем решение о том, что необходим ракетный прыжок, будет приниматься на основании анализа местности. Такое решение будет вырабатываться высокоуровне- выми средствами ИИ, поэтому фактически разработчику никогда не придется под- сказывать анимату, чтобы он совершил ракетный прыжок. В действительности ра- кетные прыжки представляют собой превосходный пример формы поведения, кото- рая позволила бы воспользоваться широковещательной рассылкой сигналов осуще- ствимости (affordance); элементы интерфейса, для достижения которых требуется ракетный прыжок, могли бы передавать информацию об этом факте аниматам, спо- собным выполнять такие прыжки, что позволяет экономить дорогостоящие в вы- числительном отношении усилия по анализу ситуации. Перспективы применения описанных методов Все методы, представленные в данной части, могут использоваться для решения задач, описанных в предыдущих или следующих главах, а читателям рекомендуется ознакомиться с некоторыми упражнениями, предложенными на Web-узле по адресу http://AiGameDev.сот/. В последней главе данной части представлен широкий набор методов и подходов, позволяющих находить решения простых задач с использованием представления, определяемого пользователем. В ней также показано, как использовать обучение для создания последовательности действий, которые могут быть очень легко отредакти- рованы вручную. Тем не менее, если речь идет об использовании методов выработки форм поведе- ния вручную, то ни один метод не может сравниться по своей простоте с методом, основанным на использовании конечных автоматов. Конечные автоматы реализуют практически идеальную структуру представления для произвольных последователь- ностей действий, устраняя основной недостаток систем, основанных на правилах (в том числе нечетких). В следующей части рассматриваются способы совместного применения конечных автоматов с другими средствами, в которых используются разнородные иерархии компонентов.
В завершение данной части следует также отметить, что созданные к этому времени аниматы обладают намного большей гибкостью, чем прежде; фактически эти аниматы поддерживают почти полный набор активизируемых форм поведения. В следующей части показано, как сделать формы поведения аниматов немного более реалистичны- ми путем придания им оттенка инстинктивного поведения, которое характерно для животных. С этой целью будет предпринята попытка моделировать другие аспекты проявления эмоций, что приведет к созданию более правдоподобных форм поведения.
Часть VI Эмоции В ходе изложения материала настоящей книги было показано, как достичь довольно значительного повышения интеллектуальности аниматов. Аниматы стали способны- ми к примитивной регуляции моторики, освоили способы манипулирования объекта- ми и научились принимать некоторые решения. Но реализуемые формы поведения не слишком правдоподобны, главным образом потому, что при создании средств ИИ ос- новное внимание было уделено реализации интеллектуальных возможностей. Настоящая часть посвящена описанию эмоций, которые используются в качестве инструментальных средств повышения правдоподобности аниматов. Повышению правдоподобия действий способствует намеренное введение ошибок' в действия (например, шума в параметры прицеливания), а эмоции предоставляют биологиче- ски правдоподобный способ модификации сенсоров и эффекторов, что позволяет оказывать воздействие на формы поведения. Эмоции позволяют также оказывать влияние на процесс принятия решений на самом высоком уровне. Побуждения Эмоции позволяют улучшить моделирование тела анимата путем демонстрации основных особенностей человеческого поведения (таких, как возбуждение). Ото- бражение эмоций, по-видимому, должно способствовать повышению реалистично- сти действий низкого уровня, но также, по всей видимости, позволит усовершенст- вовать формы поведения более высокого уровня, которые являются результатом мо- делирования. Система, проявляющая эмоции, в процессе своего функционирования должна не только затрагивать существующие формы поведения, но и предоставлять руководя- щие указания для интеллектуальных компонентов принятия решений. Эмоции мо- гут рассматриваться как желания и побуждения, которые часто являются субъектив- ными характеристиками каждого отдельно взятого участника игры. В этой части разработана также технология, на основе которой могут быть созда- ны системы, состоящие из нескольких субархитектур. В данном случае субархитек- тура эмоций и субархитектура интеллекта рассматриваются, главным образом, как независимые, и считается, что эмоции оказывают свое влияние только в ходе их взаимодействия с телом. Наконец, в этой части рассматривается методика создания средств ИИ, в боль- шей степени подходящая для моделирования простых состояний, и, в связи с этим,
последовательностей действий. При этом методики, основанные на использовании конечных автоматов, часто способствуют упрощению проектирования и предостав- ляют более полные возможности контроля. Краткое содержание Глава 36, “Создания, обладающие эмоциями”. В этой главе содержится краткий обзор всей тематики эмоций, а также приведены результаты изучения других подхо- дов к созданию средств ИИ и проведению психологических исследований. По мне- нию автора, необходимость применения эмоций в играх связана с тем, что эмоции предоставляют дополнительный способ взаимодействия с игроками-людьми. Глава 37, “Ощущения, эмоции и чувства”. В этой главе даны определения ощуще- ний, эмоций и чувств, а также приведены наиболее распространенные примеры проявления этих душевных состояний в играх. Кроме того, в этой главе представлен интерфейс, используемый для обмена эмоциями с игровой машиной, и обсуждают- ся способы изображения эмоций. Глава 38, “Конечные автоматы”. В этой главе рассматриваются конечные автома- ты с теоретической и практической точек зрения. Кроме того, показано, что конеч- ные автоматы представляют собой метод управления, который особенно хорошо подходит для слежения за состояниями и, в силу этого, за последовательностями. Глава 39, “Влияние эмоций”. В этой главе показано, как можно использовать ме- тоды, основанные на использовании конечных автоматов, для моделирования эмо- ций и ощущений. Субархитектура, рассматриваемая в этой главе, позволяет влиять на интеллектуальные формы поведения путем ухудшения качества восприятий и действий в соответствии с настроением. Глава 40, “Недетерминированные конечные автоматы”. В этой главе представлены вероятностные, недетерминированные и нечеткие модели, которые могут рассмат- риваться как расширения конечных автоматов, и показано, что каждая из этих моде- лей позволяет устранить те или иные практические проблемы, возникающие при использовании первоначальной методики. Глава 41, “Иерархические конечные автоматы”. В главе обсуждаются иерархиче- ские подходы и рассматриваются примеры их применения в играх; особенно значи- тельное внимание уделяется демонстрации того, насколько значительно упрощается проектирование конечных автоматов. Глава 42, “Система, проявляющая эмоции”. В этой главе показано, как использо- вать каждое из дополнений к методикам, основанным на использовании конечных автоматов, для создания иерархической системы, которая моделирует эмоции, чув- ства и ощущения. Создаваемые аниматы включают также в виде форм поведения простые воспоминания и проявления своих эмоций. Глава 43, “Эмерджентная сложность”. В этой последней главе данной части обсу- ждается понятие эмерджентности. Как эмерджентные MOiyr рассматриваться раз- личные аспекты проявления форм поведения и функциональных возможностей. После определения понятия эмерджентности и раскрытия темы, касающейся того, почему желательно использовать эмерджентность, в этой главе приведены рекомен- дации, позволяющие реализовать потенциальные возможности эмерджентных явле- ний в соответствии с проектом.
Исходные предположения Как описано ниже, для проявления эмоций требуется использование тех средств ИИ, с помощью которых реализуются целенаправленные формы поведения, а для отображения эмоций необходима игровая машина. > Необходимо использовать существующие формы поведения, хотя они могут относиться к разным уровням сложности. Предполагается, что архитектура, обеспечивающая интеллектуальность анимата, является автономной. > Параметры влияют на функционирование интерфейсов между телом и мозгом, моделируя ухудшение качества восприятий и действий по отношению к идеаль- ному качеству. > Эмоции могут изображаться игровой машиной с использованием различных технологий, не ограничиваясь анимацией мимики, характерными словесны- ми оборотами и текстовыми сообщениями. В следующей главе рассматривается происхождение эмоций и проводится анализ различных характеристик эмоций. Чтобы иметь возможность заниматься анализом рассматриваемой проблематики и составлением спецификаций, необходимо внача- ле достичь понимания сути эмоций, а это даст возможность подготовиться к разра- ботке искусственной системы, позволяющей моделировать эмоции.

^atattaus^. Гпава 36 Создания, обладающие эмоциями Для многих людей эмоции могут стать либо ис- точником приятных ощущений, либо причи- ной дискомфорта. Настроение меняется, и в ре- зультате этого человек в одном случае может чувст- вовать себя очень счастливым, а в другом — стре- миться избавиться от гнетущего состояния. В на- стоящей главе приведено краткое описание того, какое значение имеют эмоции для биологических созданий и с чем связана необходимость модели- ровать эмоции в синтетических созданиях. В следующем разделе приведены вводные све- дения, касающиеся проявления эмоций в био- логических и синтетических созданиях, и иссле- дуется их роль в компьютерных играх. В настоящей главе рассматриваются следую- щие темы. > Происхождение человеческих эмоций в ходе эволюции. > Системы, проявляющие эмоции, создавае- мые на основе идей, заимствованных из биологии, и общий подход к их реализации. > Отношения между эмоциями и интеллек- том. > Значение эмоций для обеспечения прав- доподобности взаимодействия с челове- ком в ходе игры (в том числе несколько примеров). > Роль эмоций в компьютерных играх. Настоящая глава закладывает фундамент для следующей главы, которая содержит примеры и практические рекомендации для разработчика средств ИИ, занимающегося созданием искусст- венных эмоций. В ЭТОЙ ГЛАВЕ- • Происхождение человеческих эмоций в ходе эволюции • Биологические модели эмоций • От эмоций к искусственному интеллекту • Человеко-машинное взаимодействие • Применение эмоций в играх • Резюме
554 Часть VI. Эмоции Происхождение человеческих эмоций в ходе эволюции Эмоции являются продуктом эволюции и имеют вполне конкретное назначение: эмоции помогли людям стать самой преуспевающей разновидностью живых существ на Земле. Эмоции позволяют избавиться от необходимости прибегать к основательным размышлениям для принятия решения, поскольку позволяют сразу же перейти к реали- зации форм поведения, пред-кггавляющих наилучшие шансы на выживание, и тем са- мым обойтись без рассуждений, которые могли бы оказаться бесполезной тратой време- ни. Другие виды млекопитающих также обнаруживают возможности проявления эмо- ций, с такими реакциями, которые очень напоминают обнаруживаемые у людей. Эти взгляды разделяет ученый Роберт Плучик (Robert Plutchik), работающий в области эволюции психики [62]. Согласно Плучику, существует восемь основных эмоций, связанных друг с другом в виде взаимно дополняющих пар: предвидение и удивление, радость и сожаление, согласие и недовольство, страх и гнев. В теории Плучика утверждается, что люди не способны испытывать две взаимно дополняю- щие эмоции одновременно; противоположные эмоции вытесняют друг друга, обес- печивая тем самым все разнообразие форм поведения. С точки зрения ученых, работающих в области эволюции психики, каждая эмоция выполняет свое назначение, вызывая активизируемую форму поведения, способст- вующую выживанию. Ниже приведен ряд примеров, позволяющих подтвердить это предположение. > Под воздействием страха в теле выделяются гормоны, способствующие тому, что для своего выживания индивидуум спасается бегством (или вступает в борьбу). > Удивление пробуждает стремление к получению новой информации и вынуж- дает мозг уделять больше внимания восприятию. > Недовольство принуждает людей отвергнуть рассматриваемый объект. > Под действием гнева люди уничтожают препятствия, из-за которых они не могут достичь своей цели. > Испытывая печаль, люди стремятся найти комфорт. Согласно Плучику, эти основные эмоции могут проявляться с разной интенсив- ностью (например, в виде ярости, гнева, раздражения, ужаса, страха, неприятного предчувствия). Кроме того, основные эмоции объединяются, образуя сложные на- строения; согласие и радость могут трактоваться как любовь, страх и согласие при- водят к подчинению, печаль и удивление выражаются как разочарование и т.д. С помощью теории эволюции психики удалось объяснить причины возникнове- ния эмоций и заложить основы понимания их роли как эволюционного фактора, способствующего повышению вероятности выживания. Тем не менее подход, пред- ложенный Плучиком, не позволяет принять в рассмотрение познавательные про- цессы, связанные с эмоциями.
Глава 36. Создания, обладающие эмоциями 555 Биологические модели эмоций Чтобы лучше понять, как проявляются эмоциональные реакции у млекопитаю- щих, необходимо хотя бы частично промоделировать их познавательные способно- сти. В действительности животные должны вначале воспринять и истолковать сиг- налы, поступающие из той среды, в которой они находятся, и только тогда они смо- гут почувствовать какие-либо эмоции. Исследователи, работающие в различных областях, связанных с искусственным интеллектом, пытаются воспроизвести различные аспекты жизнедеятельности био- логических существ, чтобы иметь возможность моделировать адаптивные формы по- ведения. Вообще говоря, в своем функционировании биологические системы опира- ются на два различных компонента — познавательный и эмоциональный. Моделиро- вание работы этих компонентов часто осуществляется на основе современных методов ИИ, но при этом используются также описанные ниже биологические представления. > Эмоциональный компонент часто является жестко закодированным (что со- ответствует его филогенетическому характеру). При использовании такого подхода проектировщик получает возможность эмулировать эмоции, точно соответствующие их биологическим аналогам (например, страх, боль и удо- вольствие), и таким образом проверять их роль в обучении. Взаимно допол- няющие эмоции могут рассматриваться как предельные значения единствен- ной переменной, с помощью которой обусловливается направленность обуче- ния, способствующая получению положительных эмоций. > Адаптивный компонент предоставляет возможность динамического усвоения форм поведения с помощью обучения на протяжении всего сеанса моделиро- вания (что соответствует онтогенетическому развитию). Такие методы, как нейронные сети и средства обучения с подкреплением, позволяют создавать аниматы, способные приспосабливаться к заданному эмоциональному со- стоянию и вести себя наилучшим образом (как описано в части VII). Основная цель таких подходов, создаваемых на основе идей, заимствованных в биологии, состоит в том, чтобы лучше понять поведение млекопитающих. Кроме того, моделирование позволяет исследовать преимущества эмоций как инструмен- тального средства создания существ, наделенных интеллектом, в меньшей степени сосредоточиваясь на тех аспектах, которые способствуют повышению точности пе- редачи биологических особенностей. От эмоций к искусственному интеллекту С точки зрения большинства разработчиков средств ИИ, такие исследования, про- водимые с использованием систем, проявляющих биологически правдоподобные эмоции, являются чрезвычайно перспективными. Но чаще всего вместо этого разра- ботчики ставят перед собой другую основную цель — усовершенствовать классические средства ИИ. Традиционные подходы ориентированы на использование мощных спо- собов представления и строгих механизмов поиска, но дополнение этих подходов средствами моделирования инстинктивных реакций и субъективных предпочтений
556 Часть VI. Эмоции позволяет добиться колоссальных преимуществ; в действительности эта мысль выра- жает основную направленность настоящей книги (которая посвящена проблемам обу- чения и активизации форм поведения). Искусственные эмоции (и методы создания активизируемых средств ИИ, которые используются для их выражения) представляют собой идеальное дополнение к классическим средствам ИИ. С другой стороны, весь подход, основанный на использовании искусственных эмоций, может вполне выйти за рамки разумного (так же, как и подход, в котором используются активизируемые средства ИИ), стоит только забыть о том, что он не является панацеей. Кроме того, и само использование эмоций связано с возникно- вением определенных ловушек; дело в том, что эмоции с трудом под даются управле- нию, отличаются недостаточной гибкостью и являются трудными для понимания. Следует помнить, что моделирование эмоций — лишь небольшая часть эволю- ционного подхода к созданию существ, обладающих интеллектом. При использова- нии инженерного подхода, как правило, вырабатываются совсем другие решения по сравнению с эволюционным подходом; чаще всего на основе первого из этих подхо- дов создается интеллект, почти не напоминающий или совсем не напоминающий биологические эмоции, хотя некоторые понятия, используемые в обоих подходах, могут оказаться аналогичными (например, такие, как активизируемые действия или эвристические функции). Кроме того, хотя воздействие эмоций не приводит к тому, что люди становятся интеллектуальными, трудно представить себе человека, не об- ладающего эмоциями. Эмоции входят в круг интересов разработчиков игр именно по тем причинам, что они являются ключевым фактором в достижении реалистич- ности и правдоподобности. Человеко-машинное взаимодействие Вне всякого сомнения, эмоции представляют собой определяющую особенность всех млекопитающих, особенно людей. Эмоции играют чрезвычайно важную роль во взаимодействии между людьми. Людям, прежде всего, свойственно проявлять эмоции при взаимодействии друг с другом, поэтому целесообразно прежде всего реализовать эмоции именно на уровне компьютерных интерфейсов для обеспечения удобства пользования ими. Это означает, что наиболее полезным и практически оправданным применением “систем, проявляющих эмоции” является улучшение взаимодействия между людьми и машинами, в результате чего средства ИИ начинают в большей сте- пени напоминать живые создания. Люди сообщают о своих эмоциях весьма разнообразными способами. А исследо- ватели пытаются передать искусственные эмоции в описанных ниже формах. > Выражения. Огромное количество информации об эмоциях несут статические выражения лица (например, улыбка или хмурый взгляд). И действительно, еще в одном подходе к изучению эмоций выражения лица используются для распознавания основных эмоций [20]. > Мимика. Мощным средством выражения эмоций являются также язык тела и мимика. Например, сутулость — признак депрессии, а кивание головой обо- значает согласие [59].
^ataHaus^!. Глава 36. Создания, обладающие эмоциями 557 > Формы поведения. Проявляясь в течение более продолжительных промежутков времени, формы поведения являются более сильным средством выражения эмоционального состояния [6]. Например, игнорирование кого-то— признак отторжения, а забота о каком-либо человеке свидетельствует о привязанности. > Язык. Подбор слов во время беседы чрезвычайно наглядно свидетельствует о на- строении (например, очень четко ощущается разница между фамильярным или формальным языком). Эмоции передает также ритм предложений; короткие предложения звучат как более авторитетные и характерны для сердитого челове- ка (что нашло свое отражение в искусственном языке Lojban [22]). > Голос. Настроение отражает также тон голоса, с которым произносится пред- ложение. Громкий голос свидетельствует о проявлении гнева, более быстрая речь часто является признаком беспокойства и т.д. Как показывает приведенный выше список, для изображения эмоций в синтетиче- ских созданиях требуется гораздо больше, по сравнению с обычными средствами ИИ. Ключевыми аспектами разработки средств представления эмоций являются усилия в таких областях, как моделирование, анимация, лингвистика и речевой синтез. Применение эмоций в играх Если задача заключается в том, чтобы представить эмоции с помощью форм пове- дения, то необходимо прежде всего преодолеть узкое место, связанное с недостаточной интеллектуальностью анимата. Неспособность анимата выполнить предъявленное ему задание почти наверняка может рассматриваться как результат программной ошибки при создании игровых средств ИИ (например, приводящей к тому, что анимат сталки- вается со стеной). Необходимые функциональные возможности могут быть реализо- ваны с помощью активизируемых форм поведения, широко рассматриваемых в на- стоящей книге, причем для этого не требуется прибегать к использованию решений, источником идей д ля создания которых являются эмоции. С другой стороны, если анимат является полностью функциональным, то появ- ляется желание повысить степень его реалистичности. В этом чрезвычайно значи- тельную помощь могут оказать эмоции, поскольку они позволяют повысить качест- во выражения форм поведения на основе подхода, правдоподобного с точки зрения биологии. Особый интерес привлекают перечисленные ниже особенности, которые могут быть внесены с использованием эмоций в проект игры. > Привязанность. Отдельные персонажи, способные демонстрировать свое настрое- ние, становятся более правдоподобными, поэтому игроки-люди обнаруживают эмоциональную привязанность к ним. Возникают своего рода духовные связи, ко- торые могут оказаться достаточно сильными, чтобы изменить ход игры. > Основные сюжетные линии. Наделив несобственные персонажи эмоциями, можно существенно улучшить их взаимодействие с людьми. Дело в том, что между участниками игры возникает общность, обусловленная принадлежно- стью к одной и той же сюжетной линии, поэтому эмоции позволяют в значи- тельной степени повысить развлекательность.
558 Часть VI. Эмоции > Погруженность. В результате проявления эмоций, формы поведения всех не- собственных персонажей начинают казаться более реалистичными, поэтому в целом увеличивается погруженность участника игры в игровую среду. Каждая из этих особенностей способствует увеличению развлекательной ценно- сти игры. А обязанность разработчиков игр заключается в том, чтобы добиться это- го, сосредоточиваясь на различных аспектах проявления эмоций (например, на ми- мике, формах поведения или на языке), и использовать систему ИИ для обеспече- ния выражения эмоций наиболее подходящим способом. Дополнительные сведения о создании эмоций в играх см. в книге Дэвида Фримена (David Freeman) Creating Emotion in Games: The Craft and Art of Emotioneering (New Riders, 2003). Резюме В настоящей главе основные сведения об эмоциях излагаются с разных точек зрения, как описано ниже; приведенная в ней информация будет использоваться в остальных главах этой части при разработке систем, проявляющих эмоции. > С точки зрения теории эволюции, эмоции способствуют повышению вероятно- сти выживания, поддерживая инстинктивные реакции и задавая высокоуровне- вые психологические установки, влияющие на проявление форм поведения. > Как правило, системы, проявляющие эмоции, создаваемые на основе идей, заимствованных в биологии, основаны на использовании сочетания адаптив- ного компонента с неизменным эмоциональным компонентом. > Эмоции относятся лишь к небольшой области проявления человеческого ин- теллекта, но, как и другие способности, успешно справляются со своим на- значением. > Основное назначение искусственных эмоций состоит в улучшении взаимо- действия с людьми. > В результате использования эмоций в проекте игры могут быть достигнуты значительные преимущества, поскольку эмоции способствуют повышению правдоподобности и реалистичности. По-видимому, в данной главе удалось раскрыть назначение искусственных эмо- ций, поэтому теперь можно приступить к изложению в следующей главе основных подходов к решению задачи реализации эмоций, применяемых разработчиками игр. Практическая демонстрационная версия Sensitiv—это анимат, в котором применяется сочетание описанных выше возможностей и форм по- ведения, активизирующих простые эмоциональные реакции. Эти эмоции не отражаются на функцио- нировании анимата Sensitiv, но он следит за ними, регистрируя полученные результаты на отладоч- ном терминале. Испытываемые им примитивные ощущения дополнительно рассматриваются и учи- тываются в следующей главе.
l\(itaHaus', Гпава 37 Ощущения, эмоции и ЧУВСТВА В ЭТОЙ ГЛАВЕ- • Ощущения • Эмоции • Интерфейсы, позволяющие передавать эмоции • Отображение эмоций в играх • Резюме Змоции являются результатом сложных взаи- модействий между телом и мозгом. Эмоции зарождаются в теле под влиянием стимулов, по- ступающих из внешней среды (таких, как взры- вы). Как правило, мозг реагирует на подобные восприятия низкого уровня, которые преобразу- ются в устойчивые характеристики живого суще- ства (такие, как страх). Возникшие эмоции могут потенциально становиться видимыми извне, вы- ражаясь в формах поведения (таких, как побег). В настоящей главе определены различные концепции, относящиеся к проблематике созда- ния искусственных эмоций в аниматах. Вначале представлены концепции низшего уровня, а за- тем осуществляется переход к описанию высо- коуровневых эмоций. В настоящей главе рассматриваются пере- численные ниже темы. > Определение понятия ощущений как ре- акции мозга на восприятия, под действи- ем которых возникают эмоции. > Описание эмоций как устойчивой харак- теристики и определение таких духовных явлений, происходящих от эмоций, как настроения и чувства. > Интерфейс, используемый средствами ИИ для передачи эмоций игровой машине. > Практические способы изображения эмо- ций в рамках мира игры (новые). К концу настоящей главы, благодаря достигну- тому пониманию различных аспектов реализации эмоций, будет завершено создание системы, про- являющей эмоции. Новые интерфейсы, специаль- но предназначенные для представления эмоций, позволяют расширить возможности аниматов.
560 Часть VI. Эмоции Ощущения Все эмоции в созданиях, воплощенных в виде аниматов, инициализируются с помощью ощущений. Ощущение — это непосредственная реакция на полученную информацию о текущем состоянии создания. По определению, ощущения воспринимаются практически мгновенно, исходя из изменений текущей ситуации. Ощущения могут возникать под действием двух фак- торов: текущее восприятие (т.е. стимулы, поступающие из внешней среды) и позна- вательная деятельность (т.е. размышления). Примеры обычно возникающих ощу- щений приведены в табл. 37.1. Таблица 37.1. Обычные ощущения, которые могут восприниматься живыми существами Ощущение Ощущение Удивление Предвидение Недовольство Влечение Смущение Открытие Боль Удовольствие Ощущения, относящиеся к восприятию Как правило, ощущения активизируются под действием восприятий. Тело обнару- живает стимулы, поступающие из внешней среды, и полученная информация вызыва- ет немедленную реакцию в мозгу. Например, несобственный персонаж (NonPlayer Character — NPC) может испытать чувство, связанное с удивлением, при внезапном появлении участника игры. Создания, воплощенные в аниматах, определяются по способу их взаимодейст- вия с миром игры, поэтому чаще всего встречается тип ощущений, относящийся к восприятию (табл. 37.2). Для создания таких активизируемых эмоций могут успешно применяться различные методы, активизируемые под действием входных данных, которые широко представлены в настоящей книге. Таблица 372. Внешние стимулы, поступающие из внешней среды, которые вызывают ощущения Внешний стимул Внешний стимул Потеря жизнеспособности и пропажа доспехов Брызги крови Искры/взрыв Объект исчезает Прибывающий лифт Открытие двери Присутствие противника Желательный объект
^atallaus^. Глава 37. Ощущения, эмоции и чувства 561 Познавательные ощущения Ощущения могут быть также вызваны реакциями на психическое состояние (например, связанное с приобретением дополнительных знаний о мире или появлени- ем других эмоций). В таком случае ощущения становятся следствием основных про- цессов обработки информации в мозгу. Например, удивление может быть вызвано тем, что отсутствует какой-то объект, тогда как у анимата есть информация о том, что этот объект должен находиться в определенном месте. Ощущения, возникающие в результате познания, и восприятия имеют между собой нечто общее: и те, и другие активизируются в результате согласования обнаруженных фактов с одним из шаблонов в мозгу. Что касается восприятия, то согласование с шаб- лоном происходит немедленно на основе сенсорной информации. С другой стороны, прежде чем шаблон проявится в мозгу (в результате размышлений), необходимо, что- бы завершился определенный процесс познания, что в конечном итоге сразу же поро- ждает ощущение, после того как произойдет согласование с шаблоном. Эмоции Ощущения могут рассматриваться как духовные явления низкого уровня, по- скольку они представляют собой результат мгновенного согласования с шаблоном. Но познавательная деятельность приводит, в частности, к тому, что складываются высокоуровневые тенденции. Эти тенденции принято называть эмоциями. Эмоция — это долговременная характеристика состояния некоторого лица. Эмоции сменяют друг друга относительно медленно, в течение продолжитель- ного времени (по сравнению с ощущениями, которые проявляются мгновенно). На- пример, страх и гнев — это продолжительные эмоции, так же как радость и сожале- ние. Как правило, причиной смены эмоций являются ощущения, вновь восприня- тые аниматом. Некоторые эмоции могут также непосредственно соответствовать единственному ощущению (например, удивление). Как показано в табл. 37.3, каждая основная эмоция может иметь переменную ин- тенсивность (например, страх). Различные значения интенсивности первичных эмоций принято называть вторичными эмоциями (в качестве примера можно ука- зать ужас и неприятное предчувствие). Основные эмоции могут быть определены так, чтобы одновременное присутствие двух из них было исключено; такие эмоции называются взаимно дополняющими. Таблица 37.3. Примеры основных эмоций, присущих людям Эмоция Эмоция Г ордость Стыд Страх Гнев Радость Сожаление Игривость Усталость
562 Часть VI. Эмоции Настроения Настроение — это полное множество эмоций, которые составляют психическое состояние некоторого субъекта в конкретный момент времени. Вообще говоря, для представления настроения будет использоваться множество основных эмоций, каждая из которых имеет несколько возможных состояний: так называемые вторичные эмоции. Например, хорошее настроение может рассматри- ваться как сочетание согласия (основная эмоция), удовлетворения (вторичная эмо- ция по отношению к радости) и благоговения (вторичная эмоция по отношению к удивлению). Такие сочетания основных эмоций приводят к появлению сложных эмоций (например, любви и оптимизма). Чувства Чувство — это устойчивая ассоциация между определенной эмоцией и классом объектов. Чувства — более мощное понятие по сравнению с описанными выше; в отличие от эмоций, чувства могут быть выражены в отношении прошлого или будущего, а в отличие от ощущений чувства не обусловлены непосредственно текущим состояни- ем. Вместд этого чувства могут быть связаны с произвольными объектами, с кото- рыми субъект встречался в прошлом или должен встретиться в будущем. Кроме того, чувства — это очень широкое понятие, поскольку они могут прояв- ляться применительно к любому аспекту внешнего и внутреннего мира (например, по отношению к атрибутам или категориям объектов). В качестве примеров чувств можно указать недовольств».», связанное с некоторыми разновидностями пищи, ненависть к другим типам автомобилей или боязнь движущихся препятствий (табл. 37.4). Таблица 37.4. Некоторые чувства, которые могут обнаруживаться в людях Чувство Чувство Жалость Жестокость Любовь Ненависть Интерфейсы, позволяющие передавать эмоции При разработке всестороннего проекта анимата, способного проявлять эмоциональ- ный отклик, для отображения эмоций часто применяется технология, не относящаяся к средствам ИИ, как описано в главе 36, “Создания, обладающие эмоциями”. Но, в част- ности, чтобы создать дополнительный уровень абстракции между средствами ИИ и сред- ствами анимации, необходимо ввести интерфейс между ахугветстнующими двумя ком- понентами. Проект такого интерфейса рассматривается в настоящем разделе. Принципы проектирования В следующих нескольких главах предполагается, что используемая платформа пре- доставляет поддержку для отображения эмоций, а ответственность за приведение эмо- ций в действие лежит только на средствах ИИ. Это предположение аналогично пред-
^aiaHaus^. Глава 37. Ощущения, эмоции и чувства 563 положению, принятому во всех других частях данной книги, согласно которому в мо- делируемом трехмерном мире проработку деталей низкого уровня всегда обеспечивает игровая машина. (Как обычно, реализация такого подхода связана с преодолением значительных сложностей, и эта тема выходит за рамки настоящей книги.) Итак, функциональные возможности, необходимые для проявления эмоций, предоставляет платформа, поэтому, чтобы выразить соответствующие эмоции, сред- ства ИИ должно взаимодействовать с игровой платформой. Интерфейс, применяе- мый для этой цели, должен иметь описанные ниже характеристики. > Обратная совместимость. Все существующие интерфейсы должны по-прежнему успешно действовать и в том случае, если эмоции не используются. > Расширяемость. Должна быть предусмотрена возможность выражать с помо- щью интерфейса без особых затруднений произвольные эмоции, не сталкива- ясь с необходимостью менять спецификацию интерфейса. > Переносимость. Может оказаться так, что некоторые игровые платформы не поддерживают каждую эмоцию, выраженную с помощью интерфейса, но сис- тема должна продолжать работать и в этом случае. Интерфейс, обладающий указанными свойствами, позволяет разрабатывать про- граммное обеспечение, реализующее требуемые функциональные возможности, и ин- женерам по искусственному интеллекту (создающим эмоции), и разработчикам игро- вой машины (занимающимся отображением эмоций), независимо друг от друга. Вполне естественно, что этим двум категориям специалистов в конечном итоге потре- буется согласовать между собой определения конкретных эмоций, но общая инфра- структура останется неизменной. Общее обоснование Один из подходов к разработке может состоять в том, чтобы связать эмоции с ка- ждым эффектором. При выполнении аниматом какого-то действия игровой машине предоставляются подробные сведения о том, как оно должно быть выполнено. Та- кой подход позволяет организовать гибкое управление эмоциями с учетом каждого действия. Тем не менее эмоции определяют настроения, а настроения остаются не- изменными в течение продолжительного времени, поэтому, как правило, необходи- мость в таком тонком управлении отсутствует. Проект, предусматривающий вклю- чение информации об эмоциональном состоянии в каждый интерфейс, по- видимому, оказался бы довольно громоздким, затрудняющим дальнейшее расшире- ние и не обеспечивающим обратной совместимости. Лучший подход состоит в том, что эмоции должны быть отделены от эффекторов и сенсоров. Такое разграничение позволяет задавать текущее настроение независимо от функционирования остальной части средств ИИ; к тому же, этот подход способствует уменьшению издержек, поскольку одни эмоции могут беспрепятственно сменяться другими. Средства ИИ действуют на основании предположения, что после передачи информации об эмоциях через отдельный интерфейс игровая машина сделает все от нее зависящее, чтобы изобразить эмоции в каждом последующем действии. При использовании такого подхода игровая платформа может просто избира- тельно игнорировать не поддерживаемые ею эмоции, а это, по сути дела, равносиль-
564 Часть VI. Эмоции но обеспечению обратной совместимости. К тому же, благодаря этому интерфейс становится переносимым, поскольку он может быть интегрирован с любой игровой машиной, независимо от того, какая технология применяется в этой машине для отображения эмоций. Для расширения такой системы достаточно лишь предоста- вить доступ к дополнительным функциональным возможностям через единствен- ный интерфейс; при этом, возможно, даже не потребуется расширение системы. Спецификация Функционирование каждого компонента средств ИИ, на который может распро- страняться действие эмоций, зависит от интерфейса поддержки эмоций. Этот ин- терфейс предоставляет информацию о текущем эмоциональном состоянии, которое может учитываться в данной конкретной реализации. Наиболее очевидный способ передачи запроса, касающегося эмоций, состоит в ис- пользовании вызова функции. Этот вызов возвращает значение интенсивности эмо- ции; при этом значение 0 указывает, что данная эмоция отсутствует, а значение 1 сви- детельствует о полной интенсивности эмоции (этот способ трактовки возвращаемых значений аналогичен применяемому в определениях нечеткой логики): float GetValuef const string& emotion ); Данный подход характеризуется относительно низкими издержками, но становится особенно успешно применимым, если не происходит регулярная модификация ком- понентов или не требуются наиболее актуальные значения интенсивности эмоции. Такой подход, предусматривающий опрос, может быть заменен обработкой событий, при которой в применяемой реализации средств поддержки эмоций осуществляется передача сообщений после смены одних эмоций другими. Второй из представленных выше подходов является более эффективным, но требует, чтобы в памяти хранились копии значений интенсивности эмоций, передаваемых с помощью событий. Отображение эмоций в играх В предыдущих разделах было приведено определение эмоций и показано, как можно передать информацию об эмоциях игровой машине; на основании изложен- ного материала появляется возможность перейти к обсуждению способов, с помо- щью которых эмоции могут отображаться в ходе реальной игры. Существующие восприятия и действия С точки зрения практики, при отображении эмоций могут использоваться любые способы, позволяющие воздействовать на восприятия других участников игры. Что касается игр от первого лица, то эмоции могут отображаться с помощью многих су- ществующих действий (таких, как движения, повороты или прыжки). Восприятия вносят также косвенный вклад в передачу эмоционального состояния.
Глава 37. Ощущения, эмоции и чувства 565 Действия Для передачи эмоций идеально подходят такие фундаментальные навыки, как дви- жения, поскольку движения являются вполне очевидными для внешних наблюдате- лей. Например, медленная походка может стать знаком депрессии, а особенно стреми- тельное бегство чаще всего является свидетельством испытываемого страха. Поворот в сторону объекта демонстрирует влечение, а поворот в противоположную сторону ука- зывает на недовольство. Кроме того, прыжки могут быть признаком счастья. Другие действия, которые использовались в предыдущих частях, играют в ото- бражении эмоций менее значительную роль. Например, такие действия, как выбор оружия и производство выстрела, а также сбор и использование объектов, практиче- ски не предоставляют возможности отображать эмоции средствами анимации. Но для отображения эмоций могут служить аспекты высокого уровня, связанные с при- нятием и осуществлением решений (например, выбор менее мощного оружия в ка- честве насмешки над противником). Как проявление эмоции (например, меланхолии) может также интерпретиро- ваться нехватка действий. Эмоции обнаруживаются также в таких решениях высо- кого уровня, как бегство и борьба. Восприятия Безусловно, чтобы эмоции стали заметными, не обязательно должен применяться поведенческий отклик, но в формировании эмоций может принять участие любой ком- понент анимата, от которого зависит реакция анимата на воздействия окружающей сре- ды. По этой причине удивительно важными становятся восприятия, поскольку именно с помощью восприятий полученная информация передается в мозг; кроме того, воспри- ятия воздействуют на поток информации, передзваемой от источника информации. От эмоций, прежде всего, зависит функционирование зрения, поскольку интен- сивность зрительного восприятия может изменяться в зависимости от того, чувству- ется ли напряжение в той или другой ситуации (например, если не предвидятся ка- кие-либо неприятности, то анимат становится менее внимательным). В таких случа- ях искусственные создания не чувствуют даже, что рядом с ними находятся какие- либо другие сущности (или вообще не получают сенсорных данных). И наоборот, если искусственные создания удивлены или испуганы, то их восприятия становятся чувствительными к малейшим движениям. Другие восприятия, такие как осязание, как правило, менее зависят от эмоционального состояния. Новые интерфейсы В этой части, в основном, используется существующая технология, поскольку ос- новное внимание уделено созданию системы, проявляющей эмоции, которая создает- ся с использованием средств ИИ. Следует также учитывать, что игроками-людьми для передачи эмоций в играх используются два дополнительных средства: мимика и сло- весные сообщения. Оба эти средства поддерживаются игровой машиной от первого лица (Quake 2), поэтому остается лишь определить интерфейсы к ним. Каждый из поддерживаемых мимических знаков (таких, как помахивание рукой, приветствие, указание пальцем или насмешливый жест) определен в перечислении.
566 Часть VI. Эмоции Используя эти значения в качестве параметра функции, можно заставить тело ани- мата выполнять требуемый мимический знак: void Gesture( const GestureType g ); Словесные сообщения поддерживаются с помощью одной функции, которая принимает текстовую строку в качестве параметра. Второй параметр используется для указания на то, кому должна быть адресована широковещательная рассылке этого сообщения (т.е. членам своей команды или всем): void Say( const string& text, const GroupType g = Everybody ); В случае необходимости можно упростить интерфейс с использованием функций-оболочек (таких, как Wave () или SayTeam (" text ”)). Пример проявления эмоций Ниже приведен список сценариев, который показывает, какие формы поведения, управляемые эмоциями, должны быть способны представить аниматы, создаваемые на основе рекомендаций данной книги. > Прыжки, взмахивания руками или танцы радости. > Потеря точности поворотов в результате испуга, но появление возможности совершать более быстрые повороты. Под действием страха бег должен уско- ряться, что позволяет моделировать возбуждение. > Прекращение размышлений и застывание на месте под воздействием паники (например, в присутствии большого количества участников игры, выполняю- щих роль противников). > Уменьшение точности всех действий с началом формирования ощущения скуки (например, в состоянии сонливости или под влиянием самодовольства). Кроме того, стоя на месте, анимат теряет возможность воспринимать наличие отдаленных противников. > Вызванные недовольством повороты в сторону (например, при обнаружении брызг крови) или сосредоточение на каком-то привлекательном участнике игры. > Уменьшение задержки восприятия при испытываемом удивлении (например, в результате появления еще одного участника игры) и ее увеличение во время ожидания какого-либо действия (например, открытия двери). > Высказывание оскорблений в адрес противников после их уничтожения или демонстрация насмешливой мимики. > Пугливое бегство при появлении более мощного противника. > Выбор в качестве цели противника, исходя из чувства личной мести, на осно- ве истории прошлых боев. В следующей главе представлены сведения, которые дают возможность понять суть новой технологии, позволяющей успешно справиться с подобными ситуация- ми, а за ней следуют главы, посвященные вопросам применения этой новой техно- логии для создания рассматриваемых эмоций.
^lataHaus^i Глава 37. Ощущения, эмоции и чувства 567 Резюме В настоящей главе рассматриваются различные уровни, указанные ниже, на ко- торых эмоции влияют на функционирование анимата. > Ощущения представляют собой реакции на шаблоны, которые активизируют смену одних эмоций другими, как правило, с учетом восприятий. > Эмоции — это устойчивые характеристики состояния рассматриваемого соз- дания. > Чувства — это эмоции, связанные с произвольными объектами. > В последних разделах главы определен интерфейс, позволяющий передавать информацию об эмоциях от средств ИИ к игровой машине, чтобы эти эмоции могли быть отображены в ходе игры с применением технологии анимации. Выделенный интерфейс, применяемый для поддержки эмоций, имеет много преимуществ, поскольку с его помощью можно добиться отделения эмоций от форм поведения. Существующие действия, а также новые интерфейсы поддержки мимики и сло- весных сообщений остаются независимыми от эмоций, поэтому средства ИИ могут действовать на основании предположения, что для отображения эмоций игровая машина сделает все от нее зависящее. В следующей главе, которая, в основном, посвящена теоретическим вопросам, обсуждаются конечные автоматы. А в главе 39, “Влияние эмоций”, представлено применение конечных автоматов для моделирования эмоционального состояния и обсуждается роль ощущений в формировании различных влияний на эмоции. Практическая демонстрационная версия Actor— это анимат с крупной базой данных, в которой собрана информация о действиях и непроиз- вольных поступках, демонстрирующих эмоции. Анимат Actor вполне удовлетворен тем, что может воспроизводить такие мимические знаки произвольным образом, и не пытается использовать их обоснованно в пределах контекста. По мере возможности, каждый непроизвольный поступок реали- зуется с помощью одного из описанных выше методов ИИ.

ftalaHausTeik Гпава 38 Конечные автоматы В ЭТОЙ ГЛАВЕ- • Формальные определения • Представление и моделирование • Логика управления • Оптимизация • Обсуждение полученных результатов • Резюме Конечные автоматы — вычислительная мо- дель с ограниченным объемом памяти, из- вестным как состояние. Каждый конечный авто- мат имеет только конечное число возможных со- стояний (например, wander или patrol). Функ- ция перехода определяет, как состояние изменя- ется со временем, в соответствии с входными данными конечного автомата. Конечные автома- ты подразделяются на две различные категории. > Распознающие конечные автоматы (Finite- State Automata— FSA) не вырабатывают каких-либо выходных данных до тех пор, пока не будет достигнуто терминальное со- стояние. Они могут использоваться для распознавания шаблонов (например, ин- терпретации действий противника) или классификации последовательностей (например, определения стратегии). > Порождающие конечные автоматы (Finite- State Machine — FSM) обеспечивают фор- мирование выходных данных после полу- чения каждого входного символа. Они мо- гут использоваться для моделирования со- стояния мыслительной деятельности не- собственных персонажей (NonPlayer Character — NPC), касающейся того, в чем состоит их текущее задание и как они должны реагировать на ситуацию (т.е. осу- ществлять последовательное управление). Проектировщики игровых средств ИИ, кото- рые предпочитают разрабатывать формы пове- дения вручную, как правило, создают системы с конечным числом состояний. Конечные авто- маты являются настолько легко доступными для понимания и простыми в реализации, что вошли в число разновидностей средств ИИ, наиболее
570 Часть VI. Эмоции широко используемых в играх. Конечные автоматы не только широко применяются, но и являются очень эффективными. В настоящей главе рассматриваются перечисленные ниже темы. > Теоретические основы функционирования конечных автоматов. > Различия в представлении между конечными автоматами Мили и Мура, а также разновидности методов, основанных на использовании конечных автоматов. > Представления на основе массивов и графов. > Системы с конечным числом состояний как метод управления, который мо- жет использоваться для ввода в действие форм поведения несобственных пер- сонажей. > Проблемы, связанные с процедурной реализацией методов, основанных на использовании конечных автоматов. > Преимущества и недостатки конечных автоматов как технологической основы для разработки игровых средств ИИ. Теоретические сведения, изложенные в этой главе, могут использоваться не только для осуществления поведенческого управления аниматами, рассматривае- мыми в качестве примера, но и для моделирования эмоций, о которых шла речь в предыдущей главе. Формальные определения В основе каждой категории систем с конечным числом состояний лежат анало- гичные принципы, но теория конечных автоматов базируется на двух разных моде- лях — автоматы Мили и Мура. Распознающие конечные автоматы Распознающий конечный автомат (Finite-State Automata — FSA) — это вычисли- тельная модель, часто используемая для создания устройств распознавания или по- лучения данных (рис. 38.1). Функционирование распознающего конечного автомата выражается в том, что после получения всей последовательности входных данных автомат выводит соответствующее обозначение класса или булево значение (соответственно, если шаблон был распознан или принят). Например, распознаю- щий конечный автомат может использоваться для распознавания как ракетного прыжка последовательности таких действий, как взгляд вниз, запуск ракеты и пры- жок. Распознающий конечный автомат может также различать противников и дру- зей по результатам наблюдения за их поведением. (Например, участник игры, дваж- ды открывший огонь, воспринимается как противник.)
4\ataHaus<^!. Глава 38. Конечные автоматы 571 Начальное состояние Рис. 38.1. Графическое представление распознающего конечного автомата, исполь- зуемого для приема и распознавания входных образов: слева — принята последова- тельность abccca; справа — последовательность bbbb распознана как категория Y По существу, распознающий конечный автомат состоит из ряда состояний, кото- рые соединены переходами. В автомат поступает поток данных, состоящий из от- дельных символов, и если обозначение перехода согласуется с входным символом, изменяется активное состояние. После обнаружения конца потока входных симво- лов рассматривается текущее активное состояние, что позволяет определить, являет- ся ли полученный шаблон распознаваемым. Более формально распознающий конечный автомат может рассматриваться как четырехэлементное множество: FSA = {Е, Q, 8, F} В этой формуле Q обозначает множество состояний, а 5 представляет собой функцию перехода, которая определена на входном алфавите Е. Одно из состояний имеет особое назначение; это — начальное состояние q0, с которого начинаются вычисления. Определено также особое подмножество состояний, F з Q, которые принято называть терминальными (или принимающими). Ниже каждое из этих по- нятий будет описано более подробно. Входной алфавит В распознающий конечный автомат поступает поток данных. Каждый элемент в этом потоке данных может рассматриваться как конкретный символ, взятый из конечного алфавита Е (табл. 38.1). Таблица 38.1. Некоторые примеры входных последовательностей и соответствующих входных алфавитов Последовательность Алфавит 0010001000110 Е1={0,1} abbabcbabbacc E2={a,b,c,d} flash shout explosion smoke Множество событий, возникающих в ходе игры, Е3 В первом случае алфавит Ех состоит из двух символов, соответствующих битам включения и выключения. Во второй строке имеются символы алфавита Е2, состоя- щего из первых четырех букв английского алфавита, хотя буква d не присутствует
572 Часть VI. Эмоции в строке. Безусловно, проще проводить обсуждение этих идей на примере буквен- ного или цифрового алфавита, но каждый из входных символов может быть заме- нен, например, игровым событием, таким как прыжок, запуск поражающего эле- мента, отбрасывание ненужного оружия и т.д., как в третьей строке. Роль распознающего конечного автомата состоит в том, что он должен обрабаты- вать символы входного потока один за другим. Это позволяет выполнять необходи- мые вычисления. Например, в случае необходимости автомат может идентифициро- вать и классифицировать шаблоны в данных. Состояния Состояние может рассматриваться как узел графа. По существу, конечный авто- мат предназначен для решения определенной задачи, а с точки зрения этой задачи отдельные состояния имеют конкретный смысл, поэтому состояниям присваивают- ся имена, а также идентификаторы (чтобы проектировщику можно было проще учи- тывать состояния в своей работе). В распознающем конечном автомате некоторые состояния имеют особое значение (табл. 38.2). Одно состояние, обозначенное как q0, является активным в начальной конфигурации распознающего конечного автомата (например, в соответствии с пред- положением, что рассматриваемый участник игры является по отношению к нам ней- тральным). В графических схемах начальное состояние, как правило, обозначается по- лужирной окружностью. Кроме того, некоторые состояния определены как погло- щающие; множество таких состояний, обозначаемое как F, обычно содержит данные о типе класса (например, применяемое для принятия решения о том, является ли рас- сматриваемый участник игры союзником или противником). Поглощающие состоя- ния обозначаются двойными кружками. Таблица 38.2. Состояния конечного автомата, наряду с обозначениями других свойств (класс, принадлежность к множеству терминальных состояний и идентификатор состояния) Идентификатор состояния Терминальное состояние Класс Г Нет 2 Да X 3 Нет 4 Да У Начальное состояние обозначено звездочкой Если во входных данных присутствует некоторый шаблон, который вынуждает распознающий конечный автомат закончить свою работу в одном из поглощающих состояний, то шаблон распознается как принадлежащий к соответствующему классу. Функция перехода Функция перехода определяет следующее активное состояние qt+1 исходя из те- кущего состояния qx и входного символа <yt (нижний индекс t обозначает индекс в последовательности). В математических терминах функция перехода может быть
^alattausieik Глава 38. Конечные автоматы 573 описана как функция, отображающая множество состояний и входной алфавит на множество состояний: 6: QxZ->Q (Qt,ot) a qtH |-> (qt,Ot) е QxZ Функция перехода по существу изменяет внутреннее состояние конечного авто- мата с учетом принятой последовательности входных символов. Переходы могут быть графически представлены как ориентированные ребра, каждое из которых со- единяет два узла в графе (рис. 38.2 и табл. 38.3). Рис. 38.2. Пример графической схемы распознающего конечного автомата Таблица 38.3. Таблица переходов, в которой показаны начало и конец каждого перехода и требуемый входной символ, соответствующий конечному автомату, показанному на рис. 38.2 Начальное состояние Символ Конечное состояние 1 а 4 1 b 3 2 b 1 3 с 2 4 а 1 Каждый переход активизируется конкретным символом, обнаруженным в потоке входных данных. После выполнения перехода вызвавший его символ уничтожается, поэтому принято считать, что переход поглощает символ; это действие обозначается в графе в виде символа, записанного рядом с переходом. Строго говоря, с помощью функции перехода должны быть представлены все соединения (включая рекуррент- ные). Но часто проще исходить из предположения, что при отсутствии каких-либо применимых исходящих связей состояние остается таким же. Автоматы Мили В отличие от описанных выше распознающих конечных автоматов, порождающие конечные автоматы, обрабатывая входной поток, формируют выходные данные. Ав- томаты Мили (названные в честь их изобретателя) выводя! символы после выполне- ния каждого перехода. Эти автоматы могут рассматриваться как надмножество распо- знающих конечных автоматов, обладающее большей гибкостью. Они лучше подходят
574 Часть VI. Эмоции для решения задач последовательного управления (например, с их помощью можно определять ответное действие применительно к любому замечанию противника). В соответствии с этим, на автомат Мили распространяется другое определение, на этот раз в виде пятиэлементного множества: FSM = {Z,q,z,8,1} Как и в случае распознающего конечного автомата, Z обозначает множество сим- волов входного алфавита, Q представляет собой множество состояний, а 8 обознача- ет функцию перехода. Кроме того, в эту формулу входят новые обозначения: z —* это другое множество, представляющее выходной алфавит, а X. — функция опреде- ления выходных данных с учетом переходов. Определения этих новых понятия будут приведены ниже. Выходной алфавит При каждом шаге моделирования t автомат Мили может вывести символ. Каж- дый символ принадлежит к выходному алфавиту, который может представлять дей- ствия анимата, как показано в табл. 38.4. Таблица 38.4. Коллекция выходных последовательностей и соответствующий выходной алфавит Последовательность Множество 000101010111 Е1={0,1} eggheheif 12={е,f,g,h,i} jump shoot crouch Множество действий анимата z3 Между входным и выходным алфавитами нет абсолютно никакой связи. Они могут иметь разные размеры и содержать различные символы. Назначение порождающего конечного автомата состоит в том, что он должен вы- рабатывать последовательность выходных символов с учетом входного шаблона. Может оказаться так, что не всегда будет требоваться формирование выходных дан-' ных при каждом шаге моделирования t, но проще всего предусмотреть для автома- та вычисление выходных значений при любых обстоятельствах! Выходная функция На практике выходные данные вычисляются с помощью другой функции. Эта операция осуществляется по такому же принципу, как и переход между состояния- ми; при этом используется функция, отображающая текущее состояние и входной символ на выходное значение. Поскольку функция перехода и выходная функция определены на одном и том же множестве, обе эти функции могут быть представлены одинаковым образом. Это означает, что на схеме конечного автомата каждая связь в ориентированном графе может быть обозначена выходным символом (рис. 38.3).
^alallaus^k Глава 38. Конечные автоматы 575 Рис. 38.3. Порождающие конечные автоматы вырабатыва- ют выходные данные при каждом переходе. Выходные данные отображаются рядом с поглощаемым входным символом, в последовательности “входной символ-выходные данные” Для того чтобы некоторый символ выводился после каждого шага, в то время как состояние остается активным, необходимо иметь рекуррентное соединение. Прак- тика показывает, что такой подход является наиболее гибким, но, безусловно, вме- сто него могут быть предложены более удобные способы организации работы. Автоматы Мура Автоматы Мура представляют собой более простой вариант по сравнению с по- рождающими конечными автоматами. Порождающие конечные автоматы выводят символы при выполнении каждого перехода, а в автоматах Мура для определения выходных данных используются состояния. Автоматы Мура имеют такое же фор- мальное определение, что и автоматы Мили, но в них выходная функция X является более простой, хотя и менее мощной. Автоматы Мура используются чаще, посколь- ку задача их проектирования для игровых средств ИИ проще. В этом случае функция перехода может быть выражена в значительно более про- стой форме, поскольку она отображает текущее состояние на выходные данные: X: Q—>Z qt a zt |-> qt € Q Это находит свое отражение также и в графическом представлении автомата. Как показано на рис. 38.4, на схеме автомата Мура выходные символы не записываются около переходов, поскольку они могут быть показаны в кружках, обозначающих ка- ждое состояние. Одним положительным следствием из указанной особенности автоматов Мура является то, что больше не требуется явно моделировать рекуррентные соединения; выходные данные остаются неизменными до тех пор, пока не будет выполнен ка- кой-либо внешний переход.
576 Часть VI. Эмоции Рис. 38.4. В автоматах Мура выходное значение свя- зано с каждым состоянием, а не с каждым переходом Представление и моделирование Теоретические основы конечных автоматов позволяют разработать структуры данных и алгоритмы, в наибольшей степени упрощающие работу программиста. Массив переходов Для представления информации о переходах широко применяется способ, преду- сматривающий хранение этой информации в двухмерном массиве (табл. 38.5). Мас- сив имеет два измерения — состояние и входные данные, а каждая его ячейка хра- нит следующее состояние. Поэтому все переходы обозначены явно. Кроме обычных символов, должен быть предусмотрен определенный символ, обозначающий пустую ячейку, чтобы можно было применять разреженные конечные автоматы (т.е. авто- маты, в которых определены не все связи). Таблица 38.5. Информация о переходах, хранящаяся в виде двухмерного массива, в котором каждая ячейка указывает на следующее состояние (для некоторых ячеек следующее состояние не предусмотрено) Состояние и выходные данные а b с 1 4 3- 2 1 3 - - 2 4 1 Для создания модели распознающего конечного автомата достаточно предусмот- реть только массив переходов. А чтобы представить порождающий конечный автомат, требуется дополнительная выходная таблица. Такая таблица должна хранить выходные данные, определяемые в зависимости от текущего состояния и входных данных. Такой способ представления конечных автоматов действительно обеспечивает значительное повышение быстродействия (при условии, что размеры таблиц будут
^alailaus^ Г лава 38. Конечные автоматы 577 оставаться в пределах разумного), поскольку при этом может применяться простой поиск. Кроме того, очень важным его преимуществом является простота, поскольку для реализации двухмерного массива достаточно иметь минимальные знания в об- ласти программирования. Следует также отметить, что для его проверки и отладки требуются весьма небольшие усилия. Недостатком данного представления является то, что его трудно назвать ком- пактным. В среднем, объем хранимой избыточной информации является весьма значительным; и действительно, большинство порождающих конечных автоматов характеризуется наличием разреженных связей (а это означает, что таблица имеет много пустых ячеек). Любой массив, который позволяет хранить информацию обо всех переходах, является избыточным и очень плохо масштабируется. Ориентированный граф Практика показала, что более компактное представление конечного автомата мо- жет быть основано на использовании ориентированного графа. Ориентированный граф конечного автомата точно соответствует его графическому изображению, поэто- му задача представления конечного автомата с помощью ориентированного графа не связана с какими-то особыми сложностями. Как правило, информация о состояниях хранится в виде массива (по крайней мере, структура хранения концептуально соот- ветствует массиву). При такой организации работы слежение за переходами, ведущи- ми к другим узлам, осуществляется применительно к каждому состоянию. Как показа- но в табл. 38.6, такая задача может быть решена с помощью вложенного списка или другого массива. Таблица 38.6. Представление ориентированного графа, в котором используется массив состояний, содержащий списки переходов Идентификатор состояния Переходы 1 а: 4, Ь: 3 2 Ь: 1 3 с: 2 4 а: 1 Активное состояние может быть определено с помощью единственной операции поиска. Узким местом этого подхода является то, что поиск применимого перехода требует много времени. В каждом состоянии необходимо осуществлять обход массива и проверку в каждом шаге того, согласуется ли текущий символ с входными данными. Даже простейший алгоритм, предусматривающий обход этого массива, может оказаться более быстродействующим по сравнению с алгоритмом поиска в крупном массиве, поскольку таблица хранится в кеше, а кеш остается постоянным. И дейст- вительно, часто обеспечивается возможность хранить информацию обо всех перехо- дах в одной и той же строке кеша. Чтобы исключить любую возможность возникно- вения цикла в процессе поиска, информацию о каждом из переходов можно отсор- тировать в соответствии с потребляемым входным символом. Такая организация ра- боты позволяет обеспечить двоичный поиск и уменьшить сложность обхода до
578 Часть VI. Эмоции О (log п), вместо О (п) . Наконец, с применением хеш-таблицы можно обеспечить выполнение поиска почти с постоянной производительностью за счет дополнитель- ной памяти. Тем не менее необходимость применения подобных приемов часто отсутствует, поскольку сам используемый конечный автомат является очень простым, а также потому, что издержки все равно незначительны по сравнению с другими аспектами реализации средств ИИ. Но необходимость подобной оптимизации следует учиты- вать, если анализ прототипа, разработанного на самом раннем этапе проектирова- ния, показывает, что требуются крупные конечные автоматы. Грамматика Конечные автоматы позволяют распознавать четко заданное множество шабло- нов. Все эти шаблоны относятся к категории регулярных языков, которые имеют ог- раниченную сложность. Порождающие конечные автоматы не относятся к катего- рии столь же развитой модели вычисления, что и машина Тьюринга (которая спо- собна эмулировать любую форму вычисления). На уровне общих представлений можно считать, что регулярные языки соответ- ствуют регулярным выражениям, которые обычно используются для обработки тек- ста (главным образом, в языке программирования Peri). Такие регулярные выраже- ния могут служить основой компактного способа представления регулярной грамма- тики, которая может быть таким образом откомпилирована в конечный автомат: (baab) * ((.*)ab+){1,2} Грамматики могут использоваться для хранения в сжатом виде информации о структуре распознающих конечных автоматов, но не подходят для представления по- рождающих конечных автоматов, вырабатывающих выходные данные при каждом пе- реходе. Представление в виде регулярной грамматики предназначено, главным обра- зом, для распознавания и приема текстовых данных. Разработчики, незнакомые с ре- гулярными выражениями, могут предпочесть графический подход проектирования. Некоторые конструкции проще поддаются моделированию с помощью конечных автоматов, но может оказаться труднее найти простой способ выражения таких опе- раций, как подсчет. Регулярное выражение {1,2} фактически показывает, что пре- дыдущий шаблон должен быть представлен либо в одном, либо в двух экземплярах; д ля этого требуется создать фрагмент конечного автомата, способный принять такой шаблон, а затем включить в основную схему два таких фрагмента. Чем больше коли- чество подсчитываемых экземпляров повторяющихся шаблонов, тем сложнее стано- вится конструкция конечного автомата, поэтому в сочетании с основной схемой ис- пользуются альтернативные подходы (например, счетчики, в которых д ля накопле- ния данных о количестве экземпляров используется дополнительная переменная), что позволяет создавать более простые, гибридные конечные автоматы.
^ataHaus^i Глава 38. Конечные автоматы 579 Логика управления В предыдущих разделах рассматривались порождающие конечные автоматы, пред- ставляющие собой вычислительные модели, которые позволяют создавать выходные строки по результатам обработки входных строк. Полученные выходные данные могут также указывать на то, были ли входные данные распознаны или приняты. Если такой конечный автомат включен в состав какой-либо реально действующей системы, то по- лученные выходные данные могут также использоваться для обеспечения работы ме- ханизма управления. В основе порождающих конечных автоматов лежит очень надеж- ная теория, кроме того, эти вычислительные модели широко применяются на практи- ке, а это лучше всего доказывает, что порождающие конечные автоматы, бесспорно, являются чрезвычайно полезным инструментальным средством. Следует также отметить, что все описанные выше разновидности конечных авто- матов могут непосредственно применяться в управлении. В настоящем разделе рас- сматриваются часто используемые конкретные приемы и перечислены потенциаль- ные проблемы, которые могут возникать в процессе работы. Кроме того, описаны способы устранения этих проблем. Процедурный подход Определение, согласно которому в основе логики управления лежит модель сим- вольной обработки, является наиболее общим и точным, но с точки зрения практи- ческой реализации оно слишком формально. Вместо этого часто используется под- ход, более удобный на практике, — процедурный подход. В этом случае каждый пе- реход представлен с помощью жестко закодированной функции, к которой может сделан запрос для определения того, должен ли быть выполнен переход. Кроме того, сами состояния включают собственные процедуры, выполняющие конкретные задания после того, как соответствующее состояние становится актив- ным. Практика показала, что этот подход часто позволяет быстрее всего добиться нужных результатов; создание одного конечного автомата связано с минимальными издержками и позволяет применять явное представление для всего кода. Не требует- ся также механизм передачи входных и выходных символов по разным пунктам на- значения; все компоненты программного обеспечения оснащены, условно говоря, сенсорами (выполняющими роль переходов) и актюаторами (представляющими со- бой состояния). Потенциальные проблемы, возникающие при использовании процедурных конечных автоматов При использовании процедурных конечных автоматов приходится не только сталкиваться с проблемами, возникающими при их практической реализации (в ча- стности, обусловленными сложностью кода), но и решать теоретические задачи. Например, может оказаться так, что практически реализованный конечный автомат не действует в соответствии с ожидаемым, т.е. наблюдаются отклонения от проекта.
580 Часть VI. Эмоции Последовательный хаос и неоднозначность С точки зрения теории конечному автомату передается последовательность вход- ных символов, которые используются для осуществления переходов. Эти входные данные неявно упорядочены, поскольку принадлежат к последовательности; в этом и состоит суть проблемы. В процедурном коде не предусмотрена какая-либо выде- ленная очередь, в которую помещаются все символы, а проверка функций перехода осуществляется с помощью моделирования. Значительное влияние на результат мо- делирования оказывает порядок, в котором осуществляется обработка функций пе- рехода; переходы, проверяемые в первую очередь, неявно получают приоритет над всеми другими переходами. Рассмотрим, например, анимат, который находится в состоянии wander (бесцельное блуждание). Сразу после обнаружения присутствия противника анимат будет вводить в действие режим охоты. С другой стороны, если в ближайшей окрестности будут обна- ружены доспехи, то может стать активным состояние сбора доспехов. Но применение этих вариантов потенциально приводит к возникновению трудноуловимых программ- ных ошибок. Согласно теории, конечный автомат, по существу, интерпретирует символы, за- данные в том или ином порядке, с учетом реализации, а это означает, что малейшие недочеты в проекте могут повлечь за собой непредвиденные результаты. (Причина этого заключается в том, что некоторые переходы становятся предпочтительными.) В связи с этим возникают проблемы, поскольку какой-либо формальный способ моделирования такой неоднозначности отсутствует. Таким образом, применение процедурной реализации может привести к получению совсем других результатов, чем предусмотрено в самом проекте. Указанная особенность может трактоваться как своего рода недетерминированность (дополнительная информация по этой теме приведена в главе 40, “Недетерминированные конечные автоматы”). Потеря данных Если код является чисто процедурным, то каждый переход проверяется динами- чески. Отсутствует какой-либо встроенный механизм запоминания последователь- ности происходящих событий. При наличии двух условий перехода, которые одно- временно становятся истинными, обрабатывается только первый переход, а второй игнорируется. Вообще говоря, применение данного подхода приводит к тому, что фактически отбрасывается вся информация об условиях переходов, которые обна- руживаются после того, как было принято первое условие. Предположим, что анимат находится в боевом режиме. Но внезапно происходит так, что одновременно становится очень низкой его жизнеспособность и вблизи по- является объект доспехов. Проверка на наличие доспехов осуществляется в первую очередь, поэтому становится активным состояние сбора доспехов. Но анимат игно- рирует другую составляющую сложившейся обстановки и забывает о том, что в связи с низкой жизнеспособностью необходимо выполнить переход в состояние бегства, и в результате становится застреленным. Возникновение этой проблемы обусловлено той неоднозначностью, которая воз- никает при использовании простого процедурного кода. Во многих подобных случа- ях игнорирование необходимых переходов может привести к возникновению не-
ftalaHaus^k Глава 38. Конечные автоматы 581 полных или несовместимых форм поведения. Еще раз отметим, что результатом ста- новится возникновение ошибочных форм поведения, на потенциальную возмож- ность обнаружения которых сам проект конечного автомата отнюдь не указывает. Управление потоком данных Обработка переходов в коде может осуществляться с помощью процедур, связан- ных с состояниями. Но в действительности часто проще проверять переходы во время обновления, что позволяет также исключить возможность избыточной обработки. Тем не менее остается нерешенной проблема, связанная с выбором направления дальней- шей передачи управления. В частности, приходится искать ответы на вопросы о том, следует ли немедленно выполнить переход и не лучше ли вместо этого в процессе мо- делирования продолжать обрабатывать процедурный код состояния. А во втором слу- чае необходимо принять решение о том, как действовать, если имеется несколько пе- реходов, которые должны произойти в разное время в течение обновления состояния. Средства усовершенствования процедурного управления Первым шагом к устранению указанных проблем должно стать их выявление. За- тем, после обнаружения того, что проблемы действительно возникают, могут быть приняты меры по их устранению. Но лучший подход состоит в определении методо- логии, полностью исключающей возможность возникновения проблем рассматри- ваемого типа. Необходимость в перепроектировании В качестве причины большинства возникающих проблем может рассматриваться необходимость сталкиваться с крупными процедурами поддержки состояния (такими, как процедура реализации формы поведения в виде бесцельного блуждания), которые могут прерываться в связи с осуществлением нескольких переходов (например, для бегства или сбора доспехов). Попытка решения этой задачи, соответствующая стилю работы программистов, могла бы состоять в том, чтобы найти такой прием, характерный для используемого языка программирования, который позволил бы упростить проблему. Например, процедура поддержки состояния могла бы самостоятельно проверять условия пере- хода и возвращать код, указывающий на то, какой переход является необходимым. Если же для моделирования рассматриваемого состояния требуется несколько вло- женных процедур, то коды возврата должны иметь каскадную структуру. Но инженер по искусственному интеллекту, ознакомившись с подобным пред- ложением, может понять, что с его реализацией связано выполнение большого объ- ема избыточной работы и что каждый из путей выполнения кода фактически может быть осуществлен с помощью самого конечного автомата. Для практической реали- зации такого замысла необходимо добиться того, чтобы в любом случае проверке подлежало лишь единственное ограничение, а процедуры поддержки состояния бы- ли неразрывными и прерывание их работы не допускалось. На основании этого принципа может быть спроектирован весь конечный автомат, а необходимость ис- пользовать вместо этого программистские трюки в качестве временного решения полностью отпадает.
582 Часть VI. Эмоции Структура кода Учитывая эти принципы неразрывности, можно организовать структуру всего кода совсем иначе. В частности, рекомендуется отделять друг от друга переходы и процеду- ры поддержки состояния. В таком случае появляется возможность выработать согла- шение, позволяющее отдельно принимать решение по обработке переходов. Обычно все переходы проверяются после того, как будет завершено обновление состояния. Желательно также включить сразу все переходы в одну группу; это позволяет до- биться большого преимущества, поскольку все программные конструкции, связан- ные с реализацией переходов, могут быть легко обнаружены в коде. Проблемы неод- нозначности могут быть устранены очень просто; для этого достаточно назначить переходам разные приоритеты. В таком случае переход с наивысшим приоритетом должен проверяться в первую очередь, а остальные должны отбрасываться. Данные о приоритетах могут быть встроены в проект и переведены непосредственно в код. Тем не менее все еще остаются две проблемы, которые не могут быть устранены за счет указанной реорганизации кода. Во-первых, приходится в определенной сте- пени пожертвовать эффективностью, чтобы иметь возможность реализовать указан- ный подход, поскольку осуществление переходов может быть связано с некоторым объемом избыточной обработки (которая обычно может осуществляться в процеду- рах поддержки состояния). Во-вторых, отсутствует приемлемый способ осуществле- ния нескольких переходов и сохранения событий на будущее. Передача сообщений Решение обеих этих проблем позволяет найти небольшая структура данных, пред- назначенная для временного хранения запросов на выполнение переходов. Эта струк- тура данных может представлять собой простой механизм передачи сообщений, кото- рый, тем не менее, используется для моделирования последовательности входных символов. Полученная в результате конструкция не является столь же эффективной, как чисто процедурный конечный автомат, но все же превосходит по своим исходным показателям производительности все другие средства ИИ, описанные в данной книге. Процедура обновления состояния может вести очередь сообщений о переходе, что позволяет исключить необходимость обработки избыточной информации в коде, предназначенном для выполнения переходов. Эти сообщения могут также сохраняться на жестком диске, что позволяет не забывать о важных событиях и в конечном итоге принимать их во внимание. (Например, если обстоятельства указывают на необходи- мость бегства, то важно учесть это требование, что должно отразиться и на состоянии.) Очевидно, что не все сообщения, вырабатываемые процедурой обновления состоя- ния, должны сохраняться до того времени, пока не потребуется их обработка. Сооб- щения, не требующие хранения, могут рассматриваться как временные. Сбор этих со- общений должен осуществляться без использования очереди сообщения, а после того, как необходимость в них исчезнет, они должны уничтожаться. После объединения этой системы поддержки очередей со средствами реализации приоритетов переходов появляется возможность организовать очередь по приорите- там, с помощью которой могут быть решены все описанные выше проблемы. В этом случае должно быть сохранено только временное сообщение с высшим приорите- том, а затем это сообщение может быть отброшено, если его приоритет ниже по сравнению с приоритетом сообщения, стоящего в начале очереди.
yalatfaus^k Глава 38. Конечные автоматы 583 | ПРИМЕЧАНИЕ Мощь конечного автомата в результате ввода в действие очереди по приоритетам не увеличивается. В про- цессе моделирования используется отдельная структура данных для преобразования процедурной инфор- мации в более формализованную последовательность входных данных, главным образом ради единообра- зия, поскольку такая организация работы позволяет гарантировать, что формы поведения в игре соответст- j вуют проекту на уровне интуитивного понимания. Оптимизация Предположим, что проектировщик не слишком хорошо знаком с предоставлен- ными в его распоряжение инструментальными средствами и разработал чрезмерно усложненный конечный автомат. Если конечный автомат имеет существенные раз- меры или количество использующих его несобственных персонажей велико, то вы- числительные издержки становятся слишком значительными, чтобы ими можно было пренебречь. Таким образом, разработчик средств ИИ вынужден проводить проверку того, соответствует ли каждый из разработанных им компонентов требова- ниям оптимальности; тем не менее возникает вопрос, почему бы вместо этого не создать инструментальное средство, позволяющее выполнить указанную работу. Значительным преимуществом конечных автоматов является то, что в их основе лежит тщательно изученная и простая вычислительная модель. В отличие от более сложных моделей, таких как машины Тьюринга, широко известны алгоритмы, по- зволяющие оптимизировать конечные автоматы. Фактически одним из проверен- ных методов, позволяющих сравнивать конечные автоматы друг с другом, является создание канонических конечных автоматов (т.е. автоматов, имеющих схему в виде наиболее простого графа). В одном из алгоритмов, обеспечивающих выполнение такой оптимизации, про- изводится сравнение всех состояний, вместе взятых, после чего по мере возможно- сти отдельные состояния объединяются (рис. 38.5). Сравнение состояния лучше всего осуществлять попарно. Слияние двух состояний возможно, если все исходя- щие переходы указывают на одно и то же состояние. Два состояния сливаются таким образом, что используется лишь одно множество дублирующихся исходящих пере- ходов, но все входящие переходы сохраняются. Рекомендуется переименовать со- стояние, полученное путем слияния, так, чтобы новое имя указывало на то, какими были предыдущие два состояния. Рис. 38.5. Оптимизация порождающего конечного авто- мата путем свертывания в одно состояние нескольких состояний с идентичными исходящими переходами
584 Часть VI. Эмоции Простейшая реализация такого процесса оптимизации имела бы сложность О(п2) . Для современных компьютеров такие временные характеристики оказыва- ются более чем удовлетворительными; а если учесть небольшой размер конечных ав- томатов, то речь идет о времени оптимизации, которое составляет не секунды, а миллисекунды, не говоря уже о том, что оптимизация осуществляется в режиме ав- тономной предобработки. Дважды связывая переходы с начальным и конечным со- стоянием, можно оптимизировать конечный автомат почти до показателя O(kn), где к— степень связности. В этой оптимизированной версии алгоритм проверяет входящие связи каждого состояния. Каждое из подключенных состояний сравнива- ется с каждым другим состоянием для определения подобия. Интуиция подсказыва- ет, что два подобных состояния с наибольшей вероятностью могут оказаться иден- тичными; они должны быть соединены с одним и тем же состоянием, поэтому трас- сировка входящих связей позволяет уменьшить общее количество узлов, которые должны сравниваться друт с другом. В целом, наибольшие преимущества предоставляет подход, основанный на опти- мизации конечных автоматов, независимо от используемого метода. Если есть воз- можность обеспечить моделирование одной и той же формы поведения с применени- ем меньшего количества состояний, так и следует делать. Однако конечные автоматы с меньшим числом состояний часто являются менее доступными для понимания. С другой стороны, после того как проектировщик вводит дополнительные состояния, обычно изучение работы конечного автомата становится проще. Итак, лучше всего ос- тавить на время неизменным конечный автомат, спроектированный вручную, и при- ступать к его компиляции в целях создания оптимизированного конечного автомата только на этапе подготовки выпуска, предназначенного для внедрения. Обсуждение полученных результатов Ниже приведены некоторые соображения, касающиеся использования конечных автоматов при разработке игровых средств ИИ. Преимущества Конечные автоматы являются исключительно простыми. Реализация, визуальное представление, проектирование, отладка и работа с конечными автоматами почти на любой стадии конвейера разработки осуществляются без особых затруднений. Теория конечных автоматов чрезвычайно хорошо развита. Конечные автоматы создаются на основе формальных определений, что позволяет оптимизировать их и манипулировать ими с помощью различных алгоритмов. Однако известно, что ко- нечные автоматы поддерживают только регулярные языки. Практика показала, что конечные автоматы могут успешно применяться в ком- пьютерных играх, а фактически они относятся к числу наиболее широко применяе- мых методов ИИ. Причина этого заключается в том, что конечные автоматы могут использоваться для управления, а их создание может быть поручено разработчику почти с любой квалификацией.
Глава 38. Конечные автоматы 585 Недостатки Недостатки конечных автоматов кажутся незначительными по сравнению с мас- сой преимуществ, но, как показано ниже, их число довольно велико. > При создании достаточно крупных систем с конечным числом состояний за- дача проектирования конечных автоматов может стать очень сложной. > По своим вычислительным возможностям конечные автоматы ограничены определенными задачами. > Конечные автоматы не могут применяться для решения многих простых за- дач, таких как подсчет. > Конечные автоматы остаются неизменными в том виде, в каком они были спроектированы, и не могут изменяться на этапе прогона. > При осуществлении процедурного управления могут возникать проблемы. > Выходные данные порождающих конечных автоматов являются весьма пред- сказуемыми, поэтому не совсем подходят для создания форм поведения. Недостатки порождающих конечных автоматов можно легко учесть на этапе про- ектирования (и выбрать правильное решение); таким образом, указанные проблемы не могут изменить того положения, что конечные автоматы относятся к числу наи- более широко применяемых методов создания игровых средств ИИ. Резюме Как описано ниже, в теории систем с конечным числом состояний рассматрива- ются два различных типа конечных автоматов. > Распознающие конечные автоматы, используемые для распознавания или приема последовательностей символов входных данных, после чего выраба- тывается только один набор выходных данных. > Порождающие конечные автоматы, способные преобразовать поток входных данных в соответствующий поток выходных данных. Конкретными вариантами этих представлений являются автоматы Мили и Мура. Функция перехода представляет собой суть моделей, основанных на использова- нии конечных автоматов. На практике для представления и моделирования функ- ции перехода могут применяться различные способы, в том числе описанные ниже. > В качестве справочных данных, позволяющих найти следующее состояние ис- ходя из текущего состояния и входных данных, может использоваться массив. > При поиске следующего состояния с использованием входного символа для определения нужной связи, исходящей из текущего состояния, может служить ориентированный граф. Реализация на основе графа при увеличении числа состояний лучше масштаби- руется и, как правило, позволяет достичь более высокой производительности. В ка- честве компонентов принятия решений могут использоваться простые декларатив-
586 Часть VI. Эмоции ные модели, описанные в теории, но, как описано ниже, процедурные подходы яв- ляются более удобными для решения задач управления. > Каждый переход представлен как функция, которая возвращает истинное значение, если состояние должно измениться. > С каждым состоянием связана процедура обновления, которая используется для выполнения соответствующих действий. Иногда при использовании процедурного подхода возникают проблемы, такие как потеря информации и неоднозначность переходов; в связи с этим могут обнару- живаться непредвиденные ошибки в реализации форм поведения. В случае необхо- димости эти проблемы могут быть устранены с применением простой очереди со- общений, организованной по приоритетам. В целом, необходимо отметить, что конечные автоматы представляют собой один из методов ИИ, наиболее подходящих для разработки' игровых средств ИИ. Несмотря на сказанное, с применением конечных автоматов связаны некоторые концептуальные проблемы, которые не могут быть устранены с помощью какой-либо остроумной реали- зации. В главах 40, “Недетерминированные конечные автоматы”, и 41, “Иерархические конечные автоматы”, рассматриваются недетерминированные конечные автоматы, ве- роятностные конечные автоматы, нечеткие конечные автоматы и иерархические конеч- ные автоматы. Эти вычислительные модели позволяют справиться с большинством про- блем, связанных с простыми конечными автоматами. В следующей главе показано, как применить конечные автоматы для моделиро- вания эмоций, и приведено несколько примеров практического использования ко- нечных автоматов. Практическая демонстрационная версия Анимат Fizzer используют конечные автоматы для реализации присущих ему форм поведения, на- правленных на выживание. Хотя проект анимата Fizzer нельзя назвать особенно сложным, он демон- стрирует способ явного воплощения проектировщиком форм поведения. Наращивание возможно- стей этого анимата становится особенно затруднительным из-за быстрого увеличения сложности.
^atalfauslik Гпава 39 Влияние эмоций В настоящей главе показано, как можно исполь- зовать сочетание конечных автоматов для соз- дания эмоций. Для этого к архитектуре средств ИИ добавляются два уровня. На нижнем уровне фор- мируются ощущения на основе восприятий, а на уровне эмоций отслеживаются основные эмоции. Поведенческий отклик аниматов выражается лишь в ослаблении восприятий и действий. По существу, эмоции определяют, насколько эффективно функ- ционируют части тела анимата. Поведение анимата становится зависимым от этой эмоциональной модели, в результате чего увеличивается разнообразие форм поведения и возрастает их правдоподобие. В настоящей главе рассматриваются пере- численные ниже темы. В ЭТОЙ ГЛАВЕ- • Проектирование искусственных эмоций • Разработка модуля, основанного на использовании конечных автоматов • Создание эмоций как конечных состояний • Оценка полученных результатов • Резюме > Описание важных стимулов, поступаю- щих из внешней среды, и соответствую- щих им ощущений, а также основных эмоций и способов их отображения. > Управляемый данными модуль, основан- ный на использовании конечных автома- тов, который поддерживает функциониро- вание порождающих и распознающих ко- нечных автоматов. При описании модуля рассматриваются и функциональные ин- терфейсы, и средства передачи сообщений. > Моделирование эмоций с применением ме- тодов ИИ, основанных на использовании конечных автоматов, и интеграция созда- ваемой системы в описанную ранее архитек- туру (т.е. объединение с формами поведе- ния, которые были разработаны до сих пор). > Влияние эмоций на функционирование искусственных созданий и роль ограниче- ний системы.
588 Часть VI. Эмоции Прототип, разрабатываемый в ходе изложения материала настоящей главы, по- казывает преимущества применения эмоций. Этот прототип становится основой исключительно удобного подхода, который дополняется еще лучшей технологией, описанной в главе 42, “Система, проявляющая эмоции”. Проектирование искусственных эмоций На этапе проектирования должно быть принято решение о том, какие эмоции будет испытывать анимат, какие ощущения активизируют изменения эмоций и как эмоции изображаются в форме поведения. Данный прототип будет дополнен ниже, в главе 42, “Система, проявляющая эмоции”; при этом будут введены в действие до- полнительные первичные эмоции, вторичные эмоции и настроения. Основные эмоции В этой главе впервые создается прототип системы, проявляющей эмоции, поэто- му, вероятно, следует включить только наиболее важные эмоции. Рассматриваемые в данной главе аниматы как таковые обладают только четырьмя описанными ниже основными эмоциями, которые определены Робертом Плучиком в его теории эво- люции психики [62]. > Страх и гнев. > Удивление и предвидение. Эти пары эмоций являются взаимно дополняющими, поэтому в любой момент времени могут наблюдаться только две из четырех эмоций. Каждая из этих эмоций определена с помощью двоичного значения, которое показывает, является ли эмо- ция полностью активной или неактивной. Ощущения и стимулы Ощущения — это шаблоны, которые вызывают изменения в эмоциях. Подобные шаблоны могут обнаруживаться в текущем состоянии, но могут также сохраняться в течение с гределенных промежутков времени. В рассматриваемом прототипе ощу- щения базируются непосредственно на стимулах, поступающих из внешней среды. Ощущения определяются как последовательные комбинации стимулов (табл. 39.1). Таблица 39.1. Стимулы, поступающие из внешней среды, которые активизируют ощущения Стимул Стимул Появляется участник игры Воссоздается объект Неожиданный звук Анимат поднимает предмет Низкая жизнеспособность Небольшой или крупный ущерб Взрыв Смерть Нажата кнопка Дверь или платформа готова Брызги крови Часть тела
Глава 39. Влияние эмоций 589 Эти ощущения рассматриваются как булевы активизаторы, появление которых приводит к смене эмоций. В частности, ощущение страха включает соответствую- щую эмоцию страха и отключает гнев. Поведенческий отклик Эмоции обретают свое истинное назначение лишь при том условии, что отобража- ются в формах поведения. Если разработчику удалось выбрать наиболее очевидные проявления эмоций, то повышается реалистичность, а если он смог свести количество эмоций к минимуму, то упрощается система. В настоящей главе будут использоваться описанные ниже параметры, применяемые через интерфейсы к телу анимата. > Правильность и мощь действий. Анимат должен бежать быстрее или медленнее в зависимости от настроения, а его контроль над каждым шагом должен изме- няться. Он также должен поворачиваться с разной скоростью, а иногда прояв- лять повышенную точность при прицеливании. > Восприятие задержки и правильности. Сущности, присутствующие в ближай- шем окружении анимата, должны восприниматься им через короткое время, что позволяет моделировать время реакции человека. Аниматы могут также в некоторых случаях сталкиваться с трудностями при определении расстояния до объектов. Эти модификации являются ограничительными, поскольку уменьшают возможно- сти аниматов. В лучшем случае анимат является неподверженным эмоциям. Идеи, из- ложенные в данной главе, дополняются в главе 42, “Система, проявляющая эмоции”, в которой также описано, как влияют на принятие решений настроения. Разработка модуля, основанного на использовании конечных автоматов В предыдущей главе представлены три метода обработки последовательностей, ос- нованных на использовании конечных автоматов: преобразователи (порождающие конечные автоматы), распознаватели и получатели (распознающие конечные автома- ты). Модули порождающих и распознающих конечных автоматов имеют разные ин- терфейсы, но в архитектуре этих модулей применяются одинаковые принципы пере- дачи информации. Обмен данными Порождающие конечные автоматы, как и другие модули ИИ, принимают вход- ные данные и вырабатывают выходные данные. Данные могут передаваться как па- раметры функций (и использоваться синхронно для передачи управления) или как сообщения, которыми обмениваются компоненты архитектуры (это равносильно асинхронной передаче управления). В случае применения порождающих конечных автоматов часто бывает удобно поддерживать оба подхода. Функции предоставляют
590 Часть VI. Эмоции эффективную поддержку пакетной обработки, а события позволяют проводить ин- крементные обновления, определяемые событиями. Эффективность представления во многом зависит от принятого подхода. Напри- мер, если принят подход, основанный на использовании функций, то переходы должны определяться с учетом текущего состояния, а в подходе, управляемом собы- тиями, должно быть определено состояние на основе символа перехода. Распознающий конечный автомат Распознающие конечные автоматы позволяют распознавать и классифицировать последовательности. Таким образом, входными данными распознающего конечного автомата является массив алфавитно-цифровых знаков или символов любого дру- гого типа, которые могут активизировать переходы между состояниями. Выходные данные могут принимать любые формы, хотя обычно применяются категориальные переменные (для классификации) или булевы значения (для распознавания): bool Accept( const vector<Symbol>& sequence ); Symbol Recognize( const vector<Symbol>& sequence ); Если используются указанные функции, то конечный автомат переустанавлива- ется до начала моделирования. При использовании передачи сообщений входные данные обрабатываются инкрементно. Выходное сообщение передается после дос- тижения терминального состояния. В этом случае конечный автомат переустанавли- вается автоматически, но есть также возможность применить в интерфейсе функ- цию переустановки Reset (), если это потребуется. Порождающий конечный автомат Порождающие конечные автоматы, с другой стороны, формируют выходные дан- ные после получения каждого входного символа. Еще один вариант состоит в том, что в интерфейсе к порождающему конечному автомату может быть реализован пошаго- вый подход или подход, предусматривающий прием одной последовательности симво- лов и возврат другой: Symbol Tick( const Symbol in ); void Simulate( const vector<Symbol>& in, vector<Symbol>& out ); Приведенные выше функции реализуют синхронную форму поведения. С другой стороны, асинхронный подход предусматривает применение инкрементного режима работы, в котором одни сообщения вырабатываются сразу после получения других. И в этом случае для инициализации конечного автомата может использоваться явно заданная функция Reset (). Спецификация Формат файла, предназначенного для хранения компоновки конечных автоматов в коде XML, показан в листинге 39.1. Такой файл может представлять произвольное количество состояний, в каждом из которых заданы исходящие переходы. Для каж- дого перехода указано целевое состояние и соответствующие входные данные. При желании и с состояниями, и с переходами могут быть связаны выходные данные.
Глава 39. Влияние эмоций 591 ftataHaus, Листинг 39.1. Пример отдельного состояния конечного автомата, описанного с помощью кода XML <state name="surprise"» <transition inputs"door_open" target="anticipation" /> <transition input="explosion" target="fear" /> <output precisions"0.4" delays"0.1" /> </state> Порождающий конечный автомат, обрабатывающий символы, имеет относи- тельно несложное определение. Но если в сочетании с порождающим конечным ав- томатом используется процедурный код и реализуется декларативный подход, то для определения его спецификации требуется дополнительный синтаксис. Информация по этой теме будет приведена в главе 42, “Система, проявляющая эмоции”. Дополнительная информация о спецификации и реализации порождающих конечных автоматов с применением функций FEAR приведена в справочном руководстве по библиотеке на Web-узле по адресу http: / / fear .sf.net/. Реализация Определения распознающих и порождающих конечных автоматов должны пре- дусматривать хранение информации об их внутреннем графе, а также об активном состоянии. Само текущее состояние может быть представлено как индекс в массиве состояний или даже как ссылка на экземпляр объекта на языке C++. Таблица пере- хода хранится как массив состояний, каждое из которых отображает входной символ на состояние назначения. Кроме того, каждое состояние хранит данные, которые были определены пользователем. Удобный способ загрузки компоновки из файла и распределения произвольных массивов на этапе прогона предоставляют универсальные контейнеры из стандарт- ной библиотеки шаблонов; это позволяет разработчику снять с себя заботы о про- блемах памяти. После определения интерфейсов объявляются структуры данных и загружается компоновка порождающего конечного автомата, поэтому реализация задачи моде- лирования становится удивительно простой, как показано в листинге 39.2. Таким образом, декларативный подход, используемый в настоящей главе, позволяет суще- ственно упростить разрабатываемый модуль. Листинг 39.2. Функция, позволяющая осуществить единственное обновление конечного ^томата Мура function Tick( Symbol in ) # Найти следующее состояние в массиве списков state = transition[state][in] # Найти хранимые данные, относящиеся к этому состоянию return data[state] end function
592 Часть VI. Эмоции Создание эмоций как конечных состояний В общую архитектуру рассматриваемых средств ИИ включен еще один компо- нент, обеспечивающий поддержку эмоций. По своей внутренней структуре этот компонент состоит из двух вложенных компонентов с конечным числом состояний, которые применяются для поддержки ощущений и эмоций. Конечный автомат, применяемый для поддержки эмоций Рассматриваемый порождающий конечный автомат, используемый для модели- рования четырех эмоций, содержит четыре состояния. Но каждая эмоция связана с двумя состояниями, поэтому каждое такое состояние соответствует двум эмоциям. Если предположить, что две пары взаимно дополняющих эмоций представляют со- бой измерения, то появляется возможность трактовать порождающий конечный ав- томат как двухмерную координатную сетку, как показано на рис. 39.1. Применение такой конструкции позволяет принудительно ввести ограничение, согласно которо- му две взаимно дополняющие эмоции не могут быть активными одновременно. Рис. 39.1. Четыре различных состояния настроения, каждое из которых соответствует двум эмоциям Этот порождающий конечный автомат является полносвязным, поэтому имеют- ся переходы из каждого отдельного состояния в каждое другое состояние. Условия для переходов остаются универсальными и определяются ощущениями. Поэтому проект данного порождающего конечного автомата является неизменным. Гибкость достигается за счет применения порождающего конечного автомата, поддерживаю- щего ощущения, который определяет активные эмоции; переходы в этом конечном автомате соответствуют желаемому настроению. Каждое состояние определяет конкретные значения для каждого из параметров, используемых для контроля над формами поведения. Эти формы поведения опреде- лены в табл. 39.2, но могут быть откорректированы проектировщиками. Параметры определены для действий поворота и перемещения, а визуальные восприятия зада- ны, как описано ниже.
^alaHaus^. Глава 39. Влияние эмоций 593 > Точность определяет степень случайности действия; значение 1.0 показывает, что должно быть выполнено требуемое действие, а значение 0.0 говорит о том, что на основании запроса должно быть выбрано рандомизированное действие. > Для масштабирования значения действия используется такой показатель, как мощь действия. Если мощь равна 0, это означает, что анимат является полно- стью застывшим, а мощь, равная 1, показывает, что действия имеют свое мак- симальное выражение (в том числе поворот и перемещение). > Задержка представляет количество секунд, которые должны истечь после того, как информация о событии будет передана анимату. Задержка, равная 0, озна- чает, что анимат воспринимает объект сразу после его появления, но в других случаях задержка может достигать почти одной секунды. > Точность определяет, как с помощью восприятий интерпретируется положе- ние объектов в пространстве. Значение, равное 1, указывает, что позиция оп- ределяется точно, а значение 0 говорит о том, что к данным о расстоянии и уг- ле добавляется большое случайное значение. Таблица 392. Значения параметров, которые влияют на поведение в зависимости от текущего настроения (точность и мощь отражаются на действиях, а задержка и правильность — на восприятиях) Удивление Предвидение Страх Precision 0.7 Precision 0.9 Power 0.2 Power 0.4 Delay 0.0 Delay 1.0 Accuracy 0.9 Accuracy 0.2 Гнев Precision 0.0 Precision 0.1 Power 1.0 Power 0.9 Delay 0.3 Delay 0.8 Accuracy 0.8 Accuracy 0.3 Распознающий конечный автомат и ощущения Для обработки восприятий и преобразования их в краткие определения ощуще- ний, которые могут интерпретироваться порождающим конечным автоматом, ис- пользуемым для обработки эмоций, служит распознающий конечный автомат. Пример распознающего конечного автомата показан на рис. 39.2. Ощущения опре- деляются проектировщиком (а эмоции остаются постоянными), поэтому и ощуще- ния, и эмоции неявно влияют на индивидуальность аниматов. Некоторые создания с большей вероятностью будут проявлять хорошую реакцию в бою, а другие остают- ся в большей степени удовлетворенными, если ничего не происходит. Подобными личными свойствами можно управлять косвенно, корректируя ощущения.
594 Часть VI. Эмоции Рис. 39.2. Распознающий конечный автомат, используемый для распозна- вания ощущений на основе стимулов Распознавание Смерть Гнев/предвидение Такую систему можно было бы смоделировать только с помощью одного распо- знающего конечного автомата с пятью состояниями (с одним начальным состояни- ем и четырьмя состояниями, соответствующими распознаваемым ощущениям); В случае необходимости для упрощения модели можно было бы использовать про* извольные промежуточные узлы. Безусловно, рассматриваемый подход является простейшим из всех возможных, но не позволяет достичь большого разнообразия в реализуемых формах поведения. С другой стороны, если бы для каждого из настрое- ний применялось по одному конечному автомату, то достигалась бы гибкость, по- зволяющая настраивать каждый из переходов, но вместе с тем сложность всей сис- темы по-прежнему оставалась бы низкой. Интеграция Два компонента, основанных на использовании конечных автоматов, создаются отдельно, но для создания окончательного варианта системы необходимо обеспе- чить их тесное взаимодействие. Стимулы, поступающие из внешней среды, переда- ются распознающему конечному автомату как события. Как показано на рис. 39.3, ощущения передаются порождающему конечному автомату, моделирующему эмо- ции, асинхронно, как сообщения. Благодаря использованию такого подхода эмо- циональное состояние всегда остается актуальным и управление им активизируется событиями очень эффективным способом. Таким образом, анимат испытывает эмоции подсознательно, подобно биологи- ческим созданиям. В этой системе настроения, по существу, становятся основопо- лагающим уровнем для уже разработанных средств ИИ. Поэтому ранее разработан- ная архитектура средств ИИ должна служить в качестве еще одного уровня обеспе- чения интеллектуальности. Как показано на рис. 39.4, чтобы можно было обеспечить влияние настроения на поведение, эти два уровня должны взаимодействовать. Сенсор запрашивает данные о настроении и воздействует на компоненты, которые выражают эмоции (а резуль- таты проявления эмоций определяются с помощью визуальных запросов или двига- тельных действий). В зависимости от компонента, запросы для получения данных об эмоциях передаются динамически по мере необходимости или распространяются с помощью сообщений и кешируются.
^alaHaus^k Глава 39. Влияние эмоций 595 Рис. 39.3. Интеграция ощущении и эмо- ций с использованием передачи сообщений Рис. 39.4. Общая схема архитектуры, в которой эмоции и активизируемые формы поведения дей- ствуют независимо друг от друга; эмоции влияют на восприятия и действия с помощью параметров Оценка полученных результатов Настроения анимата заданы неявно, поэтому их нелегко определить с первого взгля- да. Тем не менее эмоции, безусловно, оказывают со временем влияние на общее впечат- ление об игре, которое складывается у ее участников. В чем состоят изменения в поведе- нии аниматов, можно понять путем наблюдения и изучения основополагающей модели; этому способствует также вывод данных об эмоциональном состоянии в отладчике. Безусловно, формы поведения средств ИИ остаются одинаковыми, но рассмат- риваемая модель проявления эмоций позволяет достичь большего разнообразия в самом поведении. Что касается поведения во время стрельбы, то эмоции оказыва- ют аналогичное влияние на ошибки прицеливания в зависимости от контекста, но проявляются во всем функционировании средств ИИ биологически правдоподоб- ным образом. Это приводит к возникновению непредвиденных ситуаций, в резуль- тате чего игра становится более интересной. Ни в одном случае не возникали формы поведения, недопустимые с точки зрения обеспечения реалистичности, хотя навыки аниматов иногда казались довольно слаборазвитыми (из-за того отрицательного влияния, которое оказывали эмоции, ухудшающие восприятия и действия). Несмотря на сказанное, эта модель системы, проявляющей эмоции, является не- вероятно простой для корректировки. Параметры объявлений хранятся в файлах конфигурации и могут быть откорректированы с помощью текстового редактора, что позволяет упростить экспериментирование. Атрибуты precision (точность) или delay (задержка) могут корректироваться системой управления игрой или даже самими участниками игры, что позволяет динамически устанавливать степень раз- вития навыков аниматов.
586 Часть VI. Эмоции С точки зрения технической реализации, эта система может служить наглядной де- монстрацией преимуществ модульного подхода к созданию средств ИИ. Существую- щие модули, с помощью которых реализуется интеллектуальное поведение, остаются полностью неизменными, а средства поддержки эмоций вводятся в архитектуру в виде дополнительного уровня. Уровень поддержки эмоций остается полностью независи- мым от активизируемых форм поведения. Образец проекта, рассматриваемый в этой главе, может стать основой лучшей модели, которая описана в главе 42, “Система, проявляющая эмоции”. Тем не менее данная система имеет технические недостатки, которые обусловле- ны ограничениями конечных автоматов. Переходы являются булевыми; настроения после перехода из одного состояния в другое сменяются полностью или остаются неизменными. Вследствие этого эмоции, по существу, являются исключительно по- ложительными или отрицательными, а какие-либо промежуточные их значения ос- таются недостижимыми, хотя это непосредственно не проявляется в формах поведе- ния. Кроме того, эмоции являются весьма предсказуемыми и остаются одинаковы- ми на протяжении всей игры. Некоторые проблемы возникают также в связи с тем, что эмоции сменяются слишком быстро. А поскольку изменения настроения могут быть вызваны ощуще- ниями, быстро поступающая последовательность стимулов может привести к стре- мительным изменениям в настроении. К счастью, принятый способ отображения эмоций аниматов (ухудшение восприятия) не приводит в связи с этим к появлению нереалистичных форм поведения. Вообще говоря, для предотвращения подобных колебаний может быть снижена частота обновления эмоций (например, с примене- нием управления вручную, а не управления событиями). С точки зрения проектирования, уже заметно повышение реалистичности, но полный потенциал этой технологии не используется из-за того, что выбраны только четыре эмоции. Было бы особенно интересно ввести в действие с помощью этого конечного автомата больше эмоций, поскольку при этом количество необходимых переходов возрастает по экспоненте. Практическая демонстрационная версия Анимат, демонстрирующий идеи, изложенные в этой главе, носит имя Moody и может быть найден на Web-узле по адресу http://AiGameDev.com/ наряду с другими примерами. Применяемая ар- хитектура основана на использовании средств ИИ, описанных в предыдущих частях данной книги, и включает две разновидности компонентов, основанных на применении конечных автоматов, кото- рые реализуют эмоции. Эмоции отображаются путем ухудшения качества восприятий и действий. Резюме Как описано ниже, проект этого прототипа основан на простой модели ощуще- ний и эмоций. > Для представления настроения были выбраны четыре основные эмоции. > Ощущения рассматриваются как булевы механизмы активизации, под дейст- вием которых сменяется настроение с учетом стимулов.
Глава 39. Влияние эмоций 597 > Эмоции отображаются за счет ухудшения качества восприятий и действий. Для реализации проекта разработаны два описанных ниже компонента, осно- ванных на использовании конечных автоматов. > Порождающий конечный автомат моделирует смену эмоций и следит за на- строением. > Распознающий конечный автомат определяет ощущения как булевы условия, вызванные воздействием стимулов. > Оба эти компонента взаимодействуют, передавая друг другу сообщения, в ре- зультате чего изменяются входные и выходные данные. Проведенная оценка системы показывает преимущества подхода, в котором для улучшения правдоподобности применяются простые эмоции, а также обнаруживает описанные ниже технические проблемы. > Выбрано ограниченное количество эмоций, поскольку с увеличением их чис- ла моделирование сложных настроений с помощью конечных автоматов ста- новится все более и более сложным. > Система является полностью предсказуемой и не изменяется в течение дол- гого времени. > Ощущения и эмоции определены как булевы значения. В следующих двух главах исследуются дополнения к конечным автоматам, кото- рые позволяют устранить указанные проблемы. В частности, нечеткие конечные ав- томаты позволяют определять степень проявления эмоций, в результате применения вероятностных моделей ощущения становятся менее предсказуемыми, а иерархиче- ские системы упрощают моделирование сложных настроений.

^ataHaus^k Гпава 40 Недетерминированные КОНЕЧНЫЕ АВТОМАТЫ В ЭТОЙ ГЛАВЕ, • Краткий обзор • Нечеткие конечные автоматы • Недетерминированные конечные автоматы • Вероятностные конечные автоматы • Резюме Разработано несколько различных модифи- каций конечных автоматов. Они относятся к широкому спектру, начиная от недетермини- рованных моделей (с неоднозначными перехо- дами) и заканчивая вероятностными моделями (каждый переход обозначен определенной веро- ятностью), включая нечеткие модели (где каж- дое состояние представляет собой нечеткую пе- ременную). Конечные автоматы, предназначенные для поддержки этих разновидностей моделей, долж- ны быть подвергнуты определенным изменениям. Для описания структуры конечных автоматов по- прежнему используется графическое представле- ние, а структуры данных остаются, в основном, аналогичными. Каждая из рассматриваемых модификаций конечных автоматов имеет свои преимущества и недостатки. Недетерминированные модели зна- чительно упрощают моделирование крупных ко- нечных автоматов и позволяют проще объединять в единую конструкцию небольшие конечные авто- маты. Вероятностные модели могут использоваться для анализа вероятности получения различных по- следовательностей или даже для выработки стохас- тических выходных последовательностей. Нечет- кие модели сочетают в себе преимущества средств нечеткой логики и конечных автоматов; они под- держивают дробные значения степеней истинно- сти, распространяющихся на входные данные, и значения состояния, кроме того, позволяют вы- рабатывать сглаженные выходные данные. В играх указанные преимущества рассматри- ваемых модификаций могут способствовать уп- рощению разработки форм поведения несобст- венных персонажей, а также улучшению конеч-
600 Часть VI. Эмоции ных результатов благодаря тому, что выходные данные становятся менее предска- зуемыми, а переходы сглаживаются. В недетерминированном случае желательно преобразовывать конечные автоматы 1 детерминированные перед моделированием. При использовании вероятностных мо- делей моделирование конечных автоматов должно осуществляться иначе, по сравне- нию с другими разновидностями, чтобы можно было учесть изменения в представле- нии. Дело в том, что в них каждый переход выбирается стохастически. Что касается нечеткой системы, то конечные автоматы могут быть без особых сложностей преобразованы в множество правил и нечетких переменных. Поэтому один и тот же нечеткий конечный автомат может использоваться для моделирования порождающего нечеткого конечного автомата. Краткий обзор В настоящей главе приведено описание всевозможных разновидностей конечных автоматов, которые показали себя на практике как применимые в компьютерных играх. К ним относятся нечеткие, недетерминированные и стохастические конечные автоматы. Другие модификации конечных автоматов, такие как иерархические ко- нечные автоматы, будут рассматриваться в следующей главе. Прежде чем приступать к изложению темы данной главы, необходимо провести четкое различие между разными подходами, а также попытаться указать на аналогии между ними (табл. 40.1). Иногда излагаемый материал может казаться сложным для восприятия, поскольку математические основы рассматриваемой тематики охваты- вают несколько областей, а терминология и даже интерпретация изменяются при переходе от одной темы к другой. Таблица 40.1. Различные варианты вычислительных моделей, основанных на использовании конечных автоматов, и их взаимосвязь Приемник Передатчик Детерминированный Распознающий конечный автомат Порождающий конечный автомат Недетерминированный Недетерминированный распознающий конечный автомат Недетерминированные порождающие конечные автоматы Вероятностный Скрытая марковская цепь Марковская модель Нечеткий Нечвткий распознающий конечный автомат Нечеткий порождающий конечный автомат Как описано ниже, в каждом из рассматриваемых подходов выделяются такие ком- поненты, как получатели (которые распознают, является ли входная последовательность действительной), распознаватели (классифицирующие входную последовательность) и преобразователи (которые выводят значения, ссхтгветствукяцие входным данным). > Детерминированные модели полностью предсказуемы и не создают какой- либо неоднозначности при вычислении результатов.
Глава 40. Недетерминированные конечные автоматы 601 > Недетерминированные модели определены менее явно; они допускают воз- никновение неоднозначных случаев, но не дают никаких подсказок в отноше- нии того, какие из возникших вариантов являются правильными. Должен быть выбран вариант, позволяющий получить правильный результат, но вся сложность состоит в том, как этого достичь. > В вероятностных моделях с каждым из переходов связана вероятность. Значе- ния вероятностей могут использоваться для анализа или интерпретироваться стохастически. > В нечетких моделях каждое состояние представлено как нечеткая переменная. Переходы могут интерпретироваться как нечеткие правила, применяемые к состояниям. Каждое из нечетких состояний имеет степень принадлежности, которая изменяется в процессе моделирования. Приведенный выше краткий обзор предназначен для устранения любых возмож- ных неправильных толкований рассматриваемых методов. После ознакомления с приведенным ниже формальным описанием все станет ясно. Нечеткие конечные автоматы Нечеткий конечный автомат представляет собой модификацию простого порож- дающего конечного автомата. Но в нечетком конечном автомате не обрабатываются четко заданные символы, а в качестве входных и выходных данных используются нечеткие значения. Благодаря этому достигаются преимущества, связанные с обес- печением плавного управления и проведением рассуждений с учетом степеней ис- тинности, которые часто более напоминают рассуждения человека. Внутренняя организация нечеткого конечного автомата также является таковой, что в нем каждое состояние определено с помощью нечетких переменных. Как и в других не- четких системах, эта особенность приводит к возникновению комбинаторного взрыва применительно к количеству допустимых правил, определяемых количеством состоя- ний, а также входных и выходных символов. Вопреки широко распространенному мнению, нечеткий конечный автомат, по своей сути, является детерминированным, как и система, основанная на нечетких пра- вилах. Разработчики игр широко используют такую терминологию, в которой нечет- кие конечные автоматы именуются вероятностными. Это не только приводит к пута- нице, но и вызывает неоднозначные и несовместимые толкования, поэтому в данной книге мы будем придерживаться стандартного определения. Определения Как и в случае их аналогов, отличных от нечетких, сами нечеткие распознающие конечные автоматы используются как получатели, а нечеткие преобразующие ко- нечные автоматы — как преобразователи.
602 Часть VI. Эмоции Нечеткий распознающий конечный автомат Нечеткий распознающий конечный автомат (Fuzzy Finite-State Automaton — FFSA) может рассматриваться как получатель, который выводит значение степени принадлеж- ности. Нечеткий распознающий конечный автомат определен как четырехэлементное множество: FFSA = {Z,Q,F,3} В этом определении £ — алфавит нечетких входных значений, Q — коллекция не- четких переменных, представляющих состояния, F с Q — подмножество погло- щающих состояний, а 8 — нечеткая схема переходов, которая определяет следующее состояние Rt+1 нечеткого распознающего конечного автомата в терминах текущего состояния Rt. Состояние распознающего конечного автомата соответствует множе- ству всех нечетких значений Q: 8: FxZ—>F (Rt,<jt)a Rt+i |-> oteZ, ReF В этой формуле F (Q) — множество всех возможных состояний нечеткого распо- знающего конечного автомата, поэтому схема 8 определена как отображение этого множества на себя, формируемое после получения нечеткого входного символа. Нечеткий порождающий конечный автомат Как и его аналог, отличный от нечеткого, сам нечеткий порождающий конечный автомат (Fuzzy Finite-State Machine — FFSM) представляет собой вариант нечеткого распознающего конечного автомата, который способен вырабатывать выходные сим- волы по мере поглощения им входных символов. Выходные данные, которые также, безусловно, представляют собой нечеткие символы, могут быть определены в терми- нах переходов или состояний (что ссхугветствует автоматам Мили и Мура). Нечеткий порождающий конечный автомат определен как пятиэлементное множество: FFSM = {Z,Q,Z,8,X} В этой формуле z — выходной алфавит, а именно, множество нечетких символов, а X соответствует нечеткому выходному отображению, определенному в терминах вход- ных данных и текущего состояния. X: F(Q)xZ—>F(Z) (Rt,Ot) a Zt |-> OteZ, Zt€F(z) В этом случае выходные данные представляют собой не просто один символ, а мно- жество нечетких символов, которые определены с помощью гладкой функции при- надлежности. Представление Как показано на рис. 40.1, для графического представления нечеткого конечного автомата все еще используется граф. Но активное состояние не может быть обозна- чено с помощью единственного узла, выделенного полужирным контуром, посколь- ку степень принадлежности, отличную от нуля, могут иметь многие состояния. Что- бы можно было представить визуально эту характеристику конечного автомата, сте- пень принадлежности обозначается с помощью выбора соответствующего размера
Глава 40. Недетерминированные конечные автоматы 603 SahMausl, графического изображения узла каждого состояния или определенного оттенка се- рого цвета. Это особенно удобно при отладке конечного автомата или при осуществ- лении попытки объяснить результат возникшей ситуации. значения состояний Рис. 40.1. Схема нечеткого порождающего конечного автомата, на которой степень принадлежности ка- ждого состояния обозначается размером узла в графе Сам порождающий конечный автомат может быть развернут в множество нечет- ких правил, определенных на состояниях, а также входных и выходных алфавитах. Если моделирование конечного автомата должно осуществляться точно, то ни одно из этих правил не может быть отброшено, поэтому при использовании данного представления практически нельзя рассчитывать на достижение существенной оп- тимизации. База правил, создаваемая в конечном итоге, содержит нечеткие правила, имеющие следующий формат: IF <statel> AND <transition> THEN <state2> Если нечеткий порождающий конечный автомат не развертывается в множество пра- вил, то информацию о самих переходах необходимо хранить иначе, по сравнению с тем, как она хранится в графе порождающего конечного автомата. В четких порождающих конечных автоматах переходы ассоциируются с активным состоянием, поэтому модели- рование позволяет проверить каж.ты Л переход, после того как он становится активным. А при использовании нечеткой модели информация об активности состояния не переда- ется в прямом направлении как четкое булево значение. Вместо этого каждое состояние наследует комбинированную информацию об активности предшествующих состояний (взвешенную с учетом нечеткого символа перехода). Из этого следует, что проще вычис- лить нечеткое значение состояния по данным о его предшественниках, а не пытаться распространить информацию об активности на преемников. В используемой реализации предусматривается хранение информации о состояниях предшественников для каждого состояния, что позволяет применять нечеткие правила к каждому состоянию для опреде- ления его следующего значения за один проход. Рассмотрим пример поведения анимата, приведенный в листинге 40.1. В четком порождающем конечном автомате хранились бы значения переходов из трех состоя- ний (бесцельное блуждание, нападение и сбор доспехов) в состояние бегства. С другой стороны, в представлении нечеткого порождающего конечного автомата должна хра- ниться информация о связях состояния бегства с предыдущими состояниями, чтобы
604 Часть VI. Эмоции можно было вычислить нечеткое значение текущего состояния на основе данных о со- стояниях-предшественниках (отношение OR между тремя правилами). Листинг 40.1. Небольшое подмножество правил, которые представляют часть графа нечеткого порождающего конечного автомата IF <wandering> AND <attacked> THEN <fleeing> IF <attacking> AND <near_death> THEN <fleeing> IF <gathering> AND <surprised> THEN <fleeing> Моделирование Таким образом, представление рассматриваемого конечного автомата может быть преобразовано в множество нечетких правил, поэтому используемый метод моделирования также должен быть немного другим по сравнению с системой, осно- ванной на нечетких правилах. Моделирование связано с осуществлением двух операций: вычисление следующего нечеткого состояния с использованием информации схемы S и вычисление выходного значения со. Вычисление следующего состояния выполняется с помощью ряда импли- каций if-then. Рассмотрим в качестве примера, как определить степень принадлеж- ности состояния в виде результатов операции дизъюнкции, применяемой к парам “состояние-переход”, относящимся к предшествующим состояниям: qo = (Qi л О4) V (д2 л Оз) Нечеткая операция OR v определена как максимум двух операндов, а нечеткая опе- рация AND л выражается как минимум. В силу того, что для осуществления логического вывода используются операции min/мах, в конечном итоге для определения степени принадлежности состояния используется псевдокод, приведенный в листинге 40.2. Листинг 402. Определение нечеткого значения состояния s и степени принадлежности выходных данных s = 0 for each predecessor state q and input i output = MIN( q, i ) s = MAX( s, output ) end for Сами выходные данные определены как правило, отображающее входной символ s4 и предыдущее состояние qi на выходные данные z1/0. Эти данные представляют собой следующую конъюнкцию: Zi/o = qi а 04 Таким образом, для моделирования нечеткого порождающего конечного автома- та не требуются какие-либо операции с множествами. Но эти операции могут потре- боваться, если выходные переменные должны быть преобразованы из нечетких в четкие (дефаззифицированы). Обсуждение полученных результатов Нечеткие конечные автоматы объединяют в себе преимущества нечетких экс- пертных систем и конечных автоматов. Задача создания нечетких конечных автома- тов является несложной, особенно если используются графические инструменталь-
ftataHausfii& Глава 40. Недетерминированные конечные автоматы 605 ные средства. Такие автоматы оперируют нечеткими терминами и лингвистически- ми переменными, которые являются более доступными для понимания людьми. Не- четкие распознающие конечные автоматы могут распознавать дробные значения степеней принадлежности входных строк, тогда как нечеткие порождающие конеч- ные автоматы обладают способностью вырабатывать гладкие выходные значения, которые являются идеальными для управления. Основным недостатком нечетких конечных автоматов является связанный с их использованием комбинаторный взрыв; этот недостаток унаследован от нечетких экспертных систем. Уменьшить степень влияния этой проблемы, не упрощая задачу, очень трудно или даже невозможно. В данном случае улучшению состояния дел мало способствует то, что конечные автоматы имеют разреженный граф, поскольку коли- чество правил не достигает своих верхних границ. При использовании нечетких по- рождающих конечных автоматов приходится также сталкиваться с проблемами, обу- словленными их повышенной сложностью, поэтому процесс проектирования в слу- чае крупных автоматов значительно затрудняется. Тем не менее практика показыва- ет, что, в целом, нечеткие конечные автоматы проще в эксплуатации по сравнению с автоматами, имеющими четкие состояния. Недетерминированные конечные автоматы Все рассматриваемые перед этим модели (и нечеткие, и четкие) были полностью детерминированными; применительно к каждой комбинации “состояние-входные данные” было очевидно, каким должно быть следующее состояние. Переход к ис- пользованию понятия недетерминированности позволяет определять конечные ав- томаты, в которых в каждой ситуации определено больше чем одно следующее со- стояние. Сама модель даже не указывает, какое из этих состояний должно быть вы- брано; к тому же, не обязательно требуется, чтобы следующее состояние было толь- ко одно, поскольку все заданные опции могут быть правильными. Тем не менее недетерминированность не имеет ничего общего с неопределенностью, поскольку с переходами не связаны какие-либо вероятности. Недетерминированность отражает лишь нехватку информации о следующем переходе, по существу указывая на пробелы в формальном определении. В отношении того, как действовать в сложившейся ситуации, должно быть принято решение, но это решение не является следствием самой недетерминированности. Недетерминированность— это лишь менее явный способ представления конечного автомата. В действительности большинство недетерминиро- ванных конечных автоматов используется в детерминированной форме. Недетерминированность подразделяется на два типа. В одном случае недетерми- нированность выражается в переходах (что обнаруживается в распознающих конеч- ных автоматах), а в другом — проявляется в выходных данных (что имеет место в преобразователях). Если нет определенных оснований использовать в проекте не- детерминированные переходы или выходные данные, это следует интерпретировать так, что допускается применение любого из этих вариантов, позволяющего получить правильный ответ. Сведения о том, как реализовать эту рекомендацию на практике, приведены в следующих разделах.
606 Часть VI. Эмоции Определения С применением недетерминированных моделей могут быть созданы и получате- ли, и распознаватели, и преобразователи. Недетерминированный распознающий конечный автомат Формально недетерминированный распознающий конечный автомат (Nondeter- ministic Finite-State Automaton — NFSA) определяется аналогично детерминирован- ному распознающему конечному автомату. Недетерминированный распознающий конечный автомат представляет собой четырехэлементное множество: NFSA = {X,Q,6,F} И в этом определении Q — множество состояний, включающее начальное состояние Qo, F £ Q — подмножество поглощающих состояний, а Е — входной алфавит. Только значение 8 определено иначе; оно представляет собой отношение перехода, а это означает, что может быть предложено несколько переходов. С формальной точки зрения, взаимно-однозначное отображение текущего состояния и входного символа на следующее состояние не задано. Функция перехода фактически является частным случаем отношения перехода, в котором может быть определено несколько следующих возможных состояний. Ис- ходя из этого, распознающий конечный автомат — это частный случай недетерми- нированного распознающего конечного автомата. Поэтому концептуально входные и выходные данные в обоих случаях являются одинаковыми. В действительности ниже в данной главе будет также показано, как преобразовать недетерминирован- ный автомат в детерминированный! Недетерминированные порождающие конечные автоматы Кроме детерминированных разновидностей обоих типов порождающих конеч- ных автоматов, Мура и Мили, имеются также их недетерминированные разновидно- сти. В обоих случаях автомат Мура представляет собой упрощенную версию конеч- ного автомата Мили, поэтому имеют место те же различия, касающиеся выходной функции; в одном случае эта функция основана на состояниях, а в другом — на пе- реходах (см. главу 38, “Конечные автоматы”). В этом разделе рассматриваются обе указанные разновидности конечных автоматов. Создается впечатление, что недетерминированный порождающий конечный ав- томат имеет такое же формальное определение, что и детерминированный: NFSM = {Z,Q,Z,6,X} Большинство терминов остается таким же, как и в случае детерминированного распознающего конечного автомата. В частности, в рассматриваемой формуле z — выходной алфавит. Но и в этом случае 8 и X фактически представляют собой отно- шения и больше не соответствуют определениям функций. Рассмотрим приведен- ные ниже сведения, которые показывают, как отражается введение недетерминиро- ванности на обоих этих отношениях. > Во-первых, из того, что применяется отношение перехода d, следует, что с каж- дой парой “состояние-входные данные”, (q, о), может быть связано несколько следующих состояний. А в действительности может оказаться так, что для акти-
ftataHaustak Глава 40. Недетерминированные конечные автоматы 607 визации перехода фактически не потребуются какие-либо входные данные (такие переходы известны под названием эпсилон-переходов, или Е-переходов). Чаще всего в теории и на практике обнаруживается именно эта форма недетер- минированности. > Во-вторых, применительно к выходному отношению А, вырабатываемый символ может изменяться с учетом текущего сочетания “состояние-входные данные”. Такая форма недетерминированности встречается не столь часто. Фактически отношение А. часто может интерпретироваться как детерминированная функ- ция, зависящая от d. В таком случае в расчете на каждый недетерминированный переход вырабатывается только одно возможное выходное значение. От того, какие определения фактически используются, изменяются ограничения, налагаемые на представление. Представление Выше в данной книге было указано, что структуры данных д ля порождающих ко- нечных автоматов были оптимизированы так, чтобы в них хранилась информация только об одном переходе применительно к каждой паре “состояние-входные дан- ные”. Но в связи с введением недетерминированности возможность применения та- кого представления больше не гарантируется. Проблемы, возникающие при использовании массивов В результате введения недетерминированности исключается возможность исполь- зования стандартного представления порождающих конечных автоматов на основе массивов. Дело в том, что в массиве должно быть предусмотрено сразу несколько яче- ек, относящихся к паре “состояние-входные данные”, а это требует хранения фрдьше чем одного значения, как показано в табл. 40.2. Такая необходимость возникает в свя- зи с тем, что должны быть представлены все варианты переходов и выходных данных. Таблица 402. Массив, с помощью которого предпринята попытка хранить данные о переходах для недетерминированного порождающего конечного автомата (в некоторых ячейках имеется больше чем одно значение) Входные данные и состояние 1 2 3 4 а 2&4 - - - b - 3&4 - - е - - 2 3 Довольно неэффективное решение этой проблемы могло бы предусматривать включение списка переходов в каждую ячейку. Связанные с этим издержки можно было бы немного уменьшить, сохраняя списки в ячейках, только если в этом есть необходимость, но в таком случае требуется также небольшой флажок, который ука- зывает, содержит ли ячейка список или единственное значение. С этого момента представление в виде массива теряет свое главное преимущест- во — простоту. Эффективность поиска также уменьшается, поэтому создается впе- чатление, что лучше применить подход на основе графа.
608 Часть VI. Эмоции Ориентированные графы Как показано в табл. 40.3, в результате введения недетерминированности пред- ставление на основе графа остается, в основном, неизменным. Дополнительные пе- реходы, требуемые для моделирования дополнительных вариантов, могут быть вве- дены с использованием того же представления. Однако необходимо ввести еще один дополнительный тип перехода, Е-переход, позволяющий моделировать тот случай, когда для активизации перехода не требуется входной символ. Таблица 40.3. Использование массива с единственной размерностью, хранящего связные списки, для представления одного и того же недетерминированного порождающего конечного автомата Идентификатор состояния Переходы 1 а: 2, а: 4 2 Ь: 3, Ь: 4 3 е:2 4 е:3 В табл. 40.3 подтверждены преимущества представления на основе графа. Такое представление может потребоваться для недетерминированного моделирования ко- нечного автомата или просто д ля временного хранения его определения в ходе пре- образования недетерминированной модели в детерминированную. Алгоритмы Как уже было сказано, предусмотрено два способа обеспечения эксплуатации конеч- ных автоматов в условиях недетерминированности. Во-первых, можно просто моделиро- вать работу конечного автомата с применением способа, совместимого с его недетерми- нированным определением (рис. 40.2), смирившись с неудобствами и издержками (последние связаны с рекурсивным обходом, при котором объем потребляемой памяти возрастает по экспоненте). Во-вторых, может быть принято решение преобразовать не- детерминированной порождающий конечный автомат в детерминированный и тем са- мым избавиться от затруднений, связанных с поддержкой недетерминированности. Рис. 40.2. Недетерминированный порождающий конечный авто- мат с эпсилон-переходами и неоднозначными перехгЛами
WatoHaustil!. Глава 40. Недетерминированные конечные автоматы 609 Моделирование недетерминированного конечного автомата В обычных порождающих конечных автоматах допускается применение только одного возможного перехода. Из этого следует, что активное состояние изменяется, но всегда остается в единственном числе. При моделировании недетерминирован- ного конечного автомата количество переходов может быть больше одного, а из этого следует наличие нескольких активных состояний. Вначале рассмотрим алгоритм, относящийся к распознающим конечным автома- там. Он проще, поскольку выходные данные не вырабатываются, и вместе с тем яв- ляется наиболее распространенным. Начнем с множества активных состояний (обычно таковым является только одно состояние) и считаем следующий символ. Если входной символ согласуется с одним из переходов из любого текущего состоя- ния, то соответствующее следующее состояние добавляется к следующему множест- ву активных состояний. Такое параллельное моделирование позволяет обойтись без перебора с возвратами (при котором в случае достижения тупика входные данные прослеживаются в обратном направлении). Пустые Е-переходы должны разверты- ваться немедленно. В ходе осуществления этого процесса продолжается чтение сим- волов и определение следующих активных состояний. Если обнаруживается, что од- но из состояний является поглощающим, моделирование заканчивается. Что касается порождающих конечных автоматов с детерминированными выходными данными (но с недетерминированными переходами), то алгоритм должен отслеживать выходную последовательность для каждого из активных состояний. После обнаружения правильной выходной последовательности моделирование может быть остановлено. В том случае, если выходные данные являются недетерминированными, задача становится еще более сложной. Каждое из активных состояний должно сопровож- даться множеством возможных выходных данных. Такой подход является весьма громоздким и не дает почти никаких практических преимуществ, поэтому создается впечатление, что проще использовать детерминированные выходные данные. Преобразование недетерминированного конечного автомата в детерминированный Процедура создания детерминированного порождающего конечного автомата ис- ходя из недетерминированного известна как алгоритм конструирования подмножества. По существу, каждое состояние в распознающем конечном автомате связано с множеством состояний в недетерминированном распознающем конечном автомате. Такая ситуация обусловлена тем фактом, что в недетерминированном распо- знающем конечном автомате Е-переходы и неоднозначные переходы могут стать при- чиной достижения различных состояний в результате обработки одной и той же вход- ной строки (как и при моделировании, в ходе которого могут быть активными не- сколько состояний). Поэтому во время конструирования соответствующее подмноже- ство состояний недетерминированного распознающего конечного автомата хранится в каждом состоянии детерминированного распознающего конечного автомата. Работа алгоритма начинается с формирования е-замыкания начальных состояний на основе рассматриваемого недетерминированного распознающего конечного авто- мата. Это замыкание представляет собой множество всех состояний, которые могут быть достигнуты из начальных состояний с помощью переходов. После этого рассмат-
610 Часть VI. Эмоции риваются все входные символы, которые могут активизировать любой переход из этого подмножества состояний. Для каждого уникального входного символа создается одно состояние в распознающем конечном автомате, соответствующее множеству состоя- ний в недетерминированном распознающем конечном автомате, которое могло бы быть достигнуто после поступления этого входного символа. Затем это множество со- стояний сохраняется наряду с информацией о состоянии распознающего конечного автомата, чтобы была предусмотрена возможность использовать эти данные в ходе дальнейшего развертывания. Процесс повторяется до тех пор, пока не будут рассмот- рены все состояния распознающего конечного автомата (листинг 40.3). Листинг 40.3. Преобразование недетерминированного распознающего конечного автомата в детермини- рованный с использованием подмножества алгоритма конструирования create the start state in the FSA associate it with the subset of start states in the NFSA while there is an unmarked state in the FSA scan the corresponding subset of NFSA states for each unique input that can trigger a transition find the corresponding subset of states in the NFSA create a new FSA state associated with this subset connect it the current state to this new one end for mark this state end while Такая же процедура может применяться и для преобразования недетерминиро- ванных порождающих конечных автоматов, при условии что их выходные данные являются детерминированными. Если это условие не соблюдается, то рассматри- ваемый алгоритм не позволяет создать окончательную детерминированную модель. В таком случае лучше всего попытаться устранить указанные проблемы вручную или применить способ недетерминированного моделирования конечного автомата. Обсуждение полученных результатов Подход, основанный на понятии недетерминированности, позволяет упростить процесс создания распознающих и порождающих конечных автоматов. Такая воз- можность появляется благодаря использованию менее строгого определения, что позволяет задать несколько неоднозначных переходов в расчете на каждый входной символ, а также применить е-переход, если не требуются какие-либо входные сим- волы. Например, объединение двух конечных автоматов (например, в целях комби- нирования и расширения форм поведения) может осуществляться путем задания простого е-перехода между соответствующими состояниями. После этого с помо- щью любого подходящего алгоритма полученный недетерминированный порож- дающий конечный автомат может быть преобразован в детерминированный. Процесс моделирования недетерминированных конечных автоматов может ока- заться более медленным, поскольку потенциально количество активных состояний может возрастать по экспоненте. Аналогичным образом в наихудшем случае при преобразовании недетерминированных распознающих конечных автоматов в детер- минированные количество общих состояний может увеличиваться взрывообразно, т.е. экспоненциально, хотя на практике это происходит редко. Наконец, задача об-
^ataHaus^k Глава 40. Недетерминированные конечные автоматы 611 работки недетерминированных выходных данных порождающих конечных автома- тов может оказаться довольно трудоемкой, поэтому, как правило, для этой цели применяются вероятностные порождающие конечные автоматы. Разработчики игр еще не оценили преимущества недетерминированного подхо- да, поскольку он до сих пор не применяется в игровых средствах ИИ. Для проекти- ровщика основное преимущество этого подхода заключается в том, что он упрощает моделирование. Рассмотрим ситуацию, в которой необходимо создать распознаю- щий конечный автомат, чтобы он отличал противников от товарищей по команде. Часто проще всего создать два небольших распознающих конечных автомата для каждой задачи (распознавания противников и товарищей по команде). После этого с помощью е-перехода можно без каких-либо затруднений соединить эти два конеч- ных автомата. Затем для повышения эффективности полученный результат может быть преобразован в стандартную детерминированную модель. Недетерминирован- ный подход позволяет достичь наилучшего компромисса между простотой проекта и эффективностью работы на этапе прогона. В качестве еще одного примера можно указать, что удобно было бы спроектировать отдельно формы поведения “пополнить запас” и “избежать боевого столкновения”, после чего воспользоваться недетерми- нированным подходом для их объединения. ПРИМЕЧАНИЕ Недетерминированный подход позволяет реализовать многие преимущества иерархических порож- дающих конечных автоматов с помощью стандартного представления и алгоритма моделирования. Концепции иерархической организации могут быть промоделированы с помощью е-переходов, после чего достаточно исключить все формы недетерминированности с использованием подходящего алго- ритма; в результате этого, по существу, модель с иерархической структурой превращается в обычный конечный автомат. Этот метод разработки может быть осуществлен с помощью эффективной проце- дуры, применяемой на этапе создания версии производственного назначения. Вероятностные конечные автоматы Все модели конечных автоматов, которые рассматривались до сих пор, фактиче- ски были детерминированными. Дело в том, что даже недетерминированные моде- ли, как оказалось, представляют собой лишь более компактные версии детермини- рованных моделей. Тем не менее в играх часто требуется хоть небольшое разнообра- зие; случайные формы поведения, введенные в действие намеренно, могут оказы- вать положительный эффект, позволяя добиться большей реалистичности. Присваивая значения вероятности переходам или выходным данным, можно ис- пользовать порождающие конечные автоматы для оценки правдоподобия появления входной последовательности или (что встречается на практике более часто) для вы- работки случайных последовательностей выходных данных. Определения Математические основы вероятностных конечных автоматов, и распознающих, и порождающих, тесно связаны с другими областями математики, в частности, со статистикой. Информация по этой теме также будет представлена в настоящей книге, поскольку общее описание только выиграет от более полного освещения тео- ретических основ.
612 Часть VI. Эмоции Марковские цепи Вероятностный распознающий конечный автомат (Probabilistic Finite-State Auto- maton — PFSA) может рассматриваться как марковская цепь. Марковская цепь пред- ставляет собой последовательность случайных событий (формально называемую сто- хастическим процессом), обладающую определенным свойством— правдоподобие события, происходящего в последнюю очередь, полностью зависит от предыдущей по- следовательности. Отличительной особенностью марковской цепи первого порядка является то, что для определения вероятности следующего события требуется только единственное прошлое событие; такая марковская цепь называется также цепью, оп- ределяемой состоянием. Марковские цепи более высокого порядка принято также на- зывать цепями, определяемыми хронологией, поскольку в них для моделирования ве- роятности следующего события используется информация о большем количестве прошлых событий, а не только об одном событии. Для нас интерес представляют марковские цепи первого порядка, поскольку они могут рассматриваться как распознающие конечные автоматы с вероятностями, свя- занными с каждым из переходов (рис. 40.3). Придерживаясь определений, подобных тем, которые применялись при описании рассматриваемых выше распознающих конечных автоматов, можно предложить следующую формулу: PFSA = {I,Q,F,5} И в этой формуле X — входной алфавит, Q — множество состояний, a F — под- множество поглощающих состояний; 6 по-прежнему рассматривается как функция перехода, но связывает пары “состояние-входные данные” со следующим состояни- ем и вероятностью: 5 : QxL->QX [0,1] (qt«Ot)a (qt+i» p(Qt+i)) |-> (Qt,Gt) e QxE, p(qt+i) 6 [0,1] При анализе приведенной выше формулы необходимо учитывать условия, рас- пространяющиеся на каждое состояние qt. Сумма вероятностей p(qt+1) (которые относятся к исходящим переходам) для всех возможных вариантов входных данных st должна быть равна 1. Если дело обстоит иначе, то вероятности могут быть по- вторно нормализованы (т.е. разделены на сумму вероятностей): |-> at : Z p(qt+i)=i Ot Чаще всего в качестве S применяется функция, а это, по существу, равносильно рас- ширению детерминированной модели распознающего конечного автомата. Но в случае необходимости S может рассматриваться как отношение, и в таком случае можно преду- смотреть использование нескольких переходов из любого состояния в расчете на одни и те же входные данные. При использовании такого способа моделирования или представ- ления не должны возникать какие-либо догюлнительшje проблемы в ходе реализации.
^alallausfek Глава 40. Недетерминированные конечные автоматы 613 переходов Рис. 40.3. Вероятностный распознающий конечный авто- мат и более простой порождающий конечный автомат Скрытые марковские модели Вероятностный порождающий конечный автомат может интерпретироваться как скрытая марковская модель. Скрытая марковская модель (Hidden Markov Model — HMM) напоминает марковскую цепь тем, что в ней применяются вероятностные переходы. Но скрытая марковская модель является более сложной, поскольку в ней как стохастические рассматриваются также выходные данные. С формальной точки зрения, вероятностный порождающий конечный автомат может быть определен следующим образом: PFSM = {I,Q,Z,8,A} И в этом случае большинство термов в определении остаются идентичными мар- ковским цепям. Еще раз напомним, что Z — выходной алфавит, а А, — выходное от- ношение. (Следует подчеркнуть, что А — отношение, поскольку количество выход- ных данных в расчете на каждую пару “состояние-входные данные” больше едини- цы.) Поскольку определение 8 было дополнено с учетом вероятностей, то же самое необходимо сделать применительно к А: 6: QXZ->QX[O,1] (Qt,Gt) a (zt+i, p(zt+i)) |-> (qt.Gt) € QxZ, p(zt+i) 6 [0,1] В данном случае сумма вероятностей для каждой из возможных пар (qt, ot) так- же должна быть равна единице. Благодаря этому обеспечивается единообразие в уче- те вероятностей (этой цели можно также достичь с помощью нормализации): X p(zt)=l (Qt»Ot) Приведенное выше определение позволяет использовать широкий набор алгорит- мов для извлечения информации из рассматриваемой модели. Кроме того, сформиро- ванная модель позволяет вырабатывать некоторые образцы выходных данных. Алгоритмы Эксплуатация вероятностных моделей, основанных на использовании конечных ав- томатов, осуществляется с помощью двух основных способов: один из них применяется для вычисления вероятностей, а другой — для выработки псевдослучайных символов.
614 Часть VI. Эмоции Оценка полученных результатов Из описанного выше следует, что для вычисления вероятности появления дан- ной конкретной последовательности может использоваться определенный алгоритм. Такой метод может применяться в аниматах, например, для вычисления шансов на успех. Принимая каждый из входных символов, можно перемножить значения веро- ятности, относящиеся к каждому переходу, чтобы определить общую вероятность появления данной последовательности. Выработка псевдослучайной последовательности Можно также предусмотреть выполнение случайного обхода графа, выбирая ка- ждый переход с учетом его вероятности. Этот способ позволяет найти общий подход к выработке рандомизированных форм поведения несобственных персонаже#. Если неизменно учитываются заданные значения вероятности, то сформированные по- следовательности становятся типичным примером распределения для марковской цепи (т.е. становятся последовательностями, представительными по отношению ко всем возможным последовательностям). Иными словами, если бы для вычисления значений вероятности осуществлялся сбор статистических данных, то были бы по- лучены такие же результаты. Обсуждение полученных результатов Задача моделирования и реализации вероятностных конечных автоматов являет- ся чрезвычайно простой. Но такие конечные автоматы дают возможность создавать очень интересные шаблоны исключительно за счет применения стохастического об- хода графа. В этом состоит идеальный способ оказания влияния на персонажей иг- ры, который вместе с тем позволяет персонажам время от времени проявлять разно- образие в их формах поведения. А что касается проектировщиков, то, как показыва- ет практика, вероятностные конечные автоматы позволяют создавать чрезвычайно мощные методы управления. Одним из недостатков этого подхода является то, что случайные формы поведе- ния не очень предсказуемы! Из этого следует, что попытки разработать или отладить необходимый порождающий конечный автомат могут оказаться трудоемкими. Веро- ятностные конечные автоматы подвержены также недостаткам, характерным для обычных моделей, особенно тем, что касаются ограниченных возможностей и вы- званы сложностями больших моделей. Резюме Как описано ниже, при разработке игр могут применяться различные дополне- ния к порождающим конечным автоматам. > Нечеткие порождающие конечные автоматы вносят в модели, основанные на использовании конечных автоматов, преимущества нечетких подходов. Эти подходы позволяют осуществлять гладкое управление и проводить рассужде- ния с учетом степеней истинности, что позволяет в некоторых случаях добить-
Глава 40. Недетерминированные конечные автоматы 615 ся повышения реалистичности. Наилучший способ моделирования нечетких порождающих конечных автоматов состоит в использовании нечеткой экс- пертной системы, хотя при этом теряется преимущество конечных автоматов, связанное с тем, что они могут быть легко созданы с помощью представления на основе графа. > Математическая модель недетерминированных порождающих конечных ав- томатов является менее строгой, а это означает, что с их помощью проектиро- вание порождающих конечных автоматов, предназначенных для использова- ния в игровых средствах ИИ, становится намного проще. Но после заверше- ния проектирования необходимо воспользоваться определенными инстру- ментальными средствами, чтобы преобразовать недетерминированный порождающий конечный автомат в его детерминированный аналог, посколь- ку в противном случае в автомате останутся неопределенные переходы. > Вероятностные модели могут использоваться для вычисления правдоподобия появления последовательностей или даже для выработки случайных последо- вательностей в соответствии со случайно выбранным шаблоном. В этом со- стоит самое простое и наиболее широко используемое дополнение к порож- дающим конечным автоматам, применяемое в компьютерных играх. В следующей главе рассматривается чрезвычайно мощный подход: иерархии по- рождающих конечных автоматов. Хотя теоретическая сложность порождающих ко- нечных автоматов в результате введения иерархий не увеличивается, иерархический подход позволяет намного проще моделировать формы поведения и функциональ- ные возможности. В главе 42, “Система, проявляющая эмоции”, дополнительные средства, представленные в этой и следующей главах, используются для создания лучшей системы, проявляющей эмоции, в результате применения которой аниматы становятся еще более похожими на живые существа. Практическая демоистрацжмиая версия Понятия, изложенные в этой главе, были применены для создания форм поведения и функциональ- ных возможностей анимата, получившего имя Masheen. Код этого анимата можно найти на Web-узле по адресу http://AiGameDev.com/. Анимат Masheen обладает некоторыми преимуществами по сравнению с обычными порождающими конечными автоматами, в частности, демонстрирует бо- лее плавное поведение и имеет более простой проект.

ftataltaus^k Глава 41 Иерархические КОНЕЧНЫЕ АВТОМАТЫ В ЭТОЙ ГЛАВЕ- • Краткий обзор • Иерархии • Семантика взаимодействии • Обсуждение полученных результатов • Резюме Задача реализации сложных форм поведения с помощью обычных порождающих конечных автоматов является трудоемкой. Тем не менее лю- бые сложные задания, как правило, можно раскла- дывать на более мелкие подзадачи. (Например, для ведения игры на выживание необходимо обладать способностями собирать предметы, нападать и за- щищаться.) Как показывает описание, приведен- ное в книге, подобный подход является характер- ным для любых архитектур ИИ в целом. Если речь вдет об использовании порождающих конечных автоматов, то объединение отдельных подзадач в более крупные задачи может рассматриваться как проектирование порождающих конечных автома- тов обычным образом с последующим их объеди- нением в уровни путем вложения одних конечных автоматов в другие. Такой процесс разработки мо- жет быть формализован на основе принципов аб- стракции и модульности, реализуемых с помощью иерархических порождающих конечных автоматов (Hierarchical Finite-State Machine— HFSM), что позволяет значительно уменьшить сложность рабо- ты конвейера разработки программных средств. Тем не менее введение иерархий не позволяет уве- личить вычислительную мощь системы. В настоящей главе рассматриваются пере- численные ниже темы. > Проблемы, связанные с использованием порождающих конечных автоматов, кото- рые могут быть устранены на основе ие- рархического подхода.
618 Часть VI. Эмоции > Различные типы иерархий, обычно применяемые в сочетании с порождаю- щими конечными автоматами, в том числе вложенные состояния и вложен- ные порождающие конечные автоматы. > Семантические методы, позволяющие формализовать взаимодействие между уровнями в иерархии. Система моделируется согласно этим принципам. > Преимущества и недостатки иерархических порождающих конечных автоматов. Технология, представленная в этой главе, используется в следующей главе для усовершенствования модели эмоций анимата. Краткий обзор Иерархические конечные автоматы были созданы в целях устранения недостатков обычных порождающих конечных автоматов. Основной проблемой, связанной с ис- пользованием иерархических методов, является сложность представления. С помощью классических порождающих конечных автоматов трудно выразить понятия, содержа- щиеся в приведенных ниже примерах. > “В любой форме поведения, предусматривающей нападение на противника или бесцельное блуждание, необходимо предусмотреть стремительное бегство при появлении босса противника.” > “После броска ослепляющей гранаты переходите в режим уклонения!” > “Форма поведения, связанная с нападением, состоит из задач обнаружения, преследования и стрельбы по противнику.” > “Форма поведения, предусматривающая разбивку лагеря, не зависит от управ- ления оружием.” Порождающие конечные автоматы являются линейными, поэтому не позволяют выразить приведенные выше сложные понятия. На основании рассматриваемых примеров можно определить следующие четыре критерия [35]. > Кластеризация. Первый пример показывает, что для реализации заданного требования необходимо сгруппировать все состояния, относящиеся к нападе- нию и бесцельному блужданию. Создаваемые в результате этого составные со- стояния называются суперсостояниями. > Общие переходы. Во втором случае необходимо представить единообразный переход из любого состояния, который позволил бы переопределить указан- ную форму поведения. > Усовершенствование состояний. Некоторые формы поведения в порождающем конечном автомате определены как сочетания других, более простых дейст- вий. Примером этого является третий случай. > Независимость и ортогональность. Четвертый пример показывает, что компо- ненты системы не всегда должны быть непосредственно связаны.
^IdtalHaus^i Глава 41. Иерархические конечные автоматы 619 Первые три свойства могут быть выражены с использованием иерархической мо- дели. С другой стороны, последнее свойство касается степени распараллеливания и может рассматриваться отдельно. Иерархии Чтобы разобраться в работе иерархических порождающих конечных автоматов, необходимо вначале дать определение понятия иерархии. Иерархия — это ряд объ- ектов, собранных вместе на нескольких уровнях, которые, как правило, вложены друг в друга. Поскольку вложенные объекты находятся внутри других объектов, ие- рархии могут быть представлены в виде деревьев, в которых корневым узлом являет- ся верхний объект иерархии (рис. 41.1). Вложенные состояния Иерархическое дерево Рис. 41.1. Пример вложенных узлов и соответствующего дерева, представляющего иерархию В случае порождающих конечных автоматов иерархии могут быть определены как вложенные состояния или целые конечные автоматы. Практика показала, что способ трактовки иерархической структуры как структуры вложения позволяет пол- ностью разобраться в том, как воспользоваться различными преимуществами иерар- хических конечных автоматов (Hierarchical State Machine — HSM). Вложенные состояния Определение иерархических конечных автоматов, прежде всего, позволяет опре- делить состояния, вложенные в другие состояния. Состояния, поглощающие другие состояния, принято называть суперсостояниями. Введение суперсостояний не от- ражается на вычислительных возможностях порождающих конечных автоматов, по- скольку любые иерархические модели могут быть преобразованы в одноуровневые модели, в которых каждый переход становится явным. Но применение иерархиче- ского подхода во многих случаях приводит к созданию более простых моделей. Как правило, количество состояний в иерархическом конечном автомате не уменьшается по сравнению с одноуровневым конечным автоматом. Фактически, ес- ли учитывается также наличие состояний высокого уровня (т.е. суперсостояний), то
620 Часть VI. Эмоции общее количество состояний увеличивается. Иерархия, основанная на использова- нии суперсостояний, позволяет осуществлять абстракцию переходов (рис. 41.2). Рис. 41.2. Суперсостояние, которое определено как родитель- ское по отношению к трем вложенным состояниям, каждое из которых имеет один и тот же исходящий переход Переходы, которые являются исходящими из группы состояний, должны интер- претироваться как связанные с каждым из вложенных состояний (такие переходы принято называть обобщенными). И наоборот, входящие переходы перенаправляются только к конкретным состояниям. Группирование состояний с одними и теми же исходящими переходами позволя- ет сократить количество переходов. В этом состоит начальная интерпретация иерар- хии, на уровне состояний. Вложенные состояния воспринимают лишь определенное подмножество входного и выходного алфавитов. На практике преимущества таких вложенных состояний не ограничиваются строгими иерархиями; состояния, относящиеся к верхней части иерархии, не обяза- тельно должны быть взаимно исключающими. Вместо этого суперсостояния опре- делены как поглощающие стандартные состояния. Суперсостояния принято также называть состояниями and, поскольку исходящие переходы суперсостояний приме- няются ко всем вложенным состояниям. В целях сокращения количества переходов суперсостояния могут быть определены на базе произвольных областей порождаю- щих конечных автоматов. Иерархия конечных автоматов Иерархия может рассматриваться не просто как способ упрощения представления с помощью суперсостояний, а как способ функциональной декомпозиции. В частности, каждое вложенное состояние представляет собой компонент, обеспечивающий уни- кальные функциональные возможности. Внешний порождающий конечный автомат может собирать эти компоненты наиболее подходящим способом для предоставления необходимых функциональных возможностей. Абстракция Иерархический подход обеспечивает достижение различных степеней детализа- ции с помощью каждого из порождающих конечных автоматов. Отказавшись от ото- бражения более низких уровней дерева, можно исключить из рассмотрения подроб- ности основополагающей реализации. По существу, это позволяет создать абстракт- ное представление, не требующее учитывать всю сложность реализации. Такая опе- рация известна как уменьшение масштаба изображения (zooming out) (рис. 41.3).
Глава 41. Иерархические конечные автоматы 621 ^latatfaus,^ Рис. 41.3. Увеличение и уменьшение масштаба изобра- жения. Абстрагирование вложенного порождающего ко- нечного автомата осуществляется путем сокрытия бо- лее низких уровней иерархии, которые затем могут быть повторно раскрыты в случае необходимости Во многих случаях целесообразно рассматривать некоторое состояние как “черный ящик”, игнорируя компоновку вложенного порождающего конечного автомата. Этот подход способствует увеличению производительности в фазе проектирования. При создании порождающего конечного автомата высокого уровня предполагается, что не- которые функциональные возможности для определенного состояния уже реализова- ны, поэтому процесс их использования становится прозрачным. Как и аналогичный подход, применяемый в программировании, он требует четкого определения форм по- ведения, относящихся к состоянию, и средств, которые оно поддерживает. Усовершенствование После создания порождающих конечных автоматов высокого уровня необходимо перейти к истинному масштабу изображения каждого из состояний. Это позволяет раскрыть основополагающую реализацию, поскольку само состояние в результате уточнения преобразуется во вложенный порождающий конечный автомат. Если требования к какому-то состоянию слишком велики для того, чтобы их можно было выполнить с помощью простых процедур, то можно прибегнуть к мето- дологии усовершенствования, позволяющей развернуть это состояние незаметно для пользователя. А множество вложенных состояний может быть создано без осо- бых затруднений; при этом будет по-прежнему поддерживаться такое же результи- рующее поведение. Модульность Учитывая то, что иерархические конечные автоматы обладают двумя описанны- ми выше свойствами, можно прийти к выводу, что задача уточнения определения этих автоматов в целях использования данного определения для работы с модуль- ными порождающими конечными автоматами является несложной. По аналогии с объектно-ориентированным программированием, каждый порождающий конеч- ный автомат может рассматриваться как модульный компонент (рис. 41.4). Из этого следует, что подобный компонент может повторно использоваться в любом месте и на любом уровне иерархии.
622 Часть VI. Эмоции Модульный конечный автомат Рис. 41.4. Пример двух состояний, в которых повторно ис- пользуется один и тот же модульный порождающий конеч- ный автомат в качестве вложенного компонента В фазе проектирования такой подход, основанный на применении свойства мо- дульности, позволяет сохранять рабочие порождающие конечные автоматы в общей библиотеке и импортировать в модели по мере необходимости. С помощью этого подхода удобно также распределять рабочую нагрузку среди нескольких проекти- ровщиков средств ИИ. Разнородные вычислительные модели Одним из главных преимуществ этих иерархических моделей является гибкость. Аб- стракция и модульность проявляются на высоких уровнях, поэтому обеспечивается воз- можность использовать всевозможные и разнообразные модели вычислений в одном том же состоянии. Это — огромное преимущество, поскольку порождающие конечные ав- томаты плохо подходят для решения определенных задач (например, подсчета). На практике удалось успешно обеспечить интеграцию с порождающими конеч- ными автоматами некоторых моделей вычисления, связанных с конечными автома- тами (включая поддержку синхронных потоков данных, дискретных событий и ак- тивизируемых систем). Но в играх в составе процедур, связанных с состояниями, обычно используются другие методы ИИ, поддерживающие конкретные формы по- ведения, например системы, основанные на правилах, или сценарии. Семантика взаимодействия Чтобы иметь возможность моделировать компоненты в иерархии, необходимо сформулировать четкое определение понятия взаимодействия между вложенными состояниями. Это позволяет понять, что происходит в,следующих условиях.
^atafiaus^k Глава 41. Иерархические конечные автоматы 623 > В каком порядке происходит обработка состояний. > Как обрабатываются переходы на нескольких уровнях. При использовании обычных порождающих конечных автоматов возможность возникновения неоднозначности практически отсутствует. Поэтому надежный под- ход к моделированию состоит в том, чтобы прежде всего преобразовать иерархиче- ский конечный автомат в одноуровневый. В простейшем случае вполне определен- ным становится процесс пошаговой обработки состояний (особенно если при этом один за другим обрабатываются символы). К сожалению, при этом приходится отказываться от некоторых преимуществ ие- рархических конечных автоматов (таких, как абстракция и модульность). Кроме то- го, чтобы иметь возможность детерминированно преобразовать иерархическую структуру в одноуровневую, необходимо вначале определить сам процесс моделиро- вания иерархического конечного автомата. Различные способы моделирования ие- рархического конечного автомата рассматриваются в следующих разделах. Ведущий и ведомый Как правило, между двумя вложенными порождающими конечными автоматами устанавливается отношение “ведущий-ведомый”. Внешний порождающий конечный автомат выполняет роль ведущего, а вложенный порождающий конечный автомат — роль ведомого. При использовании такого отношения подразумевается, что порож- дающие конечные автоматы, находящиеся на более высоких уровнях иерархии, управ- ляются в ходе эксплуатации системы. В действительности ведущий порождающий ко- нечный автомат имеет возможность переопределять выходные данные ведомого. В ходе моделирования в первую очередь осуществляется моделирование ведомого конечного автомата, а затем — ведущего, т.е. переход по иерархии осуществляется снизу вверх (рис. 41.5). Это позволяет ведущему порождающему конечному автомату переопределять сформированные ранее выходные данные и активизировать пере- ход, ведущий из вложенного состояния. Рис. 41.5. Передача управления в иерархии, основанной на использовании конфигура- ции “ведущий-ведомый”. В первую очередь происходит моделирование работы ведо- мого конечного автомата, что позволяет ведущему переопределять выходные данные
624 Часть VI. Эмоции Если для передачи входных и выходных символов используется некоторый механизм, то конфликты возникают редко, поскольку все сообщения упорядочиваются и интерпре- тируются одно за другим. Если же в ходе эксплуатации иерархического конечного авто- мата возникает неоднозначность, он фактически становится недетерминированным и должен быть исправлен на этапе разработки проекта (или в дальнейшем, с использова- нием автоматизированной процедуры, описанной в главе 40, “Недетерминированные конечные автоматы”). Но применение процедурного подхода с жестко закодированны- ми сенсорами может стать трудоемким, даже если конечный автомат разрабатывается в рамках детерминированной модели. Дело в том, что переходы, относящиеся к разным уровням иерархии, могут активизироваться “одновременно”. . Тем не менее разработаны рекомендации, позволяющие устранить этот недоста- ток с использованием подхода “ведущий-ведомый”. Если возникает возможность конфликта (неоднозначности, связанной с тем, какое действие должно быть выпол- нено в первую очередь в процессе эксплуатации конечного автомата), то приоритет- ными становятся все переходы, которые влияют на работу ведущего конечного ав- томата. При этом в первую очередь формируются выходные данные, предусмотрен- ные в проекте ведомого конечного автомата, поэтому все изменения, касающиеся вложенных порождающих конечных автоматов, отбрасываются, если обнаруживает- ся переход в родительском порождающем конечном автомате. (Таким образом, дан- ный дочерний порождающий конечный автомат больше не будет активным.) Моделирование на основе стека В ходе моделирования информация об активном порождающем конечном автомате на каждом уровне может сохраняться в стеке. Наиболее общий порождающий конечный автомат (составляющий корень иерархии) находится в нижней части стека, а наиболее детализированный порождающий конечный автомат — в верхней части. Процесс увели- чения масштаба изображения с переходом в другое состояние может рассматриваться как операция “задвинуть в стек”, при которой в стек вводится еще один порождающий ко- нечный автомат. С другой стороны, процесс уменьшения масштаба изображения пред- ставляет собой операцию “выталкивания из стека”, поскольку введенный в последнюю очередь порождающий конечный автомат удаляется из стека, в результате чего происхо- дит возврат к родительскому конечному автомату. В фокусе находится тот порождающий конечный автомат, который в настоящее время располагается в верхней части стека (рис. 41.6). Один из распространенных под- ходов состоит в том, чтобы моделирование этого порождающего конечного автомата осуществлялось до тех пор, пока не будет сформировано решение о завершении рабо- ты. О том, что возникли условия завершения, можно судить на основании того, что достигнуто определенное состояние, или просто следить за выдачей конечным автома- том команды выталкивания, с помощью которой он удаляет себя из стека. Преимущество такого подхода состоит в том, что в одно и то же время требуется моделировать только один порождающий конечный автомат. Кроме того, нет ника- кой необходимости знать, сколько еще имеется уровней в иерархии или даже на- сколько велик сам стек. Тщательное проектирование позволяет гарантировать, что каждый конечный автомат будет способен удалять сам себя из стека.
^aiaflaus^ Глава 41. Иерархические конечные автоматы 625 Иерархия Рис. 41.6. Стек порождающих конечных автоматов и соответствующая иерархия. Ответственность за выталкивание себя из стека возлагается на порож- дающий конечный автомат, находящийся в фокусе Степени детализации На каждом уровне иерархии возникает дополнительная степень сложности; со- стояния уточняются до подсостояний, включая в себя результаты развертывания первоначального задания. Чем выше поднимается уровень иерархии, тем более дета- лизированными становятся формы поведения. В сообществе разработчиков игровых средств ИИ существует определенный ин- терес к решениям, основанным на использовании понятия степени детализации (Level-Of-Detail — LOD), поскольку такие решения позволяют варьировать качество форм поведения за счет применения различных вычислительных ресурсов (рис. 41.7). В схемах, основанных на применении понятия степени детализации, предполагается, что есть возможность оценить требуемую детализацию каждого не- собственного персонажа (NonPlayer Character — NPC). Обычно модификация сте- пени детализации осуществляется с учетом изменения расстояния до интересую- щего нас искусственного создания или с учетом его видимости. В методах, основан- ных на использовании степени детализации, указанные параметры (расстояние или видимость) рассматриваются как коэффициенты детализации, поэтому такие мето- ды должны обеспечивать возможность найти компромисс между качеством формы поведения и вычислительными издержками. 4 19.8 ----) Выталкивание ’ -?—) Выталкивание ---------117 Требуемая 2 / 7,2 ’ детализация ~1~ 3,5 О 1,0 Стек конечного Заданный автомата по умолчанию уровень Рис. 41.7. Регулирование значения показателя сте- пени детализации путем управления стеком поро- ждающих конечных автоматов
626 Часть VI. Эмоции Для этой цели относительно хорошо подходят иерархические конечные автома- ты. На этапе проектирования разработчик может вручную присваивать коэффици- енты детализации каждому конечному автомату (например, с учетом связанных с ним вычислительных издержек). А в процессе моделирования имеется возмож- ность следить за общей детализацией, реализуемой в иерархическом конечном авто- мате (т.е. отслеживать суммы всех значений коэффициентов детализации порож- дающих конечных автоматов, находящихся в стеке). В таком случае сравнение из- вестного значения коэффициента детализации с потенциальным значением, отно- сящимся к вложенному состоянию, позволяет принять решение о том, что следует заняться усовершенствованием состояния. Если степень детализации достаточно велика, то этап усовершенствования пропускается и используется более простая ап- проксимированная форма поведения. Управление коэффициентами детализации может также осуществляться заблаго- временно, что позволяет в случае необходимости осуществлять принудительные изме- нения детализации. Если некоторый персонаж уходит из виду, то, например, требуе- мая степень детализации может резко упасть. В этот момент может начаться выталки- вание порождающих конечных автоматов из стека и продолжаться до тех пор, пока степень детализации не будет соответствовать требуемой. Аналогичным образом со- стояния могут быть задвинуты в стек, если внезапно потребуется большая степень де- тализации. Но, к сожалению, обе эти операции, “задвигание” и “выталкивание”, мо- гут приводить к нежелательным последствиям. Как оказалось, этому методу, основанному на использовании стека, свойствен один недостаток, который обусловлен потерей необходимых подробностей, а не является ат- рибутом самого метода. Поэтому наиболее сложная проблема связана с проектировани- ем и требует ответа на вопрос о том, является ли вообще осуществимым решение, осно- ванное на использовании степени детализации, а если ответ на этот вопрос положителен, то как добиться корректного уменьшения степени детализации? Указанная проблема от- ражается также на формах поведения, созданных с помощью иерархических конечных автоматов с учетом степени детализации. Сообществу разработчиков графических средств потребовалось несколько десятилетий, чтобы добиться плавного изменения сте- пени детализации визуальных форм; по существу, уменьшить проявление эффекта “выталкивания” позволяет выбор правильного представления; особенно важно то, что благодаря этому появляется возможность создать методы непрерывного изменения сте- пени детализации. А что касается средств ИИ, то нужно будет еще проделать очень большой объем работы, поскольку отсутствует удобное единообразное представление, которое позволило бы учитывать все аспекты функционирования средств ИИ (в отличие от треугольников, применяемых в компьютерной графике). Одним из преимуществ иерархических конечных автоматов является то, что ко- нечный автомат может сам отрабатывать все изменения детализации, как показано на рис. 41.8. Каждое состояние может иметь структуру в виде двух вложенных со- стояний: одно из этих состояний соответствует остальной части иерархии, а другое является уникальным состоянием, обеспечивающим аппроксимацию реализуемой формы поведения. Изменения степени детализации могут рассматриваться как пе- реходы между этими двумя вложенными состояниями, в которых в качестве условия используется проверка порогового значения. Чтобы иметь возможность учитывать несовместимости в изменяющихся степенях детализации, эти переходы могут быть соединены с временными состояниями, позволяющими гарантировать корректное уменьшение (или добавление) объема информации.
Глава 41. Иерархические конечные автоматы 627 Полная детализация (иерархический конечный автомат) Рис. 41.8. Увеличение масштаба изображения при переходе к состоянию, способному самостоятельно осуществлять переходы, связанные с изменени- ем степени детализации. Эти два состояния соответствуют полной дета- лизации и аппроксимации, а промежуточные состояния обеспечивают кор- ректное уменьшение объема информации. Приведенную схему можно допол- нить, чтобы обеспечить обработку нескольких степеней детализации По существу, плавное регулирование степени детализации с помощью иерархи- ческого конечного автомата может обеспечиваться при соблюдении приведенных ниже условий. > Проектировщик может создать менее дорогостоящую аппроксимацию формы поведения с помощью вложенного порождающего конечного автомата. > Обеспечивается возможность создать две процедуры, которые будут отрабаты- вать переходы между двумя степенями детализации в каждом порождающем конечном автомате. > Если любой из аспектов функционирования средства ИИ или игровой обста- новки становится несовместимым в результате внесения таких изменений, то, возможно, подход, основанный на использовании иерархических конечных автоматов, является неприемлемым. Семантика, определяемая пользователем Работа с иерархическими конечными автоматами осуществляется относительно просто, если процесс моделирования достаточно хорошо определен. В предыдущих разделах фактически была описана наиболее широко применяемая семантика взаи- модействия. Но эти подходы не всегда могут быть наиболее приемлемыми. В таких случаях приходится затрачивать дополнительное время для определения взаимодей- ствий внутри иерархического конечного автомата, чтобы не сталкиваться в даль- нейшем с неприятными сюрпризами.
628 Часть VI. Эмоции Одним из удобных способов правильного выполнения этой работы является соз- дание абстракции применительно к внутренней обработке в каждом состоянии. Именно этот подход используется при создании разнородных иерархических конеч- ных автоматов. По существу, каждое состояние предоставляет функцию, позволяю- щую выполнить один шаг в процессе эксплуатации, которая должна через конечный промежуток времени возвратить управление. При этом может быть снова воспроизведена вся семантика, описанная в предыду- щих разделах, но этот подход позволяет также вместо предложенных ранее методов вставлять алгоритмы обработки, определяемые пользователем, как описано ниже. > В подходе, основанном на использовании ведущего и ведомого конечных ав- томатов, вначале осуществляется шаг, связанный с переходом к ведущему ко- нечному автомату, а затем происходит само моделирование (при этом в случае необходимости переопределяются переходы). > В подходе, основанном на использовании стека, просто осуществляются шаги, связанные с переходом к ведомому конечному автомату, до тех пор, пока не дос- тигается порождающий конечный автомат, находящийся в фокусе (в верхней части стека). > В подходе, в котором учитывается степень детализации, шаги, связанные с пе- реходом к вложенному порождающему конечному автомату, осуществляются только в том случае, если коэффициент детализации имеет значение ниже по- рогового. Таким образом, задача создания абстрактного представления для всех этих видов обработки является несложной. Достаточно лишь определить базовый класс порож- дающего конечного автомата, предусмотрев при этом функцию осуществления ука- занного шага. Чтобы создать определяемую пользователем семантику иерархиче- ского конечного автомата, необходимо переопределить шаг, заданный по умолча- нию, и провести с вложенными состояниями необходимые манипуляции. Обсуждение полученных результатов Безусловно, в некоторых компьютерных играх уже использовались типичные ие- рархические конечные автоматы, но эти модели еще не нашли достаточно широкого распространения. Возможно, это, скорее, обусловлено неправильным толкованием используемой терминологии, а не чем-либо иным. В частности, получили извест- ность сочетания порождающих конечных автоматов с другими вложенными струк- турами (например, системами, основанными на правилах, или сценариями), но их нельзя рассматривать как полностью отвечающие определению иерархических ко- нечных автоматов. Преимущества Иерархические порождающие конечные автоматы действительно позволяют реа- лизовать все возможности порождающих конечных автоматов. Применение модуль- ного подхода для уменьшения сложности проекта позволяет буквально творить чу-
Глава 41. Иерархические конечные автоматы 629 деса, учитывая также то, что модули, в свою очередь, упрощают процесс разработки. Благодаря использованию иерархий становится осуществимым создание сложных порождающих конечных автоматов с помощью графических инструментальных средств. А в процессе постепенного воплощения форм поведения неоценимые пре- имущества дает возможность детализировать состояния, преобразуя их во вложен- ные порождающие конечные автоматы. Сама эта вычислительная модель является чрезвычайно гибкой. Любое состояние может рассматриваться как абстрактный компонент, что позволяет осуществлять в этом состоянии моделирование его внутренней иерархии, если это потребуется. С использованием этого метода можно относительно просто реализовать опреде- ляемую пользователем семантику взаимодействия между вложенными состояниями. Недостатки Тем не менее, иерархические конечные автоматы могут становиться весьма слож- ными (по тем же причинам, что и программное обеспечение), хотя сам этот подход, по-видимому, позволяет проще всего справляться с такой сложностью. Но если моде- ли становятся слишком большими, то отладка может оказаться весьма трудоемкой. Безусловно, определения иерархических конечных автоматов могут разрабаты- ваться вручную, с помощью текстового редактора, но более усовершенствованные способы разработки должны быть, главным образом, основаны на применении гра- фических интерфейсов пользователя, причем даже в большей степени, чем при про- ектировании обычных порождающих конечных автоматов. Всеми возможностями иерархической структуры трудно воспользоваться, не будучи в состоянии ее отобра- жать и совершенствовать с помощью визуальных инструментальных средств. Что же касается самой реализации, то чрезвычайно важно определить взаимодей- ствие между состояниями в иерархии. Дело в том, что все еще не исключена воз- можность возникновения непредвиденных событий, особенно если в качестве пере- ходов используются собственные функции (т.е. реализуется процедурный, а не дек- ларативный подход). Такие проблемы часто встречаются и при эксплуатации обыч- ных порождающих конечных автоматов, но при использовании иерархических конечных автоматов они становятся еще более явно выраженными. Резюме Иерархические порождающие конечные автоматы превосходят по своим возмож- ностям обычные конечные автоматы, поскольку позволяют кластеризовать состояния, представлять общие переходы, уточнять состояния, которые являются слишком слож- ными для того, чтобы их можно было поддерживать с помощью одной процедуры, и даже создавать независимые компоненты. На практике указанные усовершенствова- ния могут быть реализованы с помощью разных подходов, как описано ниже. > С применением вложенных состояний, которые позволяют определять одни состояния в пределах других. К таким полученным в результате суперсостоя- ниям применяются обобщенные переходы.
630 Часть VI. Эмоции > Вместо вложения состояний применять вложенные друг в друга конечные ав- томаты, притом что различные порождающие конечные автоматы, участвую- щие в отношении вложения, относятся к разным уровням в иерархии. Для реализации такой системы необходимо определить семантику взаимодейст- вия. В соответствии с приведенным ниже описанием, семантика взаимодействия указывает, как передается управление от одного состояния к другому. > При использовании подхода, организованного по принципу “ведущий- ведомый”, вначале обрабатываются дочерние компоненты, а затем управле- ние передается в направлении к корню иерархии. Высокоуровневым конеч- ным автоматам предоставляется более высокий приоритет. > В процессе моделирования на основе стека обрабатывается только активный порождающий конечный автомат, который находится в верхней части стека. Смена активного конечного автомата происходит только после того, как ко- нечный автомат удаляет сам себя из стека. > В подходе, основанном на использовании понятия степени детализации, осу- ществляется обход иерархии с учетом порогового значения, а если требуется более высокая степень детализации, то уточняются формы поведения. Технология, в основе которой лежат иерархические порождающие конечные ав- томаты, является невероятно мощной и идеально подходит для разработки игровых средств ИИ. Иерархические порождающие конечные автоматы дополняют обычные порождающие конечные автоматы (методологию, относящуюся к числу наиболее широко применяемых для разработки игровых средств ИИ) и упрощают их проекти- рование. Безусловно, простые порождающие конечные автоматы не могут приме- няться для решения всех возможных задач, поэтому в случае необходимости их можно использовать в сочетании с разнородными иерархиями (или архитектурами средств ИИ). В следующей главе концепция иерархии используется наряду с дополнениями к порождающим конечным автоматам для создания реалистичных эмоций в аниматах. Практическая демонстрационная версия Разработан простой анимат, получивший имя Rarchy, в котором используются вложенные порож- дающие конечные автоматы для создания форм поведения, направленных на выживание. Задание верхнего уровня уточняется до подзадач, каждая из которых соответствует собственному модульно- му порождающему конечному автомату. Эту систему можно проще всего описать как дерево, пред- ставляющее иерархию, с которым можно ознакомиться в оперативном режиме по адресу http://AiGameDev.com/. Анимат Rarchy демонстрирует высокую производительность и легко обеспечивает явное управление.
ftalaHausjllk Гпава 42 Система, проявляющая эмоции Архитектура поддержки эмоций, описанная в главе 39, “Влияние эмоций”, послужила до- казательством применимости общих концеп- ций, но проявила существенные недостатки, связанные с наличием сугубо положительных или отрицательных ощущений и упрощенных эмоций. В следующих разделах показано, как улучшить эту разработанную ранее архитектуру с использованием дополнений в виде порож- дающих конечных автоматов, которые рассмат- ривались в двух предыдущих главах. Технические проблемы низкого уровня уст- раняются с использованием ощущений, осно- ванных на нечеткой логике, а также предусмат- ривается более широкое разнообразие эмоций и влияний. Сама архитектура дополняется в целях обеспечения возможности реализации непроиз- вольных поступков, которые являются проявле- нием кратковременных характерных форм поведе- ния. Чувства выражаются применительно к лич- ным отношениям, а настроения позволяют руко- водить на высоком уровне интеллектуальными формами поведения. В настоящей главе рассматриваются пере- численные ниже темы. В ЭТОЙ ГЛАВЕ- • Краткий обзор иерархической архитектуры • Моделирование чувств • Улучшенные ощущения • Накопление эмоций • Раскрытие эмоций с помощью непроизвольных поступков • Иерархии настроений • Оценка полученных результатов • Резюме > Описание архитектуры с точки зрения ее организации на высоком уровне, в котором указаны дополнения и усовершенствова- ния, касающиеся предыдущего прототипа. > Описание компонентов архитектуры, в ко- тором рассматриваются теоретические во- просы и уточняются практические детали.
632 Часть VI. Эмоции > Анализ компонентов средств ИИ, используемых для реализации этих проек- тов. При этом учитываются и дополнения к спецификациям, и определяемые пользователем функции. > Оценка действий анимата в реальной игре в целях ознакомления с результата- ми внесенных усовершенствований и проведения анализа используемой тех- нологии. К концу данной главы будут созданы аниматы, не только проявляющие интел- лектуальные активизируемые формы поведения, но и вырабатывающие реалистич- ные эмоциональные отклики на обычные ситуации. Краткий обзор иерархической архитектуры С формальной точки зрения, почти все рассматриваемые концепции могут быть смоделированы с помощью методов, основанных на использовании конечных авто- матов, как описано ниже; эти темы подробно раскрываются последовательно в по- священных им разделах. > Сбор воспоминаний осуществляется с использованием статистических данных. > Чувства выражаются с помощью недетерминированного автомата. > Ощущения представляются с применением модели нечеткого распознающего конечного автомата. > Эмоции выражаются с помощью нечетких порождающих конечных автоматов. > Выбор непроизвольных поступков осуществляется с применением вложенных вероятностных автоматов. > Настроения моделируются с помощью вложенных состояний. Система является иерархической, поскольку многие компоненты зависят друг от друга. Как показано на рис. 42.1, имеются также такие компоненты, которые вклю- чены в другие компоненты. Моделирование чувств Чувства связаны с категориями объектов, поэтому для аниматов требуется мини- мальный объем памяти, чтобы наделить их способностью “проявлять чувства”. В на- стоящем разделе основное внимание уделено описанию чувств других участников иг- ры, поскольку разные персонажи проявляют различные чувства, в отличие от объек- тов, достоинства которых, в основном, остаются постоянными. В результате реализа- ции такого проекта могут быть созданы восхитительные формы поведения, выходящие за рамки отдельной личности.
^atdHaus^k Глава 42. Система, проявляющая эмоции 633 Настроения Воспоминания Рис. 42.1. Общее представление системы как совокупности разнородных взаимодействующих компонентов Память об отношениях Участники игры испытывают эмоции (такие, как гнев или радость), находясь в не- посредственной близости друг от друга. Эти эмоции можно запомнить, чтобы в даль- нейшем иметь возможность выражать чувства (например, как усредненное значение степени проявленного гнева или радости). Но более компактное представление позво- ляет создать подход, предусматривающий хранение только основных фактов и форми- рование на их основе чувств с помощью неявного логического вывода. Этот подход по- зволяет вводить в действие чувства, которые не обязательно являются эмоциями. Сбор данных осуществляется с учетом выявленных статистических характеристик, хотя скользящие средние значения позволяют использовать информацию о тенденци- ях, изменяющихся в течение определенного времени (в отличие от стандартных сред- них значений, при использовании которых результаты в конечном итоге сходятся). Со временем накапливается информация, описанная ниже.
634 Часть VI. Эмоции > Ущерб, испытанный самим аниматом и причиненный противникам. > Количество сделанных выстрелов и полученных в ответ. > Значения и различия в значениях “счетчиков количества убийств”. Эта информация используется для измерения степени выражения отрицательных чувств (например, ненависти)/Вместо этого положительные чувства (например, влечение) базируются на постоянных свойствах, таких как принадлежность к опре- деленному полу. Такая информация достаточна для ведения игр на выживание, а ес- ли ее спектр потребуется расширить для запоминания других небольших подробно- стей, то эта цель может быть достигнута простейшим образом. Выражение чувств Аниматы могут быть подвержены четырем независимым чувствам: жалость, не- нависть, влечение и недовольство. Эти чувства можно относительно просто изобра- зить в формах поведения (особенно в играх на выживание), к тому же, они достаточ- но сильно отличаются друг от друга. Каждое чувство выявляется с помощью отдельного распознающего конечного ав- томата. В этом распознающем конечном автомате используются собранные данные об участниках игры для принятия решения о том, каковыми являются чувства анимата. Например, чувство жалости активизируется при обнаружении крупных различий в ко- личестве побед по сравнению с количеством поражений, а если противники стреляют особенно точно, то вместо этого возникает чувство ненависти (т.е. относительное ко- личество выстрелов, приведших к появлению ущерба, достаточно велико). Вместо использования отдельного представления для каждого распознающего ко- нечного автомата, все они для удобства группируются в один крупный недетермини- рованный распознающий конечный автомат. Недетерминированный подход позволя- ет очень просто осуществлять слияние различных автоматов, используя Е-переходы, как показано на рис. 42.2. Рис. 42.2. Четыре детерминированных распознающих конечных автомата, предназначенных для распознавания чувств, которые соединены в один недетерминированный распознающий конечный автомат
^atallau^k Глава 42. Система, проявляющая эмоции 635 Благодаря использованию этого механизма можно очень легко вводить в действие до- гкмнительные чувства. Распознающие конечные автоматы, относящиеся к вновь вводи- мым чувствам, могут моделироваться отдельно, а затем присоединяться к группе, охва- тываемой недетерминированным распознающим конечным автоматом, на этапе проек- тирования. После этого для исключения недетерминированности и создания вместо этого детерминированного распознающего конечного автомата может применяться ал- горитм конструирования подмножеств, описанный в главе 40, “Недетерминированные конечные автоматы”. Еще один вариант состоит в том, что с помощью этого алгоритма каждый недетерминированный распознающий конечный автомат может моделировать- ся отдельно, для поиска всех чувств. В этой главе чувства будут, главным образом, использоваться для выработки но- вых ощущений. Но в случае необходимости чувства могут использоваться и в других формах поведения, например для определения противника, с которым нужно всту- пить в сражение. Улучшенные ощущения Для определения ощущений в главе 39, “Влияние эмоций”, использовался про- стой распознающий конечный автомат. В связи с этим возникали проблемы, обу- словленные тем, что ощущения определялись как булевы значения. В настоящем разделе определение эмоций дополняется нечетким представлением и показано, как моделировать ощущения, вызванные сигналами, поступающими из источников, от- личных от внешней среды (например, вызванные чувствами и эмоциями). Многосторонние влияния Безусловно, основной причиной смены эмоций часто становятся восприятия, но настроение меняется также под влиянием других аспектов состояния рассматривае- мого существа. Тот же принцип, который распространяется на ощущения, может применяться для распознавания шаблонов в эмоциях и чувствах. Источником ощущений могут быть не только четкие, но и нечеткие значения. А сти- мулы и чувства фактически интерпретируются как булевы переменные. В следующем разделе показано, что эмоции также могут рассматриваться как нечеткие значения. Для поддержки всех этих типов духовной деятельности применяется единый подход, что приводит к созданию нечетких ощущений, плавно изменяющихся во времени. Следует отметить, что по крайней мере некоторые значения переходов должны быть нечеткими; в противном случае разрабатываемая модель становится особенно неэффективным чет- ким распознающим конечным автоматом. По сути дела, на ощущения влияют указанные ниже источники. > Стимулы, поступающие из внешней среды, перечисленные в табл. 37.2 (к ним от- носятся различные игровые события, как описано в главе 37, “Ощущения, эмоции и чувства”). > Четыре ощущения, определенные в предыдущем разделе. > Изменения в работе конечного автомата, моделирующего эмоции.
636 Часть VI. Эмоции Таким образом, используются ощущения, формируемые с учетом различных аспек- тов функционирования системы управления анимата, что способствует повышению точности моделирования и позволяет в принципе улучшить эмоциональные реакции. Формирование различных комбинаций ощущений Ощущения, которые используются в рассматриваемой модели, определены в табл. 37.1. К ним относятся удивление, предвидение, недовольство, влечение, смущение, открытие, боль и удовольствие. Эти ощущения моделируются как нечет- кие состояния конечного автомата, во многом подобно тому, как в его четком ана- логе, показанном на рис. 39.2. Другие промежуточные состояния также представля- ются с помощью нечетких переменных. Все указанные влияния (будь то вызванные восприятиями, эмоциями или чувст- вами) рассматриваются как переходы в нечетком распознающем конечном автомате. Все эти духовные явления моделируются с помощью конечных автоматов на основе единого подхода — главным образом, путем передачи сообщений, а не выполнения запросов. Предотвращение создания вырожденных конечных автоматов Четкая версия конечного автомата, лежащего в основе данного подхода, полно- стью определяется событиями. Активное состояние изменяется после обнаружения соответствующих стимулов. А после достижения поглощающего состояния происхо- дит автоматическая переустановка распознающего конечного автомата. Применение такого подхода в рамках нечеткой модели приводит к возникновению нескольких проблем, обусловленных самим применяемым методом моделирования; дело в том, что все состояния имеют определенную степень принадлежности, поэтому всегда должны учитываться. Из этого следует, что все переходы также должны рассматри- ваться одновременно. Таким образом, для обеспечения правильного функциониро- вания модели, в которой используется данная версия нечеткого распознающего ко- нечного автомата, необходимо принять некоторые меры предосторожности (например, следить за тем, чтобы все нечеткие значения не становились одновре- менно равными 0). В частности, могут быть предприняты указанные ниже действия. > Такое принудительное изменение начального состояния, чтобы ему соответ- ствовала полная степень принадлежности. > Поддержка начального состояния, а не поглощающих состояний (нечеткий эквивалент переустановки по бинарному условию). На интуитивном уровне можно понять, что высокие значения степени принадлежности как бы перете- кают из начального состояния в поглощающие состояния. Применение любого из этих решений позволяет обновлять нечеткий распознающий конечный автомат при получении информации о событии, согласующемся с условиями. Асинхронный подход может оказаться несколько несовместимым (поскольку результат зависит от полученных сообщений), поэтому создается впечатление, что наиболее при- емлемым вариантом является синхронный подход. В этом случае степень соблюдения условий перехода определяется за небольшой промежуток времени (с использованием сообщений), а моделирование нечеткого распознающего конечного автомата осуществ- ляется через регулярные интервалы.
Глава 42. Система, проявляющая эмоции 637 Накопление эмоций В прототипе, описанном в главе 39, “Влияние эмоций”, использовались в общей сложности четыре взаимно дополняющие эмоции. Рассматриваемые эмоции были взаимно зависимыми, поэтому увеличение количества применяемых эмоций приво- дило к экспоненциальному росту количества состояний в модели. Вместо этого в на- стоящем разделе каждая из эмоций моделируется отдельно, поэтому добавление эмо- ций приводит всего лишь к линейному росту количества состояний. В этой модели бу- дут использоваться эмоции, перечисленные в табл. 37.3 (см. главу 37, “Ощущения, эмоции и чувства”), а именно: гордость, стыд, страх, гнев, радость, сожаление, игри- вость и усталость. Взаимно дополняющие эмоции группируются в единственном нечетком порож- дающем конечном автомате, который действует в качестве накопителя, как показано на рис. 42.3. Как правило, конечные автоматы плохо подходят для использования в качестве накопителей, но благодаря применению нечетких состояний связанные с ними проблемы устраняются. Выходные данные рассматриваемого нечеткого по- рождающего конечного автомата сопоставимы с лингвистическими переменными нечеткой логики. Например, один порождающий конечный автомат может включать три нечетких состояния, два экстремальных значения и одну нейтральную эмоцию: игривость, усталость и скуку. Противоположность Сложная эмоция 1 Стыд Гордость Скромность Рис. 42.3. Две сложные эмоции, состоящие из трех пер- вичных эмоций. Ощущения приводят к изменению состоя- ния, а взаимно дополняющие состояния связаны с помо- щью нечеткого отношения “not” Каждое состояние в нечетком порождающем конечном автомате соединено с пе- реходами, активизируемыми под действием нечетких ощущений. Переходы могут быть представлены как нечеткие правила; целевое значение состояния выражается как результат применения функции MIN к исходному значению состояния и к вход- ному условию.
638 Часть VI. Эмоции Как и в случае нечеткого распознающего конечного автомата, используемого для моделирования ощущений, может наблюдаться также вырождение нечетких порож- дающих конечных автоматов. Одновременное использование и синхронного, и асинхронного подходов может привести к тому, что каждое из нечетких состояний станет равным 0, если не будут приняты никакие меры предосторожности. По ана- логии с приемами, описанными применительно к ощущениям, нечеткие перемен- ные, относящиеся к взаимно дополняющим эмоциям, могут быть связаны с нечет- кими правилами (и те, и другие определены как противоположные один другому). Раскрытие эмоций с помощью непроизвольных поступков В описанном ранее прототипе предусматривалось снижение качества восприятий и действий аниматов в соответствии с эмоциональным состоянием. Но эмоции часто изображаются в более явной форме, с использованием квазиподсознательных форм поведения (которые принято называть непроизвольными поступками). Например, не- собственный персонаж может подпрыгнул, от удивления, оскорбить противника сло- вами и жестами, помахать рукой партнеру или исполнить торжествующий танец. В системе, показанной на рис. 42.4, непроизвольные поступки активизируются эмоциями. После того как эмоциональное состояние принимает нечеткое значение, превышающее определенный порог, вызывается вложенный распознающий конеч- ный автомат. Этот компонент отвечает за принятие решения о том, какой непроиз- вольный поступок должен быть совершен, если только он вообще требуется. Рис. 42.4. Пример модели, в которой первичные эмоции могут быть связаны с вероятно- стным распознающим конечным автоматам для выбора непроизвольных поступков
^ataUaus^i Глава 42. Система, проявляющая эмоции 639 Вложенный распознающий конечный автомат является вероятностным. Он обес- печивает разнообразие выбора непроизвольных поступков и позволяет проектиров- щику сохранять контроль над тем, насколько часто должны применяться те или иные формы поведения (в среднем). Переходы определяются с учетом чувств (например, ос- корбление наносится только тому противнику, к которому анимат испытывает чувство ненависти) и последних по времени событий (например, анимат машет рукой товари- щу по команде сразу после того, как он обнаруживается). Сами непроизвольные поступки могут быть реализованы с использованием поч- ти любой методики, которая была описана до сих пор. Несмотря на сказанное, наи- более широко применяемыми являются системы, основанные на правилах, неболь- шие сценарии или даже собственный код C++. Иерархии настроений В описанном ранее прототипе были представлены только комбинации первич- ных эмоций. А в архитектуре, рассматриваемой в данной главе, понятия настроений выражены явно, с использованием отдельного компонента системы, создаваемого на основе порождающего конечного автомата. Настроения соответствуют определенным эмоциональным шаблонам, таким как осторожность, удовлетворенность, увлеченность, депрессия или агрессия. Каждое настроение соответствует одному из элементарных состояний порождающего ко- нечного автомата. Переходы между этими настроениями определяются сменой эмо- ций. Например, если анимат испуган, он становится осторожным; аниматы прояв- ляют агрессивность, испытывая гнев и сожаление; увлеченность становится резуль- татом игривости и радости; и т.д. Моделируя настроения на основе эмоций, следует помнить, что многие перехо- ды, особенно исходящие, аналогичны друг другу. В результате возникает компонов- ка системы, напоминающая блюдо спагетти, которая может быть упрощена на осно- ве понятия суперсостояний; дело в том, что переходы из суперсостояний относятся также к вложенным состояниям. Этот подход демонстрируется на рис. 42.5. В действительности настроения используются для хранения параметров, отно- сящихся к восприятиям и действиям, как и эмоции в главе 39, “Влияние эмоций”. Но настроения предназначены также для введения на высоком уровне поправок к активизируемым формам поведения. Например, настроения влияют на желания анимата: предотвратить ущерб в состоянии испуга, причинить ущерб в состоянии гнева или обойтись без насилия в состоянии счастья. Настроения определяют при- оритеты, но для создания форм поведения, в которых учитываются эти приоритеты, необходимы другие методы ИИ. В следующей части настоящей книги настроения используются для управления функционированием алгоритма обучения с подкреп- лением и создания форм поведения, которые адаптируются к желаниям почти опти- мально. А в данной главе проводится лишь подготовка к применению эмоциональ- ного аспекта эксплуатации систем, после чего создаются предпосылки для интегра- ции с формами поведения высокого уровня, которые будут описаны в части VII.
640 Часть VI. Эмоции Рис. 42.5. Пять настроений, которые определены как эле- ментарные состояния. На их основе созданы суперсостоя- ния, которые позволяют уменьшить количество переходов Практическая демонстрационная версия Для иллюстрации рассматриваемой системы, проявляющей эмоции, используется анимат Remote, исходный код которого вместе с рекомендациями по проведению экспериментов приведен по адресу http://AiGameDev.com/. Интеллектуальные формы поведения остаются такими же, как и в предыдущем примере, но субархитектура поддержки эмоций улучшена благодаря применению ие- рархического подхода. Анимат Remote демонстрирует чувства, основанные на воспоминаниях; испы- тывает ощущения, касающиеся его собственного эмоционального состояния, а также восприятий; кроме того, изображает непроизвольные поступки и демонстрирует улучшенное правдоподобие мо- делирования тела, не говоря уже о тех влияниях, которые оказывают настроения на формы поведе- ния высокого уровня. Оценка полученных результатов В модели, рассматриваемой в настоящей главе, наиболее существенным добавле- нием стали непроизвольные поступки, которые во многом повышают реалистич- ность действий аниматов. В отличие от этого, в большинстве игровых машин слу- чайным образом воспроизводятся различные циклы анимации для повышения раз- нообразия используемых по умолчанию форм анимации (например, анимат, стоя на месте, оглядывается вокруг). Непроизвольные поступки так же позволяют уйти от стандартных форм анимации, но приводятся в действие шаблонами более высокого уровня, обнаруживаемыми в состоянии анимата. Кроме того, непроизвольные по- ступки предоставляют уникальный шанс понять эмоциональное состояние несобст- венных персонажей, поскольку они намного легче становятся доступными для вы- явления по сравнению с неявно заданными параметрами восприятий и действий. Кроме того, ощущения и эмоции представлены с помощью нечетких автоматов, а из этого следует, что их проявления становятся гораздо более гладкими (например,
Nalattaus'iiik Глава 42. Система, проявляющая эмоции 641 ухудшение точности прицеливания под влиянием эмоций происходит постепенно). Это различие во время ведения игры заметить сложно, но сторонний наблюдатель, который внимательно следит за аниматами, может обнаружить смену четко задан- ных эмоций, а смена нечетких эмоций не столь явно выражена. Вообще говоря, с точки зрения постороннего человека, наблюдающего за игрой, эмоции, проявляе- мые аниматами, неявно кажутся менее механистическими и немного более правдо- подобными. С формальной точки зрения, задача обеспечения должного функционирования нечетких конечных автоматов может оказаться сложной. Независимо от того, об- новляются ли значения нечетких состояний только после получения каждого сооб- щения о каком-то событии или на регулярной основе, всегда сохраняется риск того, что значения нечетких состояний станут равными 0. Для предотвращения вырожде- ния нечетких порождающих конечных автоматов приходится принимать определен- ные меры предосторожности, а для проверки их обоснованности и корректировки переходов должно проводиться всестороннее экспериментирование. Безусловно, качество реализации каждого понятия может быть повышено благо- даря использованию специализированных моделей (например, если нечеткий рас- познающий конечный автомат применяется для поддержки ощущений, а иерархи- ческий порождающий конечный автомат — для поддержки настроений), но, вообще говоря, недостатком этой системы является ее разнородность. Суть этого проекта можно было бы выразить с помощью более простой модели, в которой многократно реализовался бы один и тот же метод, основанный на использовании конечных ав- томатов, что позволило бы добиться дополнительного упрощения. Несмотря на ска- занное, описанные в данной главе разнообразные компоненты оказались чрезвы- чайно полезными в качестве средств проверки общих концепций, а также позволили продемонстрировать процесс создания все более и более сложных иерархических ар- хитектур. Резюме В настоящей главе показано, что моделирование эмоций может осуществляться с использованием иерархической системы, состоящей из разнородных компонентов, как описано ниже. > Воспоминания об отношениях сохраняются в виде скользящих средних зна- чений, соответствующих важным фактам. > Отдельные распознающие конечные автоматы, представляющие чувства, группируются с помощью недетерминированного конечного автомата, что по- зволяет упростить модель. > Ощущения моделируются в виде нечетких распознающих конечных автома- тов, но воспринимаются как активизируемые из нескольких источников. > Эмоции аналогичны нечетким лингвистическим переменным, хотя смены эмоций вызываются ощущениями.
642 Часть VI. Эмоции > Непроизвольные поступки активизируются с применением вложенных веро- ятностных автоматов, которые переходят в активное состояние после превы- шения определенного порогового значения. > Настроения моделируются как иерархические коллекции состояний, которые используются для уменьшения количества переходов. С точки зрения технической реализации, для осуществления этого подхода необ- ходимо решить несколько задач, в том числе указанных ниже. > Проектирование нечетких конечных автоматов может оказаться сложным, по- скольку при возникновении некоторых сочетаний событий может происхо- дить их вырождение. > Для настройки системы достаточно внести изменения в спецификацию, кото- рая допускает это, поскольку она является довольно гибкой, и вызвать проце- дуры, определяемые пользователем. > Вся система в целом несколько разнородна, и несмотря на ее преимущества, однородные системы могут позволить добиться лучшего компромисса между усилиями, затраченными на разработку, и достигнутыми результатами. В целом, система, проявляющая эмоции, повышает правдоподобность персона- жей (непроизвольные поступки) и позволяет добиться большей реалистичности смены эмоций (нечеткие модели). В следующей главе исследуется понятие, которое уже неявно эксплуатировалось в проекте системы, проявляющей эмоции: эмерджентные формы поведения. Эмерд- жентность выражается в том, что взаимодействие простых компонентов приводит к образованию сложных явлений в формах поведения. Понятие эмерджентности явля- ется особенно важным для разработчиков игровых средств ИИ, поскольку эмерджент- ные явления могут оказаться чрезвычайно мощными и вместе с тем опасными.
^ataHaus^k Гпава 43 ЭМЕРДЖЕНТНАЯ СЛОЖНОСТЬ Змерджентность — это тема, особенно попу- лярная в сообществах специалистов по ис- кусственному интеллекту и разработчиков игр. Эмерджентные явления особенно интересны, но все еще окружены каким-то ореолом загадочно- сти. Исследователи средств ИИ стремятся по- знать свойства эмерджентности, чтобы улучшить свои интеллектуальные системы, а проектиров- щики желают повысить развлекательность раз- рабатываемых ими игр. Наши интересы как разработчиков игровых средств ИИ лежат в области создания с примене- нием более простых методов более эффективных несобственных персонажей, которые тем не ме- нее проявляют более интересные формы поведе- ния. Удачным примером эмерджентной системы является реализация в системе, проявляющей эмоции, интеллектуальных возможностей, что позволяет вырабатывать весьма привлекательные сценарии. В настоящей главе показан практиче- ски применимый подход к изучению и воспроиз- ведению эмерджентных явлений. В настоящей главе рассматриваются пере- численные ниже темы. В ЭТОЙ ГЛАВЕ- • Определение эмерджентности • Эмерджентные формы поведения • Повышение содержательности среды и упрощение форм поведения • Осуществление принципов эмерджентности в функциональных возможностях • Резюме • Ретроспективный краткий обзор • Общие перспективы > Понятие эмерджентности, связанные с ним нюансы, а также различные типы эмерд- жентных явлений. > Наиболее широко распространенные при- меры применения эмерджентности в играх: проявление форм поведения на уровне ин- дивидуума и коллектива. > Одна из самых известных форм эмерд- жентности, связанная с привлечением более содержательных вариантов среды, предос- тавляющих функциональные возможности простым интеллектуальным созданиям.
644 Часть VI. Эмоции > Эмерджентность функциональных возможностей как общий случай, а также различные методы ИИ и современной программотехники, позволяющие ис- пользовать мощь хаоса. Прежде всего мы обязаны разъяснить понятие эмерджентности. Определение эмерджентности Задача формулировки определения эмерджентности может оказаться сложной, поскольку нелегко представить все интуитивно понятные примеры эмерджентности с помощью единственного определения на обычном языке. Одно из возможных оп- ределений приведено ниже, которое является достаточно приемлемым, хотя и чрез- мерно общим. Эмерджентность возникает, если в результате одновременного осуществления простых процессов, объединяемых несложным способом, обнаруживаются сложные явления. Ниже приведено несколько примеров, позволяющих лучше понять смысл опре- деления эмерджентности. В каждом из этих случаев реализация правил низкого уровня приводит к обнаружению новых явлений в формах поведения более высо- кого уровня. > Явления слитного движения, создаваемые стаями птиц, косяками рыб или группами велосипедистов. При этом в локальном масштабе отдельные экзем- пляры стремятся избежать столкновения друг с другом и вместе с тем держатся достаточно близко, но группы каким-то образом координируют свое движе- ние, плавно обтекая препятствия. > Явлением, возникающим в результате манипулирования генами, становится эволюция интеллекта, способствующая повышению шансов на выживание. > Из коллекций простых нейронов складываются нейронные сети, позволяю- щие распознавать образы более высокого уровня по сравнению с отдельными нейронами. > Повседневно совершаемые торговые сделки складываются в тенденции, кото- рые отражаются на всей экономике. > Стремления отдельных людей, управляющих своими автомобилями, выража- ются в сложившейся картине дорожного движения. Безусловно, приведенные выше примеры позволяют получить общее представление о том, что такое эмерджентность, но вместе с тем раскрывают недостатки приведенного выше определения. Эти проблемы рассматриваются в следующем разделе, а за ним нахо- дятся разделы, которые посвящены описанию различных типов эмерджентности. Пояснения и общее обсуждение Одной из тем, наиболее широко обсуждаемых в сообществе специалистов по ис- кусственному интеллекту, являются понятия, лежащие в основе эмерджентности [15].
^ataftaus^k Глава 43. Эмерджентная сложность 645 Цели проектирования На интуитивном уровне многие люди ассоциируют эмерджентность с явлениями, которые возникают неожиданно, как по волшебству. Если мы будем руководство- ваться таким определением, то при осуществлении проектировщиком попыток дос- тичь конкретного результата этот результат не появится чудесным образом. Эмерд- жентные явления возникают, только если они являются косвенным следствием про- екта и его целей. Любопытно отметить, что такая интерпретация подразумевает, что эмерджентным становится только впервые обнаруживаемое явление. Из того, что будет намеренно предпринята попытка воссоздать явление таким же образом, как и перед этим, следует, что это явление больше нельзя будет назвать эмерджентным. Например, можно рассматривать предотвращение столкновений с препятствия- ми как эмерджентный подход к реализации навигации. (При этом объединяются простые формы поведения, касающиеся выбора направления движения.) Но если цель заключается в том, чтобы обеспечить навигацию, то некоторые разработчики больше не рассматривают формы поведения, связанные с выбором направления движения, как эмерджентные. Выводимость Некоторое свойство системы можно рассматривать как эмерджентное только при том условии, что оно, во-первых, не является свойством подсистем и, во-вторых, не может быть выведено из других свойств. На этом этапе изложения материала мы сталкиваемся с проблемой, касающейся того, как объяснить понятие выводимости. В этом контексте эмерджентное свойство рассматривается как неочевидная комби- нация свойств, а не полностью доказуемый результат проявления этих свойств. Этому правилу подчиняется система, проявляющая эмоции, которая была опи- сана в главе 42, “Система, проявляющая эмоции”; дело в том, что невозможно вы- вести логическим путем сведения о том, как и когда будут проявлены настроения, но причины появления настроений можно понять, перейдя в соответствующее эмо- циональное состояние. Несократимость Эмерджентные системы часто рассматриваются как несократимо сложные, а это означает, что после удаления любого компонента явления высокого уровня исчеза- ют. После удаления какого-то компонента из эмерджентной системы должны на- блюдаться существенные изменения в обнаруживаемых явлениях. Если изменения становятся лишь незначительными, то компоненты объединены тривиальным спо- собом, и поэтому систему нельзя рассматривать как эмердженгную. Например, как несократимую можно рассматривать систему навигации, в кото- рой используется комбинация форм поведения, обеспечивающих следование вдоль стены и предотвращение столкновений с препятствиями, находящимися на пути к цели. После удаления любой из этих двух вспомогательных форм поведения приня- тый способ действий по организации навигации не позволит больше достигать про- извольно заданных местоположений.
646 Часть VI. Эмоции Сложность Создается впечатление, что для достижения эмерджентности требуется определен- ное увеличение сложности взаимодействия комбинируемых компонентов и оконча- тельно формируемой системы. В результате происходит скачкообразное увеличение сложности, а это означает, что попытка понять основополагающие правила на основа- нии изучения явления, сформировавшегося в конечном итоге, становится чрезвычай- но затруднительной. С точки зрения стороннего наблюдателя может оказаться проще понять, как таковые, явления высокого уровня (например, возникающие на уровне макроэкономики), но ему будет очень сложно разобраться в том, что происходит на более низком уровне. Типы эмерджентности С концептуальной точки зрения, в результате осуществления принципов эмерд- жентности возникают явления трех различных типов, описанных ниже. > Явления, для воспроизведения которых иным способом потребовалось бы ог- ромное количество ресурсов. > Явления, которые не могут быть созданы другим путем. > Эмерджентные результаты, которые не были предусмотрены во время проек- тирования. Достижение первых двух типов эмерджентности в играх весьма желательно; эмерджентность позволяет находить очень эффективные решения некоторых задач и предоставляет уникальные способы устранения сложных проблем. Возникновение эмерджентности третьего типа приводит к появлению новых творческих исходов в известных ситуациях, что может оказаться с точки зрения разработки игр и поло- жительным, и отрицательным. Чтобы иметь возможность воспользоваться всеми преимуществами эмерджентности, необходимо понять, каким образом она проявля- ется в играх. Эмерджентность может эксплуатироваться в играх по-разному, вклю- чая эмерджентные формы поведения и функциональные возможности. Эмерджентные формы поведения Наиболее распространенный тип эмерджентности обнаруживается в формах по- ведения на уровне индивидуума. В частности, как описано ниже, могут возникать эмерджентным путем простые действия. > Сочетания разрозненных действий образуют значимые формы поведения. > Последовательности независимых действий выливаются в сложные явления. Многие специалисты утверждают, что значительная часть самой тематики проек- тирования средств ИИ касается эмерджентности. В основной части компонентов архитектуры средств ИИ не учитывается существование других компонентов (в этом состоит свойство прозрачности); такие отдельные компоненты лишь обеспечивают формирование выходных данных. А после того как эти выходные данные собирают- ся воедино, обнаруживаются целенаправленные формы поведения.
^iaiaUaus^!. Глава 43. Эмерджентная сложность 647 Достижение цели в пространстве за счет активизируемых движений представляет собой пример эмерджентности, возникающей в результате осуществления последо- вательности действий (рис. 43.1). Применяемое при этом общее правило состоит в том, чтобы всегда стремиться к цели, избегая препятствий. Если необходимо сде- лать поворот в сторону от цели больше чем на 90 градусов, то в действие вовлекается форма поведения, предусматривающая следование вдоль стены, до тех пор пока цель снова не появится в пределах прямой видимости. Такой подход оправдывает себя в большинстве компоновок местности, но не во всех. Рис. 43.1. Эмерджентность целенаправленного дви- жения, в котором используются последовательно- сти простых активизируемых форм поведения Примером эмерджентности, возникающей в результате применения сочетания действий, может служить обстрел окружности. При этом двумя примитивными дей- ствиями являются перевод взгляда на противника и шаг в сторону. Как эмерджент- ное явление, создается окружность, охватывающая местонахождение противника, а это — идеальная ситуация для форм поведения, применяемых во время боя. Еще одним примером может стать система, проявляющая эмоции, описанная в предыдущей главе; сложные формы поведения не позволяют создать ни эмоции, ни интеллектуальные реакции, но будучи применяемыми в сочетании, они позволяют достичь правдоподобных результатов. Даже стратегии высокого уровня становятся результатом применения несложных тактических приемов. К таким приемам, например, относятся отступление в усло- виях превосходства противника, поиск необходимых предметов или оружия, а также нападение с элементами неожиданности. Даже такие активизируемые формы пове- дения могут во многих случаях сравниться по уровню сложности с заранее заплани- рованными тактическими комбинациями. Принципы эмерджентности распространяются не только на формы поведения отдельно взятых созданий, но и проявляются в коллективном поведении (причем эмерджентность чаще всего определяется именно так). Группы несобственных пер- сонажей с простыми формами поведения могут совместно выполнять сложные зада- ния. Например, муравьи особенно эффективно действуют в составе колонии. В иг- рах с единственным участником игры особенно трудно бывает бороться с противни- ками разных типов, действующими как одна группа, несмотря на то что можно по- бедить этих противников, отдельно взятых, очень просто.
648 Часть VI. Эмоции В крупных реалистичных мирах (например, в моделях небольших городов) среда становится настолько богатой, что каждый персонаж приобретает огромные воз- можности. Такие проекты открывают перспективы для создания очень интересных эмерджентных явлений, даже при использовании несобственных персонажей с не- изменными формами поведения. Такая ситуация может стать источником возник- новения определенных проблем для проектировщиков, поскольку результат может выражаться в виде полностью непредвиденных явлений, но некоторые явления бу- дут рассматриваться как следствия программных ошибок! С этой точки зрения чрезвычайно значительную помощь могут оказать принци- пы воплощения. Если проекты отдельных несобственных персонажей биологически правдоподобны, то явления высокого уровня, возникающие в ходе моделирования, скорее всего, будут реалистичными и поэтому приемлемыми. Повышение содержательности среды и упрощение форм поведения Предыдущий пример показывает, насколько важную роль играет среда при воспроиз- ведении эмерджентных явлений. Фактически в некоторых случаях сама среда становится причиной возникновения определенных явлений, например, как в игре Жизнь, разрабо- танной Конвеем [17]. Средой является сетка, которая позволяет определить вероятность выживания или гибели клеток в зависимости от наличия или отсутствия соседних кле- ток. Как показывает эта игра, результатом применения очень простых правил могут стать удивительно сложные явления, и стабильные, и хаотические. Инженеры по искусственному интеллекту могут использовать такие важные свойства среды для расширения функциональных возможностей создаваемых ими несобственных персонажей и упрощения проекта. В робототехнике уже давно поя- вилась тенденция к усовершенствованию мира испытательной среды, например, пу- тем проведения краской белых линий на полу или украшения стен материалами, способствующими улучшению характеристик датчиков. В результате этого роботы стали сравнимыми по своим возможностям с простыми средствами ИИ, что позво- лило применять в них менее мощные процессоры. А в настоящее время в робототехнических исследованиях наметилась тенденция к применению всеохватывающих вычислений, в соответствии с которой помещения заполняются миниатюрными взаимодействующими устройствами, сенсорами и ак- тюаторами (которые, например, обнаруживают открытые или закрытые двери или ставни, а также управляют освещением). Эти устройства взаимодействуют друг с другом и с локальными роботами, которые эмерджентно проявляют ожидаемые функциональные возможности, используя простые сигналы. А мы, проектировщики игровых средств ИИ, имеем прекрасную возможность ма- нипулировать виртуальными мирами в гораздо более простой манере, чтобы упростить для себя разработку синтетических персонажей. При этом необходимо лишь учитывать два различных аспекта: какая информация доступна и как ее предоставить.
^lahiHaus^ Глава 43. Эмерджентная сложность 649 Осуществимость Безусловно, не только любой объект может использоваться многими разными способами, но и различные участники игры используют одни и те же объекты по- разному. Для упрощения анализа связанных с этим ситуаций принято применять такую формулировку, что объекты предоставляют возможность осуществлять с ними различные действия. Например, дверь предоставляет возможность осуществлять действия по ее открытию, лестница позволяет на нее взобраться, а какой-то предмет позволяет себя поднять. В связи с этим психологи, изучающие проблемы восприятия, ввели понятие осу- ществимости [31, 32]. Согласно теории Гибсона, осуществимости — это отношения между деятелями и объектами. Эти отношения существуют в силу законов самой природы, независимо от того, можно ли их считать желательными, известными или даже доступными обнаружению [55]. Таким образом, осуществимости — это отношения, допускающие действия, по- этому они могут существовать только применительно к деятелям, которые способны выполнять действия над рассматриваемым объектом. Например, дверная кнопка по- зволяет осуществлять действие по ее нажатию только людям, но не большинству других млекопитающих. Поэтому осуществимости могут рассматриваться как кон- текстно-зависимые свойства. Идеи, изложенные в настоящем разделе, реализованы в такой игре, как Sims, в которой дома обставлены мебелью, сообщающей о своих свойствах. Каждый из аватаров (т.е. управляемых человеком игровых персонажей) может сразу же узнать, что делать с каждым из предметов в мире этой игры. Но еще более удобная особен- ность данного подхода состоит в том, что аватары точно знают, какие возможности предоставляет каждый предмет. Как и в случае роботов, помещенных в содержа- тельную среду, этот подход позволяет применять гораздо более простые средства ИИ, поскольку сама среда дает дополнительные подсказки, касающиеся ее функ- циональных возможностей. В этой игре несобственные персонажи имеют простые реакции, но опираются на дополнительную информацию, представленную в крат- кой форме, что позволяет в целом реализовать сложные интеллектуальные формы поведения. Совместное применение свойств осуществимости и функциональных возможно- стей для обращения с предметами мира игры способствует упрощению разработки, поскольку при этом исключается необходимость вычислять каждый раз одну и ту же информацию. Тем не менее для этого необходимо решить задачу предоставления нужной информации средствам ИИ. Восприятие и широковещательная рассылка Благодаря использованию понятия осуществимости упрощается обработка ре- зультатов восприятия в мозгу, поскольку прежде всего моделируются отношения между деятелями и объектами. Как и следовало ожидать, количество возможных реализаций указанного принципа весьма велико, но каждая из этих реализаций со- ответствует одному из способов организации данных: восприятие или широковеща- тельная рассылка.
650 Часть VI. Эмоции В одном из этих случаев аниматы интерпретируют свои восприятия и ассоции- руют полученные результаты с соответствующей информацией. Этот подход осо- бенно хорошо подходит, если участники игры обладают разными возможностями, и поэтому осуществимости д ля них различаются. Еще один вариант состоит в том, что игровая машина может производить широ- ковещательную рассылку информации об осуществимостях наряду с формировани- ем каждого из объектов. Этот подход является особенно приемлемым, если все уча- стники игры обладают одними и теми же способностями, поэтому все объекты име- ют для них равную осуществимость. Кроме того, и в этом случае весьма привлекательными являются также гибрид- ные решения. При этом либо аниматы могут извещать игровую машину о том, какие осуществимости им известны, либо игровая машина может производить широкове- щательную рассылку необходимых данных во время появления видимых объектов. При этом достигаются такие преимущества, как гибкость и удобство, а также обес- печивается реализация эффективного решения, не противоречащего принципам во- площения. Осуществление принципов эмерджентности в функциональных возможностях Вообще говоря, может быть достигнута такая цель, что функциональные возмож- ности будут выражены как эмерджентные явления, возникающие в процессе функ- ционирования систем. Чаще всего, если дано множество простых компонентов, со- единенных друг с другом, то результат функционирования созданной таким образом системы становится более сложным по сравнению с простой комбинацией результа- тов функционирования ее частей. Безусловно, это определение имеет несколько разных интерпретаций, но эмерджентными вполне могут оказаться алгоритмы, со- стоящие из нескольких взаимно независимых фаз. Остановимся та той точке зрения, что эмерджентность не может быть предсказана, поэтому невозможно изобрести алгоритм исключительно на основании теоретических знаний. Тем не менее мы будем исходить из предположения, что эмерджентность мо- жет быть заложена в проекте благодаря экспериментированию. Этот подход становит- ся более конструктивным, поскольку из него следуют два приведенных ниже вывода. > Разработчики имеют возможность воспользоваться принципами эмерджент- ности для нахождения решения задачи. > Эмерджентные явления поддаются корректировке. Если создаются сложные активизируемые системы (или формы поведения), то во многих случаях проявляемые ими функциональные возможности становятся эмерд- жентными в силу того, что этому способствует сам проект. Разработчики игровых средств ИИ могут воспользоваться эмерджентностью с помощью многих разных способов, поэтому приветствуется любая методология, которая позволяет извлечь пользу из хаоса. В некоторых системах возможность достижения эмерджентности находится под сомнением, но методологии, представленные в настоящей главе, одинаково применимы в обоих сценариях.
Глава 43. Эмерджентная сложность 651 Безусловно, сам интеллект живых существ представляет собой эмерджентное явле- ние, возникающее в результате действия несложных биохимических механизмов, по- этому многие полагают, что эмерджентными можно считать и сложные программы, в основе функционирования которых лежат простые команды компьютера. Взяв на воо- ружение этот программотехнический подход, можно добиться практического понима- ния того, как следует осуществлять разработку средств ИИ, в частности, как создавать простые активизируемые правила, выражающиеся в сложных формах поведения. Как описано ниже, сборка простых компонентов в системы, проявляющие слож- ные эмерджентные функциональные возможности, во многом относится к области применения инженерных знаний. > Архитектурные образцы подсказывают направление создания эмерджентных систем на основании концепций, которые с наибольшей вероятностью окажут- ся работоспособными. Например, для реализации эмерджентных явлений хо- рошо подходят и системы голосования, и архитектура обобщения, но исполь- зующий их разработчик не теряет возможности вносить нужные корректировки. > В основе методологий управления результирующими функциональными воз- можностями могут лежать методологии проектирования. Для создания средств ИИ идеально подходят динамические методы разработки, поскольку эти методы способствуют применению эволюционных подходов к проектиро- ванию, позволяющих использовать в процессе разработки всю мощь хаоса. На практике динамическая разработка основывается на описанных ниже прин- ципах (хотя эти принципы не обязательно ограничиваются эмерджентными явле- ниями). В приведенном описании подчеркиваются преимущества каждого принци- па с точки зрения его применения при создании средств ИИ. > В подходе к разработке, управляемом характеристиками, разработчик сосре- доточивается на наиболее важных характеристиках, которые желает получить заказчик вместе с готовой системой. При разработке игровых средств ИИ ос- новными заказчиками являются проектировщики, поэтому должны быть прежде всего реализованы характеристики, имеющие форму неявных средств управления, которые необходимо осуществлять немедленно. А во вторую оче- редь реализуются такие характеристики, как явные формы поведения, кото- рые требуются в конкретных ситуациях. > Подход, в котором предусматривается аттестация форм поведения на основе испытаний, гарантирует, что работа системы не будет нарушаться в результате добавления функциональных возможностей. Кроме того, этот подход обеспе- чивает также применение объективных показателей измерения степени го- товности системы. Может быть проверена любая форма поведения разрабаты- ваемого средства ИИ путем подготовки сценария взаимодействия с игровой логикой и ознакомления с результатом, как и при использовании эволюцион- ного подхода. Для прохождения испытания достаточно, чтобы степень при- годности была минимальной. > Цикл разработки, допускающий быстрые итерации, позволяет наращивать функциональные возможности системы инкрементно. Из этого следует, что применительно к разработке средств ИИ инженер может сосредоточиться на
652 Часть VI. Эмоции работе по последовательной реализации необходимых форм поведения, при- держиваясь принципов создания системы в рамках единой архитектуры (например, с одноуровневой структурой или с иерархической организацией). > В случае необходимости, широкое применение рефакторинга, позволяющего выделить общие функциональные возможности в каждой из форм поведения, после чего реализовать с помощью общих компонентов. Благодаря тому, что в первую очередь реализуются формы поведения, становится очевидным то, какие интерфейсы должны относиться к тем или иным компонентам. Приме- нение рефакторинга позволяет также обеспечить создание более качествен- ного кода, наглядного и удобного в сопровождении, который позволяет проще осуществлять отладку и доработку. Описанные выше процедуры рассматриваются как неотъемлемый атрибут эво- люционного проектирования. В таком случае какой-либо запланированный проект отсутствует, но функциональные возможности наращиваются постепенно, на осно- ве эмерджентных принципов. Многие считают, что самый мощный способ создания эмерджентных явлений — это сама эволюция, поэтому заимствование таких мето- дологий позволит нам, разработчикам игровых средств ИИ, воспользоваться всей мощью эмерджентности. Результатом применения эмерджентного подхода стано- вятся несобственные персонажи, состоящие из простых компонентов, которые взаимодействуют с простыми механизмами, но предоставляют сложные функцио- нальные возможности. Резюме Как описано ниже, в настоящей главе исследуется понятие эмерджентности, рас- сматриваются формы проявления эмерджентности в компьютерных играх и подчер- кивается ее важность. > Эмерджентность — это феномен, в результате реализации которого примене- ние сочетаний простых правил приводит к созданию сложных явлений. > На уровне интуитивного понимания эмерджентность рассматривается как связанная с явлениями, которые характеризуются как непредвиденные, невы- водимые, а также неприводимые, но отличаются повышенной сложностью. > Эмерджентность может оказаться единственно применимым способом созда- ния требуемых явлений наиболее эффективным образом или может приме- няться как средство поиска новых явлений. В соответствии со сведениями, приведенными ниже, в играх эмерджентность чаще всего выражается в формах поведения. > На уровне индивидуума эмерджентность может возникнуть в результате неза- висимого комбинирования действий или осуществления последовательности действий. > В несобственных персонажах могут проявляться и формы поведения, и стра- тегии.
'^alaHaus^k Глава 43. Эмерджентная сложность 653 > Преимуществом создания эмерджентных форм поведения становится, прежде всего, эффективность, поскольку в противном случае вместо них могли бы использоваться активизируемые формы поведения. > Один из наиболее широко распространенных способов использования эмерд- жентности состоит в том, чтобы сделать среду более содержательной. > В таком случае объекты в мире становятся связанными с функциональными возможностями и осуществимостями. > Если среда обеспечивает широковещательную рассылку информации о функ- циональных возможностях и осуществимостях, то из простых реакций несобст- венного персонажа могут складываться целеустремленные формы поведения. > Применение подхода, основанного на понятии осуществимости, позволяет значительно упростить проектирование средств ИИ. Наконец, как указано ниже, можно в целом поставить себе на службу свойство эмерджентности, применяя определенные принципы проектирования и методоло- гии, заимствованные из динамической разработки. > Проводить разработки, направленные на достижение заданных характери- стик, осуществляя исчерпывающее тестирование. > Итеративно применять ускоренные методы проектирования, каждый раз после этого выполняя в значительном объеме рефакторинг (дальнейшее усовершенст- вование достигнутых результатов с помощью определенной методологии). С применением принципов эмерджентности могут быть созданы сложные несоб- ственные персонажи на основе активизируемых форм поведения. Это позволяет до- биться огромных преимуществ с точки зрения разработки игровых средств ИИ, и методы, описанные в этой главе, безусловно, помогут инженеру по искусственно- му интеллекту справиться с этой задачей. Практическая демонстрационная версия Для иллюстрации идей, изложенных в этой главе, используется анимат, получивший имя Penguin. В этом анимате реализованы чрезвычайно простые средства ИИ, но после того, как в мир игры вво- дится большое количество таких аниматов, возникают интересные явления. Особенно заметно то, что эти аниматы собираются вместе, чтобы согреться, и держатся группами.

^ataHaus^k Часть VI Заключение В этой части показано, что применение для моделирования инстинктивных форм интеллекта обоснованной модели, проявляющей эмоции, вместо активизируемых методик, позволяет повысить правдоподобность. Аниматы в большей степени про- изводят впечатление живых существ и взаимодействуют с применением способа, ко- торый проще поддается идентифицикации. Краткий ретроспективный обзор После завершения этой части общая картина становится более очевидной, по- этому мы можем подвести краткие итоги. Методы В компьютерных игровых средствах ИИ очень широко применяются порождаю- щие конечные автоматы, и это вполне оправдано. Конечные автоматы не только до- пускают использование простых методов проектирования, но и могут быть очень эффективно промоделированы. Порождающие конечные автоматы позволяют реа- лизовать исключительно разнообразные методы управления, но особенно хорошо подходят для моделирования последовательностей событий. Порождающие конечные автоматы предоставляют возможности преобразователя (преобразовывающего входные данные в выходные). Тем не менее конечные авто- маты часто недооцениваются, несмотря на то что обладают способностью прини- мать и очень эффективно распознавать регулярные последовательности символов. В тех случаях, когда конечные автоматы не позволяют справиться с поставленной задачей или становятся слишком сложными, могут применяться некоторые расши- рения, обеспечивающие получение весьма эффективных решений. Недетерминиро- ванные модели позволяют очень просто создавать объединения многочисленных не- зависимых конечных автоматов. После этого, как правило, используются специаль- ные инструментальные средства для преобразования недетерминированной модели в детерминированную. С помощью вероятностных моделей к результатам добавля- ются изменения, сформированные на основе стохастических законов, что часто приводит к созданию интересных форм поведения. При этом и те, и другие типы расширений вносят лишь небольшие дополнительные вычислительные издержки или даже позволяют полностью избежать таковых.
Нечеткие конечные автоматы обладают такими же преимуществами над своими обычными аналогами, как и нечеткие экспертные системы над системами, основан- ными на четких правилах. В нечетких порождающих конечных автоматах каждое со- стояние задается с помощью нечеткой переменной, поэтому часто легче всего обес- печить их поддержку с помощью интерпретатора нечетких правил, а не дорабатывать компонент, основанный на использовании обычных конечных автоматов. Преиму- щества такого подхода вполне очевидны, но необходимо принимать в расчет вычис- лительные издержки. Иерархические порождающие конечные автоматы предоставляют два преимуще- ства. Они не только упрощают моделирование одноуровневых порождающих конеч- ных автоматов, но и позволяют применять вложенные компоненты. Иерархии могут создаваться с использованием разнородных компонентов, при условии что семанти- ка взаимодействия этих компонентов позволяет представить их отношения. Формы поведения Безусловно, интеллект является неотъемлемой предпосылкой создания успешно действующих аниматов, но эмоции позволяют существенно повысить их правдопо- добность. Поэтому создается впечатление, что эмоции должны быть одним из основ- ных компонентов компьютерных игр. Эмоции, вместе взятые, объединяются с интел- лектуальными возможностями, в результате чего возникают интересные эмерджент- ные явления. Виртуальные миры позволяют моделировать взаимодействие с миром игры почти безукоризненно, поэтому подход, который предусматривает снижение качества вос- приятий и действий, идеально способствует реалистичному отображению эмоций, а также позволяет варьировать эффективность в самих широких пределах. Посколь- ку модель проявления эмоций позволяет продемонстрировать вполне правдоподоб- ное поведение, создаются предпосылки того, что реакции анимата становятся весь- ма реалистичными. С другой стороны, если для отображения эмоций используются непроизвольные поступки, то ситуация изменяется еще более значительно, поскольку аниматы ста- новятся гораздо более похожими на живые существа. Непроизвольные поступки по- казывают, в каком настроении находятся искусственные создания, поэтому участ- ники игры начинают невольно идентифицировать себя с ними. Вообще говоря, такие формы поведения относятся к категории эмерджентных, и практика показывает, что эмерджентность — чрезвычайно перспективная концепция. В результате проявления эмерджентности активизируемые действия больше не выгля- дят как следствие целеустремленных, заранее запланированных форм поведения, по- этому кажутся участникам игры спонтанными. Благодаря использованию подходов, основанных на эволюционном проектировании и динамической разработке, шансы на достижение желаемых “эмерджентных” результатов значительно увеличиваются.
Общие перспективы Эмоции вносят в систему чрезвычайно важные усовершенствования, поэтому целесообразно встраивать средства их поддержки в любой новый интерфейс между сенсорами и эффекторами анимата (или между восприятиями и действиями). Важно также добиться того, чтобы различные (познавательные) компоненты в интеллекту- альной системе обеспечивали поддержку ощущений (например, чтобы анимат мог показывать свое удивление, обнаруживая объекты). Конечные автоматы используются в игровых средствах ИИ исключительно широко, и по многим причинам их целесообразно также использовать во вновь создаваемых иг- ровых средствах ИИ, особенно в качестве филогенетических (фиксированных) компо- нентов, позволяющих упростить управление системой. Поэтому в качестве упражнения для решения многих других задач, описанных в данной книге, можно также применить порождающие конечные автоматы. Тем не менее порождающие конечные автоматы являются весьма статичными; их недостатком является неспособность к обучению или адаптации. В части VII на- стоящей книги рассматриваются многие методы обучения с подкреплением, кото- рые фактически можно считать методами обучения порождающих конечных автома- тов. Эти методы обеспечивают корректировку весовых коэффициентов переходов с учетом положительных и отрицательных результатов обратной связи. Настроения, создаваемые с помощью иерархических порождающих конечных ав- томатов, используются для выработки решений высокого уровня. Данный подход разработан с учетом того, что люди часто руководствуются эмоциями для принятия общих решений, после чего используют свои интеллектуальные способности, чтобы претворить эти решения в жизнь. В следующей части показано, как направлять ра- боту алгоритмов обучения аниматов с помощью настроений.

fVaiaffaws^j Часть VII Выбор действия Это — последняя часть с практическими сведениями, в которой собраны наилучшие достижения по созданию адаптивных средств ИИ, описанные в предыдущих главах. Перед этим многие из существующих возможностей и форм поведения были реали- зованы в проектах как автономные компоненты, но они могут повторно использо- ваться в более сложной архитектуре. Результатом такой доработки становится ани- мат, который способен обучаться ведению игры и который большинство производи- телей игр с гордостью включили бы в свою игровую машину. Основные цели Общее назначение данной части состоит в подготовке приемлемых форм поведе- ния для участия в игре на выживание, которые основаны на каждом из описанных ранее компонентов. Безусловно, весьма хорошее впечатление производят заранее заданные активизируемые формы поведения, но применение адаптивных форм по- ведения позволяет постоянно держать участников игры в напряжении. Каждая из возможностей, разработанных до сих пор, была относительно узко на- правленной, позволяющей выполнять только конкретные задания. В этой части раз- личные возможности реализуются в виде компонентов высокого уровня, которые могут быть включены в общую архитектуру. В приведенных ниже главах будет пока- зано, как компоненты, являющиеся главным образом активизируемыми, приобре- тают весьма широкие возможности после их объединения. Как обычно, первый прототип не предназначен для усвоения путем обучения не- обходимых форм поведения; вместо этого он позволяет проектировщику определять стратегии для анимата. Во втором прототипе используется адаптивная методика обучения. В следующих главах дано описание преимуществ и недостатков этих мо- делей и проведено их сравнение. Краткое содержание > Глава 44, “Принятие стратегических решений”. Основное назначение этой гла- вы состоит в описании стратегий борьбы на выживание, а также в анализе ро- ли среды и игровой машины. После этого понятие тактики высокого уровня уточняется путем дополнения его вопросами принятия решений.
> Глава 45, “Реализация интеллектуальных тактических форм поведения”. В этой главе повторно используются возможности, описанные в предыдущих главах, для разработки ряда заданных по умолчанию тактических форм поведения. Для интеграции каждой из форм поведения в неразрывную структуру приме- няется проект архитектуры обобщения. В результате этого создается система, легко контролируемая проектировщиками и поэтому предсказуемая. > Глава 46, “Обучение с подкреплением”. В этой главе приведены теоретические сведения, лежащие в основе обучения с подкреплением, которое позволяет пре- одолеть ограничения созданного ранее прототипа и вместе с тем ввести в дейст- вие свойство адаптируемости. В этой главе приведено также подробное описа- ние других алгоритмов, применимых в разработке игр. > Глава 47, “Усвоение с помощью обучения активизируемых стратегий”. В этой главе показано, как применяются алгоритмы обучения с подкреплением для создания адаптивных форм поведения, направленных на выживание. Реше- ние такой задачи осуществляется модульным способом, путем декомпозиции стратегий на отдельные возможности, а не за счет повторного использования тактики, заданной по умолчанию. Благодаря такому подходу средства обуче- ния становятся более гибкими и мощными. > Глава 48, “Применение адаптивных форм поведения”. Эта глава основана на материале предыдущих глав и содержит описание того, как проектировать обучающиеся средства ИИ; она является последней в данной части и посвя- щена объяснению наиболее трудной задачи: применение адаптивных средств ИИ, которые обучаются во время игры. В главе представлены основные сове- ты и рекомендации, а также описаны ловушки, которых следует избегать. Исходные предположения Безусловно, формальные требования, приведенные в предыдущих частях, все еще остаются в силе, но, как описано ниже, принятые в этой части предположения относятся к более высокому уровню и в большей степени соответствуют характеру самой игры. > Для описания назначения игры используется сам алгоритм игры, а постав- ленная задача может непосредственно интерпретироваться аниматами. > Каждый анимат руководствуется рядом критериев (выраженных в виде на- строений), которые определяют то, чего стремится достичь анимат в игре. > Может быть предусмотрено соперничество аниматов друг с другом во время ведения игры, в целях проведения обучения и оценки. > Всем аниматам доступны основные возможности, которые могут быть при желании специализированы в целях создания различных вариантов. В первой главе этой части на этапе анализа указанные вопросы обсуждаются бо- лее подробно.
ftatailausjiik Глава 44 Принятие СТР А ТЕГИЧЕСКИХ РЕШЕНИЙ В ЭТОЙ ГЛАВЕ, • Игровая ситуация • Личные цели • Тактические формы поведения • Аниматы и принятие решений • Обучающая среда • Резюме После достижения цели реализации конкрет- ных возможностей основные усилия могут быть сосредоточены на создании форм поведе- ния более высокого уровня. В настоящей главе приведены основные сведения об этапах анализа и сбора информации, осуществляемых в процес- се разработки средств ИИ. Чтобы иметь воз- можность воспроизвести вручную формы пове- дения, свойственные для человека, а также раз- работать обучающиеся средства ИИ, способные адаптироваться к ситуациям борьбы на выжива- ние, необходимо глубоко разобраться в том, как осуществляется процесс принятия решений в контексте стратегий высокого уровня. При этом какая-либо необходимость опреде- лять спецификации интерфейсов к миру игры отсутствует, поскольку высшие уровни функ- ционирования средств ИИ зависят только от низших уровней, а не от сенсоров и актюаторов. В настоящей главе обсуждаются перечислен- ные ниже темы. > Основные факторы, влияющие на приня- тие тактических решений, которые отчас- ти используются для представления харак- теристик задачи. > Цели игры, и глобальные, и личные. > Основные компоненты тактических форм поведения, которые могут использоваться в различных сочетаниях. > Процесс принятия решений, применяе- мый в контексте определения стратегий. > Среда обучения, которая может использо- ваться для обучения и оценки.
662 Часть VII. Выбор действия К концу данной главы будут разработаны необходимые элементы, с помощью ко- торых вырабатываются готовые решения (а также обучающиеся средства ИИ, пред- назначенные для ведения игр на выживание). Игровая ситуация Принимая любое стратегическое решение в игре на выживание, участники игры должны учитывать многие аспекты мира игры. Понятия, лежащие в основе оценки ос- новных факторов и характеристик, более глубоко описаны в главе 22, “Условия борьбы”; в частности, к ним относятся вопросы принятия решений по выбору оружия. Наиболее важные факторы Наиболее важными для принятия решений являются те факторы, которые отра- жают ситуации, складывающиеся в борьбе, и позволяют ознакомиться с тем, как развивается сражение. Стратегические решения охватывают гораздо более широкую область по сравнению с выбором оружия, поэтому требуют учета дополнительных факторов, проявляющихся в ходе игры. Состояние участника игры Решения по своей природе часто являются очень субъективными. При этом на об- щий результат значительное влияние оказывают различные аспекты состояния участ- ника игры. Например, тактические решения могут приниматься с учетом степени жизнеспособности и уровня обеспеченности доспехами, а также с учетом наличия оружия и боеприпасов. В число факторов, влияющих на принятие решения, могут также войти данные о наличии в запасе других предметов, хотя и в меньшей степени. Состояние противника В играх на выживание любые стратегии не должны также игнорировать присут- ствие другого участника (участников) игры. На решение влияют визуально обнару- живаемые характеристики расположения противников, такие как их позиции или ориентации, поскольку они непосредственно отражаются на том, какова ситуация игрока в ходе данной игры. Важными факторами принятия решения могут также стать данные, характеризующие расположение участников игры в пространстве, на- блюдаемые признаки наличия оружия и оценка жизнеспособности. Компоновка окружающей среды На движение всех участников игры, а также поражающих элементов значительно влияют особенности местности. Мир игры, имеющий благоприятную компоновку, может прикрывать участников игры и защищать их во время бегства, но при неудач- но складывающихся обстоятельствах может также создавать для них ловушки и де- лать их уязвимыми. Выбор наилучшей тактики зависит также от расположения в пространстве различных объектов, представленных в мире игры. Поэтому решения высокого уровня как таковые должны учитывать роль среды.
^ataUausjik Глава 44. Принятие стратегических решений 663 Характеристики решения Итак, как уже было сказано, может потребоваться учитывать влияние различных факторов, в которых проявляются конкретные аспекты игры, но в качестве входных данных, на основании которых формируется решение задачи, прежде всего учиты- ваются значения заданных характеристик. В качестве характеристик рассматривают- сй относящиеся к делу фрагменты информации, необходимые для принятия наи- лучшего решения. Характеристиками, учитываемыми в ходе выработки решения, могут стать различные свойства среды, а также оценки складывающейся ситуации и хода развития самого сражения. Ряд характеристик может рассматриваться как массив значений с плавающей точкой, соответствующих интенсивности проявления отдельных характеристик: F = [flz f2,K, fn). Значения интенсивности легко поддаются толкованию, если они ограничиваются областью определения [ 0.. 1 ]; в таком случае они интерпре- тируются либо как вероятность, либо как правдоподобие (нечеткая степень истин- ности). При условии, что все используемые значения являются совместимыми, в процессе принятия решения может применяться любая интерпретация. Личные цели Глобальные цели игры устанавливаются в соответствии с проектом (например, уничтожить всех инопланетян, чтобы предотвратить вторжение, построить город и возглавить его руководящие органы). Это — нейтральные цели, которые форми- руют сущность игры. Игры часто проектируются так, чтобы можно было помочь уча- стникам игры в достижении этих целей, например, для этого используется вступи- тельное слово с описанием поставленной задачи, инструкция или встроенная справка. Но во многих случаях участнику игры предоставляется большая свобода выбора способа достижения поставленных целей (например, в играх со стрельбой от пер- вого лица игроку разрешается выбирать свой путь и оружие). Фактически некоторые игры позволяют игроку свободно передвигаться, не стремясь к достижению каких- то явных целей (например, таковыми являются модели крупных городов, наподобие тех, что используются в игре Grand Theft Auto Ш). Игроку всегда предоставляется оп- ределенная свобода в принятии решения о том, что делать и как это сделать. В этом и состоит суть привлекательности успешно созданной игровой обстановки. Для игроков-людей личная интерпретация целей игры часто определяется на ин- стинктивном уровне, как будто они являются движимыми чувствами. Интеллекту- альные способности позволяют участникам игры достичь своих личных целей, но обычно высший приоритет имеет стремление ответить на собственные эмоции. В предыдущей части было показано, как осуществляется моделирование настрое- ний высокого уровня (таких, как агрессия и удовлетворение). Из этих настроений мо- гут быть выведены желания и побуждения. Примеры, приведенные в табл. 44.1, служат основой для создания средств ИИ, обеспечивающих обучение с подкреплением, кото- рые будут разработаны в следующих главах данной части.
664 Часть VII. Выбор действия Таблица 44.1. Примеры настроений и соответствующих целей, которые влияют на формы поведения участника игры Настроение Личная цель Настороженность Оглянуться и исследовать обстановку Действовать медленно Предотвратить нанесение ущерба самому себе Удовлетворение Стремиться побыстрее закончить борьбу Вызвать значительный ущерб Быстро двигаться Агрессия Отказаться от стремления собирать доспехи или повышать свою жизнеспособность Собирать оружие и боеприпасы Стремиться причинить наибольший ущерб в секунду Увлеченность Использовать различные предметы и объекты Продлевать поединки Проявлять любопытство, искать новые звуки или сущности Депрессия Стремиться повысить вероятность уничтожения противника в долговременном плане Минимизировать действия Иногда даже останавливаться (устраивать привал) Личные цели могут рассматриваться на основе двух подходов, каждый из которых характеризуется различными уровнями абстракции. В частности, желания могут быть выражены, как описано ниже. > Критерии, используемые в средствах ИИ для вычисления пригодности такти- ческих решений вручную. > Применение функций пригодности, содержащих процедуру оценки форм по- ведения; этот способ осуществляется незаметно для участника игры самими средствами ИИ. Сами критерии могут рассматриваться как конкретный способ реализации функции пригодности. Еще раз отметим, что эта тема обсуждалась более подробно применительно к выбору оружия в главе 22, “Условия борьбы”. С точки зрения психологии, люди часто используют эмоции как средства коррек- тировки и оценки интеллектуальных форм поведения. Но этот процесс может рас- сматриваться не как одноуровневый, а как иерархический; для принятия решения о том, каким критериям необходимо следовать, может использоваться высокоуровневый компонент, иногда называемый процессом рефлексии. Иерархия — это способ приме- нения интеллектуального подхода для интерпретации и уточнения целей. В классиче- ских средствах ИИ уровни обычно ссютзегствуют алгоритмам планирования, но вме- сто них с таким же успехом могут использоваться активизируемые методы. С другой стороны, эмоции позволяют обойти эту иерархию, предоставляя подходящую аппрок- симацию, которая оказывается более реалистичной, но не интеллектуальной (и более эффективной с точки зрения применения игровых средств ИИ).
ftalattauSfi Глава 44. Принятие стратегических решений 665 Тактические формы поведения По существу, стратегии состоят из действий низкого уровня, хотя более удобно выражать их в виде тактических форм поведения. Безусловно, формы поведения вы- зываются к жизни с использованием отдельных действий, но абстрагирование дей- ствий позволяет упростить разработку тактики высокого уровня. Как показано ниже, тактические формы поведения могут быть декомпонованы на независимые действия, в том числе двигательные. > Поиск. Двинуться в направлении к другому участнику игры. > Побег. Двинуться в сторону от участника игры. > Бесцельное блуждание. Передвигаться по местности в случайно выбранных направлениях. > Остановка. Оставаться на месте. Одним из самых важных средств восприятия является зрение; как указано ниже, участники игры в разных ситуациях могут пользоваться зрительными восприятиями по-разному. > Взгляд в сторону. Повернуть взгляд в другом направлении. > Сосредоточение взгляда. Внимательно следить за конкретным участником игры. > Осмотр местности. Осматривать весь мир игры. > Взгляд, направленный вперед. Смотреть в сторону движения. Если речь идет об игре на выживание, то, как показано ниже, важным становится также метод нападения. > Сильный огонь. Стремиться вызвать как можно больше ущерба. > Предотвращение нанесения ущерба самому себе. Предотвратить потерю жизне- способности. > Повышение вероятностей попадания. Стремиться попасть в других участников игры как можно чаще. > Уменьшение ущерба. Не давать противнику сильно страдать. > Прекращение огня. Прекратить стрельбу. Наконец, как описано ниже, с точки зрения тактики являются полезными формы поведения, направленные на сбор необходимых предметов. > Оружие. Найти новое оружие. > Боеприпасы. Поискать вокруг боеприпасы, которые нужны для оружия. > Доспехи. Найти средства защиты. > Жизнеспособность. Найти способы лечения. > Отказ от каких-либо действий. Не беспокоиться о том, что необходимо собрать какие-то предметы. Конкретные тактические формы поведения (такие, как преследование или побег) могут быть выражены в терминах существующих компонентов, предоставляющих
666 Часть VII. Выбор действия необходимые функциональные возможности (например, движение или прицелива- ние). Эти компоненты могут быть созданы путем конкретизации любых методов ИИ, которые рассматривались в данной книге. Аниматы и принятие решений С концептуальной точки зрения, процесс принятия тактических решений сво- дится к отображению характеристик игровой ситуации и критериев принятия реше- ния на желаемую форму поведения: fxc=b, где С= [сг, с2, к, ст] — множество кри- териев, а в= [Ьг, Ь2, к, Ьр] — множество возможных форм поведения. Как и применительно к выбору оружия, обеспечивается возможность оценить пригодность формы поведения, рассматривая заданные характеристики и критерии: FxcxB—>R. Это косвенно позволяет выявить наилучшую форму поведения, посколь- ку предоставляется возможность сравнивать пригодность каждой формы поведения. Для определения этих значений на практике могут использоваться различные ме- тоды. Для формирования необходимых сочетаний твердых знаний о стратегиях ис- пользуется логический вывод (например, согласно которому наибольшая вероят- ность встретить засаду характерна для ущелья), а обучение на примерах обеспечива- ет опыт (например, согласно которому уязвимым является то или иное место). Эти процессы, наряду с описанием гибридных комбинаций, подробно рассматривались в главе 22, “Условия борьбы”. Важной задачей является также текущий контроль эффективности тактических форм поведения. Формы поведения реализуются в течение определенных промежут- ков времени, поэтому указанные критерии применяются непрерывно. Поэтому со временем необходимо накапливать сведения о преимуществах и недостатках каждой конкретной формы поведения, что позволяет преобразовать инкрементные данные обратной связи в значения пригодности, относящиеся к рассматриваемому промежут- ку времени. В решениях, принимаемых аниматом, необходимо также учитывать тот факт, что на реализацию различных форм поведения требуется определенное время, а выгоды, достигаемые с их помощью, мотуг не быть непосредственными. Обучающая среда В идеальном случае игровая среда, используемая для проверки и оценки форм поведения высокого уровня, должна представлять собой сочетание всех прочих воз- можных вариантов среды. Как обычно, если используется много разных подлинных миров, можно гарантировать, что разработанные формы поведения удастся перевес- ти непосредственно в реальную игру. Варианты среды, применяемые для проверки, должны предлагать перечисленные ниже возможности. > Наличие большого количества оружия и полезных предметов. > Разнообразие боевых обстановок. > Различные компоновки местности.
Глава 44. Принятие стратегических решений 667 При использовании ускоренного моделирования игры средства ИИ достаточно часто сталкиваются с различными ситуациями из-за непредсказуемого характера большинства проектов игр. Резюме Как показано ниже, стратегии позволяют учитывать не только ситуации, возни- кающие в игре, но и сам ход игры. > В качестве факторов, от которых зависит принимаемое решение, рассматриваются состояния противника и участника игры, а также компоновка местности. > Для моделирования задачи используются характеристики, представленные в ви- де уравнений, в которых учитываются эти факторы. Характеристики должны обеспечивать единообразное представление концепций с приведением к еди- ничному диапазону. Решения должны приниматься с учетом различных целей, как описано ниже. > Обычно устанавливаются глобальные цели игры, но участники игры вправе интерпретировать их в соответствии со своими настроениями. > Для руководства интеллектуальными формами поведения используются на- строения, которые предоставляют функцию пригодности или критерии оцен- ки производительности. Результатом принятия решения становится выработка тактической формы пове- дения, соответствующей ситуации, как указано ниже. > Тактические формы поведения могут рассматриваться как композиции ком- понентов. > Существующие функциональные компоненты (например, обеспечивающие движение или ведение стрельбы) могут настраиваться с учетом каждой такти- ческой формы поведения. Для реализации всех этих понятий требуется еще один компонент ИИ, указан- ный ниже. > Фактически осуществляемый процесс принятия решений, в котором исполь- зуются характеристики и критерии для выбора правильной формы поведения. Функционирование такого компонента может быть организовано на основе обучения или логического вывода либо с использованием произвольных ком- бинаций различных методов. Следующая глава посвящена применению этих знаний для создания средств ИИ, которые реализуют стратегии борьбы на выживание, определенные в соответствии с проектом. А за ней следуют главы, в которых этот прототип уточняется путем до- полнительной реализации способности к обучению.
668 Часть VII. Выбор действия Практическая демонстрационная версия В качестве примера средств ИИ, которые используют систему настроений в качестве руководства для выработки стратегий, разработан анимат, получивший имя Ratty. Этот анимат не принимает во внимание свои настроения, а лишь сообщает другим участникам игры, что он пытается сделать. Кроме того, жур- нал отладки показывает, какие критерии этот анимат пытается применить. Исполняемый код этого ани- мата вместе с исходным кодом можно получить на Web-узле по адресу ht tp: / /AiGameDev. сот/.
Natatiausfiik Глава 45 Реализация ИНТЕЛЛЕКТУАЛЬНЫХ ТАКТИЧЕСКИХ ФОРМ ПОВЕДЕНИЯ В ЭТОЙ ГЛАВЕ, • Реализация тактических форм поседения • Формы поведения и архитектура обобщения • Применение архитектуры обобщения для выработки тактических форм поведения • Оценка полученных результатов • Резюме В этой главе показано, что для выявления практических проблем, связанных с создани- ем форм поведения, направленных на выжива- ние, необходимо вначале спроектировать вруч- ную соответствующий прототип. Как обычно, в результате этого создается эталонный анимат, который потенциально позволяет оценить пре- имущества использования обучения для усвоения необходимых форм поведения (если в результате создания лучших средств ИИ достигаются замет- ные улучшения). Проект, рассматриваемый в этой главе, направлен не на реализацию эмоций анимата, а, скорее, на выполнение стратегиче- ских замыслов, выдвинутых инженером по искус- ственному интеллекту. В настоящей главе рассматриваются пере- численные ниже темы. > Основные тактические формы поведения, которые могут применяться в сочетании для формирования стратегий борьбы на выжи- вание. > Более подробное описание архитектуры обобщения, включая модель, основанную на применении порождающих конечных автоматах, которая позволяет внести кон- цептуальные упрощения в многоуровне- вый подход. > Применение архитектуры обобщения для выработки стратегий борьбы на выжива- ние с помощью решений, основанных на использовании форм поведения.
670 Часть VII. Выбор действия > Оценка полученного решения с точки зрения производительности и качества проекта системы. К концу данной главы должны быть созданы аниматы, полностью компетентные в искусстве боя на выживание. Реализация тактических форм поведения Тактические формы поведения представляют собой компоненты высокого уров- ня, состоящие из примитивных действий. Определив широко применяемые формы поведения, инженеры по искусственному интеллекту не только упрощают себе зада- чу обработки стратегий, но и получают возможность проще найти способ создания обучающихся средств ИИ. Повторное использование и настройка имеющихся возможностей Безусловно, в большинстве форм поведения проявляются общие функциональные возможности, но каждая из них зависит от компонентов, разрабатываемых в различных главах настоящей книги (например, перемещение, стрельба или выбор оружия). Эта идея иллюстрируется на рис. 45.1. Таким образом, применяемые при этом формы поведения опираются на общие функциональные возможности, но состав параметров, перечищае- мых соответствующим компонентам, может уточняться по мере необходимости. Рис. 45.1. Иерархия зависимостей, в которой имеются модульные компоненты средств ИИ, настраиваемые в целях поддержки кон- кретных функциональных возможностей. Форма поведения, преду- сматривающая изучение обстановки, опирается на движение, осу- ществляемое в виде беспорядочного блуждания, осмотра окружаю- щей местности и выбора оружия для немедленного возмездия Но некоторые из форм поведения не зависят от существующих возможностей, поскольку задача их создания является тривиальной и при этом можно обойтись без применения каких-либо модулей (в качестве примера можно указать форму поведе- ния, в которой анимат оглядывается вокруг). А в других случаях может потребовать- ся уточнение состава параметров, которое может осуществляться несколькими раз- ными способами, как описано ниже.
4\alaHaus'eik Глава 45. Реализация интеллектуальных тактических форм поведения 671 > Параметры этапа прогона. Для передачи определяемой пользователем инфор- мации служит интерфейс. > Данные инициализации. Информация хранится в коде XML и загружается с диска. > Компонент, выполняющий роль оболочки. Для упрощения и специализации тех или иных функциональных возможностей используются простые компоненты. Сами тактические формы поведения могут быть свободно созданы с применение ем любой методики. Большинство форм поведения, описанных в настоящей книге, хорошо подходят для управления функциональными возможностями вложенных компонентов в иерархии. Например, при использовании порождающих конечных автоматов вложенные состояния могут рассматриваться как зависимые функции; системы, основанные на правилах, опираются на функциональные возможности при реализации функций в теле продукционных правил; могут также применяться сценарии или собственные языки программирования. Безусловно, каждый из этих дочерних компонентов является настраиваемым, но мы исходим из предположения, что каждая из форм поведения может вызываться без каких-либо параметров (в данном случае в качестве примера можно назвать функцию Explore ()). Тем не менее формы поведения могут быть (и часто бывают) контекст- но-зависимыми; параметры, предназначенные для форм поведения, неявно подготав- ливаются в самих формах поведения (например, путем передачи запросов среде). Примеры форм поведения Разработку средств ИИ можно упростить, используя в качестве примеров формы поведения людей-игроков. Вначале, как описано ниже, проводится анализ ней- тральных форм поведения. > Изучение обстановки. Попытка осмотреть как можно больший участок окру- жающей местности с помощью зрения, которому помогает движение. > Исследование. Переход в пространстве к точке, представляющей интерес, и про- верка окружающей области. > Сбор. По мере необходимости сбор доспехов и предметов, которые обеспечи- вают жизнеспособность. > Бесцельное блуждание. Перемещение в случайно выбранных направлениях в пределах конкретной области. В играх на выживание для получения выигрышных очков требуются наступа- тельные формы поведения, как указано ниже. > Нападение. Запуск поражающих элементов в противника. > Охота. Преследование противников и вместе с тем нападение на них с оружием. Очевидно, что эти формы поведения должны иметь аналоги, связанные с защи- той, как описано ниже. > Уклонение от удара. Уход в сторону от линии огня. > Предотвращение поражения. Предотвращение ущерба от попадания посту- пающими поражающими элементами и бегство от противника.
672 Часть VII. Выбор действия > Отступление. Переход в безопасное место, подальше от опасной зоны. Должна быть предусмотрена возможность объединять эти формы поведения в це- лях создания удовлетворительных стратегий борьбы на выживание. Формы поведения и архитектура обобщения Архитектура обобщения предоставляет проектировщикам способ организации независимых форм поведения, позволяющий их комбинировать для получения же- лаемого результата [12]. Преимущество этого подхода состоит в том, что он является очень простым для реализации и остается полностью предсказуемым. Архитектура обобщения известна также под названием арбитражного механизма. Применяемый при этом метод служит для выбора (или вынесения арбитражного решения) одного из нескольких агентов (например, форм поведения или компонен- тов), которые конкурируют за то, чтобы им было передано управление в целях полу- чения одних и тех же выходных данных. Дополненные порождающие конечные автоматы Функционирование архитектуры обобщения основано на применении подробно регламентированного процесса, который предусматривает создание сложных сетей управления. Такие сети известны как дополненные порождающие конечные автома- ты (Augmented Finite-State Machine — AFSM), которые, по существу, представляют собой порождающие конечные автоматы со встроенными таймерами, позволяющи- ми сменять состояние после краткой задержки [88]. Входными данными для дополненных порождающих конечных автоматов явля- ются сенсорные значения, а выходные данные соответствуют эффекторам. После того как входные значения превышают определенный порог, дополненный порож- дающий конечный автомат активизируется и вырабатываются выходные данные. Применение такого подхода позволяет упростить манипулирование потоком ин- формации. При этом используются два метода: метод подавления переопределяет входные данные, а метод запрещения ограничивает выходные данные. При использо- вании этих механизмов можно организовать совместное функционирование несколь- ких дополненных порождающих конечных автоматов. Благодаря этому архитектура обобщения становится вполне приемлемой для управления роботами и аниматами. Многоуровневый подход Несмотря на то что на первый взгляд этот подход кажется сложным по своей внутренней организации, с концептуальной точки зрения данная архитектура ин- терпретируется как многоуровневый подход. Каждый уровень соответствует одной из форм поведения, с которой связаны конкретные выходные данные. Уровни, оп- ределяемые формами поведения, расположены по вертикали; верхние уровни имеют более высокий приоритет и обладают способностью обобщать уровни с более низ- ким приоритетом, как показано на рис. 45.2.
NaiaHausiiiik Глава 45. Реализация интеллектуальных тактических форм поведения 673 Обход местности Действия с учетом наличия препятствий Бесцельное блуждание Подавление Рис. 45.2. Уровни дополненных порождающих конечных автоматов, которые были объеди- нены друг с другом Многоуровневый подход обеспечивает также более простую интеграцию сущест- вующих компонентов. Каждый уровень может рассматриваться как “черный ящик”, выходные данные которого могут быть перекрыты другими уровнями. Условия пе- редачи управления от одного уровня к другому могут рассматриваться как булевы. Реализация и оптимизация По своей реализации дополненный порождающий конечный автомат весьма на- поминает обычный конечный автомат, если не считать того, что в нем имеются встроенные таймеры, которые могут активизировать изменения состояний. Если для реализации переходов используются механизмы передачи сообщений, то функ- ции запрещения и подавления осуществляются путем переопределения сообщений. Но в данном случае формы поведения рассматриваются как компоненты со скры- той реализацией, поэтому нами будет принят многоуровневый подход, который не за- висит от использования дополненных порождающих конечных автоматов. Вместо этого предусматривается возможность переопределять на каждом уровне иерархии вы- ходные данные уровней, имеющих более низкие приоритеты. Такой подход реализует- ся по принципу обхода уровней начиная с наивысшего приоритета, с переходом в на- правлении вниз. После того как обнаруживается активный компонент (т.е. компонент, для которого условие перехода является истинным), на основании его выходных дан- ных налагается запрет на все другие уровни, и итерационный процесс останавливает- ся. Выходные данные, соответствующие форме поведения с наивысшим приоритетом, используются в качестве указания на то, какое действие должно быть выполнено. Что же касается оптимизации, то изучение первоначальной модели наводит на мысль, что функционирование каждого уровня должно быть организовано в асинхрон- ном режиме. Этот многоуровневый подход позволяет выявить с помощью обхода актив- ную форму поведения, после чего осуществляется моделирование только этой формы
674 Часть VII. Выбор действия поведения. Кроме того, во время обхода можно кешировать результаты общих логиче- ских проверок, а на каждом из более низких уровней принимать предположение, что ре- зультаты проверок, выполненных на более высоком уровне, являются ложными. Применение архитектуры обобщения для выработки тактических форм поведения В современных проектах разработки средств ИИ широко используется процесс, направленный на создание архитектуры обобщения, а именно, поэтапная разработ- ка с проверкой. Фактически этот подход был впервые применен Бруксом (Brooks) при проектировании роботов, по аналогии с эволюционным проектированием, принятым в сообществе специалистов по разработке программного обеспечения. Несмотря на сказанное, задача создания самой архитектуры обобщения по прин- ципу инкрементной разработки не столь проста, поскольку для этого требуется, что- бы процесс проектирования осуществлялся по заранее намеченному плану. Если ар- хитектура не будет заранее продумана, то может потребоваться полная ее перестрой- ка в случае применения неподходящего нижнего уровня. Кроме того, процесс пере- дачи управления, в основном, является линейным, поэтому выбор возможных конфигураций становится ограниченным. Для обеспечения с самого начала высокой вероятности успеха, а также для преодо- ления ограничений арбитражного механизма требуется качественная дополнительная стратегия проектирования. Сущность выполняемого при этом задания состоит в том, что формы поведения должны быть отсортированы, начиная от общеприменимых и заканчивая наиболее конкретными. Трактовка роли арбитража упрощается, если об- щие формы поведения рассматриваются как применяемые по умолчанию, а конкрет- ные формы поведения — как исключения; если требуется исключение по отношению к форме поведения, применяемой по умолчанию, архитектура обобщения обнаружи- вает эту ситуацию и переопределяет значение по умолчанию. На практике подход к проектированию, применяемый автором, организован так, что защитным формам поведения присваивается наивысший приоритет, затем с меньшим приоритетом создаются наступательные формы поведения и, наконец, нейтральные. Приоритеты присваиваются так, как показано в табл. 45.1, где в первую очередь приведе- ны формы поведения с более высоким приоритетом. Таблица 45.1. Уровни форм поведения, которые активизируются по условию и переопределяют выходные данные всех других форм поведения с более низким приоритетом Приоритет Форма поведения Условие 7 Отступление Низкие шансы на победу 6 Уклонение Приближение поражающего элемента 5 Охота Высокие шансы на успех 4 Нападение Присутствие противника 3 Сбор Низкая жизнеспособность 2 Исследование Возможное наличие противника 1 Изучение обстановки Всегда
^alaHausii*!. Глава 45. Реализация интеллектуальных тактических форм поведения 675 Оценка полученных результатов По завершении проектирования анимат действует относительно неплохо. В действи- тельности, большим преимуществом систем, основанных на архитектуре обобщения (а также других методах ИИ, в которых результат достигается, главным образом, явно), служит то, что формируемые с их помощью результаты являются весьма предсказуемы- ми; такие системы выполняют все формы поведения в с чпъетствии с ожиданиями. Реализуемые при этом понятия настолько просты, что требуется лишь небольшая от- ладка, но должна быть проверена обоснованность условий, используемых для запреще- ния выходных данных. Что же касается проекта, осуществляемого по намеченному пла- ну, который был выполнен автором при подготовке данной главы, то фактически дос- тигнутые результаты оказались лучше, чем ожидаемые, главным образом в силу того факта, что использовались уровни, а не дополненные порождающие конечные автоматы. Архитектура обобщения является довольно мощной и позволяет проектировщи- кам создавать модели, которые было бы трудно реализовать с помощью распознаю- щих конечных автоматов (поскольку требуется слишком много переходов). Но архи- тектура обобщения, несмотря на то что представлена в виде иерархии, поддерживает линейную передачу управления. Мало того, запрещение происходит в результате проверки булевых условий, поэтому формы поведения активизируются внезапно. Такие смены форм поведения выглядят достаточно реалистично, но оставляют предпосылки для усовершенствования с использованием более плавных переходов. Рассматриваемая система, в том виде, в каком она спроектирована, не преду- сматривает разделения различных компонентов тактических форм поведения. На- пример, было бы лучше предусмотреть использование различных средств управле- ния высокого уровня для движения, прицеливания и сбора предметов. Указанный недостаток вызван, собственно говоря, не тем, что применяется архитектура обоб- щения, а, скорее, обусловлен выбранным способом применения этой архитектуры для решения рассматриваемой задачи. Практическая демонстрационная версия Анимат, демонстрирующий описанные принципы, получил имя Inhiboy. В нем применяется архитек- тура обобщения с семью формами поведения, в которой налагаются запреты на формы поведения с более низкими приоритетами. В результате формируется статическая стратегия, направленная на выживание, которая благоприятствует трусливым формам поведения, а не храбрым нападениям. Код и демонстрационные версии этого анимата, а также руководство по вычислению форм поведения можно найти на Web-узле по адресу ht tp: / /AiGameDev. сот/. Резюме Самой важной частью системы являются основные формы поведения, которые проектируются вручную, как показано ниже. > Тактические формы поведения зависят от существующих возможностей, а их настройка осуществляется на этапе программирования, с использованием оболочек, при инициализации, путем передачи необходимых данные, или на этапе прогона, с помощью интерфейсов.
676 Часть VII. Выбор действия > В заданных по умолчанию формах поведения различные формы движения соче- таются с разными способами ведения стрельбы и сбора необходимых предметов. Как описано ниже, в данной главе приведено также более подробное описание архитектуры обобщения Брукса, что позволяет лучше подготовиться к реализации. > Архитектура обобщения — это арбитражный механизм, в котором использу- ется подход, основанный на формах поведения. > По существу формы поведения определяются как дополненные порождающие конечные автоматы, которые оснащены средствами передачи сообщений и таймерами, предназначенными для определения времени перехода из одного состояния в другое. > Формы поведения объединяются в многоуровневую структуру, в которой ис- пользуются точки подавления и запрещения, прерывающие и переопреде- ляющие сообщения. > С концептуальной точки зрения, слои располагаются по вертикали с учетом при- оритетов, так что наиболее важные формы поведения находятся в верхней части. Как указано ниже, применение форм поведения сводится к тому, что на основа- нии обобщения объединяются компоненты. > Для обеспечения применения форм поведения в порядке их важности может использоваться заранее запланированный проект. > Условия, при которых активизируются формы поведения, должны быть опре- делены проектировщиком. > Реализация предусматривает просмотр каждого уровня сверху вниз, в порядке убывания приоритетов, пока не будет найдена приемлемая форма поведения. Такая система показывает очень высокую производительность, на что и можно бы- ло вполне рассчитывать. Тем не менее определенные недостатки связаны с тем, что ак- тивизация осуществляется по булеву условию. Кроме того, немного ограничены воз- можности управления, в связи с использованием заданных по умолчанию тактических форм поведения, в которых комбинируются основные элементы. Наконец, ограниче- нием является также тот факт, что данная система неспособна к обучению. Эти недос- татки будут исправлены после перепроектирования данного прототипа с использова- нием обучения с подкреплением, как описано в главе 47, “Усвоение с помощью обучения активизируемых стратегий”. Но вначале необходимо ознакомиться с теоре- тическими сведениями, изложенными в следующей главе.
^atatfaus,^ Г.пава 46 Обучение С ПОДКРЕПЛЕНИЕМ ВЭТОЙ ГЛАВЕ- • Определение теории подкрепления • Фундаментальные элементы • Алгоритмы обучения с подкреплением • Скрытые проблемы • Обсуждение полученных результатов • Резюме Суть ведения игр состоит в том, что должно быть предпринято наилучшее действие с учетом текущей ситуации. Действия, которые должны быть выполнены в каждой ситуации, определяются принятой политикой. Безусловно, сама среда по своему характеру обычно является недетерминированной, но в большинстве алго- ритмов ИИ предполагается, что с помощью обу- чения могут быть выявлены основополагающие тенденции. Обучение с подкреплением (Reinfor- cement Learning — RL) представляет собой под- ход к решению задач, в котором предусматрива- ется корректировка политики по принципу проб и ошибок, в соответствии с данными обратной связи, поступающими из среды. С помощью сигналов подкрепления, форми- руемых средой, могут быть промоделированы многие задачи, например обучение прицелива- нию, перемещению и даже ведению игры на вы- живание. Адаптация позволяет аниматам дейст- вовать более интеллектуально, без необходимо- сти использовать сценарии или другую помощь со стороны проектировщика. Для решения задач обучения с подкреплени- ем могут использоваться общие стратегии опти- мизации (такие, как генетические алгоритмы), но они не позволяют воспользоваться знаниями о сути самой задачи. С другой стороны, в спе- циализированных алгоритмах обучения с под- креплением для усвоения с помощью обучения наилучшего способа действий непосредственно используются сигналы вознаграждения. В настоящей главе рассматриваются пере- численные ниже темы.
678 Часть VII. Выбор действия > Теория, на которой основаны модели обучения с подкреплением, а также оп- ределения таких понятий, как состояния и способы действий, вознаграждение и отдача. > Общие принципы применения большинства алгоритмов обучения с подкреп- лением, в частности, определение понятия значений состояния, которые оце- нивают преимущество ситуации. > Три основных алгоритма, используемых д ля обучения с подкреплением, а именно, динамическое программирование, метод Монте-Карло и подход, основанный на учете временной разности. > Преимущества и недостатки методов обучения с подкреплением, используе- мых при разработке игр. На практике обучение с подкреплением может применяться в играх для усвоения с помощью обучения наилучшей тактики на основе проб и ошибок. На интуитивном уровне такой процесс может рассматриваться как обучение порождающего конеч- ного автомата; эта тема рассматривается в следующей главе. Определение теории подкрепления Необходимость в использовании обучения с подкреплением возникает после то- го, как для рассматриваемой задачи создается модель, имеющая особую форму, хотя основным отличием методов обучения с подкреплением от методов контролируе- мого обучения является то, что первые основаны на понятии вознаграждения. Игровая ситуация Предположим, что анимат находится на высоте, ссчугвстстнующей верхнему этажу, и имеет возможность бросить гранату так, чтобы она разорвалась на более низкой вы- соте. В помещении, в котором располагается анимат, имеется три разных проема, и бросок через каждый из них приводит к тому, что граната разрывается в другом поме- щении. Через три помещения, в которых может разорваться граната, часто проходят другие участники игры. Интенсивность движения в этих помещениях изменяется в каждую секунду, но статистические данные показывают, что со временем складывают- ся определенные тенденции. Поэтому в каждый момент времени имеется постоянная вероятность того, что в помещении будет присутствовать хотя бы один участник игры. К сожалению, д ля анимата видимость ограничена, поэтому он не имеет возмож- ности определить, сколько участников игры находится в каждом помещении в лю- бой момент. Кроме того, анимат не имел возможности изучить на основании своего опыта местность, и в нем не заложены знания о местности, поэтому у него нет ин- формации о том, какой является интенсивность движения участников игры через помещения и какова вероятность нахождения участников игры в этих помещениях. Единственный способ проверки возможности поражения противника состоит в том, чтобы действительно бросить гранату и прислушаться к крикам боли! Если анимат имеет только одну гранату, то случайный бросок — это лучшее, что он может сделать, поскольку в любой момент времени он может присвоить лишь
^alallaustfik Глава 46. Обучение с подкреплением 679 равные вероятности гипотезам о том, занято ли помещение или не занято. Но если у анимата имеется несколько гранат, то он в течение определенного периода време- ни может научиться действовать лучше, а именно, попытаться причинить другим участникам игры как можно больше ущерба. Поэтому задача состоит в том, чтобы определить наилучшее место для броска гранаты (т.е. найти помещение с самой вы- сокой интенсивностью движения) в целях максимизации долговременного ущерба. Модель подкрепления Данный конкретный сценарий игры представляет собой один из многих приме- ров задачи обучения с подкреплением. Анимат функционирует в условиях наличия только одной ситуации и одного набора действий. После выполнения определен- ного действия среда немедленно возвращает сигнал обратной связи, позволяющий узнать о результате, в форме скалярного числового значения. Как показано на рис. 46.1, такая общая архитектура обучения с подкреплением может быть приспособлена для решения других задач. В частности, как задача обу- чения с подкреплением рассматривается любая ситуация, в которой дается возна- граждение за конкретные действия. К этому относится и поведение анимата, кото- рый обучается действиям согласно пожеланиям проектировщика. Кодирование состояния/кодирование действия Сенсоры Действия Рис. 46.1. Типичная модель взаимодействия между агентом и средой (слева); встроенный агент, в котором используется функция вознаграждения, созданная инженером по искус- ственному интеллекту (справа) Состояния и действия В примере с бросками гранат имеется только одна ситуация: “Анимат с гранатой находится на верхнем этаже”. Но в мире часто возникает также много других ситуа- ций. Каждая из них известна как состояние. В каждом состоянии в распоряжении агента имеется ряд действий. Предположим, что в рассматриваемом примере дейст- вия были описаны следующим образом.
680 Часть VII. Выбор действия 1. Бросить гранату через первый проем. 2. Протолкнуть гранату через второе отверстие. 3. Уронить гранату в третью шахту. Очевидно, что теоретически количество допустимых действий в каждом состоя- нии может быть произвольным. Но в игровых ситуациях можно предполагать, что количество действий в каждом состоянии должно оставаться в разумных пределах. Сигнал вознаграждения После выполнения каждого действия среда немедленно возвращает сигнал обрат- ной связи. Эта обратная связь принимает форму скалярного числового значения, ко- торое может рассматриваться как оценка действия, поэтому и применяется термин оценочная обратная связь. Вознаграждение во время t обозначается как rt (и то, и дру- гое выражается вещественными числами). На интуитивном уровне можно предполо- жить, что благоприятное действие получает положительную обратную связь, а небла- гоприятное — отрицательную обратную связь. Фактически для алгоритмов обучения диапазон значений обратной связи не является существенным, при условии что эти значения позволяют выражать различные уровни производительности. В рассматриваемом примере с гранатой обратная связь может определяться тем, сколько участников игры получили ранения. Если ни один из этих участников игры не получил повреждений, обратная связь равна 0 (в этом случае отрицательные зна- чения не применяются). Сигнал обратной связи, поступающий из среды, принято также называть сигналом вознаграждения. Из того, что применяется сам термин сиг- нал, следует, что данные, получаемые из среды, могут контролироваться во времени, как показано на рис. 46.2. Подобные графики в проблематике обучения с подкреп- лением встречаются довольно часто, поскольку достаточно бросить на них один взгляд, чтобы узнать производительность агента. Рис. 46.2. График значений вознаграждения, полученных в течение опре- деленного времени; значения отдачи (накопленного вознаграждения) по- казаны с наложением В некоторых случаях вознаграждение, связанное с действием, может не предос- тавляться немедленно. Вполне естественно, что такие вознаграждения именуются отсроченными! В большинстве алгоритмов обучения с подкреплением к цели могут вести длинные последовательности действий, поэтому понятие отсроченного воз- награждения является важным. Алгоритмы должны связывать отсроченное возна- граждение с действиями, которые приводят к непосредственному вознаграждению.
Глава 46. Обучение с подкреплением 681 Способ действий, который приводит к определению формы поведения Назначение обучения состоит в поиске приемлемого способа действий. Способ действий показывает, какое действие должно быть предпринято в каждом состоянии (например, куда нужно бросать гранаты). Способ действий определен для каждого со- стояния, поэтому он фактически является представлением формы поведения агента. Способ действий обозначается как п (греческая буква пи). Стохастически задан- ный способ действий позволяет узнать вероятность выбора того или иного действия в определенном состоянии. С формальной точки зрения, он представляет собой функцию, отображающую каждую пару “состояние-действие” на вероятность р, имеющую область определения [0,1]. Отметив то, что S= {s0, Si, к, sn] представ- ляет собой множество всех состояний, а А={а0, aj,к, ат] — множество действий, можно вывести следующую формулу: П: SXA(s) —> [0,1] (s, а) ар | -> (s,a) е SXA(s), р е [0,1] Эго определение позволяет представить способ действий л как отображение состоя- ний и действий на единичный диапазон, для всех (| -> (s, а)) допустимых состояний и действий. Во многих случаях не все действия окажутся применимыми в каждом со- стоянии. В таком случае на способ действий распространяется ограничение, гизволяю- щее определить каждое действие, допустимое в текущем состоянии. В предыдущем урав- нении множество допустимых действий для состояния s записывается как А (s). Может оказаться очень продуктивным подход, предусматривающий использование стохастических способов действий в качестве форм поведения, но особенно хорошо этот подход проявляет себя во время обучения. (Например, он позволяет явно отслеживать вероятности.) Но в некоторых случаях более полезен детерминированный способ дейст- вий, особенно если в каждом состоянии требуются только наилучшие действия (а не все возможные действия, охватываемые данным распределением вероятностей). п: S—>А (S) (s,a) а |-> seS, aeA(s) Вообще говоря, для любого анимата в игре обычно являются приемлемыми не- сколько способов действий, а не один. Но в качестве цели для обучения должен быть определен только один способ действий. Это — оптимальный способ действий, за- писываемый как л*. В теории обучения с подкреплением звездочка используется как верхний индекс, указывающий на оптимальность. Определение оптимальности Безусловно, обучение с подкреплением позволяет моделировать широкий перечень задач, поэтому может потребоваться также использование результатов других видов. В компьютерных играх желаемыми критериями могут стать и конечная производитель- ность способа действий, и скорость обучения. Рассмотрим показатели, обычно приме- няемые для оценки качества алгоритмов обучения с подкреплением [45].
682 Часть VII. Выбор действия Оптимальная отдача Для измерения производительности агента во времени, необходимо ввести поня- тие отдачи. Как отдача обычно рассматривается накопление значений сигнала возг награждения в течение определенного времени. Агент обязан максимизировать среднее ожидаемое вознаграждение за время t, обозначаемое как Rt. Для определе- ния понятия отдачи применяются три принципиально разных способа, каждый из которых приводит к формированию отличных от других форм поведения. > Метод конечного горизонта выражает отдачу как сумму вознаграждений, по- лученных за определенный временной интервал (в данном случае ограничен- ный следующими h шагами): h Rt = rt+l + rt+2 + К + rt+r = Srt+i i=l > Метод бесконечного горизонта не ограничивается конечной областью опреде- ления (в следующей формуле ~ обозначает бесконечность). Но вместо этого для обеспечения возможности довести вычисления до конца применяется обесцениваемое вознаграждение; чем дальше в будущее, тем в меньшей степе- ни вознаграждение влияет на отдачу. В каждом шаге вознаграждение масшта- бируется с помощью выражения со степенью у (греческая буква гамма): Rt = rt+i + Гь+гТ2* гь+зУ3+ К + rt+r = ^rt+i/"1 i=l > В модели среднего вознаграждения отдача выражается в терминах усреднен- ного по времени значения вознаграждения. Этот метод может рассматривать- ся как частный случай модели бесконечного горизонта, за исключением того, что у=1 и сумма усредняется: A h Л Rt = lim т- £rt+i h->o° i=1 J Основным недостатком метода со средним вознаграждением является то, что по- нятие времени игнорируется. Потенциальное вознаграждение, которое должно быть получено в далеком будущем, является столь же важным, что и вознаграждение, предоставляемое в следующий момент времени. Но вместо этого более предпочти- тельным является метод с обесцениваемым вознаграждением. Обучение и производительность Сходимость определяется как достижение оптимального способа действий после определенного числа итераций (по аналогии с тем, что и в алгоритмах оптимизации, рассматриваемых в главе 17, “Персептроны”). Как указано ниже, другие свойства сходимости используются для измерения производительности алгоритмов обучения. > Скорость сходимости широко применяется для оценки способности алгорит- ма к быстрому обучению. Если сходимость является достаточно быстрой, это
Глава 46. Обучение с подкреплением 683 означает, что оптимальный способ действий достигается за очень короткое время, тогда как при медленной сходимости для усовершенствования способа действий требуется много итераций. Большинство алгоритмов сходятся асим- птотически: вначале очень быстро, а затем скорость сходимости замедляется в пределе, по мере приближения к оптимальному способу действий. > Еще одной важной мерой производительности является качество сходимости. Но этот показатель применяется не столь широко, поскольку сходимость боль- шинства алгоритмов фактически уже доказана! Поэтому эти алгоритмы при на- личии достаточного времени должны достигать одинаковых результатов. На практике зачастую лучше попытаться представить процесс сходимости визу- ально. Для этого можно построить график вознаграждения как функции от времени. Вообще говоря, обучение несобственных персонажей в играх должно осуществлять- ся быстро и точно. Марковские процессы принятия решений Большинство задач обучения с подкреплением относится к категории марковских процессов принятия решений. В определении марковского процесса принятия решений рассматриваются две дополнительные концепции — вероятность успешного осуществ- ления действия и ожидаемое вознаграждение. При условии, что действие а выполняется из состояния s, вероятность того, что следующим состоянием станет s1, записывается а _ а как Pss.. В таком случае ожидаемое вознаграждение определяется как Rss,, хотя не имеет значения, каким является состояние s', поскольку вознаграждение не зависит от следующего состояния (таким образом, фактически ожидаемое вознаграждение огтреде- а. ляется просто как Rs). В данном случае Р и R рассматриваются как модель мира, поскольку эти отношения определяют среду и ее типичную реакцию. Задачи обучения с подкреплением подраз- деляются на две категории: в одном случае модель мира известна, а в другом — нет. * ПРИМЕЧАНИЕ .. Теория порождающих конечных автоматов и теория обучения с подкреплением имеют много общего. * В главе 40, “Недетерминированные конечные автоматы”, рассматривались вероятностные распознающие d конечные автоматы, в которых с каждым переходом связаны вероятности; такие конечные автоматы яв- ’ ляются аналогом марковских цепей. В вероятностных порождающих конечных автоматах вероятности > определены для каждого варианта выходных данных, а сами они рассматриваются как скрытые марков- « ские модели. А в задачах обучения с подкреплением рассматриваются сигналы вознаграждения, а не вы- ходные данные; они относятся к категории марковских процессов принятия решений. Фундаментальные элементы Для выработки решений с помощью каждого из алгоритмов обучения с подкреп- лением, описанных в следующих разделах, используются общие подходы.
684 Часть VII. Выбор действия Стоимостные функции Все представленные в этой главе методы (а также основная часть методов, ис- пользуемых в обучении с подкреплением) основаны на понятии стоимостных функ- ций. По существу, стоимостная функция представляет собой оценку преимуществ ситуации. На практике принято определять стоимостные функции для состояний и действий (выполняемых при условии, что задано конкретное состояние), как пока- зано на рис. 46.3. Это позволяет в алгоритмах обучения с подкреплением (для усвое- ния с помощью обучения способа действий) использовать любые сигналы вознагра- ждения, и отсроченные, и не отсроченные [75]. Значения состояний Значения действий Рис. 46.3. Значения состояний и действий, выведенные в рамках мо- дели мира. Некоторые переходы являются вероятностными и обо- значаются пунктирными линиями. Двойная окружность представля- ет состояние, в котором собрано вознаграждение, равное 10 Значения состояния Эти значения служат показателем того, насколько приемлемым является пребы- вание в определенном состоянии. (Предположим, что для какого-то моста задано низкое значение, поскольку он небезопасен.) Значения состояния обычно опреде- ляются как ожидаемая отдача, если рассматриваемый способ действий будет про- должать осуществляться и в будущем начиная от этого состояния. Значение состоя- ния s для способа действий к записывается как Vя (s). Формально это значение оп- ределено следующим образом: V"(s) = E^Rtlst = S} Следует помнить, что Rt — ожидаемая отдача, которая обычно определяется как обесцениваемое вознаграждение; Ел — это оценка значения отдачи, полученная при том условии, что s — начальное состояние во время t.
^ataHaus^k Глава 46. Обучение с подкреплением 685 Значения действия Аналогичным образом значения действия указывают на преимущества выполне- ния определенного действия в текущем состоянии. (Например, попытка напасть с топором на танк дает мало преимуществ.) Эти значения соответствуют ожидаемой отдаче в результате осуществления способа действий п после выполнения действия а в состоянии s. Значение действия принято также называть Q-значением и обозна- чать как Qn (s, а). Формально это значение определено так: Qn(s,a) = En{Rt | St = s,at = a} Безусловно, в расчете на каждое состояние может быть предусмотрено много действий, поэтому для представления значений действия требуется больше памяти, чем для значений состояния. Применение Q-значений позволяет оценивать пре- имущества действий отдельно, тогда как все остальные показатели рассматриваются вместе со значениями состояния. Рекурсивное определение Один из недостатков, связанных с использованием приведенных выше уравне- ний, обусловлен тем, что отсутствует какой-либо очевидный способ вычисления оцениваемой отдачи Ея. Но именно в этом состоит назначение различных алгорит- мов обучения. Тем не менее определения значений состояния и значений действия можно переформулировать, чтобы иметь возможность использовать рекурсивные формы определений. Свойство рекурсивности применяется для вычисления спосо- бов действий в большинстве алгоритмов обучения с подкреплением. Интуиция подсказывает, что соседние состояния также содержат значения со- стояния и значения действия, поэтому существует возможность определить отноше- ние между значением состояния и оцениваемой отдачей его соседнего состояния. Используя вероятности перехода и ожидаемое вознаграждение, можно выразить оцениваемую отдачу состояния. При условии, что вознаграждение обесценивается с коэффициентом у, является справедливой следующая формула (листинг 46.1): v*(s> = X «(s.a)E Р*,. [ R’j.+Tfv’ts-)] a s' На интуитивном уровне можно понять, что значение состояния представляет собой среднее значение для обесцениваемых значений соседних состояний, включая возна- граждение, собранное в результате осуществления данного действия. Более наглядное разъяснение этого уравнения можно получить, ознакомившись с фрагментом псевдо- кода, приведенным в листинге 46.1. Листинг 46.1. Пример непосредственной реализации приведенного выше уравнения, которая может использоваться для вычисления значений состояния Pgs, is the probability of action a leading to state s' Rg is the expected reward for taking action a у is the discount factor for the reward (for instance, 0.9)
686 Часть VII. Выбор действия V is an array containing the state values function state_value( s ) s = 0 for all actions a in state s action-return = 0 for all possible states s' resulting from a action-return += (R^ + у * V(s')) * PgS end for s += action-return end for return s end function На основе этого уравнения может быть создан алгоритм обучения с подкрепле- нием. Однако необходимо внести еще несколько небольших дополнений, в частно- сти, касающихся того, как отслеживаются различные оценки. Оптимальные стоимостные функции Назначение обучения состоит в определении оптимального способа действий л*, который позволяет со временем получить наибольшую отдачу. Речь об этом уже шла выше, но теперь мы можем связать с алгоритмом обучения оптимальные стоимост- ные функции [75]. Способ действий п лучше по сравнению с другим способом дей- ствий, л', если и только если (<=>) соответствующие значения состояния выше или равны для каждого состояния se S: л > п' « Vs е S : V71 (s) > Vя' (s) Кроме того, оптимальное значение состояния можно выразить как максимальное значение для всех состояний: Vp (s) = max Vя (s) VseS n Для определения оптимального значения состояния и значения действия для ка- ждой пары “состояние-действие”, обозначаемой как Q* (s, а), могут быть предло- жены аналогичные уравнения. Эти значения рассматриваются как целевые для всех приведенных здесь алгоритмов обучения. Типы задач обучения с подкреплением Категория задач обучения с подкреплением является очень широкой. Все эти за- дачи можно в целом подразделить на подзадачи (например, эпизодические и инкре- ментные). Во многих случаях рассматриваемую задачу можно преобразовать в один из этих двух вариантов, в зависимости от того, какой алгоритм является предпочти- тельным (как показано ниже). > Эпизодические задачи обучения состоят из нескольких обучающих экземпля- ров. Они соответствуют отдельным прогонам процедуры обучения, которые продолжаются в течение конечного промежутка времени. Каждый эпизод со-
MaUaus't Глава 46. Обучение с подкреплением 687 ответствует короткой последовательности состояний и действий, а также сиг- налу вознаграждения. > Инкрементные задачи формируют одно непрерывное множество состояний. Тем не менее, если в процессе решения задачи не возникает какая-либо пауза, то отсутствует и возможность завершить задачу! В процессе разработки игр, как правило, целесообразно использовать инкре- ментное обучение во время ведения игры (в оперативном режиме) и решать задачи эпизодического типа на этапе разработки (в автономном режиме). Правильный выбор момента завершения исследования и начала эксплуатации Задачи обучения с подкреплением могут служить идеальным примером фундамен- тальной проблемы, возникающей при обучении средств ИИ. Дело в том, что в ходе этого необходимо вовремя определить, что достигнут приемлемый результат обучения, и при- ступить к использованию того, что было достигнуто в результате обучения. Как показано на рис. 46.4, при этом применяются две различные стратегии, описанные ниже. Цель Стратегия выбора поведения Разведывательный шаг Рис. 46.4. Способ действий, определяющий форму поведения на двухмерной координатной сетке, в которой действия ведут в левую верхнюю часть. Двойными стрелками обозначаются исследгнлиткльские шаги, которые от- личаются от формы поведения, созданной в результате обучения > В процессе исследования предпринимаются попытки охватить все возможные состояния по принципу опробования каждого действия. Это позволяет со- брать весьма важные опытные данные для алгоритмов обучения. > Вместо этого в другом варианте используется наиболее хорошо известное действие в каждом состоянии и предпринимается попытка собрать наибольшее вознаграж- дение. Эта стратегия налагает ограничения, связанные с использованием только той области определения действий, которые заведомо являются ценными. Но эти две стратегии достаточно часто объединяются в способы действий, которые используются в процессе обучения. Например, в Е-жадных (читается как эпсилон- жадный) способах действий применяется наиболее хорошо известное действие, но
688 Часть VII. Выбор действия осуществляется случайный выбор с вероятностью е. Это — частный случай е-мягкого способа действий, в котором вероятность каждого действия л (а, s) равна по меньшей мере значению е, деленному на количество действий в этом состоянии, | А (s) |: . _ е л(а'8) * 7а(Щ Понятие исследования и эксплуатации позволяет предложить два типа алгоритмов обучения: зависящие от способа действий, выбранного для определения с помощью обучения оптимального способа действий, и не зависящие от этого. Они известны, со- ответственно, как алгоритмы со способом действий и без способа действий. > В методах со способом действий используется один и тот же способ действий и для исследования, и для эксплуатации. Большинство методов со способом действий гарантирует, что не будет проигнорировано ни одно действие (поэтому вырабатываемые способы действий называют е-мягкими). Для того чтобы алгоритмы, вычисляющие такой способ действий, вырабатывали пра- вильный результат, обычно требуется задавать предварительные условия. > В алгоритмах без способа действий этапы исследования и эксплуатации раз- деляются. Как правило, оба этапа осуществляются отдельно, и в каждом из них используется собственный способ действий. Способ действий, приме- няемый на этапе исследования, называется оценочным, а применяемый на этапе эксплуатации — поведенческим. Кратко можно отметить, что от выбранных способов действий существенно зави- сят качество обучения, а также окончательно выбранная форма поведения. Инструменты обучения В алгоритмах, представленных в следующем разделе, используются аналогичные методы, а также общие определения, приведенные выше. Итерационное усовершенствование Под итерационным усовершенствованием подразумевается процесс обновления оценки на основе другой оценки. Связанный с этим подход может оказаться полез- ным во время обучения, поскольку он позволяет со временем улучшать качество оценок. В ходе обучения с подкреплением итерационное усовершенствование может использоваться для оптимизации значений состояния. На интуитивном уровне можно понять, что оценить качество состояния можно на основании предположе- ния о том, насколько качественным является следующее состояние. В отличие от этого, в методах, не основанных на итерационном усовершенствова- нии, определение с помощью обучения каждого значения состояния осуществляется отдельно, без использования оценок соседних состояний. Оба эти подхода показали, что они обладают характерными преимуществами, поэтому на основе того и другого разработаны многие алгоритмы (например, обучение по временной разности).
^ataiiaus^ Глава 46. Обучение с подкреплением 689 Резервирование Резервирование — это процесс использования будущей отдачи для оценки ожи- даемой отдачи текущего состояния. Таким образом, отдача вычисляется в обратном направлении от любой точки st+h в будущем к состоянию st, для которого необхо- димо получить оценку. Процесс резервирования может рассматриваться как прохо- ждение по древовидной структуре, развертывающейся из текущего состояния [75]. Как показано на рис. 46.5, это дерево может иметь различные особенности, в том числе описанные ниже. Потное резервирование Резервирование выборки t t+1 t+2 Текущее Возможные состояние вложенные состояния Рис. 46.5. Дерево возможных состояний, начинающихся с текущего. При полном резервировании используются значения состояния всех дочерних состояний, а при Актировании выборки проверяется только одно дочернее ребро дерева > Может изменяться глубина резервирования. А при глубине резервирования, равной единице, используются значения состояния из следующего состояния. Резервирование может также осуществляться на полную глубину, в результате чего охватывается все дерево, вплоть до решения задачи! > Важным параметром является также ширина резервирования. В некоторых вариантах резервирования обрабатывается только отдача, соответствующая одному состоянию; такие варианты назыьампся резервированием выборки. При других подходах выполняется полное резервирование и используется значение отдачи, соответствующее всем состояниям. В процессе резервирования обычно обрабатывается одно значение состояния за другим. Но этот процесс может также применяться к значениям действия. Алгоритмы обучения с подкреплением Алгоритмы обучения подразделяются на три основных типа, с учетом того, осно- ваны ли они на математических моделях, статистических данных или инкрементном обучении.
690 Часть VII. Выбор действия Методы динамического программирования По существу, для вычисления способов действий и значений состояния часто при- меняются подходы, основанные на использовании грубой силы, в которых применяет- ся динамическое программирование. Эти подходы предусматривают осуществление исчерпывающего перебора, но несмотря на это они показывают себя как удивительно эффективные. Процесс динамического программирования осуществляется в два эта- па: на первом этапе оцениваются значения состояния для тех состояний, которые вы- бираются согласно принятому способу действий (оценка способа действий), а на вто- ром этапе способ действий совершенствуется с использованием значений состояния (усовершенствование способа действий) [75], как описано ниже. > При оценке способа действий по существу используется итерация для поиска ре- шения крупной системы уравнений. Эти уравнения выражают каждое из значе- ний состояния в терминах других значений состояния; при этом используется ре- курсивное определение. Сам алгоритм проходит через все состояния и вычисляет уравнение, описанное в листинге 46.1, в полном соответствии с этим описанием. > На этапе усовершенствования способа действий значения состояния исполь- зуются для исследования лучших предложений. На интуитивном уровне по- нятно, что такая цель может быть достигнута с помощью проверки действий, которые приводят к получению лучшей отдачи. Если оцениваемое значение действия выше, это действие улучшает способ действий, поэтому оно исполь- зуется вместо прежнего. Рассматривая широко известный пример с двухмерным лабиринтом, можно сде- лать вывод, что при оценке способа действий вычисляется расстояние до каждого квадрата от выхода, а на этапе усовершенствования способа действий предпринимает- ся попытка заменить одни шаги другими, чтобы можно было быстрее достичь выхода. Следует отметить, что в решениях на основе динамического программирования ис- а а пользуются знания о вероятностях перехода Pss, и ожидаемых вознаграждениях Rss, (при переходе из состояния s в состояние s', если задано действие а). Рассмотрим два метода объединения этих отдельных этапов в алгоритмы для вычисления идеальных способов действий. Итеративное усовершенствование способа действий Этот метод осуществляется по принципу чередования этапов оценки и усовер- шенствования способа действий. Это — итерационный процесс (на что указывает само название метода), который продолжается до тех пор, пока не будет выполнен критерий сходимости. Инициализация осуществляется путем присваивания состояниям подходящих оценок (например, 0) и выбора случайным образом любого способа действий. После этого на первом этапе оценивается способ действий с помощью вычисления наибо- лее актуального значения состояния (листинг 46.2).
^laiaUaus^k Глава 46. Обучение с подкреплением 691 Листинг 462. Использование итерационного усовершенствования способа действий для вычисления значения каждого состояния по известной модели мира (цикл завершается после того, как обновления становятся относительно небольшими. Применяется функция оценки значения состояния, приведенная в листинге 46.1) repeat max = О for each state s old = V(s) # Вычислить новую оценку для этого состояния V(s) = state_value( s ) # Проверить, достигнуто ли улучшение max = MAX(max, ABSfold - V(s)>> end for until max < threshold После этого для улучшения способа действий проверяются все действия, что по- зволяет определить, есть ли лучший способ действий. Оба алгоритма, приведенные в листингах 46.2 и 46.3, вкладываются в один и тот же более крупный цикл, в кото- ром вычисления чередуются до тех пор, пока рассматриваемый способ действий не станет стабильным. Листинг 46.3. Этап усовершенствования способа действий, используемый для просмотра каждого состояния и проверки того, может ли быть предпринято лучшее действие я is a deterministic policy suggesting one action per state Q is the value for each state/action pair stable = true for each state s previous = (s) best = - о® # Определить, лучше ли какое-либо другое действие, чем текущее for each action а value = Q(s,a) # Если данное действие позволяет добиться # усовершенствования,сохранить его if value > best then best = value n(s) = a end if end for # Определить, была ли данная итерация стабильной if previous != n(s) then stable = false end for if stable then halt Итеративное усовершенствование способа действий завершается после того, как ис- ключается возможность вносить какие-либо изменения в способ действий. Следует от- метить, что в ходе всех итераций используется только один массив; массив V необходим для хранения оценок значений состояния. В некоторых реализациях предусмотрено хра- нение результатов следующей итерации в отдельном массиве. Для этого требуется боль- ший объем памяти, а период времени, необходимый для достижения сходимости, стано- вится более продолжительным, поэтому часто достаточно иметь только один массив.
692 Часть VII. Выбор действия Итерация по значениям Алгоритм итерации по значениям является более простым, поскольку в нем не предусмотрено чередование этапов. Оба этапа осуществляются вместе по принципу одновременного вычисления и улучшения оценок значений состояния. Способ дей- ствий вычисляется только после того, как заканчивается итерация по значениям. В псевдокоде, приведенном в листинге 46.4, предполагается, что все оценки зна- чений состояния в массиве V хуже по сравнению с оптимальным значением. (Под этим подразумевается значение V (s) £V* (s).) Эту закономерность можно относи- тельно просто проверить, а код немного упрощается. Если же такая возможность от- сутствует, то приходится сравнивать значения действий друг с другом и присваивать значению состояния наилучший результат (вместо сравнения значений действий, относящихся, к текущему значению состояния). После завершения итераций полу- ченная оценка способа действий позволяет выработать соответствующий способ действий (который должен быть близким к оптимальному). Листинг 46.4. Алгоритм итерации по значениям, который позволяет одновременно улучшать и оценивать значения состояния repeat max = О # Обработать все состояния в целях улучшения способа действий for each state s old = V(s) # Проверить все действия, относящиеся к возможным # усовершенствованиям for each action а value = Q( s, a ) # В случае необходимости обновить оценку if value > V(s) then V(s) = value end for # Запомнить величину корректировки max = MAX(max, ABS(old - V(s))) end for until max < threshold На интуитивном уровне можно понять, что действия, выполняемые в этом алго- ритме, соответствуют обновлениям значений квадратов двухмерной сетки, которые осуществляются одно за другим, и происходит проверка соседних квадратов для по- иска лучших путей. Метод Монте-Карло В методах Монте-Карло предпринимается попытка определить с помощью обу- чения оптимальный способ действий на основе экспериментов, в отличие от мето- дов, опирающихся на модель задачи, в которых используется динамическое про- граммирование. В связи с этим в методах Монте-Карло применяется эпизодический подход, в соответствии с которым обрабатывается несколько последовательностей “ состояние -действие ”.
Глава 46. Обучение с подкреплением 693 Краткий обзор Метод Монте-Карло основан на использовании эпизодического подхода для поис- ка оптимального значения состояния. В данном случае известен результат для каждого эпизода, поэтому может быть точно вычислена обесцениваемая отдача для каждого со- стояния. Тем не менее необходимо предусмотреть возможность учитывать вероятно- стный характер задачи. Для этого необходимо выполнить прогон алгоритма по многим эпизодам и собрать статистические данные, относящиеся к каждому прогону. Методы Монте-Карло обеспечивают изучение значения ожидаемой отдачи с ис- пользованием полученных статистических данных. Фактически точной оценкой значения состояния могут служить усредненные данные об обесцениваемой отдаче, относящиеся к каждому эпизоду. Чем больше количество имеющихся примеров, тем точнее становится конечная оценка. После этого из оцениваемых значений отдачи может быть получен оптимальный способ действий. На рис. 46.6 показан еще один пример мира, заданного на двухмерной сетке. Резервирование Рис. 46.6. Обучающий эпизод в простом двухмерном мире. В методе Монте-Карло резервируется ожидаемая отдача, начиная с конца эпизода и вплоть до его начала Алгоритм В листинге 46.5 приведен псевдокод, полученный на основании предположения, что имеется информация обо всех переходах в модели рассматриваемого мира, поэтому не- обходимо определить с помощью обучения только значения состояния. Эго — простой пример, который относительно часто встречается в играх, к тому же, он обеспечивает бо- лее быстрое обучение. А в варианте, который мог бы найти более широкое применение, можно предусмотреть определение оценок Q-значений для пар “состояние-действие”. В рассматриваемом примере достаточно предусмотреть замену каждого вхождения s вы- ражением (s,a) и модифицировать ахугнстствующим образом структуру данных. На первой стадии алгоритма должен быть сформирован произвольный эпизод по заданному способу действий. В результате этого происходит возврат последователь- ности состояний и обнаруживаются соответствующие вознаграждения. Массивы, содержащие значения ожидаемой отдачи, инициализируются нулями (листинг 46.5).
694 Часть VII. Выбор действия Листинг 46.5. Вариант с реализацией метода Монте-Карло за один проход (предполагается, что эпизод был уже сформирован с использованием одной из версий способа действий п) h is the length of the episode state is the array of states representing the episode reward is the reward collected at each time step expected is an array containing the sum of estimated returns total is an array of integers counting the number of estimates return = 0 # Начинать с конца эпизода и выполнять перебор в обратном направлении for t from h down to 1 # Определить текущее состояние s = state[t] # Накопить данные об отдаче и добавить вознаграждение return = reward[t] + return * discount # Собрать статистические данные, относящиеся к отдаче s total[s]++ expected[s] += return # После чего сохранить текущую оценку V(s) = expected[s] I total[s] end for Главный цикл алгоритма начинается в конце эпизода и пробегает по всем со- стояниям. Сохраняется промежуточная сумма отдачи и модифицируется оценка ка- ждого из состояний. Формирование эпизода Остается нерешенным вопрос о том, как должны формироваться эпизоды. Клю- чевой принцип состоит в том, что необходимо обеспечить перебор всех пар “состоя- ние-действие”. Важность этого требования обусловлена тем, что его соблюдение по- зволяет гарантировать оптимальность. Один из способов выполнения данного тре- бования известен как исследование начальных состояний. Идея такого подхода со- стоит в том, что эпизоды могут формироваться согласно любому способу действий, при условии что первая пара “состояние-действие” выбирается случайным образом (опять-таки, требуется хороший генератор случайных чисел). Практика показывает, что описанный метод является работоспособным, но может оказаться довольно медленным. Лучший подход мог бы предусматривать вначале про- ведение исследований на основе случайно выбранных состояний, а затем уменьшение величины случайного разброса после того, как результаты начнут улучшаться. Этот подход аналогичен управлению температурой на основании уравнения Больцмана в методе моделируемого отжига (который обсуждается в главе 17, “Персептроны”). Выводы С точки зрения применения в алгоритмах обучения с подкреплением, методы Монте-Карло можно классифицировать следующим образом. > Отказ от применения итерационного усовершенствования. Оценки значений со- стояния вычисляются на основании статистических данных, полученных в те- чение многочисленных прогонов, поэтому нет необходимости полагаться на оцениваемые значения отдачи, относящиеся к соседним состояниям.
^lataUausj^i Глава 46. Обучение с подкреплением 695 > Резервирование выборки. В этом алгоритме не предусматривается перебор всех смежных состояний. Вместо этого используются сформированные случайным образом эпизоды, а из этого следует, что произвольно выбирается единствен- ный путь через состояния. > Резервирование на полную глубину. Применение метода Монте-Карло связано с необходимостью ожидать результатов эпизода, чтобы определить отдачу. Полученное значение отдачи фактически включает информацию обо всех со- стояниях. При обновлении значений состояния учитываются все зарезерви- рованные данные, начиная от конечного состояния. Метод Монте-Карло хорошо подходит для решения задач, для которых модель мира отсутствует. Для сбора статистических данных достаточно провести моделиро- вание. Но для обработки достаточного количества эпизодов может потребоваться определенное время. Кроме того, для хранения данных об эпизоде во время их обра- ботки требуется некоторая дополнительная память. В силу таких особенностей дан- ный подход в большей степени применим для автономных процессов. Кроме того, несложно обеспечить его применение в локальных областях пространства состоя- ний, поэтому могут быть созданы изящные методы, предусматривающие совместное использование этого подхода в сочетании с другими подходами. Обучение на основе временной разности Обучение на основе временной разности может рассматриваться как гибридный подход, соединяющий в себе метод динамического программирования и метод Монте- Карло. Данный метод обеспечивает обучение на основании опыта с использованием итерационного усовершенствования для оценки значений состояний, а для повыше- ния его быстродействия в процессе обучения может применяться резервирование. Основные концепции Основой решений, базирующихся на рассматриваемом методе, является понятие временной разности. При этом для корректировки оценки не требуется ожидать конца эпизода, можно использовать оценки, полученные в следующем состоянии. Но после перехода от одного момента времени к другому ожидаемая отдача может измениться; нас интересует разность между этими значениями, называемая времен- ной. Эта временная разность (At) может служить для обновления оценки: At=rt+i+YV (St+1) -V (St) V(st)*-V(st)+ <xAt Во втором уравнении выражается то, что текущее вознаграждение V(st) может быть откорректировано на шаг At, масштабированный с применением константы а (альфа). Сам шаг At представляет собой поправку, взятую в направлении к целевой оценке; он соответствует данным об обесцениваемой оценке отдачи yv(st+1) следую- щего состояния и вознаграждении rt+1, собранным во время изменения состояния. Преимущество этого подхода состоит в том, что он позволяет определять с по- мощью обучения необходимый способ действий в оперативном режиме, не требуя подхода на основе динамического программирования, который предусматривает ис-
696 Часть VII. Выбор действия чёрпывающий перебор. Из этого также следует, что модель мира не требуется. Ожи- даемые значения вознаграждения интегрируются в процессе обучения, кроме того, при желании в ходе обучения можно также выявлять вероятности переходов (но не исключена также возможность принять какие-то гипотетические значения). Алгоритм В обучении на основе временной разности применяются два простых алгоритма. Один из этих алгоритмов, получивший название Sarsa, рассматривается как осно- ванный на применении способа действий, поскольку в этом алгоритме один и тот же способ действий служит и для обучения, и для исследования. С другой стороны, в методе Q-обучения способ действия не применяется, поскольку выбранные дейст- вия не влияют на обучение. (Поведенческий способ действий и способ действий, относящийся к управлению, могут рассматриваться отдельно.) Различия между этими двумя алгоритмами весьма невелики. Оба алгоритма обеспечивают определение с помощью обучения значений действия для каждого со- стояния (т.е. Q-значений). Кроме того, в обоих алгоритмах используется резервиро- вание на единичную глубину. Но в алгоритме Sarsa используется резервирование выборки (для обновления оценки служит только одно Q-значение), тогда как в алго- ритме Q-обучения применяется полное резервирование (для обновления текущей оценки служат все Q-значения, относящиеся к следующему состоянию). В данной главе рассматривается алгоритм Q-обучения, поскольку он нашел наиболее широкое распространение, обеспечивает лучшее качество обучения и не полагается на кон- кретный исследовательский способ действий (листинг 46.6). Листинг 46.6. Алгоритм Q-обучения, который позволяет улучшить оценку значений состояния с использованием полного резервирования a is a small constant as the learning rate у is the discount factor while learning execute action a collect reward r determine new state s’ best = - oo # Проверить каждое действие, относящееся к новому состоянию for each а' in s' # Внести в память только лучшее значение if Q(s',a') > best then best = Q(s',a') end if # Обновить значение предыдущей пары "состояние-действие" Q(s,a) += а * (г + у * best - Q(s,a)) end for # Обработать следующее состояние s — s1 end while Весьма аналогичный способ может применяться для оценки значений состояния, хотя в основе работы самого алгоритма лежат значения вероятностей переходов, полу- ченные с помощью модели мира. Процесс обучения может оказаться более быстрым, поскольку Q-значения сворачиваются в одно значение состояния, но менее точным.
^laiaHaus,^. Глава 46. Обучение с подкреплением 697 Скрытые проблемы Очевидно, что методы обучения с подкреплением основаны на разных концеп- циях, поэтому не удивительно, что при эксплуатации большинства алгоритмов при- ходится учитывать множество нюансов. Аппроксиматоры До сих пор предполагалось, что в массиве хранятся оценки значений, относя- щиеся к состояниям и действиям. Преимуществом такого представления является то, что он позволяет добиться с помощью большинства алгоритмов сходимости к идеальному способу действий. Но для этого необходим значительный объем памя- ти, поэтому указанный подход неприменим для решения крупных задач. Указанный массив, имеющий форму матрицы, может рассматриваться как гра- фик функции, оценивающей значения состояний или действий. Кроме того, преду- смотрена возможность использовать аппроксиматоры функций для вычисления аналогичного результата. Для этой цели обычно используются персептроны и дере- вья решений. Наиболее эффективное решение указанной задачи состоит в том, чтобы опреде- лить с помощью обучения точные оценки и сохранить их в массиве, а затем попы- таться аппроксимировать этот массив. Такой подход в большей степени применим в качестве основы для проведения вычислений в автономном режиме, поскольку для его реализации требуются две стадии предварительной обработки. Но его преимуще- ство состоит в том, что непосредственно доступны все правильные данные, а это по- зволяет достичь с помощью аппроксиматора наилучших возможных результатов. После этого аппроксиматор может использоваться в оперативном режиме в качестве компактного представления огромной матрицы. Еще один вариант состоит в том, что аппроксиматор может стать базовым пред- ставлением, используемым для обучения. Б идеальном случае данным методом можно будет воспользоваться для инкрементного обучения, по аналогии с персеп- тронами. В целом, описанный подход немного сложнее и требует больше размыш- лений. Основная задача состоит в том, что готовые доказательства сходимости большинства алгоритмов отсутствуют. Поэтому процесс получения правильных ре- зультатов становится гораздо более эмпирическим. Иерархии Кроме того, в последнее время значительное внимание уделяется также иерархи- ческим решениям. Одним из преимуществ такого подхода является то, что он позво- ляет разделить задачу на иерархию подзадач. В первую очередь осуществляется по- иск решений меньших задач, а затем с помощью этих строительных блоков форми- руются решения более сложных задач. В целом, основная идея подхода, как и при использовании иерархических порождающих конечных автоматов, состоит в том, чтобы общие проблемы были представлены на каком-то уровне абстракции, чтобы были созданы модули, а затем эти модули использованы повторно [19,39].
698 Часть VII. Выбор действия В большинстве случаев разработка структуры иерархии осуществляется вручную с привлечением экспертов. Таким образом, ответственность за упрощение про- странства “состояние-действие” каждого компонента и сборку этих компонентов в удобной форме возлагается на инженера. В таком случае для определения с помо- щью обучения отображения “состояние-действие” могут применяться типичные методы обучения с подкреплением. Обсуждение полученных результатов В контексте разработки игровых средств ИИ обучение с подкреплением может стать источником значительных преимуществ, но не лишено и недостатков. Преимущества Обучение с подкреплением основано на чрезвычайно простом понятии сигнала вознаграждения. А для формулировки задачи в терминах вознаграждений и наказа- ний обычно требуются весьма небольшие усилия. Таким образом, остается лишь промоделировать состояния и действия, а затем приступить к обучению с подкреп- лением (а эта цель в компьютерных играх достигается легко). В результате методы обучения с подкреплением становятся чрезвычайно гибкими. Может быть доказано, что если используемое представление не предусматривает аппроксимацию оценок, то большинство алгоритмов обучения с подкреплением сходится к идеальному способу действий. Вполне естественно, что для моделирова- ния требуется определенное время, а также нельзя обойтись без достаточно полного исследования состояний и действий, но качество результатов все равно сходится к оптимальному асимптотически. Разработано много разновидностей алгоритмов обучения с подкреплением. Эти алгоритмы в случае необходимости позволяют обойтись без применения моделей мира, а в результате обучения дают возможность определить вероятности переходов или ожидаемые вознаграждения. Но если имеется модель мира, то эти алгоритмы позволяют использовать ее в максимальной степени. Недостатки Примитивный подход, в котором для хранения значений действия используется матрица, плохо масштабируется, поскольку требует большого объема памяти. С другой стороны, применение в больших масштабах не обеспечивают и алгоритмы, в которых применяется резервирование на единичную глубину, поскольку их эксплуатация свя- зана с выполнением большого объема вычислений. Сама суть резервирования являет- ся таковой, что для передачи вознаграждения в конечном итоге во все состояния тре- буются многочисленные прямые итерации. Этот недостаток особенно недопустим в динамических вариантах среды. Во многих случаях допустимым решением становится использование аппрокси- маторов, но в таком случае доказательство сходимости алгоритма теряет силу. То, что сходимость не гарантируется, может привести к появлению непредсказуемых
^aiattaus,^. Глава 46. Обучение с подкреплением 699 форм поведения и непредвиденных результатов, для устранения чего требуется большой объем экспериментирования. Само применение на практике принципа, основанного на вознаграждениях и (или) наказаниях, может оказаться удивительно сложным. Например, нелегко представить с помощью положительных или отрицательных вознаграждений поведение, подобное человеческому. Резюме В основе определения задач обучения с подкреплением лежат фундаментальные принципы, указанные ниже. > Мир переходит из одного состояния в другое, причем в каждом состоянии за- даны различные доступные действия. > После выполнения действия из среды происходит получение оценочной об- ратной связи и наблюдается следующее состояние. > В некоторых алгоритмах информация о выполняемом действии используется для определения вероятности достижения следующего состояния и среднего ожидаемого вознаграждения. > Результат накопления вознаграждения (обесцениваемый со временем) рас- сматривается как отдача. > Способ действий показывает, какие действия должны быть предприняты в том или ином состоянии, либо в виде распределения вероятностей, либо в виде единственного (детерминированного) действия. Концепция значений состояния и действия позволяет использовать алгоритмы для определения преимуществ каждой ситуации. Ниже описаны три основных под- хода к организации обучения с подкреплением. > В динамическом программировании, в основном, используются математиче- ские методы обработки знаний о среде, которые предусматривают обновление всех оценок с применением множества линейных уравнений. > В методах Монте-Карло используется большое количество обучающих эпизо- дов, сформированных случайным образом, для извлечения информации о тен- денциях с помощью полученных статистических данных. Для распространения данных о вознаграждении, начиная с конца каждого эпизода, используется ре- зервирование на полную глубину. > В методах обучения на основе временной разности оценки состояний обнов- ляются инкрементно, с использованием значений, относящихся к соседним состояниям (итерационное усовершенствование). Каждый из этих методов является наиболее применимым в тех или иных услови- ях. В следующей главе подход к обучению на основе временной разности использу- ется для создания адаптивных стратегий в играх на выживание.
700 Часть VII. Выбор действия Практическая демонстрационная версия Для демонстрации теоретических сведений, приведенных в данной главе, разработан анимат, получив- ший имя Inforcer. В различных частях архитектуры средств ИИ этого анимата используются различные формы обучения с подкреплением. В анимате Inforcer используется модульный сигнал вознаграждения, что позволяет отдельно рассматривать обратную связь, относящуюся к каждому компоненту. Если обу- чение различных компонентов происходит с одинаковой скоростью, то на первых порах создаваемые формы поведения не особенно реалистичны, но со временем действительно достигают приемлемых уровней.
^aiattaus,^. Гпава 47 Усвоение с помощью обучения АКТИВИЗИРУЕМЫХ СТРАТЕГИЙ В ЭТОЙ ГЛАВЕ, • Декомпозиция с помощью методов управления • Адаптивные формы поведения, связанные со сбором предметов • Моделирование движения • Усвоение с помощью обучения стилей стрельбы • Другие возможности • Оценка полученных результатов • Резюме В настоящей главе показано, как использовать адаптацию для определения наиболее прием- лемых стратегий борьбы на выживание. Для ав- томатического создания необходимых форм по- ведения применяется ряд алгоритмов обучения с подкреплением. При этом все еще требуется участие инженера по искусственному интеллекту, но его роль состоит в проектировании, а не реали- зации программного обеспечения. С точки зре- ния проектировщика эта новая система проще поддается неявной корректировке, но задача яв- ного управления ею становится сложнее. А с точ- ки зрения игровой обстановки этот подход к обу- чению с подкреплением обеспечивает адаптацию аниматов, в результате чего перед участниками игры возникают интересные задачи. В следующих разделах рассматриваются про- блемы создания архитектур ИИ, предназначен- ных для усвоения с помощью обучения форм поведения высокого уровня с использованием оценочной обратной связи (т.е. настроений). В настоящей главе рассматриваются пере- численные ниже темы. > Практические и теоретические причины разделения задачи на компоненты. > Накопление вариантов форм поведения, оптимизированных только с использова- нием непосредственного вознаграждения, и сбор статистических данных для оценки отдачи.
702 Часть VII. Выбор действия > Определение принципов освоения с помощью Q-обучения интересующих нас двигательных форм поведения, в ходе которого используются отсроченные вознаграждения, полученные путем уточнения оценок, основанных на других вознаграждениях. > Алгоритм эпизодического обучения, позволяющий оценивать преимущества стилей стрельбы в конце каждого боя. > Причины отказа от использования обучения с подкреплением применительно к другим, более простым функциям. > Проверка системы в мире игры и оценка результатов с технической точки зрения. К концу данной главы будет создан полностью работоспособный активизируе- мый анимат, в котором применяются сигналы подкрепления для адаптации форм поведения. Декомпозиция с помощью методов управления Алгоритмы обучения с подкреплением представляют собой универсальные инст- рументальные средства поиска отображений между состояниями и действиями. Эти алгоритмы могут применяться для усвоения с помощью обучения стратегий борьбы на выживание путем связывания ситуаций с правильными формами поведения. Со всей этой задачей можно справиться, применяя единственную таблицу, в которой хранятся вероятностные оценки способов действий, указывающие оцениваемую от- дачу для каждой пары “состояние-действие”. Эту задачу позволяют успешно решать алгоритмы обучения с подкреплением различных типов. Но если количество состояний и действий велико, возникает важная проблема, связанная с тем, что обучение происходит более медленно. Для поиска подходящего способа действий требуются дополнительные итерации. Поэтому становится выгод- ным применение принципа разделения задачи на подзадачи с точки зрения потреб- ления памяти и вычислительных ресурсов. Кроме того, обеспечивается возможность применения параллельного обучения с подкреплением, а это означает, что можно рассматривать несколько действий одно- временно. А все алгоритмы, описанные в главе 46, “Обучение с подкреплением”, позволяют выбирать и соответственно распределять вознаграждение только приме- нительно к одному действию. В настоящее время одной из актуальных задач в иссле- дованиях обучения с подкреплением является осуществление нескольких парал- лельных действий и распределение вознаграждения. Чтобы исключить необходи- мость решать эту проблему и применять тактику, состоящую из многочисленных компонентов, в системе необходимо использовать предусмотренные по умолчанию формы поведения (о чем речь идет в главе 45, “Реализация интеллектуальных тактических форм поведения”), которые вызываются по мере необходимости алго- ритмом обучения с подкреплением, как показано на рис. 47.1.
Глава 47. Усвоение с помощью обучения активизируемых стратегий 703 ^alallaus^k Рис. 47.1. Единственное отображение состояний в действия, используемое для выбора подходящей тактической формы поведения Разделение задачи на подзадачи позволяет использовать алгоритмы обучения с подкреплением для уточнения отдельно каждого компонента форм поведения, в результате чего проект становится более гибким. Тактические формы поведения могут формироваться на основе любой комбинации функций, а средства ИИ адап- тируются в целях поиска наиболее приемлемого подхода. Принципиальная схема такого подхода показана на рис. 47.2. Восприятия Состояния Модульные отображения Стили Способности Действия Рис. 47.2. Применение многочисленных алгоритмов обучения с подкреплением для формирова- ния компонентов тактических форм поведения, каждый из которых соответствует кон- кретным выходным данным
704 Часть VII. Выбор действия В этой главе принято предположение, что задача разделена на компоненты. Каждый компонент управляет отдельной частью анимата, поэтому декомпозиция основана на структуризации выходных данных. Следует отметить, что и в первом, и во втором случае потребление памяти может быть одинаковым, поскольку в обоих случаях можно исполь- зовать идентичные проекты пространства состояний. Преимущества, достигаемые в по- следнем случае, связаны с упрощением самой задачи обучения с подкреплением. Таким образом, обеспечивается возможность декомпозиции форм поведения на отдельные функции, но возможно также разбиение сигнала вознаграждения путем распределения его по компонентам соответствующим образом. Например, возна- граждение, связанное со сбором элементов, передается в компонент, предназначен- ный для сбора, а вознаграждение за причиненный противнику ущерб — в компо- нент, обеспечивающий стрельбу. Вознаграждение, предоставляемое в такой форме, принято называть модульным, в отличие от целостных сигналов вознаграждения (которые включают все формы обратной связи вместе взятые). Основным преимуществом модульных сигналов вознаграждения является то, что обратная связь становится чрезвычайно точной и соответствующей рассматриваемой задаче, а количество шума, присутствующего в сигнале вознаграждения, уменьшается. В следующих разделах отдельно рассматриваются различные обучающиеся функ- циональные компоненты, указанные ниже. > Стремление заниматься сбором объектов. > Типы движения. > Стили стрельбы. > Другие функции, такие как выбор оружия. Усовершенствование каждого из этих компонентов осуществляется с использо- ванием отдельного алгоритма обучения с подкреплением. Адаптивные формы поведения, связанные со сбором предметов Тактические формы поведения, относящиеся к компоненту, который обеспечи- вает сбор предметов, отвечают за принятие решения о том, какого типа предметы должен собирать анимат. Это решение принимается на основе обратной связи, зави- сящей от настроений анимата. Действия Алгоритм обучения с подкреплением позволяет усвоить в результате обучения наи- более подходящие действия. В данном случае действия с<хггаетстнуют допустимым ти- пам предметов, которые могут быть собраны: доспехи, средства повышения жизнеспо- собности, оружие, боеприпасы или ни один предмет. Последнее, пустое действие ис- ключается из обучения; оно выбирается по умолчанию, если ни одно из прочих дейст- вий не дает положительных преимуществ. Другие обучающиеся компоненты, под держивающие различные типы движений, отвечают за определение того, требуется ли сбор предметов. (Например, если запасы средств обеспечения жизнеспособности и доспехов почти полны, то, возможно, не стоит вообще заниматься сбором.)
Глава 47. Усвоение с помощью обучения активизируемых стратегий 705 Состояния Для всех алгоритмов обучения с подкреплением д ля усвоения с помощью обучения требуемого способа действий необходимы переменные состояния. Если речь идет о фор- мах поведения, касающихся сбора предметов, то переменные состояния, главным обра- зом, представляют текущие запасы: имеющиеся боеприпасы, количество единиц ору- жия, наличие средств обеспечения жизнеспособности и степень обеспеченности доспе- хами. Эти факторы определяют, можно ли заниматься сбором предметов, а настроения показывают, “чувствует” ли анимат, что это необходимо. Кроме того, настроения как та- ковые включаются в состояние с использованием обучения с подкреплением. Сигнал вознаграждения Сигнал вознаграждения, главным образом, формируется на основании исследования того, каковой является коллекция предметов. Если какой-то предмет важен для участни- ка игры, то, по-видимому, его получение и будет рассматриваться как некоторая форма вознаграждения. Кроме того, значение вознаграждения может изменяться в зависимости от настроения. (Например, если участник игры разгневан, то для него наличие средств обеспечения жизнеспособности и доспехов может показаться малозначащим.) Усвоение с помощью обучения способа действий Через регулярные интервалы выбирается новый режим сбора предметов; переход в другой режим активизируется после поступления сигнала вознаграждения (например, связанного с тем, что необходимый предмет получен) или по истечении определенного времени. Обучение осуществляется с помощью простого статистического метода. Для обновления оценки отдачи текущее вознаграждение складывается со значением в на- копителе суммарного вознаграждения, после чего наращивается значение перемен- ной, применяемой для подсчета количества выборок. Оцениваемая отдача представля- ет собой указанную сумму, деленную на количество выборок (т.е. среднее значение). В процессе обучения новое действие выбирается стохастически, с вероятностя- ми, пропорциональными оцениваемой отдаче. Если результаты обучения являются удовлетворительными, то созданная форма поведения, связанная со сбором предме- тов, может включать несколько режимов одновременно (например, обеспечивая в одно и то же время сбор средств обеспечения жизнеспособности и доспехов). Моделирование движения В ситуациях борьбы на выживание могут использоваться различные типы движений. Компонент Q-обучения отвечает за отображение ситуации на правильный тип движе- ния, а сигнал вознаграждения формируется с учетом настроений и успехов в игре.
706 Часть VII. Выбор действия Действия Действия сгклъетстнуют различным типам движений. К ним относятся стояние на месте, изучение обстановки и сбор предметов в отсутствие противника, а также включе- ны преследование и уклонение от ударов во время боя. Движение каждого типа может осуществляться с разными скоростями, поэтому появляется возможность создавать та- кие варианты, как ходьба и бег. Но это приводит к увеличению размеров пространства действий, поэтому обеспечение возможности движения на разных скоростях следует предусматривать, только если это позволяет достичь практических преимуществ. Состояния Определение состояний складывается, главным образом, из функций высокого уровня, представляющих состояние игры. Что касается боя, то определения функций включают прогнозируемый результат, текущую тенденцию и физические возможности для продолжения борьбы. Такие определения проектируются экспертами, которые способны учитывать многочисленные подробности, касающиеся текущей ситуации. Определение состояния включает также информацию о среде, накапливаемую, если борьба ведется не столь активно (например, о возникающих поблизости звуках). Сигнал вознаграждения Оценочная обратная связь формируется на основе результатов поединков (например, смерть, выживание или уничтожение противника). В зависимости от настроения, учи- тываются также другие различные события (например, причиненный ущерб, продолжи- тельность борьбы и исследованная местность). Сигнал вознаграждения накапливается во времени, но через регулярные интервалы обесценивается. Благодаря использованию не- больших значений коэффициентов обесценивания (составляющих около 10%) повыша- ется значимость вознаграждений, полученных последними по времени. Усвоение с помощью обучения способа действий В отличие от форм поведения, связанных со сбором предметов, при усвоении с по- мощью обучения двигательных форм поведения необходимо учитывал» обесцениваю- щиеся вознаг[1ажзения. Для достижения этого вознаграждение распространяется от од- ного состояния к другому с течением времени. (Такой подход, обычный для Q-обуче- ния, принято называть резервированием на единичную глубину.) Кроме того, в процессе Q-обучения для вычисления значения текущего состояния используются оценки преды- дущих возвращаемых значений, поэтому фактически осуществляется итерационное усо- вершенствование. Сигнал вознаграждения обесценивается и накапливается в течение определенного времени, до тех пор пока не произойдет изменение состояния. После этого модифи- цируется значение предыдущего состояния с учетом значения текущего состояния.
Глава 47. Усвоение с помощью обучения активизируемых стратегий 707 ftaiaHausiiik. Усвоение с помощью обучения стилей стрельбы Поведение во время выбора оружия (и в меньшей степени, во время стрельбы) можно откорректировать в целях выполнения различных требований (например, основанных на оценке эффективности или настроений аниматов). Такая цель дос- тигается на основе подходов к обучению с подкреплением, базирующихся на стати- стических данных и обучающих эпизодах (иными словами, на основе методов Мон- те-Карло; см. главу 46, “Обучение с подкреплением”). Действия Возможные действия, выбираемые алгоритмом обучения, соответствуют стилям стрельбы и выбора оружия. Например, обычным требованием является нанесение значительного ущерба в расчете на одну секунду, повышение вероятностей попада- ния, ведение продолжительных поединков, а также высокая степень смертности от первого выстрела. Алгоритм обучения с подкреплением позволяет определить с по- мощью обучения наиболее приемлемый стиль для каждой ситуации, информация о котором затем передается средствам реализации соответствующих функций. Состояния Сигнал вознаграждения влияет на выбор состояний, поскольку желательно иметь для каждого состояния точные оценки значений. Таким образом, для каждого со- стояния основными параметрами становятся настроения, поскольку вознагражде- ние (а, следовательно, и способ действий) изменяется в зависимости от настроения. Но некоторые аспекты вознаграждения могут быть не подвержены настроениям (например, смерть). В связи с этим в модель состояния включаются другие стратеги- ческие характеристики ситуации; при этом учитывается назначение компонента движения. Это позволяет использовать обучение с подкреплением для поиска пра- вильных стилей с учетом настроений и других общих тенденций. Сигнал вознаграждения Сигнал вознаграждения становится активным только в ходе поединков, особенно тогда, когда анимат запускает поражающие элементы. Это позволяет анимату отличать низкое вознаграждение за бездеятельность от низкого вознаграждения за неудовлетво- рительную производительность (а это способствует обучению). Сигнал вознагражде- ния обычно определяется с учетом настроений, но некоторые аспекты вознаграждения являются независимыми от эмоций (такие, как основное желание выжить). Усвоение с помощью обучения способа действий Очередной выбор стилей стрельбы осуществляется через регулярные интервалы, пока еще ведется активная борьба. Обучение является эпизодическим, поэтому оценки корректируются только после окончания борьбы (а борьба обычно заканчи- вается с экстремальными значениями вознаграждения, или высокими, или низки-
708 Часть VII. Выбор действия ми). Осуществляется обработка информации обо всех состояниях и вознаграждение ях, собранная в ходе борьбы, и соответствующим образом обновляется ожидаемая отдача, относящаяся к каждому действию. Другие возможности Функции перемещения, стрельбы и сбора предметов исследуются с помощью алгоритмов обучения. В результате применения адаптивных средств ИИ эти функ- ции становятся более совершенными, поскольку обеспечивается возможность авто- матического поиска наиболее приемлемой комбинации навыков без прямого уча- стия проектировщика. А когда речь идет о других формах поведения, таких как обзор местности (например, сосредоточение на одном объекте или осмотр), обучение не дает никаких преимуществ. Такие функции можно намного проще выразить в тер- минах настроений, без применения какой-либо формы адаптации. Для решения указанной задачи можно было бы применить обучение с подкрепле- нием, но для этого необходимо определить сигнал вознаграждения, а также подгото- вить состояния и действия. Возникающие в связи с этим временные затраты переве- шивают преимущества. Таким образом, при использовании в проектах адаптивных форм поведения необходимо следить за тем, чтобы сложные технологии применялись исключительно по назначению, но эта тема широко обсуждается в следующей главе. Оценка полученных результатов Таким образом, обучение осуществляется на очень высоком уровне, поэтому соз- данные в результате формы поведения становятся приемлемыми, даже если и не со- всем оптимальными. При условии, что аниматы принимают согласованные реше- ния, не происходит задержка при переключении с одной тактической формы на другую (иными словами, аниматы не останавливаются в задумчивости через каждую секунду). В азарте игры для участника игры неоптимальные действия аниматов час- то остаются незамеченными. Несмотря на это, специалист по искусственному ин- теллекту или внимательный наблюдатель легко обнаруживает, что некоторые реше- ния принимаются аниматом в целях осуществления исследовательских действий. В целом, практический опыт демонстрирует, что обучение оказывает огромное влияние на производительность, поскольку анимат, прошедший обучение, легко побеждает анимата, инициализированного случайным образом. Это особенно уди- вительно, если принять во внимание то, что аниматы оптимизируют свое поведение главным образом с учетом своих настроений, а в действительности понятие произ- водительности заложено в них лишь неявно. Для разработки модели подкрепления требуется по меньшей мере столько же вре- мени, как и для создания форм поведения вручную с помощью архитектуры обобще- ния. Такая ситуация не изменяется, даже если алгоритм обучения уже был реализован. Задача программной реализации теории подкрепления является удивительно простой (лишь не намного сложнее, чем при использовании уравнений), а большая часть рабо- чего времени инженера затрачивается на корректировку модели “состояние-действие” с учетом функций, предложенных экспертом.
'NataUausiik Глава 47. Усвоение с помощью обучения активизируемых стратегий 709 Удивительно также то, что сигналы вознаграждения не требуют большой на- стройки. Вообще говоря, сигнал вознаграждения определяет желаемую форму пове- дения неявно, а алгоритм обучения находит более явный способ ее достижения. По- этому, если форма поведения оказывается неправильной (что обнаруживается на этапе эксплуатации приложения), то проектировщиком должен быть откорректиро- ван сигнал вознаграждения. Но в данном случае не используется точное определение окончательно полученной формы поведения как “оптимальной” стратегии. Вместо этого мы рассчитываем на то, что форма поведения будет создана эмерджентно, ис- ходя из принятого способа определения эмоций. Этот подход является более гиб- ким, следовательно, требуется меньший объем работы, но при его использовании становится также намного сложнее воспроизведение существующих стратегий (например, задача усложнится, если проектировщик пожелает, чтобы аниматы про- демонстрировали какую-то конкретную тактику). Если требуется скрыть от людей-игроков то, что происходит в ходе обучения, лучше всего организовать обучение в автономном режиме. А для обеспечения воз- можности обучения в оперативном режиме необходимо предусмотреть аттестацию хотя бы в минимальном объеме. Например, должен быть выбран приемлемый спо- соб действий, позволяющий частично отказаться от исследования обстановки ради реализации на практике усвоенных форм поведения. Усвоение в результате обуче- ния такого способа действий может все равно главным образом осуществляться в ав- тономном режиме, что позволяет исключить необходимость в проведении исследо- вательских действий, которые лежат в основе обучения. Но вероятность того, что данная система будет останавливаться в одном и том же состоянии при выполнении одинакового действия, невелика, независимо от того, проводится ли ее обучение в автономном или оперативном режиме. Эмоции вызы- ваются к действию независимо и изменяются в течение времени. Ведь если бы ани- мат осуществлял аналогичные формы поведения по прошествии небольшого про- межутка времени, то игра стала бы скучной, не говоря уже о других недостатках. Этс означает, что текущее состояние, относящееся к подкреплению, изменяется автома- тически, а это приводит к выбору других действий. Вообще говоря, при использовании этой обучающейся системы приходится уде лять много внимания корректировке и проверке различных компонентов, но несмотря на это, она обладает огромным преимуществом перед системами, спроектированным! вручную, — способностью приспосабливаться к тенденциям, возникающим в ходе иг ры. В результате создается изменчивая игровая обстановка, а средства ИИ становятс более гибкими и способными лучше справляться с противниками. Но в силу того, чт выбран именно тот способ моделирования задачи, который рассматривается в данно] главе, обеспечивается возможность усваивать в результате обучения только общие так тические формы поведения; возможность усвоения каких-то индивидуальных шабло нов исключена. По своему характеру обучение с подкреплением является статистиче ским, но позволяет справляться с подобными задачами, если модель состояния явля ется всесторонней (т.е. применяется модель мира, включающая отдельные шаблоны Для этого требуется больше памяти и вычислительных ресурсов, а продолжительное! обучения становится больше, поэтому, если потребуется обеспечить противостоян» индивидуальным стратегиям, может оказаться более приемлемым подход, основании на планировании.
710 Часть VII. Выбор действия С точки зрения технической реализации Q-обучение действительно является не- сложным, поскольку для него не требуется модель мира (это соответствует псевдокоду, приведенному в главе 46, “Обучение с подкреплением”)- В варианте, основанном на применении метода Монте-Карло, требуется немного больше кода и больший объем памяти, поскольку приходится отслеживать состояния, встретившиеся в ходе борьбы. Применение любого подхода, основанного на динамическом программировании, по- требовало бы в данном случае намного больше усилий, поскольку информацию о ве- роятностях переходов и вознаграждений пришлось бы собирать заранее. На пользу этой системе пошло также то, что ее декомпозиция осуществлялась с учетом функций, поскольку в этом случае обучение происходит быстрее, чем при использовании компактных представлений. Реализация функций движения и стрельбы связана с небольшой избыточностью, поскольку состояния являются оди- наковыми, но в результате того, что эти состояния представлены отдельно, появля- ется возможность обновлять их с разной периодичностью. Практическая демонстрационная версия Материалы, представленные на Web-узле по адресу http://AiGameDev.com/, позволяют луч- ше понять особенности программного обеспечения, лежащего в основе этой системы. Разработан анимат, получивший имя Darth Mole, и представлен код этого анимата наряду с руководством по его запуску в составе игры. Разработанное средство ИИ способно реализовать адаптивные стратегии борьбы на выживание с использованием комбинации компонентов, обучение которых осуществляет- ся с помощью подкрепления. Резюме На верхнем уровне архитектуры осуществляется декомпозиция с учетом возмож- ностей управления различными частями вывода, что приводит к достижению опи- санных ниже преимуществ. > Обучение с подкреплением ускоряется, а использование памяти уменьшается. > Формы поведения становятся более гибкими, поскольку не приходится ис- пользовать тактику, заданную по умолчанию. > Устраняется проблема, связанная с тем, что в процессе обучения с подкрепле- нием неоднократно повторяются одни и те же действия, поскольку действия рассматриваются отдельно, а сигнал вознаграждения дифференцируется с уче- том форм поведения. Как указано ниже, в каждом компоненте по существу происходит усвоение с по- мощью обучения конкретных возможностей на основе данных о настроении и дру- гой информации. > Применительно к формам поведения, обеспечивающим сбор предметов, про- изводится обучение, позволяющее определить требуемый тип объекта на ос- новании проверки состояния запасов. Для оценки преимущества объектов каждого типа используется статистический анализ, при котором получение данных обратной связи производится непосредственно (т.е. без применения какого-либо отсроченного вознаграждения).
^atattaus,^ Глава 47. Усвоение с помощью обучения активизируемых стратегий 711 > В компоненте, обеспечивающем движение, используются определяемые экс- пертом характеристики, относящиеся к рассматриваемой ситуации, которые позволяют определить, следует ли начать преследование, уклониться от удара или осуществить какие-то другие нейтральные формы поведения. Метод Q- обучения предусматривает возможность применять в алгоритме отсроченное вознаграждение. > Обучение применению стилей стрельбы (например, агрессивного или точно- го) осуществляется с помощью эпизодического алгоритма. Сбор данных про- исходит на протяжении каждого эпизода борьбы, а оценки обновляются по завершении эпизода. Используются также определяемые экспертом характе- ристики, относящиеся к борьбе. > Усвоение с помощью обучения других форм поведения не применяется, по- скольку для их поддержки лучше подходят обычные методы программирования. Обучение проводится на высоком уровне, поэтому вырабатываемые решения в боль- шей степени способствуют повышению интеллектуальности поведения аниматов, а не реалистичности (которая остается достаточно высокой благодаря адаптации). Безуслов- но, производительность перед началом обучения является низкой, но после нескольких итераций достигается заметное улучшение. Прежде чем приступить к использованию системы для обучения в оперативном режиме, необходимо принять некоторые меры предосторожности (например, выбрать подходящий способ действий). Но в основном эти меры реализованы в самом проекте (в частности, предусмотрено применение харак- теристик, определяемых экспертом, и используется плотное представление). В следую- щей главе проблематика применения адаптивных форм поведения рассматривается бо- лее подробно.

NataHaus^ Гпава 48 Применение адаптивных ФОРМ ПОВЕДЕНИЯ В ЭТОЙ ГЛАВЕ- • Общая формулировка задачи • Надежные методы программотехники • Надежный проект • Методология • Резюме • Краткий ретроспективный обзор • Дальнейшие перспективы В каждой части этой книги, в которой шла речь о технологиях обучения, были представлены прототипы, применимые для решения задач в оперативном режиме. Динамически развиваю- щиеся ситуации являются особенно сложными, поэтому требуют применения нестандартных ре- шений. В настоящей главе, основанной на мате- риале главы 35, “Проектирование обучающихся средств ИИ”, приведено описание проблем, свя- занных с адаптацией, и рассматриваются способы их преодоления. В данной главе затрагиваются перечисленные ниже темы. > Различного рода проблемы, связанные с применением адаптивных средств ИИ, каждая из которых характеризуется собст- венными симптомами и требует примене- ния соответствующих диагностических методов. В первом разделе кратко пред- ставлены возможные способы преодоле- ния таких проблем. > Конкретные решения из области програм- мотехники, предоставляющие основу анали- за и решения задач, связанных с адаптацией. > Повышение значимости правильного выбо- ра способов проектирования с точки зрения адаптации. В первую очередь производится обсуждение процедуры моделирования за- дачи, наряду с механизмами обратной связи, поскольку эта тема является особенно слож- ной. Следует также учитывать, что в сочета- нии с процедурами обучения в оперативном режиме в наибольшей степени подходят строго определенные архитектуры.
714 Часть VII. Выбор действия > Методологии разработки, способствующие уменьшению сложности задач, связанных с применением адаптивных средств ИИ. Рекомендации, приведенные в следующих разделах, могут применяться в боль- шинстве других систем, требующих эффективного обеспечения адаптации. Общая формулировка задачи Прежде чем приступать к обсуждению способов предотвращения или исключения проблем, связанных с использованием адаптивных средств ИИ, необходимо вначале их определить. Для выявления источников проблем должно применяться сочетание внешних наблюдений и анализа внутреннего функционирования системы. Отсутствие обучения Симптом. Обучение не происходит или осуществляется неудовлетворительно. Пример. Применение дерева решений для выбора оружия обычно приводит к вы- бору самого слабого вида оружия, несмотря на наличие лучших вариантов. Диагностика. Модель или реализация являются неполными (возможно, лишь в небольшой степени). Рекомевдации (см. приведенный ниже список). > Отладка кода и корректировка проекта. > Проверка исходного кода и сравнение его функционирования с тем, что дик- тует теория. > Определение применимости модели с помощью поэтапного анализа. Отсутствие возможности контроля Симптом. Результаты обучения не согласуются с конкретными результатами или ухудшаются со временем. Пример. После проведения обучения с подкреплением анимат не отступает после значительного снижения своей жизнеспособности и вместо этого предпринимает попытки героического нападения. Диагностика. Система не обеспечивает надежного предоставления необходимого управления. Рекомевдации (см. приведенный ниже список). > Применение явных способов управления обучением под дополнительным на- блюдением. > Применение в проекте такой архитектуры, которая позволяет устранять про- блемы управления без обучения. > Ограничение сферы обучения другими подмножествами форм поведения или действий. > Уменьшение усилий по обучению после того, как со временем производи- тельность достигнет удовлетворительного уровня.
Глава 48. Применение адаптивных форм поведения 715 Отсутствие возможности достичь оптимального результата Симптом. Обучение не позволяет достичь идеального результата. Пример. Средняя ошибка нейронной сети, используемой для выбора цели, оста- ется высокой. Диагностика. Применяемый проект не способствует адаптивному обучению; адаптация системы происходит по принципу оптимизации. Рекомендации (см. приведенный ниже список). > Проектирование системы с учетом устранения недостатков, обусловленных тем, что невозможно достичь оптимального результата. > Предоставление рекомендаций в процессе обучения на примерах (внешний контроль) или руководящих указаний (обратная связь). > Повышение качества моделирования задачи для упрощения поиска наилучшего решения (например, с применением характеристик, выявленных экспертом). Отсутствие возможности достичь реалистичного поведения Симптом. Поведение недостаточно реалистично во время адаптивного обучения или в конце обучения. Пример. В результате обучения прицеливанию анимат начинает вращаться вокруг своей оси в течение нескольких секунд. Диагностика. Объем информации, который должен быть усвоен в результате обу- чения, слишком велик; применяемый в проекте способ действий не способствует достижению реалистичности; действия не соответствуют ситуации. Рекомендации (см. приведенный ниже список). > Проведение максимально возможного объема обучения в автономном режиме. > Выбор лучшего способа действий, который предусматривает применение воз- награждений за такое поведение, при котором обучение и осуществление дей- ствий не приводят к возникновению опасных ситуаций. > Проектирование действий на более высоком уровне, что позволяет уменьшил вероятность появления нереалистичных сочетаний действий. Надежные методы программотехники Первый ряд рекомендаций, основанных на описанных выше решениях, которые позволяют повысить качество адаптивного поведения, предусматривает применение методов программотехники. Надежное программирование При создании еэбучающейся системы крайне важно деэбиться максимальной на дежности исходного кода реализации алгоритма. При наличии программных ошибок i процессе проверки возникают значительные затруднения, поскольку выявление таки
716 Часть VII. Выбор действия ошибок является сложным. Поэтому вполне оправдано стремление затратить допол- нительное время на проверку программного обеспечения средств ИИ в целях сокра- щения количества программных ошибок. Такой цели можно, в частности, достичь с применением процедур тестирования программных модулей. А если после этого об- наружится, что система не способна к обучению или вырабатывает неоптимальные ре- зультаты, можно считать, что причиной этого не является программный код, поэтому все усилия необходимо направить на проверку самого проекта. Проверка и отладка Отладка кода может проводиться с использованием обычных инструментальных средств, таких как gdb или интегрированный отладчик, который входит в состав среды интерактивной разработки Visual Studio. Но когда дело касается отладки программного обеспечения средств ИИ, часто возникает необходимость в использовании визуальных средств отладки. В их число могут входить изображения, выводимые на терминал, или метки в виде геометрических объектов (например, линий, окружностей или прямо- угольников), которые отображаются в ходе игры и обозначаются разными цветами. Кроме того, для вывода данных, связанных с функционированием средств ИИ, в формате, удобном для чтения и обеспечивающем поиск с помощью текстовых ре- дакторов, весьма удобными являются журналы (такой способ накопления данных особенно предпочитают разработчики игр). Благодаря использованию журналов разработчик средств ИИ получает возможность обнаруживать программные ошиб- ки, возникающие на компьютерах других представителей группы разработчиков. Возможно также применение еще более разностороннего инструментального средства, которое отслеживает и сохраняет в памяти информацию о действиях каж- дого средства ИИ, что позволяет использовать эти данные в последующем анализе. Одним из преимуществ подсистемы такого типа является воспроизводимость полу- ченных с ее помощью результатов. Каждое из действий, осуществляемых с помощью средств ИИ, можно проследить с самого начала, что позволяет однозначно выявить причину нарушений в работе. В средствах ИИ для выработки форм поведения часто используются псевдослу- чайные числа. Вместо отслеживания каждого действия можно предусмотреть при- менение определенного начального значения генератора псевдослучайных чисел. Если игровая машина реализована с высоким качеством, то моделирование всегда должно приводить полностью к одинаковым результатам при использовании одних и тех же начальных значений. Это позволяет воспроизвести условия возникновения любой программной ошибки с меньшими усилиями, без применения больших объ- емов данных в файлах журналов. Для разработки средств ИИ, особенно обучающихся систем, крайне важно иметь в своем распоряжении качественный генератор случайных чисел. Кроме предусмот- ренной по умолчанию функции rand (), свободно предоставляются более быстро- действующие и менее предсказуемые генераторы (такие, как Mersenne Twister). Вы- полнение многократных прогонов игровой программы в условиях применения раз- личных, случайно выбранных начальных значений позволяет моделировать в ходе разработки игры всевозможные ситуации; это равносильно стохастической проверке различных характеристик реализации. Проверка программного обеспечения в усло- виях такого непредсказуемого изменения начальных значений способствует обна-
Глава 48. Применение адаптивных форм поведения 717 ружению программных ошибок. А после того как игровое программное обеспечение будет передано в распоряжение пользователей, можно при желании задать началь- ное число с применением детерминированного способа. Разработка средств ИИ Разработчику программных средств ИИ приходится использовать более широкий набор инструментов по сравнению с обычными программистами. Сам состав этого набора изменяется в зависимости от применяемых методов разработки, но в боль- шинстве случаев необходимо предусматривать проверку общей производительности обучения. Инструменты, используемые для цели, должны обеспечивать проверку модели, созданной в результате обучения, по всем накопленным данным, для опре- деления того, насколько высока ее производительность. Эта информация может ис- пользоваться для осуществления перекрестной проверки, при которой часть набора данных применяется для определения того, насколько качественное обобщение дос- тигнуто с помощью алгоритма обучения. Один из особенно полезных инструментов позволяет автоматически извлекал данные об изменении производительности алгоритмов во времени и отображать эту данные в виде графика. В действительности для разработчиков очень удобно имел возможность анализировать различные аспекты обучения с помощью пакетов визуа- лизации. Вместо инструментов, позволяющих разработчику форматировать данные г виде файлов Excel (возможно, с использованием магфосов), часто удобнее применял инструменты с интерфейсом командной строки, такие как gnuplot, поскольку эти ин- струменты можно полностью автоматизировать, а затем вызывать из сценариев. Надежный проект Безусловно, правильная организация процесса программирования позволяе создать надежную платформу для реализации средств обучения и подготовить необ ходимые инструменты для анализа результатов, но успешное решение большинств проблем немыслимо без правильного проектирования системы. Моделирование Успешное создание обучающихся систем невозможно без полного понимания н только задачи, но и способов ее решения. Эта тематика подробно рассматриваете в главе 21, “Приобретение знаний о задаче”, и в главе 28, “Понимание сути решения’ Если же необходимо обеспечить адаптивное обучение, то можно применить други способы моделирования системы, позволяющие находить лучшие решения возни кающих при этом проблем, как описано ниже. > Обучение можно свести к усовершенствованию небольших аспектов форм пс ведения, что позволяет проще проводить разработку и отладку. > Пространства поиска могут оставаться простыми и гладкими, что способств; ет повышению быстродействия и эффективности обучения.
718 Часть VII. Выбор действия С этой точки зрения значительную помощь может оказать применение методов, которые предусматривают проведение обучения с помощью алгоритмов, учитываю- щих характеристики, заданные экспертом. Пригодность и вознаграждение При использовании методов обучения, отличных от контролируемых, для опре- деления задачи служат функции пригодности и сигналы вознаграждения, но при этом могут возникать весьма значительные трудности. Особенно трудно достичь реалистичности и надежности при обучении на основе обратной связи. Тем не ме- нее, как описано ниже, правильное проектирование таких механизмов обратной связи позволяет во многом упростить обучение. > Применение алгоритмов обучения упрощается при использовании гладких функций, поскольку при этом обеспечивается непрерывная и адекватная об- ратная связь. Чем более зашумленными становятся такие функции, тем боль- ше усложняется задача обучения. > Можно предусмотреть использование сигналов вознаграждения и функций при- годности, формируемых с учетом коэффициентов обратной связи, что позволяет повысить плавность движений и предоставить алгоритму дополнительную ин- формацию. По существу, обратная связь формируется с учетом нескольких факто- ров, причем каждый из них может оцениваться в соответствии с его значимостью. При этом важным характеристикам назначается больший весовой коэффициент, но достичь поставленных ими критериев намного сложнее, поэтому на ранних стадиях обучение осуществляется с учетом менее значимых характеристик, имеющих более низкие весовые коэффициенты. Эта тема обсуждается более под- робно в следующей главе, поскольку указанный подход способствует повышению качества разработки всех систем ИИ в целом, а не только адаптивных систем. Несомненно, приведенные выше рекомендации позволяют свести к минимуму недостатки, которыми обладают методы обучения с обратной связью в отличие от контролируемых методов. Архитектура Применяемая архитектура средств ИИ обладает способностью комбинировать различные обучающиеся компоненты и постоянные компоненты для создания же- лаемых форм поведения. Предусмотрена также возможность переопределять обу- чающиеся компоненты, например, с использованием архитектуры обобщения. При этом определяются наиболее важные действия и для их осуществления предусмат- риваются постоянные компоненты, тогда как остальные действия реализуются с по- мощью обучающихся компонентов. Еще один перспективный подход к созданию архитектуры предусматривает при- менение постоянных компонентов для контроля над адаптивным обучением. Такой компонент может рассматриваться как диспетчер обучения (иногда называемый критиком)’, он способен регулировать скорость обучения, следить за тем, чтобы ни один важный обучающий пример не был упущен из виду, или определять тот мо- мент, когда алгоритму обучения потребуются для обработки новые шаблоны.
Глава 48. Применение адаптивных форм поведения 719 Методология Кроме того, повышению вероятности успеха в проектах на основе обучения мо- жет способствовать применение правильной методологии, как описано ниже. > При инкрементном обучении может быть предусмотрено обучение отдельных компонентов на разных стадиях. Вначале осуществляется усвоение с помо- щью обучения простых форм поведения, которые затем фиксируются на то время, как происходит обучение более сложных компонентов. > Лучшей адаптации способствует обучение максимально возможного количе- ства компонентов в автономном режиме. При этом в оперативном режиме требуется проводить обучение только в той части, которая касается изменений по сравнению с заданными по умолчанию формами поведения. При этом может возникать чрезмерно тщательная подгонка и другие вырожден- ные формы обучения, для предотвращения которых могут быть приняты описанные ниже предосторожности. > Применение в ходе обучения только неприемлемых примеров в целях такой адаптации представления, чтобы результаты становились приемлемыми. Ос- лабление критериев, определяющих приемлемые результаты, приводит к то- му, что система становится менее точной, но допускает лучшее обобщение. > Уменьшение со временем скорости обучения для обеспечения единообразия. Такой подход можно сравнить с применением графика охлаждения в методе моделирования отжига, в котором учитывается производительность системы. Вообще говоря, проектировщик может получить наибольший контроль над каче- ством системы, если сумеет правильно сочетать виды деятельности, связанные с созданием форм поведения и их использованием. Производительность и надежность системы могут быть также повышены путем правильного определения применяемых способов действий. Резюме При использовании адаптивных средств ИИ могут возникать затруднения, свя- занные с отсутствием возможности осуществлять их обучение; кроме того, может оказаться, что они с трудом поддаются управлению, вырабатывают нереалистичные формы поведения и действуют недостаточно оптимально. Для устранения этих не- достатков, как указано ниже, в первую очередь применяются подходы, основанные на применении современных методологий программотехники. > Тщательная проверка реализации алгоритмов ИИ, позволяющая исключите любые сомнения в том, имеются ли программные ошибки. > Применение визуальных средств отладки и стандартных инструментальные средств, позволяющих представить данные, применяемые для обеспечение функционирования средств ИИ, наиболее удобным способом.
720 Часть VII. Выбор действия > Обеспечение гарантий воспроизводимости данных с использованием генера- тора случайных чисел, допускающего задание начального значения, или путем регистрации всех данных. > Использование рандомизированных начальных значений при каждом прогоне для получения возможности проверить функционирование средств ИИ в ус- ловиях применения самых различных параметров. > Подготовка для использования в сочетании с каждым методом ИИ инстру- ментальных средств, позволяющие измерять производительность обучения (например, путем выполнения перекрестной проверки). А когда дело касается моделирования системы, то, как описано ниже, некоторые проекты оказываются более приспособленными для создания адаптивных средств ИИ. > Сосредоточение обучения на ограниченных участках и, по возможности, рас- пределение задач обучения по компонентам. > Уменьшение размеров пространств поиска и максимально возможное упро- щение их структуры. > Использование функций пригодности и вознаграждения, которые являются настолько гладкими, насколько это возможно, чтобы с их помощью формиро- вались подсказки, необходимые для адаптации. Кроме того, в соответствии с описанным ниже, определенные методологии заре- комендовали себя как применимые для управления адаптацией. > В игре инкрементное обучение происходит постепенно; усвоение в результате обучения других аспектов функционирования системы осуществляется отдельно. > Для усовершенствования оперативной адаптации применяются знания, нако- пленные в автономном режиме. > Управление адаптацией осуществляется путем регламентации скорости обу- чения, которая должна снижаться по мере увеличения производительности, а после достижения удовлетворительных результатов обучение должно полно- стью прекращаться. Применяя описанные выше рекомендации, проектировщики могут не только ус- пешно организовать адаптацию, но и сделать ее существенной частью системы. Практическая демонстрационная версия Анимат Dafty содержит много обучающихся компонентов, которые являются почти полностью работо- способными. При использовании этого анимата предпринимаются попытки усвоить с помощью обуче- ния различные возможности, рассматриваемые в данной книге, на основе другого подхода, но эти по- пытки оканчиваются неудачей. В каждом из таких случаев можно воспользоваться различными приема- ми, представленными в настоящей главе, для выявления и устранения причин нарушения в работе. Воз- никающие проблемы связаны с наличием недостатков в проекте, а не ошибок в реализации.
^laiaHaus,^. Часть VII Заключение В этой части представлены последние примеры практического применения тех- нологий ИИ в играх на выживание и показано, как реализовать все существующие возможности в рамках одной и той же архитектуры. В результате создается правдо- подобный анимат, способный соревноваться с игроками-людьми, проявляя вполне реалистичное поведение. Такие достойные конкуренты имеют для участников игры большую развлекательную ценность по сравнению с ботами, созданными с исполь- зованием классических игровых средств ИИ. Краткий ретроспективный обзор Особенности каждого метода и каждой формы поведения можно проще понять после того, как определен каждый из компонентов системы. Методики Для реализации средств управления роботом широко применяется подход, в ос- нове которого лежит архитектура обобщения. Несмотря на все его ограничения, этот подход предоставляет разработчикам игр много преимуществ, в числе которых мож- но назвать явное управление и простоту проекта. Одной из категорий задач ИИ является обучение с подкреплением. Обучение с подкреплением может применяться для осуществления широкого спектра проек- тов, поскольку сам лежащий в его основе подход, основанный на оценочной обрат- ной связи, является очень перспективным. Но в некоторых ситуациях возникают сложности, обусловленные недостатками самой концепции вознаграждения. По- этому должны быть предусмотрены особые алгоритмы, позволяющие учитывать на- личие сигналов подкрепления и адаптировать представление соответствующим об- разом. Спектр задач, которые могут быть решены с помощью обучения с подкрепле- нием, очень широк, поэтому разработано также много разных типов алгоритмов, применимых для реализации самых разнообразных проектов. Очень эффективными и применимыми для разработки игр являются также мето- ды динамического программирования. В основе этих методов должны лежать точ- ные модели мира. С другой стороны, методы Q-обучения способны обеспечить адаптацию в ходе игры, без применения каких-либо знаний о среде.
Представление, используемое при обучении с подкреплением, представляет со- бой отображение состояний в действия. Применение массива для хранения инфор- мации отображения позволяет добиться в процессе обучения полной сходимости и достижения идеальных результатов, но связано с потреблением больших объемов памяти. Для ускорения обучения и уменьшения потребления памяти (за счет точно- сти) приходится использовать различные формы абстракции. Формы поведения Созданные формы поведения в борьбе на выживание являются достаточно эф- фективными, чтобы можно было бросить вызов даже лучшим игрокам-людям. Так- тические действия реализуются с помощью компонентов высокого уровня, опи- рающихся на существующие возможности, поэтому в результате создается впечатле- ние реалистичности, независимо от качества стратегии. А преимуществом архитектуры обобщения является то, что она может быть спроек- тирована явно, что позволяет в дальнейшем проще вносить корректировки. Обучение с подкреплением дает возможность находить формы поведения, ахггветствующие на- строениям анимата, но может быть направлено на поиск оптимальной тактики. После накопления достаточного количества активизируемых компонентов созда- ется система, способная соперничать с системами, основанными на планируемых решениях; такая система производит хорошее впечатление даже на опытных спе- циалистов. Аниматы с подобными активизируемыми формами поведения способны вести борьбу с противниками на выживание, особенно при наличии адаптивных на- выкав. Но в некоторых случаях активизируемые формы поведения не способны справиться с поставленной задачей в связи с отсутствием мощных моделей мира и средств логического вывода. Дальнейшие перспективы В данной части было показано, как обеспечить создание активизируемых форм поведения, направленных на выживание, путем повторного использования специа- лизированных возможностей. В частности, удалось разработать вполне работоспо- собную систему с использованием общепринятых шаблонов проектирования. А не- которые нерешенные проблемы обсуждаются в следующей части, в которой обосно- вана целесообразность использования модели мира и замены активизируемых ком- понентов средствами, в основе функционирования которых лежит планирование.
Natattausli Часть VIII Заключение Глава 49 Принципы разработки игровых средств ИИ Глава 50 Дальнейшие перспективы

yataUaus^k Гпава 49 Принципы разработки игровых средств ИИ В ЭТОЙ ГЛАВЕ- • Архитектура • Реализация • Методы и их применимость • Механизмы обучения и обратной связи • Резюме По определению методы ИИ предназначены для решения очень узкого круга задач, но потребности практики вынуждают постоянно изыскивать возможности расширения сферы применения этих методов. Поэтому одним из направлений любых разработок, основанных на применении средств ИИ, становится формаль- ное описание рассматриваемых задач с учетом возможности их решения методами ИИ. Весьма перспективным подходом, с точки зрения сни- жения связанных с этим трудозатрат или, с дру- гой стороны, наиболее полной реализации воз- можностей средств ИИ при разработке игр, яв- ляется применение определенных стандартов. Стандарты создания средств ИИ, применяемые в процессе проектирования и разработки, стано- вятся основой организации работ, что позволяет существенно сократить затраты времени и повы- сить качество конечного продукта. А что касается разработки игровых средств ИИ, то полезные рекомендации часто могут быть пред- ложены для реализации на самых высоких уровнях системы. В настоящей главе систематизированы и подытожены наиболее важные идеи, представ- ленные в этой книге. В данной главе затрагиваются перечисленные ниже темы. > Архитектурные решения, наиболее широ- ко применяемые в современных игровых средствах ИИ. > Рекомендации по реализации системы, позволяющие сократить затраты труда разработчика.
726 Часть VIII. Заключение > Определение области применения каждого метода, наиболее распространен- ных проблем и способов их преодоления. > Описание некоторых особенностей обучающихся систем и рекомендации по проектированию функций обратной связи. Сведения, приведенные в данной главе, помогут разработчикам преодолевать проблемы, неожиданно возникающие в ходе их работы по созданию игр. Архитектура Архитектурные решения, применяемые при создании средств ИИ, позволяют ком- бинировать различные методы для выработки необходимых форм поведения и реали- зации возможностей. Поскольку уровень интеллектуальности игр должен постоянно возрастать, значимость правильного выбора архитектурных решений в ходе разработ- ки игровых средств ИИ коммерческого назначения будет неизменно увеличиваться. Стандартизированные подходы позволяют найти обоснование оптимального выбора среди возможных архитектурных решений, которые основаны на хорошо зарекомендо- вавших себя проектах (по такому же принципу, как в программотехнике). В настоящей книге представлен широкий выбор различных архитектур, применяемых при создании средств ИИ, но основная их часть базируется на одном и том же подходе. Суть этого под- хода состоит в применении принципа модульной разработки, в ходе которой основные функциональные возможности реализуются в виде модулей, допускающих повторное использование, и создаются формы поведения, удобные для экспериментирования. Модули ИИ Модули, в которых реализованы методы ИИ, применяются на самом низком уров- не архитектуры. Реализация самих методов осуществляется путем создания уровня аб- стракции, скрытого за общими интерфейсами, поэтому эти методы становятся про- зрачными и взаимозаменяемыми. Благодаря этому инженер по искусственному ин- теллекту получает возможность вначале спроектировать архитектуру и только после этого принять решение о том, какие методы должны использоваться для обеспечения функциональных возможностей. Фактически весьма аналогичные функциональные возможности, такие как рас- познавание образов, регрессионный анализ или прогнозирование, могут обеспечить многие из тех методов ИИ, которые рассматривались в данной книге. К ним отно- сятся нейронные сети, порождающие конечные автоматы или системы, основанные на правилах, причем каждый из этих методов способен предоставить аналогичные возможности управления или решения задач. Таким образом, описанный подход обладает исключительной гибкостью, поэтому может использоваться при создании самых разных компонентов архитектуры.
^latatlaus^ Глава 49. Принципы разработки игровых средств ИИ 727 Возможности При создании иллюзии интеллектуальности весьма успешно применяется универ- сальный набор практически применимых возможностей анимата. К таким возможно- стям относятся, например, движение, стрельба и выбор оружия. Каждая из этих возмож- ностей реализована в виде компонента, созданного на основе методов ИИ (вообще гово- ря, обычно только одного метода). Как описано ниже, предусмотрено два различных способа реализации возможно- стей в целях предоставления их в готовом виде для разработки на их основе несобст- венного персонажа. > Специализированные компоненты предоставляют требуемые возможности, передавая конкретные данные в алгоритмы реализации методов ИИ во время инициализации. Такие возможности представляют собой результат примене- ния определенных экземпляров модулей ИИ. > Средства поддержки зависимостей позволяют реализовать возможности с по- мощью независимых компонентов, которые предоставляют доступ к собст- венным интерфейсам, но зависят от модулей ИИ. Преимуществом подхода, основанного на реализации возможностей, является то, что создаваемые возможности становятся концептуально независимыми друг от друга, поэтому задача их усовершенствования чрезвычайно упрощается. Формы поведения Различимые формы поведения, такие как преследование, предотвращение столк- новений и организация привала, основаны на использовании компонентов высокого уровня. При наличии необходимых возможностей задача создания каждой из этих форм поведения становится почти тривиальной. Безусловно, основное назначение игровых средств ИИ состоит в создании види- мости интеллектуальности, поэтому ключом к решению этой задачи является реали- зация наблюдаемых извне форм поведения. В связи с этим подход к проектирова- нию, основанный на реализации форм поведения, предоставляет разработчикам игр значительные преимущества, поскольку позволяет использовать такие современные методы ИИ, как инкрементная разработка и интенсивная проверка. Арбитражный механизм Наконец, на верхнем уровне архитектуры находится компонент, позволяющий принимать решения в пользу выбора той или иной формы поведения. Этот компо- нент предназначен д ля определения того, какая форма поведения должна быть акти- визирована с учетом текущей ситуации. По сравнению с задачами, выполняемыми на более низких уровнях, задача при- нятия арбитражного решения является относительно простой, поскольку она осу- ществляется на высоком уровне абстракции, на котором скрыты все детали, реали- зуемые поведенческими компонентами. Как указано ниже, благодаря этому созда- ние арбитражного механизма значительно упрощается во всех отношениях.
728 Часть VIII. Заключение > Проектировщики могут управлять работой арбитражного механизма с исполь- зованием таких статических методов, как порождающие конечные автоматы или архитектуры обобщения. > Средства ИИ могут обучаться управлению системой с использованием адап- тивных методов, например, с помощью обучения с подкреплением или систем классификаторов. Такие перспективы успешной реализации арбитражного механизма предоставляют колоссальные преимущества для разработчиков игровых средств ИИ, поскольку разра- ботчики могут в первую очередь применять простейшие решения и использовать адап- тивные методы для выработки более интересных форм поведения в процессе игры. Реализация Безусловно, к каждой системе ИИ предъявляются особые требования, поэтому различные способы реализации таких систем становятся в разной степени приме- нимыми. Тем не менее уже созданы такие универсальные подходы, которые при лю- бых условиях позволяют сократить продолжительность разработки и повысить каче- ство конечного продукта. Однако при выборе наиболее подходящего способа разработки не следует жерт- вовать производительностью будущей системы ради сокращения затрат труда разра- ботчиков. Собственный код Все широко используемые компоненты, на которые падает основная нагрузка в ходе эксплуатации выполняемой программы, должны быть реализованы на собст- венном коде C++. Единственный способ выявления узких мест, от которых зависит производительность программы, состоит в использовании профилирования. С этой целью могут применяться стандартные инструментальные средства, такие как VTune компании Intel или утилита gprof, предоставляемая по рецензии GNU, но иногда можно достаточно просто подключить определяемые пользователем процедуры из- мерения продолжительности выполнения кода. Но не следует забывать принцип, сформулированный Дональдом Кнутом: “Прежде- временная оптимизация — корень всех зол”. Оптимизацию модулей следует осуществ- лять только после того, как система станет полностью работоспособной и будут выявле- ны все узкие места. В идеальном случае применение любой процедуры оптимизации не должно приводил» к изменению конечных результатов, поэтому желательно предусмот- реть надежные модульные тесты, позволяющие обнаруживал* корректировки, проведе- ние которых приводит к нарушению работы системы. Применение сценарной поддержки К числу наиболее стремительно развивающихся языков программирования отно- сятся языки сценариев, причем даже на современном этапе развития они способны многое предложить для разработки средств ИИ. Прежде всего, языки сценариев под- держивают слабую (или динамическую) типизацию и являются очень лаконичными,
Глава 49. Принципы разработки игровых средств ИИ 729 поэтому разработчик может в ходе создания прототипа ввести всего несколько строк и полностью проверить правильность выбранного способа реализации алгоритма. Благодаря этому существенно ускоряется моделирование и проверка алгоритмов ИИ. Сценарии идеально подходят для создания небольших фрагментов кода, которые не эксплуатируются слишком интенсивно или требуют для своего создания значительных трудозатрат (в качестве примера таких фрагментов можно назвать средства ИИ, завися- щие от уровня игры). Подобные функциональные возможности поддерживают такие языки, как Lua или Python, хотя для них характерно более продолжительное время вы- полнения, по сравнению с компилируемыми языками. В этом состоит основная причи- на, по которой необходимо профилировать всю систему и оптимизировать наиболее важные компоненты. Система, управляемая данными Игровые машины вообще (и системы ИИ в частности) хорошо подходят для реа- лизации подхода, управляемого данными. Функционирование всей системы, управ- ляемой данными, определяется содержимым файлов данных, загружаемых в процес- се инициализации, и в этом состоит ее отличие от той системы, в которой вся ин- формация задана непосредственно в коде. Таким образом, данные полностью отде- лены от кода, что способствует повышению удобства в работе всех членов группы разработчиков (поскольку они в своей деятельности не зависят друг от друга) и в це- лом приводит к созданию более надежных систем (поскольку эти системы с самого начала рассчитаны на применение широкого разнообразия данных). В частности, в виде файлов могут храниться даже сами сценарии. Кроме того, можно легко обеспечить хранение на диске данных, относящихся к каждому из мо- дулей системы ИИ (например, таких данных, как правила экспертной системы или весовые коэффициенты нейронной сети). Методы и их применимость В процессе разработки игровых средств ИИ могут обнаруживаться различные проблемы. К счастью, методы устранения этих проблем достаточно хорошо изуче- ны. В данной книге главным образом представлены активизируемые методы, широ- ко используемые во всей индустрии игр. Эти активизируемые методы часто могут использоваться прозрачно для замены различных широко распространенных вари- антов реализации алгоритмов ИИ, которые все еще показывают себя как примени- мые для создания игровых средств ИИ (за исключением алгоритма поиска пути А*). В настоящем разделе приведены общие сведения о тех решениях, которые чаще всего используются опытными разработчиками в процессе проектирования средств ИИ. Здесь не обсуждаются другие “вспомогательные” методы, такие как обучение с подкреплением и эволюционные алгоритмы; однако они также вполне применимы для решения каждой из описанных ниже задач.
730 Часть VIII. Заключение Решение задач Как описано ниже, решение задач сводится к поиску ответа на однозначно сфор- мулированный вопрос, обычно осуществляемому путем вывода новых фактов из предоставляемой информации. > Для решения задач особенно успешно применяются системы, основанные на правилах, поскольку они позволяют моделировать подход, осуществляемый экспертом-человеком. Во многих случаях наиболее приемлемые способы представления большинства задач основаны на четкой логике. > Нечеткие экспертные системы позволяют внести эффективные усовершенство- вания, если в рассуждениях приходится учитывать степени истинности. Но не- достатком подхода, основанного на применении нечеткой логики, является бо- лее низкая эффективность по сравнению с альтернативным вариантом, в кото- ром используется четкая логика. Последовательное управление Для решения некоторых задач требуется осуществление последовательностей действий или форм поведения. При этом, как описано ниже, приходится отслежи- вать позицию в последовательности (например, с помощью переменной состояния). > В порождающих конечных автоматах понятие состояния поддерживается на уровне реализации, поэтому последовательности могут быть легко представ- лены. Проектировщики имеют возможность создавать формы поведения как цепочки действий, проектируя состояния (потенциально вложенные) и со- единяя их друг с другом. > Вероятностные порождающие конечные автоматы позволяют вносить в по- следовательности элемент случайности, благодаря чему проектировщики по- лучают контроль над стохастическими действиями. > Нечеткие конечные автоматы позволяют учитывать при осуществлении действий степени истинности. Безусловно, при использовании нечетких конечных автома- тов переходы и действия становятся более плавными, но по мере увеличения ко- личества состояний вычислительные издержки стремительно возрастают. Распознавание образов Особым видом задач в проблематике ИИ является распознавание образов, кото- рое предусматривает классификацию или распознавание выборки (множества пере- менных). Как описано ниже, эта задача рассматривается также как оценка перемен- ной отклика на основе значения прогнозатора. > Деревья решений особенно хорошо подходят для представления категориаль- ных переменных (т.е. переменных, заданных с помощью дискретных интерва- лов). Преимущество этого подхода состоит в том, что используемое представ- ление является выразительным и компактным, поэтому легко может быть от- редактировано проектировщиком.
Глава 49. Принципы разработки игровых средств ИИ 731 > Нейронные сети и особенно персептроны в наибольшей степени подходят для обработки непрерывных переменных. Многослойные персептроны поддаются интерпретации намного сложнее по сравнению с однослойными персептро- нами, поэтому к их использованию следует прибегать лишь в том случае, если предстоит заняться решением сложных задач. Распознавание последовательностей Как описано ниже, без применения отдельного набора методик невозможно так- же обойтись при решении задач распознавания последовательностей символов или их классификации. > Распознающие конечные автоматы обрабатывают символы один за другим, обновляя соответствующим образом внутреннюю переменную состояния. Та- кой способ обработки может применяться для распознавания или классифи- кации последовательностей символов, сформированных с применением регу- лярных грамматик. > Вероятностные распознающие конечные автоматы могут использоваться для определения правдоподобия появления последовательностей. > Нечеткие конечные автоматы используются для определения степени принад- лежности последовательностей к определенным категориям. Механизмы обучения и обратной связи Исключительно важное значение с точки зрения перспектив дальнейшего развития игровых средств ИИ имеют современные технологии обучения. Обучение не только позволяет повысить интеллект несобственных персонажей, действующих в мире игры, но и способствует увеличению производительности труда разработчиков средств ИИ. Кроме того, со временем сложились некоторые общие принципы, регламентирующие использование обучающихся средств ИИ для автономной оптимизации или оператив- ной адаптации. В качестве одного из таких эмпирических правил следует указать, что при любой возможности лучше всего использовать контролируемое обучение. К тому же, следует отметить, что наилучшие результаты могут быть получены путем решения непосредст- венно самой задачи (например, предоставления для нейронных сетей шаблонов, пред- назначенных для распознавания). Подходы, основанные на использовании обучения с подкреплением, не столь удобны, но должны рассматриваться как находящиеся по своей значимости на втором месте. Преимущество обучения с подкреплением состоит в том, что оно дает возможность подсказать, какие действия являются благоприятны- ми для системы, поскольку в ходе такого обучения постоянно предоставляется поток вознаграждений. Наконец, в качестве последнего возможного варианта должны рас- сматриваться эволюционные методики, поскольку при их использовании оценки ка- чества обучения предоставляются только по завершении отдельных эпизодов. А что касается обучения на основе обратной связи, то при его использовании возни- кает много проблем, одна из которых связана с недостаточной реалистичностью. Дело в
732 Часть VIII. Заключение том, что можно довольно просто выразить функциональные возможности в терминах вознаграждения и пригодности, но гораздо сложнее описать саму суть форм поведения, напоминающих те, которые характерны для человека. К тому времени, когда удалось смоделировать “реалистичность” с помощью обратной связи, многие аспекты поведения уже интерпретировались как уравнения, поэтому решение этой задачи было почти пол- ностью сформулировано без значительной потребности в обучении. Может оказаться затруднительным даже усвоение с помощью обучения функ- циональных возможностей, проводимое невзирая на то, насколько реалистичными окажутся создаваемые формы поведения. При осуществлении такого рода обучения наиболее важным (или даже решающим) требованием становится применение об- ратной связи с учетом значимости отдельных действий. Проектировщик может пре- дусмотреть применение подсказок, включая в функцию обратной связи поддержку более простых понятий, по такому же принципу, который применяется в методе формирования (shaping). Чем важнее понятие, усваиваемое в ходе обучения, тем больший весовой коэффициент ему присваивается. Например, в табл. 49.1 приведен пример усвоения с нуля с помощью обучения таких форм поведения, которые на- правлены на выживание; вознаграждаются действия, в результате которых анимат обнаруживает присутствие противника, ведет стрельбу, наносит ущерб и (на самом высоком уровне) уничтожает противника. Таблица 49.1. Обеспечение обратной связи с учетом значимости отдельных действий, при которой с каждым понятием, усваиваемым в процессе обучения, связан отдельный весовой коэффициент Понятие Весовой коэффициент Найти противника 0.01 Выстрелить в противника 0.1 Нанести ущерб 1 Уничтожить 10 Резюме Функционирование игровой машины, основанной на использовании средств ИИ, часто осуществляется по принципу разделения на многочисленные слои, на ко- торые возложены различные обязанности, как описано ниже. > Основой реализации методов ИИ являются модули. > Возможности персонажей зависят от применяемых методов ИИ. > Формы поведения выражаются в терминах конкретных возможностей. > Системы арбитража координируют и выбирают правильные формы поведения. Таковы современные тенденции разработки игровых машин, но аналогичные подходы применяются также при реализации систем ИИ, что позволяет одновре- менно достигать значительной гибкости и эффективности, как указано ниже.
^alaHaus,^. Глава 49. Принципы разработки игровых средств ИИ 733 > Для создания компонентов, на которые возлагается значительная нагрузка на этапе прогона, применяется собственный код. > Специализированные уровни, более простые в реализации, создаются с по- мощью сценариев. > Максимально возможный объем информации, отделенной от прикладного кода, хранится в виде файлов данных. В табд. 49.2 приведены итоговые сведения о том, какие подходы являются в наиболь- шей степени приемлемыми для решения конкретных задач. Таблица 492. Задачи, наиболее часто встречающиеся в играх, и методы ИИ, предназначенные для их решения Задача Метод ИИ Решение задач Система, основанная на правилах; нечеткая экспертная система Последовательное управление Различные варианты порождающих конечных автоматов Распознавание образов Деревья решений; нейронные сети Распознавание последовательностей Распознающие конечные автоматы Ниже приведены также некоторые полезные рекомендации, которые касаются применения обучающихся систем. > Предпочтительными являются контролируемые подходы, особенно если ста- новится сложно добиться реалистичности. > Повышению эффективности обучения способствует дифференциация обрат- ной связи и применение различных весовых коэффициентов. Применение и дальнейшее развитие рекомендаций, изложенных в данной книге, позволит найти простые, но надежные способы разработки игровой системы ИИ лю- бой сложности.

^aiattaus,^. Гпава 50 Дальнейшие перспективы В ЭТОЙ ГЛАВЕ, • Основной фактор успеха — практика • Некоторые сведения о моделях мира • Методики планирования • Краткие сведения о современных игровых средствах ИИ Достигнута последняя глава этой книги, но это не означает, что исчерпаны все возмож- ности глубже изучить рассматриваемую в ней тему. И профессиональные разработчики игро- вых средств ИИ, и программисты, увлекшиеся этой тематикой, могут сделать еще очень мно- гое, чтобы выйти за рамки возможностей, опи- санных в книге, включая следующее. > Проведение экспериментов. Примеры, при- веденные в книге, наиболее полно характе- ризуют особенности рассматриваемых за- дач и методов их решения, но остаются еще неисследованными весьма обширные тема- тические области. > Раскрытие дополнительных возможностей. Безусловно, активизируемые средства ИИ во многом являются непревзойденной ос- новой для создания игр, но далеко не ис- черпаны перспективы еще двух направле- ний, которые позволяют расширить воз- можности несобственных персонажей: соз- дание моделей мира и планирование. Разработчики игровых средств ИИ, которые сумеют добиться значительных успехов в ука- занной деятельности, имеют шансы начать но- вое направление исследований! Основной фактор успеха - практика Успешная разработка игровых средств ИИ уже стала (или скоро станет) в большей степени зависимой от опыта, а не от знаний. Вне всякого
736 Часть VIII. Заключение сомнения, для всех разработчиков в области ИИ в целом практика является основ- ным стимулом к развитию. Именно по этой причине в настоящей книге такое вни- мание уделено описанию практически применимых методов. Приведены основные сведения о том, какова область применения каждого рас- сматриваемого метода создания средств ИИ. Кроме того, в формулировку каждой за- дачи включено всестороннее описание вида требуемого решения. В каждой главе книги приведены примеры, которые позволяют ознакомиться с тем, в каких областях в основном применяются представленные методы. На сопровождающем Web-узле мож- но найти дополнительные рекомендации, наряду с некоторыми решениями. Темы, открытые для исследований В настоящей книге рассматривается примерно дюжина методов (включая вариан- ты), а также упомянуто или приведено больше 20 задач. Не считая нескольких мало- значительных исключений, каждый из этих методов может быть применен для реше- ния любой задачи. Таким образом, в целом должно быть опробовано приблизительно 240 комбинаций. Предлагаем читателям в качестве упражнения найти некоторые ре- шения задач с помощью методов, которые их заинтересуют в наибольшей степени, и представить их на одобрение другим читателям. Автор принимает на себя обязанно- сти накапливать полученные таким образом результаты создания аниматов (хотя, по- видимому, будет нелегко придумать для каждого анимата оригинальное имя!). Под- робную информацию о том, как принять участие в разработке аниматов и каковы воз- можные комбинации, можно найти на Web-узле http:/ /AiGameDev. сот/. Форум специалистов по игровым средствам ИИ Читатели могут принять участие в работе сетевого форума по адресу http: / / AiGameDev.com/. Единственное требование к передаваемым в форум сообщениям состоит в том, чтобы они касались вопросов, рассматриваемых в данной книге. Обычно обсуждение касается тематики средней или высокой сложности, которая относится к сфере применения средств ИИ в компьютерных играх. Кроме того, автор просит читателей принять участие в работе форума, чтобы поде- литься своим опытом, связанным с применением сведений, изложенных в данной книге, в отношении не только практических, но и теоретических вопросов. Форум от- крывает также возможность принять участие в обсуждении представленных в книге примеров. Разработчики игровых средств ИИ могут также присоединиться к другим общедоступным дискуссионным площадкам, которые непосредственно не касаются данной книги, таким как форум GameDev.net, группы новостей comp.ai.games и даже доски сообщений Al-Depot. com. Некоторые сведения о моделях мира Активизируемые средства ИИ, как правило, не руководствуются каким-либо внутренним представлением мира, а используют сенсоры; благодаря этому мир игры действует как своя собственная модель. Как оказалось, это — удивительно эффек-
^ataHaus^i Глава 50. Дальнейшие перспективы 737 тивный и надежный подход к созданию средств ИИ. Но средства ИИ, действующие исключительно на основе активизируемых реакций, лишены главной составляющей человеческого интеллекта — памяти. Поэтому чисто активизируемые аниматы не способны сравняться по своим возможностям с теми участниками игры, которые обладают всем, что характерно для биологических существ. Безусловно, активизи- руемые системы могут быть спроектированы так, чтобы достичь почти такого же уровня интеллектуальности, как и системы с моделями мира, но их неустранимым недостатком остается недостаточная реалистичность. Во всех примерах разработки аниматов, представленных в данной книге, показа- но, как наделить аниматов способностью к восприятию состояния, пусть даже в не- большой степени (например, чтобы они могли следить за противником). Благодаря этому средства ИИ становятся более реалистичными, а также намного упрощается их разработка. Эти дополнительные знания позволяют аниматам действовать на уровне игрока-человека, даже если аниматы не могут полагаться на развитые кон- цепции, лежащие в основе внутренних представлений о мире. Но для наращивания возможностей средств ИИ требуется развитие концепции модели мира и предоставление каждому анимату персональных знаний о его среде. Одна из основных, связанных с этим задач состоит в том, что необходимо использо- вать более удобные представления, поскольку для хранения знаний в кратковремен- ной и долговременной памяти аниматам требуется очень гибкий и выразительный язык представления знаний. Модели мира позволяют инженеру по искусственному интеллекту не только закла- дывать потенциал создания недетерминированных форм поведения, но и имитировать в анимате интересные феномены, свойственные человеку, такие как забывчивость и способность удивляться. Но в игровых средствах ИИ, разрабатываемых на профессио- нальной основе, развитые модели мира используются чрезвычайно редко (в этой книге описаны лишь немногочисленные исключения из этого правила). Несмотря на ска- занное, следует отметить, что этой теме посвящено большое количество теоретических работ, начиная от исследований по искусственному интеллекту, проводимых в сере- дине двадцатого столетия, и заканчивая современными исследованиями. Некоторые информационные ресурсы указаны на Web-узле по адресу ht tp: / /AiGameDev. сот/. Методики планирования Применение модели мира открывает более широкие возможности создания средств ИИ. С другой стороны, методики создания активизируемых средств ИИ по- зволяют работать с памятью и извлекать из этого значительную пользу. Тем не менее методики создания активизируемых средств характеризуются значительными огра- ничениями (например, связанными с большой потребностью в памяти), в результате чего становятся неподходящими для решения крупных задач; из этого следует, что при их использовании приходится применять специальную архитектуру и преду- сматривать декомпозицию. Алгоритмы поиска показывают себя с лучшей стороны в тех обстоятельствах, где методики создания активизируемых средств стал кивав ггся с наибольшими затрудне- ниями, поскольку позволяют уменьшить потребность в памяти за счет дополнитель-
738 Часть VIII. Заключение ных вычислений (но такие ситуации при создании игровых средств ИИ встречаются редко). Методики поиска особенно хорошо подходят для составления планов на буду- щее, поскольку позволяют рассмотреть последствия каждого из возможных действий. Наиболее важную роль методики планирования на основе алгоритмов поиска могут сыграть в расширении возможностей несобственных персонажей, хотя не сле- дует слишком переоценивать перспективы развития этого направления. А мажори- тарные алгоритмы создания средств ИИ (не считая алгоритмов поиска пути) все еще не нашли широкого применения в индустрии разработки игр. (Мажоритарные сред- ства ИИ используются лишь в незначительном количестве игр.) Некоторые полез- ные рекомендации, касающиеся того, с чего можно начать изучение перспективных методик, приведены на Web-узле автора. Краткие сведения о современных игровых средствах ИИ Ко времени написания данной книги большинство профессиональных разработ- чиков игровых средств ИИ впервые признали, что их работа, вообще говоря, имеет мало общего с настоящими технологиями создания средств ИИ. Так оно и есть, по- скольку методики, подобные поиску пути или сценарной поддержке, вообще не рас- сматриваются как относящиеся к искусственному интеллекту (особенно в теорети- ческих исследованиях). Безусловно, классические подходы к созданию игровых средств ИИ оправдывают свое назначение, но тенденции, обнаруживаемые при ана- лизе игр, выпущенных в недавнее время, демонстрируют потребность в расширении возможностей несобственных персонажей в целях повышения степени развлека- тельности. Это означает, что нужны новые научные и практические достижения, по- зволяющие более широко использовать технологию создания средств ИИ для разра- ботки реалистичных и интеллектуальных несобственных персонажей. Решение этой задачи должно быть отчасти основано на использовании классиче- ских методик создания средств ИИ, которые рассматриваются во многих главах данной книги (таких, как нейронные сети и деревья решений). В течение прошлых десятилетий теоретические основы этих методик развивались очень интенсивно, но лишь этого недостаточно для того, чтобы появились необходимые предпосылки ре- волюционных преобразований в технологии создания средств ИИ. Будущие дости- жения в разработке игрового средства ИИ должны опираться на методологии и про- цедуры, позволяющие справиться со следующими задачами. > Формирование ультрасовременной технологии разработки средств ИИ, слож- ность которых должна быть выше по сравнению с создаваемыми с помощью классических подходов. > Создание интеллектуальных несобственных персонажей, способных действо- вать автономно в мире игры. В настоящей книге принят современный подход к решению этих открытых задач, в основе которого, во-первых, лежат принципы, базирующиеся на современных тенденциях применения технологии ИИ в робототехнике, а во-вторых, концепции, сложившиеся в новейших подходах к динамической разработке программного обес- печения. Оба эти подхода широко применяются в соответствующих научных облас-
yulallaus^k Глава 50. Дальнейшие перспективы 739 тях и показали свою применимость в среде профессиональных разработок. Многие примеры, приведенные в настоящей книге, неоспоримо доказывают также приме- нимость этих подходов и для разработки игрового средства ИИ, особенно для разра- ботки, нацеленной на воспроизведение необходимых характеристик с использова- нием эволюционного (инкрементного) проектирования, в ходе которой за быстро осуществляемыми этапами разработки следует исчерпывающая проверка. Фактически без применения этого подхода невозможно обойтись при разработке адаптивных средств ИИ, в связи с высоким уровнем сложности и непредсказуемости результатов решения этой задачи. По этой теме должен быть еще проведен значи- тельный объем исследований, но данная книга написана в надежде на то, что приве- денная в ней информация позволит сделать важный шаг в правильном направлении.

^abalia.us,^i Приложение A Библиография 1. 'Al Interface Standards Committee. International Game Developers Association, http:/ /www. igda. org/ai/,2003. 2. Alexander B. An Optimized Fuzzy Architecture for Decision Making // Al Game Programming Wisdom. — Charles River Media, 2002. 3. Alexanders. The Beauty of Response Curves // Al Game Programming Wisdom. — Charles River Media, 2002. 4. Atherton M. et al. A Functional MRI Study of High-Level Cognition I. The Game of Chess // Cognitive Brain Research, 2002. 5. Barnes J., Hutchens J. Testing Undefined Behavior as a Result of Learning// Al Game Programming Wisdom. — Charles River Media, 2002. 6. Becheiraz P., Thalmann D. A Behavioral Animation System for Autonomous Actors Personified by Emotions // Proceedings of First Workshop on Embodied Conversational Characters, 1998. 7.Blumberg B., Isla D. New Challenges for Character-Based Al for Games// AAAI Spring Symposium on Al and Interactive Entertainment. — Palo Alto, CA, March 2002. 8. Bourg D. M. Physics for Game Developers. — O’Reilly, 2001. 9. Breiman L. et al. Classification and Regression Trees. — Wadsworth International, 1984. 10. Brooks R. A. Intelligence Without Representation// Artificial Intelligence 47(1-3). — 139-160, 1991. 11. Brooks R. A. A Robust Layered Control System for a Mobile Robot // IEEE Journal of Robotics and Automation 2(1): 14-23, 1986. 12. Brooks R. A. Intelligence Without Reason// Proceedings of the 12th International Joint Conference on Artificial Intelligence 569-595. — San Mateo, CA, 1991. 13. Canamero D. Modeling Motivations and Emotions as a Basis for Intelligent Behavior// Proceedings of the First International Symposium on Autonomous Agents, 148-155,1997. 14. GzH’sey A. Knowledge Representation and Inference // Databases and Artificial Intelligence 3, 1994. 15. Chalmers D.J. Thoughts on Emergence, http://www.u.arizona.edu/~chalmers/notes/ emergence.html, 1990. 16. Chen Xet al. A Functional MRI Study of High-Level Cognition II. The Game of GO // Cognitive Brain Research. 2002. 17. Conway J. H, Gardner M. The Fantastic Combinations of John Conway’s New Solitaire Game ‘Life’ // Scientific American, 223:120-123,1970. 18. Davis R. etal. What Is a Knowledge Representation? //Al Magazine, 14(1): 17-33,1993. 19. Dietterich T. G. The MAXQ Method for Hierarchical Reinforcement Learning // Proceedings of the 15th International Conference on Machine Learning, 1998. 20. Ekman P., Oster H. Facial Expressions of Emotion // Annual Review of Psychology, 20:527-554, 1979.
742 Приложение А. Библиография 21. Elias Н. Perlin Noise Tutorial, http: //freespace.virgin.net/hugo.elias/model5/ m_perlin.htm, 1998. 22. Emotions in Lojban. Online Wiki, http: / /www. lojban.org/, 2002. 23. FEAR C++ User API Reference, http: //fear.sf.net/docs/api/, 2003. 24. FEAR Language Specification, http; //fear.sf.net/docs/specification/, 2003. 25. FEAR Library Reference, ht tp: / / f ear. s f. net /docs /1 ibrary /, 2003. 26. FEAR Technical Overview, http: //fear.sf.net/docs/overview/, 2003. 27. Forgy C.L. Rete: A Fast Algorithm for the Many Pattem/Many Object Pattern Match Problem// Artificial Intelligence, 17-37, 1982. 28. Frawley W. J.et al. Knowledge Discovery in Databases: An Overview П Knowledge Discovery in Databases, 1-27. AAAI/MIT Press, 1991. 29. Gadanho S. C. Reinforcement Learning in Autonomous Robots: An Empirical Investigation of the Role of Emotions П Ph.D. Thesis, University of Edinburgh, 1998. 30. Genesereth M. R. Knowledge Interchange Format Specification, http://logic.Stanford, edu/kif/specif ication.html, 1995. 31. Gibson J. J. The Ecological Approach to Visual Perception. — Houghton Mifflin, 1979. 32. Gibson J. J. The Theory of Affordances // Perceiving, Acting, and Knowing. — Lawrence Erlbaum Associates, 1977. 33. Grunwald P. et al. Minimum Encoding Approaches for Predictive Modeling // Proceedings of the 14th International Conference on Uncertainty in Al, 183-192, 1998. 34. Haendel L. The Function Pointer Tutorials, ht tp: / /www. function-pointer. org/, 2002. 35. Harel D. Statecharts: A Visual Formalism for Complex Systems // Science of Computer Programming, 1987. 36. Harik G., Lobo F. A Parameter-Less Genetic Algorithm П Proceedings of the Genetic and Evolutionary Computation Conference, 1999. 37. Heuer R. J. Psychology of Intelligence Analysis, Center for the Study of Intelligence, http: / /www. cia.gov/csi/books/19104/, 1999. 38. Holland J. H. Adaptation in Natural and Artificial Systems. — The University of Michigan Press, 1975. 39. Humphry* M. Action Selection Methods Using Reinforcement Learning. — Ph.D. Thesis, Trinity Hall, Cambridge, 1997. 40. Isla D. et al. A Layered Brain Architecture for Synthetic Creatures П International Joint Conference on Artificial Intelligence, Seattle, WA, August 2001. 41. Jantzen J. Tutorial on Fuzzy Logic — Report 98-E 868, Technical University of Denmark, 1998. 42. John F. Sowa Conceptual Graphs Summary// Conceptual Structures: Current Research and Practice, 3-52,1992. 43. Kachigan S. K. Multivariate Statistical Analysis: A Conceptual Introduction. — Radius Press, 1991. 44. Kaehler S. D. Fuzzy Logic: An Introduction П The Newsletter of the Seattle Robotics Society, March 1998. 45. Kaelbling L. P. et al. Reinforcement Learning: A Survey // Journal of Artificial Intelligence Research, 1996. 46. Koopman P. J. A Taxonomy of Decomposition Strategies Based on Structures, Behaviors, and Goals, Proceedings of the Conference on Design Theory and Methodology, http://www. ece. emu. edu/~koopman/decomp/, 1995.
Приложение А. Библиография 743 47. Kreinovich V. et al. Genetic Algorithms: What Fitness Scaling Is Optimal? — University of Texas at El Paso, Computer Science Department, Technical Reports, 1992. 48. Kremer S. C. Stacey D. A. Artificial Neural Networks: From McCulloch Pitts Neurons to Back- Propagation. — Lecture Notes, http://hebb. cis .uoguelph. ca/~skremer/Teaching/ 27642/ВР/, 1999. 49. Manifesto for Agile Software Development, http: //agilemanifesto. org/, 2001. 50. Mansion J. Learning and Adaptation in Games U Al Game Programming Wisdom. — Charles River Media, 2002. SX.Matumoto, Mersenne Twister: A Random Number Generator, http://www.math.keio. ac.jp/~matumoto/emt.html, 2002. 52. McCulloch Ж S., Pitts Ж A Logical Calculus of the Ideas Immanent in Nervous Activity И Bulletin of Mathematical Biophysics 5,115-133, 1943. 53. Minsky M., Seymour P. Perceptrons; An Introduction to Computational Geometry. — MIT Press, 1969. 54. Muggleton S. Inductive Acquisition of Expert Knowledge. — Addison-Wesley, 1990. 55. Norman D. A. Affordance, Conventions and Design, http://www.jnd.org/dn.mss/ affordances-interactions.html, Interactions, 38-43,1999. 56. Perkins S, Hayes G. Robot Shaping — Principles, Methods and Architectures // Workshop on Learning in Robots and Animals. — AISB ’96, University of Sussex, 1996. 57. Perlin K. Improving Noise, — Media Research Lab, 2001. 58. Perlin K. Making Noise, GDC Hardcore, http: / /www. noisemachine.com/talkl/, 1999. 59. Perlin K., Goldberg A. Improv: A System for Scripting Interactive Actors in Virtual Worlds H Computer Graphics, 1996. (Л. Personality Research, Basic Emotions, http://www.personalityresearch.org/ basicemotions. html, 2002. 61. Petta R, Trappl R. Emotions and Agents, Multi-Agent Systems and Applications // Lecture Note in Artificial Intelligence, Springer, 2086:301-316, 2001. 62. Plutchik R. A General Psychoevolutionary Theory of Emotion И Emotion: Theory, Research, and Experience 1:3-33, New York: Academic, 1980. 63. Quake 2Weapons and Combat FAQ, http: //www. quake2.com/q2wfaq/q2wfaq.html. 64. Quinlan J. R. C4.5: Programs for Machine Learning. — Morgan Kaufmann, 1993. 65. Quinlan J. R. Induction of Decision Trees // Machine Learning, 1, 81-106,1986. 66. Reynolds C. W. Flocks, Herds, and Schools: A Distributed Behavioral Model H Journal of Computer Graphics 4(21 ):25-34, 1987. 67. Reynolds C. W. Steering Behaviors for Autonomous Characters H Game Developers Conference, 1999. 68. Riedmiller M., Braun H. A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm // Proceedings of the IEEE Conference on Neural Networks, 586-591, 1993. 69. Ripley B. D. Pattern Recognition and Neural Networks. — Cambridge University Press, 1996. 70. Roberts D. D. The Existential Graphs of Charles S. Peirce. — Mouton, 1973. 71. Rollings A., Morris D. Game Architecture and Design. A New Edition. — New Riders, 2004. (Перевод на русский язык: Роллингс Э., Моррис Д Проектирование и архитектура игр. — 2005.) 72. Rosenblatt F. Principles of Neurodynamics. — Spartan Books, 1959. 73. Seymour J. A. Flexible and Extensible Framework for Modelling and Simulating Physical Agents. — Masters Thesis, The University of York, 2001.
744 Приложение А. Библиография 74. Sharpies М. et al. Computers and Thought: A Practical Introduction to Artificial Intelligence. — Bradfords Directory, 1996. 75. Sutton R., Barto A. G. Reinforcement Learning: An Introduction. — MIT Press, 1998. 76. The International Conference on Simulation of Adaptive Behavior, http: //v7ww.isab.0rg/ confs/, 2002. 77. Thomas F., Johnston O. Disney Animation: The Illusion of Life. — Abbeville Press, 1981. 78. Tozour P. The Basics of Ranged Weapon Combat // Al Game Programming Wisdom. — Charles River Media, 2002. 79. Van derSterren W. Al for Tactical Grenade Handling. — CGF-AI, http: //www. cgf-ai. com/ docs/grenadehandling.pdf, 2000. 80. Van Waveren J. P. The Quake III Arena Bot. — Master of Science Thesis, Delft University of Technology, 2001. 81. Velasquez J. Modeling Emotion-Based Decision-Making// Proceedings of the 1998 AAAI Fall Symposium Emotional and Intelligent: The Tangled Knot of Cognition, 164-169,1998. 82. Ventura R. et al. Emotions — The Missing Link? — Papers from the 1998 Fall Symposium. Emotional and Intelligent: The Tangled Knot of Cognition, 170-175,1998. 83. WeissteinE. Eric Weisstein’s World of Mathematics, http://mathworld.wolfram.com/, 2003. 84. Widrow B., Hoff M. E. Adaptive Switching Circuits // IRE WESCON Convention Record, 96- 104,1960. 85. Wikipedia, Definition of Information Theory, http://www.wikipedia.org/wiki/ Information—theory, 2003. 86. Wilson S. W. Classifier Fitness Based on Accuracy // Evolutionary Computation, 1995. 87. Wilson S. W. ZCS: A Zeroth Level Classifier System // Evolutionary Computation, 1994. 88. Wray R. et al. Subsumption Architecture Overview, http: / / ai. eecs. umich. edu/ cogarchO/ subsump/index.html, 1994. 89. Yang S. Y. Introduction to Intelligent Programming. — Lecture Notes, National Taiwan Institute of Technology, Taipei, 2001.
^aiattaus,^. Предметный указатель А А*-алгоритм, 113 AFSM Augmented Finite-State Machine, 672 AL Artificial Life, 158 A-life artifical life, 134 В BFG Big Fucking Gun, 379 D DLL Dynamic Link Library, 93 DoM Degree of Membership, 470 DPS Damage Per Second, 381 DT Decision Tree, 385 F FEAR Flexible Embodied Animat 'Rchitecture, 39 FFSA Fuzzy Finite-State Automaton, 602 FFSM Fuzzy Finite-State Machine, 602 FPS First-Person Shooter, 87; 103 FSA Finite-State Automata, 569 FSM Finite-State Machine, 569 G GDC Game Developers Conference, 31 H HFSM Hierarchical Finite-State Machine, 617 HMM Hidden Markov Model, 613 HPC Human Player Character, 99 HSM Hierarchical State Machine, 619 HUD Head-Up Display, 367 К KR Knowledge Representation, 147 L LCS Learning Classifier System, 509 LMS Least Mean Square, 264 LOD Level-Of-Detail, 625 M MDL Minimum Description Length, 422 MLP MultiLayer Perceptron, 283 N NFSA Nondeterministic Finite-State Automaton, 606 NPC NonPlayer Character, 31 P PFSA Probabilistic Finite-State Automaton, 612 Q Q-значение, 685 R RBS Rule-Based System, 169 RBS-система, 169
746 Предметный указатель RL Reinforcement Learning, 677 RPG Role-Playing Game, 32; 103 RProp Resilient Propagation, 300 RTS Real Time Strategy, 103 S SAB Simulation of Adaptive Behavior, 59 STL Standard Template Library, 313 w Web-сканер, 61 A Абстрагирование, 621 Абстракция, 155 Аватар, 649 Автомат ведомый, 623 ведущий, 623 конечный, 79; 569; 579 иерархический, 618; 619 канонический, 583 нечеткий, 601 полносвязный, 592 порождающий, 569 вложенный, 618 дополненный, 672 иерархический, 617 нечеткий, 602 разреженный, 576 распознающий, 569 вероятностный, 612 недетерминированный, 606 нечеткий, 602 Мили, 570; 573 Мура, 570; 575 Агент, 47; 58 воплощенный, 61 игровой, 57 Адалина, 249 Адаптация, 65; 534; 677 косвенная, 64 прямая, 64 Адекватность, 444 Аксон, 292 Активизация, 253 событиями, 594 Актюатор, 291 Алгебра векторная, 237 Алгоритм без способа действий, 688 выбора решения, 76 генетический, 481; 483; 487; 677 жадный, 395 инкрементный, 539 итерации по значениям, 692 конструирования подмножества, 609 метагенетический, 506 моделирования, 241; 247 обратного распространения, 297 обучения многослойных персептронов, 295 обучения персептрона, 268 обучения с подкреплением, 702 огибания препятствий, 160 огибания препятствий универсальный, 161 пакетного обновления, 299 пакетный, 539 планирования, 115 подхода, 161 поиска, 737 рекурсивного секционирования, 397 со способом действий, 688 эволюционный, 481; 488 Аллель, 484 Алфавит входной, 571; 606; 620 выходной, 574; 620 Анализ, 69 данных, 337 регрессионный, 461 системный, 121 скрытых закономерностей в данных, 460 статистический, 337 Анимат, 34; 59 Actor, 567 Aimy, 281 Bouncer, 119 Brutus, 187 Cascador, 518 Colin, 243; 244 Dafty, 720 Darth Mole, 710 Detox, 401 Dominator, 468 Dr. Spin, 110 Evolvee, 508 Fizzer, 586 Greedy, 448 Guinea, 430 Inforcer, 700 Inhiboy, 675 Jacky, 478 Joyce, 364 Kanga, 529 Loony, 544 Lumberjack, 340
^aiattaus,^. Предметный указатель 747 Major Pain, 272 Marvin, 166 Masheen, 615 Missy, 277 Moody, 596 Mr. Versatility, 356 Onno, 307 Penguin, 653 Picky, 382 Pinbot, 143; 243 Predictor, 239; 244 Rampage, 215 Rarchy, 630 Ratty, 668 Remote, 640 Rookie, 224 Salty, 234 Selector, 415 Sensitiv, 558 Sir Obvious, 372 Sir Tank, 156 Splash, 319 Stalker, 200 Tobor, 131 воплощенный, 60; 62 эталонный, 669 Антецедент, 173; 462 Аппроксиматор, 697 универсальный, 286 Аппроксимация линейная, 272 функций, 92 функциональная, 461 Апробация, 70 Арбитраж, 83 комбинированный, 93 независимый, 93 подавляющий, 93 последовательный, 83; 93 Архитектура, 80 игровой машины, 87 иерархическая, 81 монолитная, 81 обобщения, 84; 92; 669 простая, 81 робототехническая, 450 Аспект инференциальный, 148 нотационный, 148 Атрибут оружия, 349 Аттестация, 267; 303 решения, 123 Байт-код, 375 Баллистика, 220; 235 Бегство, 159 Безопасность, 221 Библиотека, 57 шаблонов стандартная, 313 Биология, 484 Бластер, 243 Блуждание бесцельное, 665 Боевые доспехи, 440 Боеприпасы, 665 Бой ближний, 218 Большое чертово глушило, 379 Борьба за выживание, 102 Бот игровой,60 Бронежилет, 440 Бронекостюм, 440 В Ввод, 173 Ведение огня, 205 Вектор абсолютный, 136 Величина дискретная, 136 непрерывная, 136 обновления, 300 причиненного ущерба в секунду, 381 физическая, 236 Вероятность, 449; 460 Версия демонстрационная, 33 Взаимодействие человеко-машинное, 556 Взгляд в сторону, 665 направленный вперед, 665 Взрыв комбинаторный, 601 Вид оружия, 210 Вклад второго уровня, 427 нулевого уровня, 427 первого уровня, 427 Б Включение База правил, 173 Базис постороннее, 396 Внедрение, 375 определений функций в код, 63 Воздействие
748 Предметный указатель управляющее, 159 Возможность сравнения, 155 Вознаграждение, 680 модульное, 540; 704 обесцениваемое, 682 ожидаемое, 683 отсроченное, 680 целостное, 540; 704 Воплощение, 36; 59; 61; 80 Восприятие, 560; 564; 635 образов, 248 Воспроизводство, 483 Вставка анимационная, 52 Вход, 123; 133; 152 Выбор оружия, 217; 345; 358 уровня абстракции, 138 цели, 205; 220; 235 Выборка, 267 данных, 386 Вывод, 173 логический, 464 логический обратный, 176 логический прямой, 176 логический целенаправленный, 177 Выводимость, 645 Выполнение, 176 Выравнивание, 160 Выражение, 556 лингвистическое, 459 регулярное, 578 чувств, 634 Выразительность, 148 Выход, 123; 133; 152 Вычисления отложенные, 465 Голосование, 378 Гравитация, 220 Градиент погрешности, 266 Грамматика, 578 регулярная, 578 Граф древовидный, 388 ориентированный, 577 График охлаждения, 262 д Давление эволюционное, 482 Данные инициализации, 671 обучающие, 313 Датчик поворотов, 139 Дверь, 435 Движок интерфейсный, 176 Действие, 565; 702 исследовательское, 708 Декомпозиция, 82 гибридная, 83 задачи,334 поведенческая, 82 структурная, 82 целевая, 82 чистая, 83 Дельта-правило, 264 обобщенное, 298 Дендрит, 292 Дерево классификации, 385 регрессии, 385 Г Ген, 483 Генерация исходного кода, 93 кода автоматическая, 89 Геном, 484 Геномика, 484 Генотип, 484 Генофонд, 481 Гибкость, 140; 182 Гипербластер, 363 Гладкость пространства поиска, 424 Глубина резервирования, 689 Глушитель, 440 Голос, 557 решений, 174; 385 Детализация, 626 Деталировка, 100 Детектор столкновений, 138 Дефаззификация, 455; 604 Динамика боя,352 Динамичность задачи, 535 Дисперсия, 338 Дифференцируемость, 288 Длина описания минимальная, 422 ДНК дезоксирибонуклеиновая кислота, 494 Доказательство сходимости, 249
^laiaUaus,^. Документ формальный, 146 Доспехи, 665 Достоверность, 54 Дрейф генетический, 504 Дублирование правил,193 Ж Жизнеспособность, 367; 440; 665 противника, 408 Жизнь искусственная, 134 3 Заголовок, 173 Загрузка данных, 92 Задание боевое, 358 техническое, 146 Задача, 123 выбора оружия, 345 динамическая, 535 инкрементная, 687 классификации, 509 оптимизации, 257 прицеливания, 226 статическая, 535 эпизодическая, 686 Заимствование идей,153 Заключение онтологическое, 148 Замена, 489 Заполнитель, 150 Запуск ракеты, 314 Затраты временные, 174 Здравый смысл, 170 Значение действия, 685 количества голосов дробное, 380 персептрона выходное, 254 скользящее среднее, 165 состояния, 684 Зона ведения огня, 213 И Игра Black & White, 49; 60 Caliber, 211 Chess, 103 Предметный указатель 749 Colin McRae Rally 2,48 Descent 3,103 Die by the Sword, 210 Diplomacy, 103 Doom, 103 Downfall, 103 Enemy Nations, 28 Freelancer, 32 Grand Theft Auto III, 51; 663 GTA3: Vice City, 32 Half Life, 103 Hidden & Dangerous, 221 Horses, 103 Jedi Knight 2,210 Pac-Man, 43; 57 Pizza Tycoon, 51 Pong, 43 Quake 2,40; 319; 378; 406 Quake 3,60; 221; 481 Rebel Moon Revolution, 28 Return to Castle Wolfenstein, 48; 57 Rogue Spear, 221 SimCity, 51 Sims, 649 Soldier of Fortune, 211 Soul Blade, 211 Super Mario Brothers, 103 The Sims, 32 Thief, 60 Transport Tycoon, 51 Unreal Tournament, 221 Unreal Tournament 2003,48 War in Heaven, 28 Warcraft II, 103 Жизнь, 648 на выживание, 219; 223; 422; 659 ролевая, 103 ролевая оперативная, 32 сетевая, 327 со стрельбой от первого лица, 103 Идентификатор состояния, 572 Иерархия, 92; 619 классов, 149 компонентов, 92 Избыточность, 331 решения, 420 Изучение задачи, 324 обстановки, 671; 706 ИИ искусственный интеллект, 27 Имитация, 176 поведения, 192 сенсорной системы, 60 физических процессов, 159 Импликация, 604
750 Предметный указатель Импорт интерфейсов, 376; 377 Импульс возбуждающий, 292 нервный, 292 тормозящий, 292 электромагнитный, 352 Имя состояния, 572 Индикатор успеха, 371 Индикация на козырьке шлема, 367 Инженер по знаниям, 463 по искусственному интеллекту, 487 по представлению знаний, 181; 184 Инициализация, 409; 489 Инструментарий FEAR, 319 ‘ Интегратор числовой, 237 Интегрирование по методу Эйлера, 159 прямое, 241 числовое, 237 явное, 237 Интеллект, 45 искусственный, 44; 46 искусственный слабый, 46 машинный, 45 несобственных персонажей, 45 Интеллектуальность биологическая, 44 универсальная, 44 Интерпретатор, 176; 375 нечеткой системы, 463 Интерпретация на этапе прогона, 374 Интерфейс, 89; 91 Weapon, 232 инкрементного обучения, 313 моделирования,312 пакетного обучения, 313 управления оружием, 90 управления перемещениями, 90 физический, 91 формализованный, 62 эволюционирующий, 526 Интроспекция, 151 Инференциальность, 148 Информация, 123 генотипа, 485 дублирующаяся, 331 избыточная, 329 Использование дверей, 439 кода повторное, 184 платформ, 439 Исследование, 70; 152; 671 Исход, 123 Исчисление дифференциальное, 237; 266 интегральное, 237 Итерация по значениям, 692 К Кардинальность, 424 Качество сходимости, 683 функционирования, 510 Квартиль первая, 338 третья, 338 Классификатор, 510 комбинированный, 399 Классификация, 590 Кластеризация, 618 Клетка репродуктивная, 483; 493 Ковариация, 329 Код генетический, 483 откомпилированный, 375 собственный, 728 Количество измерений, 326 посторонних включений, 396 Команда Duck, 445 Jump, 445 Move, 445 Комитет Al Interface Standards Committee, 27; 62 Компонент, 91 адаптивный, 555 вложенный, 92 детерминированный, 75 интерфейса, 376 недетерминированный, 76 обучающийся, 374 познавательный, 555 эмоциональный, 555 Компоновка окружающей среды, 662 среды, 379 Конгломерация, 399 Конечность, 108 Конкуренция, 482 Коннекционизм, 247 Консеквент, 173; 462 Конструкция
fValaffaus;®!' антецедента, 462 консеквента, 462 Контекст, 123; 133; 135; 152;227 Контент точки,138 Контроль неявный, 52 типов статический, 374 явный, 52 Конференция Animals to Animats Conference, 59 Developers Conference, 28 Game Developers Conference, 27; 31 Конфигурация параметров, 328 Координата, 238 Координаты абсолютные, 136 относительные, 136 Коэффициент весовой, 250; 266 детализации, 626 масштабирования, 265 погрешности, 275 сжатия, 422 Критерий, 448 выбора оружия, 362 прекращения рекурсии, 394 Л Лабиринт двухмерный, 690 Лестница, 435 Линия огня, 244 сюжетная основная, 557 Логика, 170 классическая, 449 нечеткая, 449; 460 управления, 579 четкая, 449 Локомоция, 158 Локус, 484 м Манипулирование потоком информации, 672 Массив переходов, 576 слоев, 313 Масштабируемость, 167 Материалы об игровой индустрии, 152 Машина виртуальная, 375 игровая, 53; 97 обработки сценариев, 79 Предметный указатель 751 Тьюринга, 578 Мейоз, 483 Местонахождение противника, 231 Метазнания, 149 Метапрограммирование, 89 Метод бесконечного горизонта, 682 быстрого распространения, 298 жадный, 262 запрещения, 672 запроса контента точки, 139 инкрементный, 304 интегрирования Эйлера, 237 конгломерации, 399 конечного горизонта, 682 Монте-Карло, 692 наискорейшего спуска, 258 накопления знаний, 181 обратного распространения, 295 оптимизации, 248; 256 основанный на планировании, 73 основанный на реакциях, 73 основанный на рефлексах, 78 отслеживания лучей, 139 пакетный, 304 подавления, 672 проб и ошибок, 66; 543 программотехники, 715 рефлексивный, 78 управляемый данными, 176 упругого распространения, 300 усиления, 399 Методология обучения, 542 Механизм активизации, 596 арбитражный, 672; 727 передачи сообщений, 446; 582 событийно-управляемый, 63 Мимика, 556 Минимизация ошибки классификации, 271 Минимум локальный, 259 Мир 2.5D, 104 двухмерный, 104 дискретный, 103 игровой,103 непрерывный, 103 Множество аттестационное, 397 обучающее, 397 проверочное, 398 решений, 424 согласования, 513
752 Предметный указатель согласующееся, 512 Моделирование, 361; 419; 491; 543 адаптивного поведения, 59 вспомогательных переменных, 154 навигации, 134 отжига, 262 отхода, 160 перемещений, 189 поведения при стрельбе, 205 подхода, 160 эмоций, 556 Модель автономных персонажей, 159 вероятностная, 599; 601 детерминированная, 600 игрового мира, 78 коннекционистская, 293 марковская скрытая, 613 мира, 683 недетерминированная, 599; 601 нечеткая, 599; 601 оружия, 227; 366 перемещений, 133 площадки, 114 поведения, 95 проявления эмоций, 656 среднего вознаграждения, 682 стрельбы, 206 человеческого мозга, 249 эволюции, 483 Модификатор, 353 лингвистический, 459 Модуль, 89; 91 Motion, 141 Physics, 142 Vision, 142 генетического алгоритма, 525 нечеткой системы, 474 сценарной поддержки, 376 Мозг анимата, 89 головной,293 Момент инерции, 260 Монотонность, 288 Моторика, 137; 175 МСК мировая система координат, 136 Мутация, 483; 489; 494 Н Набор данных аттестационный, 303 данных обучающий, 303 данных проверочный, 303 ТПМ, 114 Навигация, 112 автономная, 112 двухмерная, 134 локальная, 115 Навык боевой, 218 Надежность, 116; 166 Нажатие выключателя, 442 Накопление знаний, 180 Наличие боеприпасов, 214 индивидуальной защиты, 367 Наложение, 83 Нападение, 671 Наполнение системы знаниями, 181 Налршикние движения, 159 Наследование, 149 Настроение, 562; 635 Недетерминированность, 580 Независимость, 618 Нейрон,292 биологический, 247 Неоднородность, 160 Непрерывность, 288 Несократимость, 645 Нечеткость, 449; 460 Нормирование, 159 О Обеспечение модульности, 81 поддержки оружия, 207 Область значений, 325 определения, 325 подконтрольная,92 проблемная, 122; 171 Обнаружение цели, 229 Обновление, 178 Обобщение, 302; 536 Обозначение оружия символическое, 366 перехода, 571 Обоснованность, 362 Обработка инкрементная, 590 пакетная, 400 символьной информации, 170 Обстановка игровая, 47; 49; 284 Обучаемость, 64 информационная, 64
Предметный указатель 753 поведенческая, 64 Обучение, 346; 419; 537; 542 автономное, 538 в автономном режиме, 537 в оперативном режиме, 538 инкрементное, 539 контролируемое, 65; 383; 540 на основе временной разности, 695 неконтролируемое, 541 оперативное, 279 пакетное, 400; 538 персептрона, 248; 268 с подкреплением, 65; 540; 677 свободное, 65 Объект физический, 238 Огибание препятствий, 117; 122 Огонь заградительный, 221 ответный, 221 Ограничение, 125; 127; 447 пространственное, 367 Ограниченность, 288 Одометр, 139 Окружение каркасное программное, 68 Оператор, 173 Операция генетическая, 495; 523 приведения типа, 410 присваивания, 410 процедурная,192; 195 суммирования, 238 Описание архитектуры, 93; 146 модулей,146 неформальное, 325 формальное, 325 Определение задачи,448 знака, 389 роли среды, 217 Опрос сенсоров, 166 Оптимизация, 64; 70; 534 частная, 63 Ориентация оптимальная, 255 поверхности препятствия, 161 Ортогональность, 618 Оружие, 665 ближнего боя, 350 дальнобойное, 218; 350 используемое, 367 контактное, 210 метательное, 210 рукопашного боя, 210 стрелковое, 210 Осмотр местности, 665 Остановка, 665 Осуществимость, 547; 649 Отбор, 489 естественный, 483 предварительный, 151; 154 Отдача, 682 Отжиг, 262 Отклик, 385 поведенческий, 589 Отклонение среднеквадратичное, 338 Отладка, 184 Отношение включения, 452 Отображение эмоций, 564 Отслеживание лучей,138 пусков ракет, 315 Отступление, 672 Отсутствие возможности достичь оптимального результата, 715 возможности достичь реалистичного поведения, 715 возможности контроля, 714 обучения, 714 Отход, 159 Охота, 671 Оценка жизнеспособности, 368 отложенная, 63 пригодности, 360 Очередь по приоритетам, 582 сообщений, 586 Ошибка прицеливания, 278 прицеливания правдоподобная, 274 среднеюдлратичная минимальная, 264 Ощущение, 560; 588; 635 познавательное, 561 п Пакет жизнеобеспечивающий, 440 стимулирующий, 440 Пакетирование, 63 Память рабочая, 172 Параметр Sample, 411
754 Предметный указатель этапа прогона, 671 Параметры условно независимые, 329 Перебор, 179 Передача сообщений, 582 Передвижение, 112 на местности, 439 Перезарядка, 231 Переменная зависимая, 387 лингвистическая, 455 нечеткая, 601 отклика,387; 391 прогнозирования, 385; 387; 390 Перемещение, 53; 95 в замкнутом пространстве, 161 глобальное, 113 независимое, 207 Переносимость, 563 Переход, 571; 620 вероятностный, 613 входящий, 583; 620 исходящий, 583 неоднозначный, 608 обобщенный, 620 общий, 618 по дереву, 392 Период обучения, 441 Персептрон, 247 многослойный, 283 Розенблатта, 249 Персонаж атакующий, 213 компьютерной игры, 45 несобственный, 31; 61; 738 несобственный интеллектуальный, 50 обороняющийся, 213 синтезированный, 47 собственный, 45; 99 управляемый игроком, 99 Плавность, 221 кривой, 289 План-график выполнения работ, 146 Планирование, 76 основанное на выборе решения, 77 основанное на реакциях, 77 Платформа, 99; 122; 435 Побег, 665 Поведение во время стрельбы, 226 коллективное, 647 оборонительное, 435 Поверхность решений, 287 Погоня, 159 Погруженность, 558 Подавление, 83 Подгонка чрезмерно тщательная, 302; 397 Подготовка к сражению, 217 платформы, 124 технических требований, 129 Поддержка базовая, 91 сценарная, 373; 728 частичного с*хптчгтстния правил, 175 Подкрепление, 516 Подмножество нестрогое, 452 поглощающих состояний, 602 строгое, 452 Подражание, 66 Подсистема анимации, 107 Подсчет голосов, 399 Подход, 159 декларативный, 173 инженерный, 56 эволюционный, 541 основанный на реакциях, 115 процедурный, 173; 579 рефлексивный, 79 эволюционный, 65; 481 Позиционирование неявное, 135 явное, 135 Поиск, 665 минимальной длины описания, 423 пути, 77 соотнстстния, 176; 177 Полиморфизм, 410 Полнота, 148 Положение противника, 408 Получатель, 589; 600 Получение информации по рассылке, 141 информации по требованию, 141 Полярность, 289 Понимание сути решения, 419 Популяция, 489 Поражение осколками, 223; 354 радиальное, 354 Порождение, 51 Постановка задачи,124
Предметный указатель 755 Построение модульное,182 Поступок непроизвольный, 638 Потенциал поражения, 381 Потребность, 127 Появление повторное, 207 Правило детерминированное, 515 колеса рулетки, 515 обучения, 249 отбора действий, 515 продукционное, 360 рабочее, 173 цепное, 266 Предложение техническое, 135 Предотвращение поражения, 671 Предположение, 447 Предсказание, 92; 205; 220 Предсказуемость, 166 Представление, 419 внутреннее, 172 высокоуровневое, 155 декларативное, 536 задачи неформальное, 324 задачи теоретическое, 324 знаний, 147; 170 наилучшее, 422 процедурное, 536 троичное, 510 Прекращение огня, 665 Преобразователь, 589; 600 Преподавание, 66 Препятствие, 109 Преследование, 665 Прибытие, 160 Привязанность, 557 Пригодность, 359; 513 оружия, 358 Признак фенотипа, 486 Применение грубой силы, 256 Применимость, 183 Примитив анимационный низкоуровневый, 107 Принадлежность частичная, 451 Принцип бритвы Оккама, 423 воплощения, 648 минимальной длины описания, 420 Принятие решений, 53 Приобретение знаний о задаче, 323 Приоритет перехода, 582 Прирост информации, 396 Прицеливание, 205; 220; 231; 273; 277; 536 Проблема, 123 выбора оружия, 403 нелинейности, 284 Проведение боя, 439 экспериментов, 735 Проверка, 303 булева значения, 389 дублирующаяся, 395 принадлежности к классу, 390 принадлежности к области значений, 390 состояния оружия, 231 типов данных, 374 условия, 389 Прогноз статистический, 536 Прогнозирование, 514 результатов борьбы, 284 скорости, 242 ущерба, 387 Программирование, 70 динамическое, 690 игры, 53 конвейерное, 71 надежное, 715 функциональное, 359 Программист, 184 Проект FEAR, 27; 39 академический, 134 игровой машины архитектурный, 68 надежный, 717 технический, 121; 146 эскизный, 121 П роектирование инкрементное, 739 с неявным контролем, 51 с явным контролем, 50 сверху вниз, 50 снизу вверх, 51 техническое, 146 эволюционное, 739 эскизное, 70; 143 Прозрачность, 646 Произведение точечное, 270 Производная
756 Предметный указатель частная, 265 Производство выстрела, 231 Проклятие размерности, 287 Простота, 166; 182 интерфейса, 369 Пространство игровое, 102 многомерное, 481 поиска, 424 Прототип, 147; 325; 669 Процедура обновления,586 обучения, 267 отсечения, 398 Процентиль, 338 Процесс классификации, 386 принятия решений марковский, 683 регрессии, 386 резервирования, 689 рефлексии, 664 сходящийся, 257 эволюции, 488 Прыжок направленный, 445 ракетный, 435; 527 с помощью ракетной пусковой установки, 435 Пулемет, 363 Пульт кнопочный, 444 Р Развлекательность, 54; 56 Размер, 326 Размерность, 424 задачи,325 Разнообразие оружия, 214 Разработка, 70 инициативная, 153 модульная, 726 подсистемы навигации, 116 современных игровых средств ИИ, 35 технических требований, 121; 127 технического предложения, 70 технического проекта, 151 эскизного проекта, 141 Разрешение конфликтов, 176; 177 Ракета, 243 Ранжирование критериев, 128 Раскрытие дополнительных возможностей, 735 Распознавание, 590 образов, 92; 284; 460; 730 Распознаватель, 589; 600 Распределение Больцмана, 262 гауссово, 524 по нишам, 514 Распространение данных прямое, 291 обратное, 295 ошибки обратное, 284 Расстояние, 237 линейное, 367 между участниками игры, 379 Расчет размерности задачи, 326 Расширение среды поддержки, 375 Расширяемость, 148; 563 Реакция, 73 направленная, 118 поведенческая, 53 хаотичная, 118 Реализация воплощения, 62 обучаемости, 66 Реализм, 56; 116 Реалистичность, 167; 230 Ребро,388 ориентированное, 573 Революция в проектировании средств ИИ, 49 технологическая ИИ, 48 Резервирование, 689 выборки, 689 на единичную глубину, 706 полное, 689 Рекомендация, 447 экспертная, 427 Рельсотрон, 351; 416 Рефакторинг, 653 Решение, 123 арбитражное, 727 архитектурное, 80 задач, 169; 186 задачи, 421 статической задачи, 535 Решительность, 362 Робототехника, 134 С Самоповреждение, 221 Сбор, 671 предметов, 442; 706 Свойство объекта, 236
ftataHausi$k эмерджентности, 643 Связь обратная, 285 обратная оценочная, 680 прямая, 293 рекуррентная,285 Секционирование рекурсивное, 386; 393; 400 Семантика, 148 Сенсор,90; 138; 174; 199 боковой, 166 лазерный, 134 ультразвуковой, 134 фронтальный, 166 Серия Al Game 1'rogrammin^Wisdom, 27 Al Wisdom, 28 Game Programming Gems, 28 Сеть каскадная линейная, 284 нейронная, 247; 250 полносвязная, 287 разреженная, 287 семантическая, 150 Сжатие, 421 максимальное, 422 Сигнал, 680 вознаграждения, 540; 680 вознаграждения модульный, 704 вознаграждения целостный, 704 обратной связи, 680 подкрепления,677 Символ, 149; 181 #,510 “безразличия”, 510 внешний, 193 внутренний, 193 Синапс, 293 Синтаксис, 148 Система Full Spectrum Command, 28 XCS, 511 воплощенная, 36 голосования,84; 92; 373; 378 классификаторов, 510 классификаторов обучающаяся, 509 координат, 136 координат агента, 136 локомоций,125 обучающаяся, 533 огибания препятствий, 118 основанная на знаниях, 171 основанная на правилах, 79; 169; 171 продукционная, 171 проявляющая эмоции, 549 рефлексивная, 80 сценарной поддержки, 375 Предметный указатель 757 управления, 461 экспертная, 171 экспертная нечеткая, 450 Система ИИ активизируемая, 73 компьютерной игры, 135 основанная на реакциях, 73 Ситуация игровая, 662; 678 тупиковая, 166 Складчатость местности, 408 Скорость, 159; 236 обучения, 258; 268 сходимости, 682 Скрещивание, 489; 493; 497 бинарное, 498 равномерное, 498 унарное, 498 Следование вдоль стены, 189 Сложность, 288 решения, 332 Слой,250 входной, 283 выходной, 283 промежуточный, 285 скрытый, 285 Слот, 150 Смена эмоций, 589; 635 Смещение, 251 Событие, 387; 594 игровое, 572 Совместимость интерфейсов, 369 обратная, 563 Совокупность данных, 387 Современные игровые средства ИИ, 32 Согласование, 52 классификаторов, 512 Соединение рекуррентное, 575 Создание документации, 122 классификатора, 513 узлов принятия решений, 395 Сома, 292 Сообщение временное, 582 Скпистствие информации, 140 Соперничество, 482 Сосредоточение взгляда, 665
758 Предметный указатель Состояние, 75; 79; 569; 572; 602; 679; 702 AND, 620 wander, 580 активное, 577 вложенное, 618; 619; 620 начальное, 572 поглощающее, 572 принимающее, 571 противника, 662 терминальное, 569; 571 участника игры, 367; 662 Сохранение благоприятных индивидуальных различий, 482 Способ действий,681 обучения,386 Способность, 230 к обобщению, 302 к стрельбе, 273 Спуск градиентный, 259 Сражение крупномасштабное, 218 Среда, 482 мультиагентная, 47 обучающая, 666 окружающая игрового мира, 97 поддержки сценариев, 375 программная, 89 программная FEAR, 88 программная производственная, 97 содержательная, 649 Средство искусственного интеллекта, 47 прицеливания, 273 сск собственная система координат, 136 Стандарт, 725 Стандартизация интерфейса, 62 Ствол оружия, 235 Стек, 624 Степень детализации, 625 жизнеспособности, 211; 662 истинности, 449 неопределенности правила, 182 правдоподобия, 449 пригодности оружия, 379 принадлежности, 451; 470; 602 Стимул, 588; 635 Столкновение движущихся тел, 238 Стояние на месте, 706 Стратегия выбора оружия, 481 наступательная, 519 оборонительная ,519 оптимизации, 484; 677 реального времени, 103 управляющая, 178 Стрельба, 220; 536 от первого лица, 87 по мишеням, 218 точная, 218; 235 Структура, 100 вложения, 619 внутреннего хранения данных, 173 данных эволюционная, 487 древовидная, 173 иерархическая ,619 линейная, 174 узла дерева решений, 410 Субархитектура интеллекта, 549 эмоций, 549 Суммирование независимое, 83 Супердробовик,351;416 Суперсостояние, 619; 620 Сфера эмоциональная, 54 Схема переходов нечеткая, 602 Сходимость, 682 асимптотическая, 683 Сценарий, 377 Счетчик, 511 Т Таблица переходов, 573 Таймер встроенный, 672 Текущий уровень жизнеспособности, 379 Тело,173; 292 Теория информации, 421 искусственной жизни, 158 множеств, 450 нечетких множеств, 450 Плучика, 554 представления знаний, 147 эволюции, 481 Терм, 456 нечеткий, 471 первичный, 456 Тестирование, 70; 167 Технические условия, 124 Типизация динамическая, 374
^alalfaus^k Предметный указатель 759 Топология, 285 многослойного персептрона, 283; 285 Точка перемены маршрута, 113 разбиения, 394 столкновения,239 Точность прогноза, 511 стрельбы, 380 тпз теория представления знаний, 147 ТПМ точка перемены маршрута, 113 Траектория баллистическая, 212 поражающего элемента, 231 интеллектуальности, 533 локомоций, 108 обеспеченности доспехами, 662 Усиление, 399 Ускорение, 159; 236 Условие реализации, 126 тестирования,109 Усовершенствование итерационное, 688; 691 состояния, 618 Установка пусковая ракетная, 319 Устранение ошибок, 277 Уточнение, 154 У вариантов реализации, 151 решения, 151 Убыстрение событий, 353 Угол возвышения, 235 поворота, 235 Удаление классификатора, 514 Удар косвенный, 354 Удивление, 561 Узел AI-Depot, 27 http://AiGameDev.com/, 39 http://fear.sf.net, 88 SourceForge, 39 книги, 39 корневой,388 листовой,388; 391 принятия решения, 385 проекта FEAR, 88 Узкое место в получении знаний, 180 Уклонение от огня, 439; 527; 547 от удара, 671 Уменьшение масштаба изображения, 620 ущерба, 665 Универсальность, 183 Унификация форм представления, 536 Управление, 169; 186 конечностями низкоуровневое, 125 набором данных, 397 нечеткое, 461 Упреждение, 205; 220 Упрощение, 333 Уровень, 58 знаний, 323 Ущерб учетверенный, 353 Ф Фаза прогнозирования, 514 Фаззификация, 455 Факт, 149; 536 Фактор определенности, 182 уверенности, 182 Фенетика, 485 Феном, 486 Феномен эмерджентный, 535 Фенотип, 486 Форма “объект-атрибут-значение”, 149 инференциальная, 148 нотационная, 148 поведения, 557 поведения рандомизированная, 614 поведения тактическая, 665; 670 поведения эмерджентная, 646 представления, 149 представления декларативная, 537 представления задачи, 324 представления процедурная, 537 Формализация, 151 входов, 154 выходов, 154 представления знаний, 149 Формирование, 66; 543 дерева решений, 393 эпизода, 694 Форум, 736 GameDevnet, 736 Фрейм, 150
760 Предметный указатель Функтор, 195 Функция Batch, 411 Fire, 232 Increment, 411 Move(), 141; 162 Select, 232 Tum(), 141; 162 VisibleEntities(), 446 активизации, 253; 288 активизации линейная, 284 активизации нелинейная, 283; 285 выработки решения, 412 выходная, 574 комбинаторная, 252 логистическая, 289 обратного вызова, 195 обратного вызова OnCollision(), 142 ошибок, 264; 278 перегруженная, 377 перехода, 569; 572 пороговой логики, 289 пригодности, 359 принадлежности, 451 сигмоидальная, 289 стоимостная, 684 стоимостная оптимальная, 686 суммирования, 252 универсальная, 377 целевая, 267 шума Перлина, 164 энергии,255 X Характеристика экспертная, 336 Хитроумное изобретение, 435 Хранилище фактов, 173 Хромосома, 483 ц Целенаправленность, 116 перемещений, 116 Целеуказание, 165 Цель, 127 Центр масс, 236; 458 Цепь марковская, 612 Цикл “предположи-проверь”, 177 “распознай-действуй”, 176 Ч Частота появления целей, 214 Часть онтогенетическая, 64 филогенетическая, 64 Чатбот, 61 Чувство, 562; 632 Ш Шаблон, 89; 387 поведения, 221 проектирования, 53; 68; 89 Ширина резервирования, 689 Шлем, 440 э Эволюция, 482 Экземпляр, 387; 419 оружия, 366 Экран электромагнитный, 352 Экспериментирование, 70 Эксперт, 171; 427 в предметной области, 184 Эксплуатация алгоритма, 539 Экспорт интерфейсов, 376 Экспрессивность, 183 Элемент обрабатывающий, 283 поражающий, 226 скрытый, 286 Элитизм,492 Эмерджентность, 643 Эмоция, 549; 554; 561; 633 активизируемая, 560 вторичная, 561 искусственная, 556 основная, 561 первичная, 561 сложная, 562 Энтропия, 396 множества суммарная, 396 подмножества, 396 Эпоха, 268 Эпсилон-переход, 608 Этап разработки технических требований, 121 системного анализа, 121 технического проектирования, 151 Эффективность, 116; 140; 148; 166; 183; 222; 230; 444 анимата, 60 оружия, 352 Эффектор, 90; 174; 199
^alattaus,^. Предметный указатель 761 I ю Юнит, 379 Я Явление духовное, 561 эмерджентное, 643 Язык, 557 Python, 377 естественный, 148 компилируемый, 374 представления знаний, 148 проблемно-ориентированный, 88 программирования Perl, 578 регулярный, 578 сценариев, 373 целостный, 148 япз язык представления знаний, 148 Ячейка пустая, 576; 577
Научно-популярное издание Алекс Дж. Шампандар Искусственный интеллект в компьютерных играх как обучить виртуальные персонажи реагировать на внешние воздействия Литературный редактор Верстка Художественный редактор Корректоры Е.Д. Давидян О.В. Мишутина В.Г. Павлютин Л.А. Гордиенко, О.В. Мишутина Издательский дом “Вильямс” 127055, г. Москва, ул. Лесная, д. 43, стр. 1 Подписано в печать 28.05.2007. Формат 70x100/16. Гарнитура Times. Печать офсетная. Усл. печ. л. 61,92. Уч.-изд. л. 44,3. Тираж 1500 экз. Заказ № 1239. Отпечатано по технологии CtP в ОАО “Печатный двор” им. А М. Горького 197110, Санкт-Петербург, Чкаловский пр., 15.
4\lataHausi^i
“Полезная книга, в которой можно найти не только описания перспективных методов, но и примеры эффективных приложений. С ее помощью читатели смогут найти подход к решению згщач создания игровых средств искусственного интеллекта и реализовать его на практике”. Д-р Александр Нарейек Председатель комитета Al Interface Standards Commitee ассоциации IGDA Искусственный интеллект в компьютерных играх как обучить виртуальные персонажи реагировать на внешние воздействия Применение искусственного интеллекта в играх — основа будущих достижений. Надеемся встретить читателей этой книги среди самых преуспевающих разработчиков Любители компьютерных игр рассчитывают на то, что несобственные персона- жи, с которыми им приходится вступать в борьбу в ходе игры, будут обладать все большим интеллектом, эффективностью и реалистичностью, поэтому при создании таких игр уже невозможно обойтись без использования средств ИИ. В связи с этим разработчикам игр приходится сталкиваться с колоссальными трудностями в части определения методологии, проектирования программно- го обеспечения и программирования. Для создания автономных синтетических созданий, способных адаптироваться в мире игры, требуется совсем другая трактовка средств ИИ по сравнению с классическим подходом, который ис- пользуется разработчиками игр в настоящее время. Современный подход к со- зданию игровых средств ИИ, представленный в этой книге, имеет своей целью получение воплощенных аниматов, которые демонстрируют интеллектуальное и реалистичное поведение. Особенно значительный интерес в сообществе разра- ботчиков игр вызывают обучающиеся средства ИИ, поскольку современные ме- тодики обучения могут использоваться для оптимизации процесса разработки. Книга Искусственный интеллект в компьютерных играх: как обучить виртуаль- ные персонажи реагировать на внешние воздействия действительно позволяет преодолеть разрыв между академическими исследованиями в области искус- ственного интеллекта и профессиональной разработкой игр. Эта книга доступ- на для восприятия программистов даже с небольшим опытом работы на языке C++ и позволяет достичь следующих целей. • Научиться применять ультрасовременные средства ИИ, создаваемые, в част- ности, на основе не только новейших, но и давно зарекомендовавших себя методик разработки средств ИИ. * Ознакомиться с тем, как описанные подходы используются на практике для реализации компетентных способностей или интеллектуальных форм пове- дения, изучая исходный код и демонстрационные версии, подготовленные с помощью библиотеки средств ИИ, которая предоставляется бесплатно на Web-узле AiGameDev.com. • Принять участие в поэтапном создании искусственного персонажа игры на выживание, в ходе которого отдельные компоненты средств ИИ постепенно объединяются в интеллектуальную архитектуру. • Освоить нюансы современного процесса разработки, позволяющего спра- виться с проблемами реализации сильного искусственного интеллекта, в ос- нове которого лежит методология, практически необходимая для создания игровых персонажей следующего поколения. Алекс Дж. Шампандар прошел исчерпывающую теоретическую подготовку в области искусственного интеллекта и часто читает доклады по результатам своих исследований по искусственному интеллекту, особенно на конференциях Game Developers Conference. Алекс является ведущим программистом FEAR (проект разработки игровых средств ИИ с открытым исходным кодом) и в своей работе часто консультируется с другими профессиональными программистами в целях внедрения современных прототипов в коммерческие игры. Он основал узел Al-Depot, весьма популярный в сообществе разработчиков средств ИИ, и регулярно выпускает учебники, предназначенные для широкого круга энтузиастов создания средств ИИ. Алекс опубликовал много статей в серии Al Game Programming Wisdom. Он входит в состав комитета AI Interface Standards Committee и участвует в определении общих спецификаций для методов раарвботки игровых средств ИИ. Искусственный интеллект (.а0|М’меивыЙ нашил ISBN 978-5-8459-0887-2 ISBN 978-5-8459-0890-2 www.williamspublishing.com Неш\ Riders i www.newriders.com