§23
Экспертные системы
Эксперт — это человек, который обладает глубокими теоретическими знаниями и практическим опытом работы в некоторой области. Например, врач-эксперт хорошо ставит диагноз и лечит потому, что имеет медицинское образование и большой опыт лечения пациентов. Он не только знает факты, но и понимает их взаимосвязь, может объяснить причины явлений, сделать прогноз, найти решение в конфликтной ситуации.
Эксперт может ответить на вопросы, на которые нельзя найти ответы в поисковых системах Интернета. Более того, эксперт часто может предложить решение плохо поставленных задач, например при нехватке, неточности или противоречивости исходных данных. Для этого он использует свой опыт и интуицию, которые сложно представить в виде формального алгоритма. В то же время нельзя гарантировать правильность решения, принятого в таких сложных случаях, хотя иногда эксперт может примерно оценить вероятность своей версии. Например, можно получить ответ: «С вероятностью 80% вы поступите в вуз».
Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта при выработке рекомендаций для принятия решений в сложной ситуации.
Разработка экспертных систем — это одно из направлений развития искусственного интеллекта, потому что такие программы пытаются моделировать мышление человека. Результат работы экспертной системы — это не числа, а конкретный совет (рекомендация) в словесной форме.
Экспертные системы применяются в медицине, электронике, геологии, для решения военных и управленческих задач. Первая экспертная система Dendral была создана в Стэнфордском университете в конце 1960-х гг. для определения строения органических молекул по их химическим формулам и свойствам.
В составе экспертной системы выделяют три основные части:
- базу знаний;
- блок получения решения («решатель»);
- интерфейс с пользователем.
База знаний отличается от базы данных тем, что в ней хранятся не только факты, но и правила, по которым из фактов делаются выводы.
Факты — это утверждения, которые считаются истинными, например:
- у окуня есть жабры;
- Иван — отец Марьи;
- Волга впадает в Каспийское море.
Правила обычно формулируются в виде «если..., то», например:
- если х — животное и х дышит жабрами, то х — рыба;
- если х — отец у и у — отец z, то x — дед z;
- если х состоит из атомов углерода и обладает высокой
твёрдостью, то x — алмаз.
Таким образом, в отличие от данных, знания представляют собой общие связи предметов, понятий и явления; часто их формулировка содержит переменные. В логике утверждение с переменными называется предикатом.
В разработке экспертной системы участвуют эксперты и специально обученный специалист — инженер по знаниям, задача которого — представить знания экспертов в такой форме, чтобы они могли быть записаны в базу знаний. Важно, чтобы эту базу знаний можно было постепенно пополнять — добавлять новые правила вывода независимо от предыдущих.
Второй блок экспертной системы — «решатель» — это программа, которая моделирует рассуждения эксперта, используя предоставленные ей исходные данные и информацию из базы знаний. В результате работы она не только выдаёт заключение, но и может подробно показать, как оно было получено (какие правила были использованы). Решатель — это универсальная программа, которая может работать с любой базой знаний понятного ей формата.
Как правило, пользователь работает с экспертной системой в режиме диалога, отвечая на её вопросы. Рассмотрим простейшую экспертную систему для определения класса животных. Предположим, что в базу знаний внесены следующие правила:
- если у животного есть перья, то это птица;
- если животное дышит жабрами, то это рыба;
- если животное кормит детёнышей молоком, то это млекопитающее;
- если животное — млекопитающее и ест мясо, то это хищник.
Диалог пользователя с экспертной системой может быть, на
пример, таким (ответы пользователя выделены курсивом):
– Это животное кормит детей молоком?
– Нет.
– Это животное имеет перья?
– Нет.
– Это животное дышит жабрами?
– Да.
– Это рыба.
Для того чтобы определить последовательность вопросов, эксперт и инженер по знаниям строят дерево решений, например такое (рис. 3.52).
Конечно, эта экспертная система неполна и в некоторых случаях класс животного определить с её помощью не получится (см. знаки вопроса на схеме).
Простую экспертную систему можно написать на любом языке программирования, в котором есть операторы ввода, вывода и ветвления. Однако для профессиональных разработок в этой области чаще всего применяют специальные языки, например язык логического программирования Пролог. Программа на Прологе — это набор фактов и правил вывода. Алгоритм решения задачи писать не нужно, решающая система сама находит ответы на вопросы, заданные в определённой форме.
Итак, экспертная система обладает следующими свойствами:
- применяется в определённой достаточно узкой области;
- использует базу знаний, которая может расширяться;
- может применяться при неточных и противоречивых данных;
- выдаёт ответ в виде рекомендации (совета по принятию решения);
- может показать, как получено решение (какие правила применялись).
В последние годы прогресс в области экспертных систем не очень заметен, что связано с их серьёзными недостатками:
- опыт и интуицию экспертов очень сложно формализовать, свести к чётким правилам;
- отладка и проверка экспертных систем очень сложна, таким образом, трудно гарантировать правильность выводов (это особенно важно в военной области);
- экспертные системы не способны самообучаться, для их поддержки необходима постоянная работа инженера по знаниям.
Вопросы и задания
- Что такое экспертная система? Из каких элементов она состоит?
- Чем отличается база знаний от базы данных?
- Перечислите особенности экспертных систем. В каких областях они применяются?
- Что входит в задачи инженера по знаниям?
- Почему развитие экспертных систем в последние годы идёт не очень активно?
Подготовьте сообщение
а) «Что такое база знаний?»
б) «Что делает инженер по знаниям?»
в) «Применение экспертных систем»
г) «Язык программирования Пролог»
Задачи
1. Придумайте какую-нибудь задачу, в которой нужно принять решение. Постройте для неё базу знаний в форме «если..., то...» и дерево решений. Это может быть, например, прогноз погоды, отдых на выходных, поездка за рубеж и т. п.
*2. Постройте для вашей задачи экспертную систему на каком-нибудь языке программирования.
Практические работы
Работа № 13 «Работа с готовой таблицей»
Работа № 14 «Создание однотабличной базы данных»
Работа № 15 «Создание запросов»
Работа № 16 «Создание формы»
Работа № 17 «Оформление отчёта»
Работа № 18 «Язык SQL»
Работа № 19 «Построение таблиц в реляционной БД»
Работа № 20 «Создание формы с подчинённой»
Работа № 21 «Создание запроса к реляционной БД»
Работа № 22 «Создание отчёта с группировкой»
Работа № 23 «Нереляционные БД»
Работа № 24 «Простая экспертная система»
ЭОР к главе 3 на сайте ФЦИОР (http://fctor.edu.ru)
- Проектирование объектов данных
- Ввод данных в БД
- Проектирование экранных форм
- Запросы на выборку данных
- Проектирование отчётов
Самое важное в главе 3
- Информационная система (ИС) в широком смысле — это аппаратные и программные средства, предназначенные для того, чтобы своевременно обеспечить пользователей нужной информацией.
- База данных (БД) — это специальным образом организованная совокупность данных о некоторой предметной области, хранящаяся во внешней памяти компьютера.
- Система управления базой данных (СУБД) — это программные средства, которые позволяют выполнять все необходимые операции с базой данных.
- База данных и система управления базой данных (СУБД) неразрывно связаны: свойства базы данных определяются СУБД, которая ей управляет, и наоборот.
- Пользователь чаще всего работает с СУБД через прикладную программу. Некоторые программы, например, OpenOffice.org Base и MS Access, выполняют функции СУБД и прикладной программы.
- Большинство современных баз данных строятся на основе реляционной модели данных и могут быть представлены в виде набора таблиц. Строки в таблицах называют записями, а столбцы — полями.
- Для управления реляционными базами данных используется язык запросов SQL. С его помощью можно выбирать нужные данные, а также добавлять, изменять и удалять записи таблицы.
- Для ускорения поиска в базах данных используют индексы — дополнительные таблицы, в которых записи отсортированы по какому-то критерию. Благодаря предварительной сортировке, в индексах можно использовать двоичный поиск, который работает значительно быстрее линейного.
- Чтобы не допустить потери данных при сбоях во время выполнения сложных операций, используют транзакции, каждая из которых должна быть либо выполнена полностью, либо не выполнена вообще.
- Для обработки очень больших массивов данных применяют распределённые БД, в которых данные расположены на многих серверах в сети Интернет. Многие из этих баз данных являются документоориентированными (базы данных «ключ — значение»).