1. Введение в экспертные системы
Экспертные системы (ЭС) - это прикладные системы ИИ, в которых база знаний
представляет собой формализованные эмпирические знания высококвалифицированных
специалистов (экспертов) в какой либо узкой предметной области. Экспертные
системы предназначены для замены при решении задач экспертов в силу их
недостаточного количества, недостаточной оперативности в решении задачи или в
опасных (вредных) для них условиях.
Обычно экспертные системы рассматриваются с точки зрения их применения в двух
аспектах: для решения каких задач они могут быть использованы и в какой области
деятельности. Эти два аспекта накладывают свой отпечаток на архитектуру
разрабатываемой экспертной системы.
2. Структура экспертной системы

Рис. 1. Структура экспертной системы
ЭС состоит из следующих компонент:
- База знаний предназначена для хранения экспертных знаний о
предметной области, используемых при решении задач экспертной системой. База
знаний состоит из набора фреймов и правил-продукций.
- Фреймы используются в базе знаний для описания объектов, событий,
ситуаций, прочих понятий и взаимосвязей между ними. Фрейм - это структура
данных, состоящая из слотов (полей).
- Правила используются в базе знаний для описания отношений между
объектами, событиями, ситуациями и прочими понятиями. На основе отношений,
задаваемых в правилах, выполняется логический вывод. В условиях и
заключениях правил присутствуют ссылки на фреймы и их слоты.
- База данных предназначена для временного хранения фактов или
гипотез, являющихся промежуточными решениями или результатом общения
системы с внешней средой, в качестве которой обычно выступает человек, ведущий
диалог с экспертной системой.
- Машина логического вывода - механизм рассуждений, оперирующий
знаниями и данными с целью получения новых данных из знаний и других данных,
имеющихся в рабочей памяти. Для этого обычно используется программно
реализованный механизм дедуктивного логического вывода (какая- либо его
разновидность) или механизм поиска решения в сети фреймов или семантической
сети.
Машина логического вывода может реализовывать рассуждения в виде:
- дедуктивного вывода (прямого, обратного, смешанного);
- нечеткого вывода;
- вероятностного вывода;
- унификации (подобно тому, как это реализовано в Прологе);
- поиска решения с разбиением на последовательность подзадач;
- поиска решения с использованием стратегии разбиения пространства поиска
с учетом уровней абстрагирования решения или понятий, с ними связанных;
- монотонного или немонотонного рассуждения,
- рассуждений с использованием механизма аргументации;
- ассоциативного поиска с использованием нейронных сетей;
- вывода с использованием механизма лингвистической переменной.
- Подсистема общения служит для ведения диалога с пользователем, в
ходе которого ЭС запрашивает у пользователя необходимые факты для процесса
рассуждения, а также, дающая возможность пользователю в какой-то степени
контролировать и корректировать ход рассуждений экспертной системы.
- Подсистема объяснений необходима для того, чтобы дать возможность
пользователю контролировать ход рассуждений и, может быть, учиться у
экспертной системы. Если нет этой подсистемы, экспертная система выглядит для
пользователя как "вещь в себе", решениям которой можно либо верить, либо нет.
Нормальный пользователь выбирает последнее, и такая ЭС не имеет перспектив для
использования.
- Подсистема приобретения знаний служит для корректировки и
пополнения базы знаний. В простейшем случае это - интеллектуальный редактор
базы знаний, в более сложных экспертных системах - средства для извлечения
знаний из баз данных, неструктурированного текста, графической информации и
т.д.
3. Простой пример базы знаний
Очень простой фрагмент примера написанного на
CLIPS программы
для распознавания животного по наличию некоторых элементов.
; Распознавание животных
; Для запуска:
; CLIPS>(clear)
; CLIPS>(load "zoo.clp")
; CLIPS>(reset)
; CLIPS>(run)
; начальные факты
(deffacts knowledge-base
(has-hair stretch)
(chews-cud stretch)
(has-long-legs stretch)
(has-long-neck stretch)
(has-tawny-color stretch)
(has-dark-spots stretch))
; правила
(defrule MAIN::z1
(has-hair ?x)
=>
(assert (is-a-mammal ?x)))
(defrule MAIN::z2
(gives-milk ?x)
=>
(assert (is-a-mammal ?x)))
(defrule MAIN::z3
(has-feathers ?x)
=>
(assert (is-a-bird ?x)))
... [ПРОПУЩЕНО] ...
(defrule MAIN::z15
(is-a-bird ?x)
(is-a-good-flyer ?x)
=>
(assert (is-an-albatros ?x))
(assert (animal-is ?x albatros)))
; последнее правило для старта программы
(defrule MAIN::showit
(animal-is ?x ?y)
=>
(printout t ?x " is " ?y crlf))
|