- •Иллюстрированный самоучитель по экспертным системам
- •Рядовым читателям
- •Студентам и преподавателям
- •Инженерам-программистам
- •Научным работникам
- •Глава 1. Что такое экспертная система?
- •Глава 1.
- •1.1. Смысл экспертного анализа
- •1.2. Характеристики экспертных систем
- •1.3. Базовые функции экспертных систем
- •1.3.1. Приобретение знаний
- •1.1. Забытый пароль
- •1.3.2. Представление знаний
- •1.2. Синтаксис и семантика представления семейных отношений
- •1.3.3. Управление процессом поиска решения
- •1.3. Обслуживание автомобиля
- •1.3.4. Разъяснение принятого решения
- •1.4. Загадка одного портрета
- •1.4. Резюме и структура книги
- •1.4.1. Текущее состояние проблемы
- •1.4.2. Распределение материала книги по главам
- •Рекомендуемая литература
- •Упражнения
- •Глава 2. Обзор исследований в области искусственного интеллекта
- •Глава 2.
- •2.1. Классический период: игры и доказательство теорем
- •2.1.1. Поиск в пространстве состояний
- •2.1. Комбинаторный взрыв
- •2.1.2. Эвристический поиск
- •2.2. Алгоритм а
- •Конец алгоритма
- •2.2. Романтический период: компьютер начинает понимать
- •2.2.1. Система shrdlu
- •2.3. Сценарий посещения ресторана
- •2.2.2. Схемы представления знаний
- •2.4. Летучие мыши и проблема с пингвинами
- •2.3. Период модернизма: технологии и приложения
- •2.3.1. В знании сила
- •2.5. Процедуральное или декларативное знание
- •2.6. Машина логического вывода и база знаний
- •2.3.2. Периоды "зимней спячки" и "пробуждения" в истории искусственного интеллекта
- •Рекомендуемая литература
- •Упражнения
- •Глава 3. Представление знаний
- •Глава 3.
- •3.1. Представление знаний: принципы и методы
- •3.1. Молотки, графины и теоремы
- •3.2. Планировщик strips
- •3.2.1. Таблицы операторов и методика "средство -анализ завершения"
- •3.2.2. Анализ метода представления и управления в strips
- •3.3. Формулировка подцелей в mygin
- •3.3.1. Лечение заболеваний крови
- •3.3.2. База знаний системы mycin
- •3.3.3. Структуры управления в mycin
- •3.2. Комбинация гипотез
- •3.4. Оценка и сравнение характеристик экспертных систем
- •3.4.1. Оценка системы mycin
- •3.4.2. Сравнение mycin и strips
- •Рекомендуемая литература
- •Упражнения
- •Глава 4. Символические вычисления
- •Глава 4.
- •4.1. Символическое представление
- •4.2. Физическая символическая система
- •4.1. Главная гипотеза
- •4.3. Реализация символических структур на языке lisp
- •4.3.1. Структуры данных в языке lisp
- •4.2. Списки и точечные пары
- •4.3.2. Структура lisp-программы
- •4.3. Функции, их вычисление и проблема цитирования в clips
- •4.3.3. Приложение функции и лямбда-исчисление
- •4.3.4. Обработка списков
- •4.4. Примитивы в lisp
- •4.3.5. Сопоставление с образцом
- •4.4. Почему. Lisp не является языком представления знаний
- •4.4.1. Символический уровень и уровень знаний
- •4.4.2. Lisp и разработка программ
- •4.5. Гипотеза Смита
- •4.5. Языки представления знаний
- •Рекомендуемая литература
- •Упражнения
- •Глава 5. Системы, основанные на знаниях
- •Глава 5.
- •5.1. Канонические системы
- •5.1. Смысл порождений
- •5.2. Системы порождающих правил для решения проблем
- •5.2.1. Синтаксис представления правил
- •Листинг 5.1. Оргправило системы mycin, записанное на языке clips
- •Листинг 5.2. Правило, в котором используются переменные
- •5.2.2. Рабочая память
- •Листинг 5.3. Набор правил для проблемы в системе strips
- •5.2. Трассировка программы управления роботом
- •5.3. Управление функционированием интерпретатора
- •5.3.1. Разрешение конфликтов
- •5.3. Разрешение конфликтов в cups
- •5.3.2. Прямая и обратная цепочки рассуждений
- •Листинг 5.4. Набор правил для построения башни из блоков
- •5.4. Трассировка программы строительства башни
- •5.3.3. Правила и метаправила
- •5.5. Свойство выпуклости в clips: пингвины обретают способность летать (или не обретают)
- •Рекомендуемая литература
- •Упражнения
- •Листинг 5.5. Набор диагностических правил заболеваний брюшной полости на языке clips
- •Глава 6. Ассоциативные сети и системы фреймов
- •Глава 6.
- •6.1. Графы, деревья и сети
- •6.2. Ассоциативные сети
- •6.2.1. Разделение видов узлов и когнитивная экономия
- •6.2.2. Анализ адекватности ассоциативных сетей
- •6.3. Представление типовых объектов и ситуаций
- •6.3.1. Основные понятия концепции фреймов
- •6.3.2. Фреймы и графы
- •6.3.3. Значения по умолчанию и демоны
- •6.1. Реализация фреймов и наследования в языке clips
- •6.3.4. Множественное наследование
- •6.3.5. Сравнение сетей и фреймов
- •Рекомендуемая литература
- •Упражнения
- •Глава 7. Объектно-ориентированное программирование
- •Глава 7.
- •7.1. Язык krl
- •7.1. Процедуры и объекты
- •7.2. Языки loops и flavors
- •7.2.1. Передача сообщений
- •7.2. Формирование объекта класса на языке clips
- •7.2.2. Проблема наложения методов
- •7.2.3. Метаклассы
- •7.3. Языки clips и clos
- •7.3.1. Множественное наследование в clos и clips
- •Листинг 7.1. Объявление классов на языке clips
- •7.3.2. Наложение методов в clos и clips
- •7.3. Как сделать людей вежливыми
- •7.3.3. Метаклассы в clos и clips
- •Листинг 7.2. Файл nixon.H. Объявление классов, версия 1
- •Листинг 7.3. Файл nixon.H. Объявление классов, версия 2
- •Листинг 7.4. Файл nixon.H. Объявление классов, версия 3
- •Листинг 7.5. Файл nixon.H. Объявление классов, версия 4
- •7.5. Объектно-ориентированный анализ и конструирование экспертных систем
- •Рекомендуемая литература
- •Упражнения
- •Глава 8. Логическое программирование
- •Глава 8.
- •8.1. Формальные языки
- •8.1.1. Исчисление высказываний
- •8.1.2. Исчисление предикатов
- •8.1. Снова о роботах и комнатах
- •8.2. Язык prolog
- •Листинг 8.1. Простая программа на языке prolog, определяющая отношение on (на)
- •8.3. Опровержение резолюций
- •8.3.1. Принцип резолюций
- •8.3.2. Поиск доказательства в системе резолюций
- •8.4. Процедурная дедукция в системе planner
- •8.5.1. Правила поиска в языке prolog
- •8.5.2. Управление поиском в системе mbase
- •Рекомендуемая литература
- •Упражнения
- •Глава 9. Представление неопределенности знаний и данных
- •Глава 9.
- •9.1. Источники неопределенности
- •9.2. Экспертные системы и теория вероятностей
- •9.2.1. Условная вероятность
- •9.2.2. Коэффициенты уверенности
- •9.2.3. Коэффициенты уверенности и условные вероятности
- •9.3. Сомнительность и возможность
- •9.3.1. Нечеткие множества
- •9.3.2. Нечеткая логика
- •9.3.3. Теория возможности
- •9.4. Неопределенное состояние проблемы неопределенности
- •Рекомендуемая литература
- •Упражнения
- •Глава 10. Приобретение знаний
- •Глава 10.
- •10.1. Теоретический анализ процесса приобретения знаний
- •10.1.1. Стадии приобретения знаний
- •10.1.2. Уровни анализа знаний
- •10.1. Оболочки CommonKads и kastus
- •10.1.3. Онтологический анализ
- •10.2. Оболочки экспертных систем
- •10.2.1. Система emycin
- •10.2.2. Сопровождение и редактирование баз знаний с помощью программы teiresias
- •10.3. Методы приобретения знаний
- •10.3.1. Использование опроса экспертов для извлечения знаний в системе compass
- •10.3.2. Автоматизация процесса извлечения знаний в системе opal
- •10.3.3. Графический интерфейс модели предметной области
- •10.3.4. Эффективность программы opal
- •10.4. Приобретение новых знаний на основе существующих
- •Рекомендуемая литература
- •Упражнения
- •Глава 11. Эвристическая классификация (I)
- •Глава 11.
- •11.1. Классификация задач экспертных систем
- •11.2. Классификация методов решения проблем
- •11.2.1. Эвристическое сопоставление
- •11.2.2. Общность эвристической классификации
- •11.1. Определение понятия "оружие нападения"
- •11.3. Классификация или конструирование?
- •Рекомендуемая литература
- •Упражнения
- •Глава 12. Эвристическая классификация (II)
- •Глава 12.
- •12.1. Инструментальные средства и задачи, решаемые экспертной системой
- •12.2. Эвристическая классификация в системах mud и more
- •12.2.1. Модель предметной области выполнения буровых работ
- •12.1. Диагностические правила в м u d
- •12.2.2. Стратегии приобретения знаний
- •12.2.3. Использование коэффициентов уверенности в программе more
- •12.2.4. Опыт эксплуатации системы more
- •12.3. Совершенствование стратегий
- •12.3.1. Уроки проекта guidon
- •12.3.2. Структура задач в системе neomycin
- •Рекомендуемая литература
- •Упражнения
- •Глава 13. Иерархическое построение и проверка гипотез
- •Глава 13.
- •13.1. Влияние сложности пространства гипотез на организацию работы системы
- •13.1. Обход дерева
- •13.2. Структурированные объекты в centaur
- •13.2.1. Структура фреймов в centaur
- •13.2.2. Правила, включенные в прототипы
- •13.3. Формирование суждений на базе модели в системе internist
- •13.3.1. Представление знаний в дереве заболеваний
- •13.3.2. Методика выделения правдоподобных гипотез в internist
- •13.3.3. Проблемы, обнаруженные в процессе эксплуатации системы internist
- •13.4. Рабочая среда инженерии знаний tde
- •Рекомендуемая литература
- •Упражнения
- •Глава 14. Решение проблем конструирования (I)
- •Глава 14.
- •14.1. Области применения методов конструктивного решения проблем
- •14.2. Система r1/xcon
- •14.2.1. Компоненты и ограничения
- •14.2.2. Использование текущего контекста для управления структурой задачи
- •14.1. Стратегии разрешения конфликтов lex и меа
- •14.2.3. Формирование суждений с учетом ограничений: метод Match
- •14.3. Использование знаний, развитие и расширение системы xcon
- •14.3.1. Извлечение знаний в системе r1/xcon
- •14.3.2. Совершенствование и расширение системы r1/xcon
- •14.2. Совершенствование системы xcon
- •Рекомендуемая литература
- •Упражнения
- •Глава 15. Решение проблем конструирования (II)
- •Глава 15.
- •15.1. Стратегии конструирования
- •15.2. Архитектура систем планирования и метапланирования
- •15.1. Программа планирования мероприятий
- •15.3. Извлечение, представление и применение знаний о проектировании
- •15.3.1. Реализация обратного прослеживания в системе vt
- •15.3.2. Приобретение знаний с помощью системы salt
- •15.4. Итоги анализа систем решения проблем конструирования
- •Рекомендуемая литература
- •Упражнения
- •Глава 16. Средства формирования пояснений
- •Глава 16.
- •16.1. Формирование пояснений на основе знаний
- •16.1.1. Подсистема формирования пояснений в mycin
- •16.1.2. Формирование пояснений в системах, производных от mycin
- •16.1.3. Формирование пояснений на основе фреймов
- •16.1.4. Организация вывода пояснений в системе centaur
- •16.1.5. Использование мультимедийного интерфейса для формирования пояснений
- •16.2. Формирование пояснений и автоматическое программирование
- •16.2.1. Автоматическое программирование в системе xplan
- •16.2.2. Проект Explainable Expert Systems
- •16.2.3. Планирование текстов пояснений и модели пользователей в pea
- •16.3. Перспективы дальнейших исследований методов формирования пояснений
- •Рекомендуемая литература
- •Упражнения
- •Глава 17. Инструментальные средства разработки экспертных систем
- •Глава 17.
- •17.1. Общая характеристика инструментальных средств для построения экспертных систем
- •17.2. Оболочки экспертных систем
- •17.3. Языки программирования высокого уровня
- •17.3.1. Языки описания порождающих правил
- •17.3.2. Объектно-ориентированные языки
- •17.3.3. Языки логического программирования экспертных систем
- •17.3.4. Многофункциональные программные среды
- •17.1. Cups как многофункциональная среда программирования
- •17.3.5. Дополнительные модули
- •17.2. Логический вывод в разных контекстах
- •17.4. Использование инструментальных средств
- •17.4.1. Характерные сложности и способы их избежать
- •17.4.2. Выбор подходящего инструментария для разработки экспертной системы
- •17.4.3. Практическое освоение инструментальных средств
- •17.3. Правила и процедуры в инструментальной среде м.4
- •17.4.4. Стиль программирования
- •17.5. Некоторые максимы разработки экспертных систем
- •Рекомендуемая литература
- •Упражнения
- •Глава 18. Системы с доской объявлений
- •Глава 18.
- •18.1. Принципы организации систем с доской объявлений
- •18.2. Системы hearsay, age и орм
- •18.2.1. Почему для hearsay-II выбрана такая архитектура
- •18.2.2. Использование источников знаний в hearsay-II
- •18.2.3. Система hearsay-III— оболочка для создания систем с доской объявлений
- •18.2.4. Инструментальные среды age и орм
- •18.3. Среда с доской объявлений вв
- •18.3.1. Уровни абстракции в среде вв
- •18.3.2. Системы вв1 и accord
- •18.3.3. Система protean
- •18.3.4. Интеграция стратегий логического вывода
- •18.3.5. Общая характеристика вв
- •18.4. Эффективность и гибкость модели с доской объявлений
- •18.4.1. Организация доски объявлений в системе gbb
- •18.4.2. Компоновка доски объявлений в среде erasmus
- •18.5. Организация параллельных вычислений в системах cage и poligon
- •Рекомендуемая литература
- •Упражнения
- •Глава 19. Система отслеживания истинности предположений
- •Глава 19.
- •19.1. Отслеживание зависимостей
- •19.1.1. Релаксация в сети
- •19.1.2. Пересмотр допущений
- •19.1. Запись информации о связях
- •19.2. Пересмотр теорий высказываний
- •19.3. Немонотонное обоснование
- •19.2. Пара конфликтующих выражений
- •19.4. Работа со множеством контекстов
- •19.4.1. Отслеживание истинности предположений, основанное на анализе допущений
- •19.4.2. Использование систем отслеживания истинности предположений для диагностирования на основе моделей
- •19.5. Сравнение различных вариантов организации систем отслеживания истинности предположений
- •Рекомендуемая литература
- •Упражнения
- •Глава 20. Формирование знаний на основе машинного обучения
- •Глава 20.
- •20.1. Индуктивное обучение
- •20.2. Система Meta-dendral
- •20.2.1. Формирование и уточнение правил
- •20.2.2. Пространство версий
- •20.2.3. Алгоритм отсеивания кандидатов
- •20.2.4. Сопоставление экземпляров с образцами в Meta-dendral
- •20.3. Построение дерева решений и порождающих правил
- •20.3.1. Структура дерева решений
- •20.3.2. Алгоритм формирования дерева решений по обучающей выборке
- •20.4. Уточнение наборов правил
- •Рекомендуемая литература
- •Упражнения
- •Глава 21. Сети доверия
- •Глава 21.
- •21.1. Теория Демпстера—Шефера
- •21.1.1. Функции доверия
- •21.1.2. Применение теории Демпстера—Шефера к системе mycin
- •21.2. Методика Перла
- •21.1. Байесовские сети
- •21.3. Сравнение методов неточных рассуждений
- •21.4. Резюме
- •Рекомендуемая литература
- •Упражнения
- •Глава 22. Рассуждения, основанные на прецедентах
- •Глава 22.
- •22.1. База прецедентов
- •22.1.1. Программа chef
- •22.1.2. Методы извлечения и адаптации прецедентов
- •2. Найти соответственное свойство в хранимых прецедентах.
- •3. Сравнить два значения и вычислить степень близости т.
- •4. Умножить эту оценку на вес свойства с.
- •22.2. Обучение с помощью компьютера: система сато
- •22.2.1. Предметная область программы сато
- •22.2.2. Расследования и рассуждения в юриспруденции
- •22.2.3. Обучение с помощью системы сато
- •22.3. Формирование отчетов в системе frank
- •22.4. Сравнение систем, основанных на правилах и прецедентах
- •Рекомендуемая литература
- •Упражнения
- •Глава 23. Гибридные системы
- •Глава 23.
- •23.1. Методы обучения в системе odysseus
- •23.2. Системы odysseus и minerva
- •23.2.1. Оболочка экспертной системы minerva
- •23.2.2. Обучение в системе odysseus
- •23.3. Использование прецедентов для обработки исключений
- •23.4. Гибридный символический подход и нейронные сети
- •23.4.1. Нейронные сети
- •23.4.2. Scalir — гибридная система для извлечения правовой информации
- •23.4.3. Организация обучения в системе scalir
- •23.5. Будущее гибридных систем
- •Рекомендуемая литература
- •Упражнения
- •Глава 24. Заключение
- •Глава 24.
- •24.1. Загадка искусственного интеллекта
- •24.2. Представление знаний
- •24.3. Языки программирования систем искусственного интеллекта
- •24.4. Решение практических проблем
- •24.5. Архитектура экспертных систем
- •Рекомендуемая литература
- •Приложение.
- •А.1. Краткая история clips
- •А.2. Правила и функции в clips
- •А.2.1. Факты
- •А.2.2. Правила
- •А.2.3. Наблюдение за процессом интерпретации
- •А.2.4. Использование шаблонов
- •A.2.5. Определение функций
- •А.3. Объектно-ориентированные средства в clips
- •А.4. Задача "Правдолюбцы и лжецы"
- •А.4.1. Анализ проблемы
- •А.4.2. Онтологический анализ и представление знаний
- •А.4.3. Разработка правил
- •Листинг а.1. Трассировка решения задачи р0
- •Упражнение 1
- •А.4.4. Расширение набора правил — работа с составными высказываниями
- •Упражнение 2
- •Листинг а.2. Трассировка решения задачи р4
- •A.4.5. Обратное прослеживание и множество контекстов
- •Упражнение 3
- •Выявление противоречий
- •Подготовка рабочей памяти к выполнению отката
- •Выполнение отката
- •Упражнение 4
- •Восстановление контекста
- •Упражнение 5
- •А.4.6. Обработка метавысказываний
- •А.4.7. Полный листинг программы
- •А.5. Стиль программирования на языке clips
- •Упражнения
Листинг 5.4. Набор правил для построения башни из блоков
;; СТРАТЕГИЯ РАЗРЕШЕНИЯ КОНФЛИКТОВ
(declare (strategy mea))
;; Шаблоны
;; Объект block характеризуется цветом, размером и положением,
(deftemplate block
(field color (type SYMBOL))
(field size (type INTEGER))
(field place (type SYMBOL)) )
;; Вектор 'on' указывает, что блок <upper>
;; находится на блоке <lower>. (deftemplate on
(field upper (type SYMBOL»
(field lower (type SYMBOL))
(field place (type SYMBOL) (default heap)] )
;; Текущая цель (goal) может быть либо 'найти' (find),
;; либо 'уложить' (build), (deftemplate goal
(field task (type SYMBOL)) )
;; ИНИЦИАЛИЗАЦИЯ
;; Имеются три блока разных цветов и размеров.
;; Предполагается, что они находятся в куче.
(deffacts the-facts
(block (color red) (size 10))
(block(color yellow) (size 20))
(block (color blue) (size 30))
)
;; ПРАВИЛА
;; Задать первую цель: найти первый блок,
(defrule begin
(initial-fact) =>
(assert (goal (task find))) )
;; Взять самый большой блок в куче (heap),
(defrule pick-up
?my-goal <- (goal (task find))
?my-block <- (block (size ?S1) (place heap))
(not (block (color ?C2) (size ?S2&:(>-?S2 ?S1))
(place heap))) =>
(modify ?my-block (place hand))
(modify ?my-goal (task build)) )
;; Установить первый блок в основание башни (tower).
;; Этот блок не имеет под собой никакого другого,
(defrule place-first
?my-goal <- (goal (task build))
?my-block <- (block (place hand))
(not (block (place tower)))
=>
(modify ?my-block (place tower))
(modify ?my-goal (task find)) )
;; Установить последующие блоки на тот,
;; что лежит в основании башни,
(defrule put-down
?my-goal <- (goal (task build))
?my-block <- (block (color ?C0)
(place hand))
(block (color ?C1) (place tower)))
(not (on (upper ?C2) (lower ?C1)
(place tower)))
=>
(modify ?my-block (place tower))
(assert (on (upper ?CO) (lower ?C1)
(place tower)))
(modify ?my-goal (task find)) )
;; Если в куче больше нет блоков, прекратить процесс,
(defrule stop
?my-goal <- (goal (task find))
(not (block (place heap)))
=>
(retract ?my-goal) )
Обратите внимание на то, что порядок перечисления правил в программе не имеет значения. В программе управления роботом, представленной в листинге 5.3, правило прекращения выполнения стояло в списке первым, а в этой программе оно стоит в самом конце списка. Трассировку выполнения приведенной программы и некоторые комментарии вы найдете во врезке 5.4.
5.4. Трассировка программы строительства башни
При запуске программы в режиме трассировки будет сформирована следующая карта трассировки.
CLIPS> (reset)
==> f-0 (initial-fact)
==> f-1 (block (color red) (size 10) (place heap))
==>f-2 (block (color yellow) (size 20) (place heap))
==> f-3 (block (color blue) (size 30) (place heap))
CLIPS> (run)
TIRE 1 begin: f-0
==> f-4 (goal (task find))
FIRE 2 pick-up: f-4, f-3,
<== f-3 (block (color blue) (size 30) (place heap))
==> f-5 (block (color blue) (size 30) (place hand))
<== f-4 (goal (task find))
==> f-6 (goal (task build))
FIRE 3 place-first: f-6, f-5,
<== f-5 (block (color blue) (size 30) (place hand))
==> f-7 (block (color blue) (size 30) (place tower))
<== f-6 (goal (task build))
==> f-8 (goal (task find))
FIRE 4 pick-up: f-8, f-2,
<== f-2 (block (color yellow) (size 20) (place heap))
==> f-5 (block (color yellow) (size 20) (place hand))
<== f-8 (goal (task find))
==> f-10 (goal (task build))
FIRE 5 put-down: f-10, f-9, f-7,
<== f-9 (block (color yellow) (size 20) (place hand))
==>. f-11 (block (color yellow) (size 20) (place tower))
==> f-12 (on (upper yellow) (lower blue) (place tower))
<== f-10 (goal (task build))
==> f-13 (goal (task find))
FIRE 6 pick-up: f-13, f-1,
<== f-1 (block (color red) (size 10) (place heap))
==> f-5 (block (color red) (size 10) (place hand))
<== f-13 (goal (task find))
==> f-15 (goal (task build))
FIRE 7 put-down: f-15, f-14, f-11,
<== f-14 (block (color red) (size 10) (place hand))
==> f-16 (block (color red) (size 10) (place tower))
==> f-17 (on (upper red) (lower yellow) (place tower))
<== f-15 (goal (task build))
==> f-18 (goal (task find))
FIRE 8 stop: f-18,
<== f-18 (goal (task find))
CLIPS> (reset)
<== f-0 (initial-fact)
<== f-7 (block (color blue) (size 30) (place tower))
<== f-11 (block (color yellow) (size 20) (place tower))
<== f-12 (on (upper yellow) (lower blue) (place tower))
<== f-16 (block (color red) (size 10) (place tower))
<== f-17 (on (upper red) (lower yellow) (place tower))
Обратите внимание на манипулирование лексемой цели в ходе выполнения программы. Конечное состояние представлено при очистке рабочей памяти. Блоки в башне расположились в таком порядке: красный (red) — самый верхний, он стоит на желтом (yellow), который стоит на синем (blue).
Особенность этого примера в том, что в программе реализована нисходящая стратегия рассуждений, хотя правила предполагают использование прямой цепочки анализа данных, т.е. "работают" в направлении снизу вверх. Этот эффект достигается манипулированием лексемами цели. В данном случае выражение (initial-fact) формулирует цель верхнего уровня — построить башню. Эта цель имеет две подцели — поиск блока и установка блока в башню, которые представлены лексемами
(goal (task find)
и
(goal (task build)).
Когда оказывается, что в куче больше нет блоков, главная цель достигнута. Мы делаем это в определенной степени неформально, используя (initial-fact) для упрощения программного кода, но принцип, тем не менее, соблюдается.
Иногда необходимо провести четкую границу между направленностью цепочки и направленностью действительных рассуждений. Эти две операции представляют разные уровни анализа. Очевидно, что цепочка является реализацией рассуждений, а не наоборот, но стратегия рассуждений управляет процессом построения цепочки, что в данном случае выполняется манипулированием лексемами цели. В главе 14 будет продемонстрирован гораздо более сложный пример использования этого метода в системе R1/XCON.
Это разделение высвечивает проблему, с которой очень часто приходится сталкиваться при обсуждении функционирования программ искусственного интеллекта. Большинство сложных систем, независимо от того, являются ли они программными системами, или физическими устройствами, или комбинацией тех и других, могут быть описаны на разных уровнях [Newell, 1982]. В соответствии с терминологией Ньюэлла, построение цепочки — это свойство символического уровня, где нас интересуют только левые и правые части правил, а рассуждение— это нечто, возникающее на уровне знаний, где можно провести разделение между фактами и задачами.
Ранее уже утверждалось, что большинство порождающих правил, представляющих реальный интерес с точки зрения приложений искусственного интеллекта, являются недетерминированными. При построении прямой цепочки рассуждений может оказаться, что текущие данные удовлетворяют предпосылки не одного правила, а нескольких. При построении обратной цепочки также зачастую оказывается, что одна и та же цель достигается при выполнении не единственного правила, а нескольких. Поэтому понятно, какая важная роль отводится механизму управления правилами в функционировании продукционной системы.
В главе 3 мы рассказывали о представлении пространства поиска, связанного с набором порождающих правил, с помощью И/ИЛИ-дерева. Узлы такого дерева соответствуют состояниям рабочей памяти, а дуги — правилам, которые при этом возможно применить. Древовидная схема очень хорошо согласуется с методикой обратной цепочки рассуждений, если считать, что корень дерева соответствует целевому состоянию, промежуточные узлы — подцелям, а терминальные узлы (листья) — данным.
В И/ИЛИ-дереве корень представляет исходное состояние проблемы, а листья — возможные варианты ее решения. Нетерминальные узлы могут быть двух видов: И-узлы и ИЛИ-узлы. И-узлы соответствуют применению нескольких правил, которые в совокупности формируют цель как объединение нескольких подцелей, а ИЛИ-узлы соответствуют наличию альтернативы при выборе возможных правил. Таким образом, используя терминологию главы 2, можно говорить о том, что возможные варианты применения правил формируют пространство поиска и определяют его структуру.
Программирование, основанное на правилах (логическое программирование), не снимает с повестки дня проблему комбинаторного взрыва, поскольку для любой проблемы И/ИЛИ-дерево может ветвиться по экспоненциальному закону. Но на практике стратегия разрешения конфликтов, реализованная в интерпретаторах правил, позволяет надеяться на отыскание разумного решения.
