В ходе работ по созданию экспертных систем сложилась определенная технология их разработки, включающая шесть следующих этапов: идентификация, концептуализация, формализация, реализация, тестирование, опытная эксплуатация и внедрение.
В данной статье рассматривается третий этап: формализация.
На этапе формализации все ключевые понятия и отношения, выявленные на этапе концептуализации, выражаются на некотором формальном языке, предложенном (выбранном) инженером по знаниям. Здесь он определяет, подходят ли имеющиеся инструментальные средства для решения рассматриваемой проблемы или необходим выбор другого инструментария, или требуются оригинальные разработки.
Основными задачами в процессе формализации являются проблемы структуризации исходной задачи и знаний в выбранном (разработанном) формализме, а именно:
- структуризация общей задачи на связанные подзадачи;
- структуризация предметной области на основе иерархии классов;
- структуризация знаний на декларативные и процедурные;
- структуризация приложения на основе иерархии «часть/целое».
1. Структуризация общей задачи на связанные подзадачи
Модульная организация базы знаний составляет важную часть разработки прикладной системы, хотя трудно предложить единственно правильный способ разбиения системы на модули. Процесс эволюции прикладной системы может потребовать пересмотра и ее модульной структуры. В большинстве современных средств разработки сложных экспертных систем и в особенности динамических предусматривается поддержка разбиения базы знаний на модули.
Важность модульной организации экспертной системы определяется тем, что разбиение приложения на модули существенно ускоряет разработку (так как независимые группы разработчиков могут одновременно разрабатывать различные модули), снижает затраты на сопровождение и поддержку, упрощает повторное использование модулей базы знаний в последующих разработках. С другой стороны, разбиение прикладной экспертной системы на модули несколько повышает накладные расходы на загрузку и сборку прикладной системы, например: восстановление после сбоев и перезапуск системы.
2. Структуризация предметной области на основе иерархии классов
Необходимость ускорения темпов разработки и модификации экспертной системы всегда являлась актуальной задачей прикладной инженерии знаний. Применение объектно-ориентированного подхода в современных экспертных системах естественным образом реализует возможность декомпозиции задачи на совокупность подзадач. Знания при этом подходе организованы в классы. Каждый класс определяется специфическим набором атрибутов. Классы организуются в иерархию классов. Каждый класс в иерархии наследует атрибуты и ограничения своего родительского класса. Обычно производный класс определяет дополнительные специфические атрибуты и (или) ограничения.
В большинстве существующих экспертных систем пользователю разрешено производить новый класс только от одного родительского. Такой подход хотя и проще в реализации, требует дополнительных усилий во время формирования предметно-ориентированной иерархии классов, так как в этом случае иерархия наследования должна представляться в виде дерева. Добавление в иерархию наследования нового класса может потребовать существенных концептуальных изменений на различных уровнях. Избежать подобных непроизводительных затрат позволяет концепция множественного наследования, в рамках которой новый класс может наследовать свойства у двух и более классов родителей. Однако следует отметить, что к использованию механизмов множественного наследования следует подходить аккуратно, так как получающаяся в этом случае сетевая схема иерархии наследования затрудняет понимание структуры базы знаний.
Основными механизмами структурирования проблемно-ориентированной иерархии классов являются два противоположно направленных, но взаимосвязанных процесса: обобщение и специализация (конкретизация).
Процесс обобщения заключается в создании родительских классов для обобщения свойств, присущих более чем одному классу объектов в приложении. Например, так как автомобили, самолеты и лодки характеризуются скоростью передвижения, в приложении, работающем с этими объектами, целесообразно ввести новый класс транспортных средств, обладающий этим свойством. Самолеты, автомобили и лодки будут производными классами от транспортного средства и унаследуют от него атрибут «скорость передвижения». Кроме атрибутов, характеризующих наблюдаемые свойства объектов, целесообразно провести обобщение и их поведенческих аспектов.
Процесс специализации заключается во введении новых классов для описания объектов, отличающихся значениями характеристик, их набором и поведением от уже описанных. Рассмотрим далее приведенный выше пример. Если разработчику потребуется описать новый тип лодок (например, моторные лодки), он должен определить его как подкласс существующего класса «лодки». Новый класс наследует все свойства, взаимосвязи и поведение своего родителя. Для его описания необходимо указать только его особенности.
3. Структуризация знаний на декларативные и процедурные
По форме описания знания подразделяются на:
- декларативные;
- процедурные.
Декларативные знания – это знания, которые записаны в памяти интеллектуальной системы так, что они непосредственно доступны для использования после обращения к соответствующему полю памяти. Обычно декларативные знания используются для представления информации о свойствах и фактах предметной области. По форме представления декларативные знания противопоставляются процедурным знаниям.
Процедурные знания – это знания, хранящиеся в памяти интеллектуальной системы в виде описания процедур, с помощью которых их можно получить. Обычно процедурные знания используются для представления информации о способах решения задач в проблемной области, а также различные инструкции, методики и т. п.
4. Структуризация приложения на основе иерархии «часть/целое»
Модульный принцип создания приложения предоставляет разработчику различные возможности разбиения приложения на подсистемы, легче поддающиеся сопровождению и модификации. Разбиение приложения на модули упрощает процесс тестирования за счет использования групповой работы над тестируемой системой. Модульность также обеспечивает базовые возможности для повторного использования фрагментов системы.