темы могут участвовать следующие специалисты: инженеры по знаниям, эксперты, программисты, руководитель проекта, заказчики (конечные пользователи). Роль инженера по знаниям – извлечение профессиональных знаний из экспертов и проектирование базы знаний экспертной системы и ее архитектуры. Программист необходим при разработке специализированного для данной экспертной системы программного обеспечения, когда подходящего стандартного (например, оболочки для создания экспертных систем) не существует или его возможностей недостаточно и требуются дополнительные модули. В процессе эксплуатации могут принимать участие конечные пользователи, эксперты, администратор.
Идентификация проблемы. На этом этапе разработчики должны ответить на ряд вопросов, определяющих особенности решаемых экспертами, а следовательно, будущей экспертной системой, задач. Эти особенности определят и особенности архитектуры экспертной системы, формируемой на последующих этапах. К этим вопросам относятся следующие:
–какой класс задач должна решать ЭС;
–как эти задачи могут быть охарактеризованы или определены;
–какие можно выделить подзадачи;
–какие исходные данные должны использоваться для решения;
–какие понятия и взаимосвязи между ними используются при решении задачи экспертами;
–какой вид имеет решение и какие концепции используются в
нем;
–какие аспекты опытаэксперта существенны для решения задачи;
–какова природа и объем знаний, необходимых для решения за-
дачи;
–какие препятствия встречаются при решении задач;
–как эти помехи могут влиять на решение задачи.
Определение необходимых ресурсов – временных, людских,
материальных.
Определение целей. В качестве целей, преследуемых при создании экспертных систем, могут быть: повышение скорости принятия решения, повышение качества решений, тиражирование опыта экспертов и т.п.
Концептуализация. На этом этапе разработчики должны ответить на следующие вопросы:
какие типы данных нужно использовать;
56
что из данных задано, а что должно быть выведено;
имеют ли подзадачи наименования;
имеют ли стратегии наименования;
имеются ли ясные частичные гипотезы, которые широко используются.
Формализация. На этом этапе разработчики имеют дело с описанием (формализацией) пространства гипотез, моделей процессов и характеристик данных. Чтобы понять структуру пространства гипотез, необходимо формализовать концепции и определить, как они связываются между собой, образуя гипотезы. При этом надо ответить, например, на следующие вопросы:
- стоит ли описывать концепции как структурированные объекты или рассматривать их как простые понятия;
- являются ли причинно-следственные связи между концепциями важными и следует ли представлять их в явном виде;
- конечно или бесконечно пространство гипотез; - состоит ли пространство гипотез из заранее определенных клас-
сов или должно генерироваться из концепций по некоторой процедуре;
- полезно или нет рассматривать гипотезы в иерархическом виде; - присутствует ли неопределенность в каком-либо виде в конеч-
ных или промежуточных гипотезах; - следует ли использовать разные уровни абстракции?
Для понимания природы данных необходимо выяснить:
- являются ли данные редкими и недостаточными или обильными
иизбыточными;
-имеется ли неопределенность в данных;
-зависит ли логическая интерпретация данных от порядка их появления во времени;
-какова стоимость приобретения данных;
-как данные приобретаются или извлекаются, какие вопросы надо задать, чтобы получить данные;
-как некоторые характеристики данных можно получить на основе обработки непрерывного потока данных: текста на естественном языке, рисунков, графиков;
-являются ли данные надежными, точными, однозначными или они ненадежны, неточны, неоднозначны (размыты);
-являются ли данные непротиворечивыми и понятными для решения поставленных задач?
57
Результатом этого этапа является выбор инструментальных средств для реализации экспертной системы и формализация базы знаний в терминах методов представления, поддерживаемых в них.
Демонстрационный вариант предназначен для демонстрации возможностей будущей экспертной системы, основных архитектурных решений, пользовательского интерфейса, для уточнения требований к пользовательскому интерфейсу и функциям, выполняемым экспертной системой. Содержит демонстрационную, далеко не полную базу знаний.
Исследовательский вариант предназначен для исследования направлений дальнейшего совершенствования экспертной системы и для пополнения базы знаний. Может использоваться для решения реальных задач в ограниченных пределах.
Промышленный вариант предназначен для использования, как правило, в организации, где был разработан, в нем возможны ограничения, условности, специализация, свойственные для данной организации.
Коммерческий вариант предназначен для широкого распространения, обладает гибкостью, удобством в эксплуатации, адаптируемостью к конкретным задачам и требованиям пользователя.
Жизненный цикл экспертной системы состоит из этапов разработки и сопровождения. На этапе разработки создается программное обеспечение и база знаний экспертной системы, на этапе сопровождения происходит исправление выявленных ошибок и пополнение базы знаний без участия разработчиков (если последнее допускается архитектурой экспертной системы).
Применение экспертной системы с базой знаний, не изменяемой в процессе эксплуатации, возможно при достаточно стабильной в течение длительного времени предметной области, в которой решаются задачи. Примерами таких предметных областей являются разделы математического анализа, описание правил диагностики различных заболеваний.
Примерами областей применения, требующих гибкости со стороны создания и пополнения базы знаний, являются планирование производства, проектирование и диагностика в области электроники, вычислительной техники и машиностроения.
58
1.5. Инструментальные средства проектирования интеллектуальных систем
1.5.1. Специализированный язык LISP
Одним из самых популярных языков программирования в системах ИИ является язык LISP. Этот язык был создан в 60-х годах американским ученым Дж. Маккарти и его учениками. На сегодняшний день существует около 20 диалектов этого языка. Наиболее извест-
ными являются INTERLISP, FRANZLISP, QLISP, COMMONLISP. На языке LISP написаны многие экспертные системы (MYCIN, INTERNIST, KEE и др.), системы естественно-языкового общения (MARGIE, SHRDLU, ДИЛОС и др.), интеллектуальные операционные системы (FLEX).
Популярность языка LISP в первую очередь объясняется тем, что он с помощью довольно простых конструкций позволяет писать сложные и изящные системы обработки символьной информации. К сожалению, почти все существующие LISP-системы имеют низкую вычислительную эффективность. Именно это не дает возможность языку LISP выйти за рамки «академических» экспериментальных систем. Однако бурное повышение производительности современных компьютеров, а также разработка LISP-машин типа С/330, SYMBOLICS и т.д. вселяют оптимизм в отношении будущего языка.
Язык LISP имеет очень простой синтаксис, поскольку возможны только две его конструкции: атом и список.
Атом – элементарная конструкция языка LISP, характеризуемая своим именем и значением. В некоторых LISP-системах с атомом связывается также определенный список свойств. Примерами атомов могут служить: А, В, А1, ВРЕМЯ ВЫЛЕТА, ВЫПУСК, АИ-93 и т.д.
Список – конструкция LISP, состоящая из множества атомов и подсписков. В LISP принята скобочная нотация описания списков. Примеры списков: (А1, А2,…,АК), (А, В) (ВРЕМЯ ВЫЛЕТА, 15_40) (ВЫПУСК АИ-93).
Существенной особенностью языка LISP является то, что здесь «данные» и «программы» внешне ничем не отличаются друг от друга. Это дает возможность писать на LISP «программы», манипулирующие не только данными, но и «программами». Именно данное свойст-
59
во позволяет LISP стать изящным средством программирования систем ИИ. Понятия «данные» и «программа» в LISP не используются, их заменяют такие понятия, как «выражение» и «функция».
LISP – функциональный язык. Все процедуры обработки информации оформляются в виде функций. Благодаря стандартному набору системных функций, LISP может быть «расширен» за счет пользовательских функций. Системные функции делятся на арифметические, списковые функции, функции ввода-вывода, предикаты и др.
LISP – это рекурсивный язык, т.е. обеспечивает возможность определения функций с помощью самих себя.
Рекурсивность LISP удобна при решении очень популярной в искусственном интеллекте задачи «поиска по дереву», которая является довольно обобщенной и охватывает широкий класс конкретных задач, начиная от шахматных и кончая задачами «принятия решений» или управления сложными объектами. В каждом конкретном случае вер- шины-дуги будут иметь свою семантику. Например, при решении шахматной задачи вершинам могут соответствовать возможные позиции, а дугам – те или иные ходы, приводящие к этим позициям. Последовательность ходов, обязательно приводящих к «выигранной» позиции, и будет решением данной задачи. Древовидная структура очень часто имеет также и сценарий диалога человека с ЭВМ. В этом случае с вершинами соотносятся состояния (шаги) диалога, а с дугами – возможные переходы из одного состояния в другое.
1.5.2. Фрейм-ориентированный язык FRL
Одним из известных языков представления знаний является язык
FRL (Frame Representation Language), относящийся к классу фрейм-
ориентированных. Основная единица знания в таких языках – фрейм, представляющий собой информационную модель (или описание) некоторой стереотипной ситуации. Фрейм в FRL – это совокупность поименованных, ассоциативных списков, содержащая до пяти уровней подструктур. Подструктурами фреймов могут быть слоты, аспекты, данные, комментарии и сообщения. Основной структурной единицей во фрейме являются слоты, отражающие взаимосвязи между понятиями предметной области. Слот характеризуется своим именем и значением. Имена слотов назначаются проектировщиками БЗ. Однако FRL имеет также и зарезервированные имена слотов: АКО, INSTANSE, CLAS SIFICATON. В качестве значения слотов могут вы-
60