С точки зрения решения основной задачи экспертных систем: кодирования знаний о предметной области и их использования для решения проблем в этой области наиболее существен опыт исследователей искусственного интеллекта в решении задач представления знаний и распознавания образов.
Объем знаний, необходимых для любого значительного приложения экспертных систем, обычно очень велик и поэтому для выборки, обновления и поддержания таких больших объемов знаний экспертным системам необходимы хорошие модели представления знаний. Кроме того, удачная модель представления может значительно облегчить построение логического вывода. в экспертных системах наиболее часто используется представление знаний в виде продукционных правил, фреймов. Используются также семантические сети, предложения Пролога и комбинированные представления. Каждая из этих моделей имеет свои преимущества и недостатки, например, семантическая сеть хранит связанную информацию вместе, но в ней затруднено построение выводов из этой информации. С другой стороны. Пролог имеет готовый механизм для построения логических выводов, но не хранит связанную информацию вместе. Большие базы знаний хранятся обычно на дисках и только необходимая в данный момент часть - в оперативной памяти. Создание эффективных баз знаний для хранения правил, фреймов и т.д. является актуальной задачей.
В целом представление знаний является наиболее важной проблемой при построении экспертных систем и более подробно она будет рассмотрена ниже.
Традиционно процесс распознавания разделяется на два этапа: обучение и собственно распознавание. Первый этап индуктивный, второй - дедуктивный.
На первом этапе обрабатываются данные многочисленных наблюдений над отдельными представителями исследуемого класса объектов и на основе полученных результатов строится некоторое решающее правило.
Второй этап предполагает применение описанного привила для распознавания интересующих нас, но непосредственно не измеряемых свойств других объектов данного класса.
На этапе обучения выявляются некоторые закономерности, присущие исследуемому классу, и совокупность этих закономерностей служит далее моделью предметной области, которая в формализованном виде составляет основу базы знаний, на основе модели решаются задачи распознавания свойств конкретных объектов, очевидна связь обучения и решения задач с описанными ранее режимами работы ЭС. Описанная схема распознавания в той или иной мере характерна для многих задач, решаемых экспертными системами.
Экспертные системы ориентированы на решение широкого круга задач в неформализованных областях, решение задачи распознавания образов в таких областях предполагает составление описаний объектов и правил, определяющих по этим описаниям принадлежность объектов к тем или иным классам. Процедуры применения таких правил к каким-либо объектам в экспертных системах подчиняются различным стратегиям. Наиболее часто применяются стратегии прямого или обратного вывода. Используются также комбинированные стратегии, стратегии на основе так называемой доски объявлений. Прямой вывод - это вывод, направляемый целями (правилами) к данным. Обратный вывод - это вывод, направляемый данными к целям. В сложных экспертных системах (например, понимания речи) ни один из источников знаний системы не может гарантировать единственности и правильности получаемых им результатов, для того чтобы ошибка одного источника знания не влияла роковым образом на работу других, источники знания должны рассматриваться как независимые. Однако, так как все источники знания решают общую задачу, от них требуется взаимодействие. Чтобы удовлетворить эти требования, был предложен механизм доски объявлений.
На доске объявлений записываются промежуточные гипотезы и результаты работы ЭС в виде плана, заявок, решений.
План описывает способ, которым ЭС будет искать решение задачи. Текущий план включает такие элементы, как цели, состояние задач.
Заявки содержат информацию о потенциальных действиях, ожидающих выполнения, которые обычно соответствуют правилам из базы знаний.
Решения представляют гипотезы и решения, выдвинутые в качестве возможных кандидатов, вместе с зависимостями, связывающими одно решение с другим.
Интерпретатор базы знаний определяет, какую заявку следует обработать следующей, и выполняет заявку путем применения соответствующего правила из базы знаний. В общем случае интерпретатор выявляет выполнимость условий применения правила, связывает переменные в этих условиях на доске объявлений, а затем осуществляет те изменения на доске, которые предписываются этим правилом. Например, план может рекомендовать сначала обработать все данные некоторого уровня, затем сформулировать перспективные гипотезы, уточняя и развивая каждую из них до тех пор, пока не останется одна, после чего все время будет уделено этой единственной гипотезе до получения окончательного решения.
Таким образом, экспертная система - это компьютерная программа с некоторыми отличиями в структуре и характеристиках по сравнению с традиционными программами.
Наличие базы знаний и относительно универсального интерпретатора делает принципиально возможным создание новых экспертных систем для новых приложений путем разработки новой базы знаний без изменения интерпретатора. Процесс разработки экспертной системы, таким образом, можно свести (при наличии готового интерпретатора) к процессу разработки базы знаний. Такая технология получила название технологии "пустых оболочек", когда однажды разработанная экспертная система используется в качестве оболочки для новых знаний, как правило, различные приложения существенно различаются, и поэтому для ее реализации необходимо иметь большой набор оболочек с различными моделями представления знаний и различными механизмами логического вывода.
Для разработки ЭС используются те же языки и системы программирования, что и для обычных программ, но наличие таких специфических для ИИ структурных частей, как логический вывод, естественно-языковый интерфейс, делает предпочтительным использование для разработки ЭС таких языков ИИ, как Липс, Пролог и специальных средств поддержки разработки.
Особенно перспективной для экспертных систем оказалась реализация языка Пролог. Основная идея логического программирования состоит в отделении логики программы от управления ходом вычислений, что делает процесс создания программы более прозрачным.
Целью поддержки разработки является облегчение творческого и интеллектуального пути от идеи к ее описанию в доступной ЭВМ форме, специфика средств, языков программирования и пользовательских интерфейсов оказывают существенное влияние на технологию создания ЭС: разработчику приходятся тратить больше времени на перевод идеи на язык ЭВМ, чем на доводку самой идеи. Поддержка разработки должна освободить пользователя от как можно большего числа деталей и позволить ему сосредоточиться на идее.
Эволюция средств разработки ЭС может быть разбита на четыре этапа (рис. 1.4). Для этой эволюции характерны две тенденции: увеличение степени охвата этапов жизненного цикла ЭС; движение от использования дискретных средств ко все более интегрированным целостным системам.
Рис. 1.4. Этапы развития средств разработки ЭС
Существуют различные средства поддержки разработки программ. Трансляторы языков программирования и отладчики для контроля за состоянием программ во время выполнения были в числе первых таких средств. Отладчики наряду с экранными редакторами и в настоящее время остаются наиболее часто используемыми средствами. К другим популярным средствам относятся программы 'красивой' печати, поддержка управления конфигурацией, программа перекрестных программных ссылок и трассировщик выполнения.
Перечисленные средства являются дискретными и независимыми. Программист мог работать только с одним средством. Например, во время отладки надо было воспользоваться отладчиком для определения ошибки, затем окончить отладку, чтобы вызвать редактор для исправления ошибки. После этого надо было компилировать программу и вызывать отладчик для дальнейшей отладки (цикл редактирования - компилирования - прогона). Программист вынужден был вводить дополнительные команды и терять время на запуск и окончание работы системных средств. Прерывание процесса отладки на редактирование, повторную компиляцию и повторный запуск программы серьезно затруднял процесс обдумывания задачи программистом.
Следующим шагом в развитии средств разработки был интегрированный набор средств, названный 'инструментальным ящиком', каждое средство проектировалось с учетом остальных, поэтому система обеспечивала возможность обращения к другим средствам.