Экспертные системы

Для разработки ЭС используются те же языки и системы программирова­ния, что и для обычных программ, но наличие таких специфических для ИИ структурных частей, как логический вывод, естественно-языковый интер­фейс, делает предпочтительным использование для разработки ЭС таких язы­ков ИИ, как Липс, Пролог и специальных средств поддержки разработки.

Особенно перспективной для экспертных систем оказалась реализация языка Пролог. Основная идея логического программирования состоит в отде­лении логики программы от управления ходом вычислений, что делает про­цесс создания программы более прозрачным.

Целью поддержки разработки является облегчение творческого и интел­лектуального пути от идеи к ее описанию в доступной ЭВМ форме, специфика средств, языков программирования и пользовательских интерфейсов оказыва­ют существенное влияние на технологию создания ЭС: разработчику прихо­дятся тратить больше времени на перевод идеи на язык ЭВМ, чем на доводку самой идеи. Поддержка разработки должна освободить пользователя от как можно большего числа деталей и позволить ему сосредоточиться на идее.

Эволюция средств разработки ЭС может быть разбита на четыре этапа (рис. 1.4). Для этой эволюции характерны две тенденции: увеличение степени ох­вата этапов жизненного цикла ЭС; движение от использования дискретных средств ко все более интегрированным целостным системам.

Рис. 1.4. Этапы развития средств разработки ЭС

Существуют различные средства поддержки разработки программ. Транс­ляторы языков программирования и отладчики для контроля за состоянием программ во время выполнения были в числе первых таких средств. Отладчи­ки наряду с экранными редакторами и в настоящее время остаются наиболее часто используемыми средствами. К другим популярным средствам относятся программы 'красивой' печати, поддержка управления конфигурацией, прог­рамма перекрестных программных ссылок и трассировщик выполнения.

Перечисленные средства являются дискретными и независимыми. Прог­раммист мог работать только с одним средством. Например, во время отладки надо было воспользоваться отладчиком для определения ошибки, затем окончить отладку, чтобы вызвать редактор для исправления ошибки. После этого надо было компилировать программу и вызывать отладчик для дальней­шей отладки (цикл редактирования - компилирования - прогона). Програм­мист вынужден был вводить дополнительные команды и терять время на за­пуск и окончание работы системных средств. Прерывание процесса отладки на редактирование, повторную компиляцию и повторный запуск программы серьезно затруднял процесс обдумывания задачи программистом.

Следующим шагом в развитии средств разработки был интегрированный набор средств, названный 'инструментальным ящиком', каждое средство про­ектировалось с учетом остальных, поэтому система обеспечивала возмож­ность обращения к другим средствам.

Например, такие системы, как Turbo-Prolog, Interlisp-D, позволяют программисту запустить программу сразу после ввода ее в систему. В ответ на ошибку системой вызывается отладчик, чтобы дать возможность програм­мисту изучить причину сбоя. Программист может затем отредактировать программу и продолжить ее выполнение. этот подход сокращает время на ис­правление мелких ошибок в программе для экспериментального программиро­вания (метод проб и ошибок), обычно применяемого специалистами по ис­кусственному интеллекту.

Проектирование больших программных средств является сложной пробле­мой. разбиение жизненного цикла на несколько этапов (анализ требований, спецификации, проектирование, реализация, тестирование и отладка, работа и сопровождение) направлено на уменьшение сложности проектирования путем изолирования и упорядочения важных задач в процессе разработки.

Interlisp-D, Turbo Prolog поддерживают только этапы реализации и отладки. Исследования показывают, что наибольший вклад в стоимость жиз­ненного цикла дает этап сопровождения. Не менее важное значение имеют средства этапа требований и спецификаций, потому что любую ошибку в спе­цификациях очень трудно и дорого исправлять на позднейших этапах жизнен­ного цикла. Таким образом, анализ жизненного цикла важен для любой части программного обеспечения, которая предназначена для использования конеч­ными пользователями на заметном интервале времени.

Успех методов искусственного интеллекта в различных областях моти­вировал их применение в разработке программного обеспечения. Показатель­ными системами являются проект 'Помощник программиста' в Массачусетском технологическом институте, проект "Пси' в Станфордском университете, в этих проектах осуществляется попытка моделировать знания, которыми поль­зуется программист для понимания, проектирования, реализации и сопровож­дения программы. Эти знания могут быть использованы экспертными система­ми для частичной автоматизации процесса разработки программ.

В заключение отметим некоторые особенности этапов жизненного цикла экспертных систем.

Тестирование экспертных систем отличается от тестирования обычных систем.

Во-первых, экспертные системы часто обладают недетерминированным поведением, потому что стратегия разрешения конфликтов может зависеть от параметров времени выполнения. Это делает поведение невоспроизводимым, и, следовательно, более трудным для отладки.

Во-вторых, для правил в отличие от процедур в традиционном прог­раммном обеспечении нет никаких точных отношений ввода-вывода. это затрудняет применение для тестирования анализа ввода-вывода.

В-третьих, число способов, которыми могут быть активизированы пра­вила, слишком велико, чтобы пользоваться средствами покрытия ветвей и путей.

Макетирование является единственным эффективным способом тестирова­ния экспертной системы.

Сопровождение и модификация - важная часть разработки экспертных систем. Правила базы знаний эволюционируют с накоплением опыта их приме­нения, и, следовательно, модифицируются чаще, чем алгоритмы. Правила мо­гут также зависеть от времени, поэтому их достоверность может также из­меняться со временем.

С разработкой и использованием экспертных систем тесно связаны та­кие понятия, как знания и базы знаний. Особая роль знаний в экспертных системах обусловлено, прежде всего, областью их применения, экспертные системы предназначены для решения трудноформализуемых задач или задач, не имеющих алгоритмического решения в узкоспециализированных предметных областях деятельности человека, экспертные системы позволяют аккумулиро­вать, воспроизводить и применять знания, которые сами по себе обладают огромной ценностью.

Источниками знаний для конкретной ЭС могут быть учебники, спавочники, материалы конкретных исследований в проблемной области и т.п. сами разработчики могут иметь теоретические знания и практический опыт в данной области. Но классическим источником знаний является эксперт- профессионал в данной предметной области. Таким образом приобретение знаний требует учёта человеческого фактора. Для успешного решения этой проблемы необходимы совместные усилия математиков, программистов, психологов.


Страница: