Логическое программирование на Пролог. Часть 1

February 1, 2007

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

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

Общие слова об прологе



Основная сфера применения пролога – создание экспертных систем. Обычно экспертную систему делят на три составляющие:
 1)База знаний.
 2)Механизм вывода.
 3)Интерфейс с пользователем.


База знаний содержит информацию о конкретной предметной области в

виде удобном для ее использования в решении задач из данной области.

Механизм вывода позволяет извлекать из базы знаний нужную информацию.

Интерфейс пользователя обеспечивает бесперебойный обмен информацией между пользователем и системой.

База знаний – в процессе создания экспертной системы знания в определенной области человеческой деятельности должны быть определенным образом представлены в форме удобной для обработки компьютером. База знаний создается инженерами знаний в результате совместной работы с коллективом специалистов в некоторой области.

Наиболее сложным этапом в разработке экспертной системы является подбор экспертов и извлечение знаний из экспертов. Здесь нам нужны усилия разработчиков инструментальных систем для создания ЭС, инженеры по знаниям, администрация, эксперты и представители заказчика. В принципе, глупо считать, что все знания сосредоточены у одного эксперта или у группы экспертов. Скорее информация разбросана по печатной документации: технической и специальной литературе, или хранится где-то в электронном виде, а эксперт лучше других ориентируется, где именно и как эта информация может быть использована. Разработчик базы знаний обычно получает знания на основе опроса эксперта в ходе общения. Это общение состоит из опросов и интервью и обычно продолжается несколько месяцев. Интересно заметить, что эксперты имеют тенденцию к обобщению своих рассуждений в достаточно широких терминах; чем более квалифицирован эксперт, тем менее он обращает внимание на детали, которые для неспециалиста оказываются непонятными. Очень часто эксперт не в состоянии сформулировать, как он принимает решение, поскольку оно подсказывается ему интуицией, а чаще эксперт просто не осознает, что принимаемое интуитивно решение подготовлено сложной и длинной цепью предварительных рассуждений. В действительности имеет место следующий парадоксальный факт: "чем более компетентным становится эксперт по предметной области, тем менее он в состоянии объяснить знания, которые использует при решении проблемы". Так, что помните: информация, даваемая экспертом, должна тщательно анализироваться и опрос эксперта должен строиться по предварительно продуманному плану.

Для реализации последнего пункта необходимо сначала вникнуть и ознакомиться с проблемой, узнать как можно больше о предметной области. Предварительное знакомство должно отвечать следующему принципу: "четко определите и охарактеризуйте важнейшие стороны проблемы".

Результаты собеседований с экспертом должны быть запротоколированы. Желательно иметь подробный протокол решения типовой задачи экспертом. Кроме протоколов, полезно понаблюдать за работой эксперта со стороны. Особенно важно определить, как эксперт решает наиболее трудную часть задачи. Как правило, эта часть задачи является проблемно-зависимой. Поэтому следует руководствоваться еще одним принципом: "Отделяйте проблемно-зависимые знания от универсальных".

При выборе эксперта рекомендуется соблюдать следующие принципы:
 1) желательно, чтобы эксперт уже имел опыт создания ЭС;
 2) эксперт должен быть заинтересованным лицом;
 3) эксперт должен быть готов к длительному общению с инженером по знаниям;
 4) эксперт не должен вникать в технические детали реализации системы;
 5) эксперт должен быть уверен, что система не вытеснит его как специалиста.
В принципе, роль эксперта может выполнить специалист, имеющий опыт работы в своей области, т.е. владеющий множеством специфических знаний в объеме, необходимом для решения задач. Важно учесть следующий важнейший принцип: "Поскольку знания - ключевой компонент ЭС, то роль эксперта имеет первостепенную значимость". Этот принцип постулирует главную роль эксперта при создании ЭС.

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

Удобно описывать пространство поиска в форме графа (дерева) поиска. Однако подробное описание возможно, если:
 1) множество состояний задачи дискретно и конечно;
 2) для каждого состояния задачи известно множество альтернативных переходов в последующие состояния.
В случае, если знания имеют неполный и вероятностный характер, строится диаграмма переходов с конечными состояниями, образующими полное множество возможных исходов задачи.

На этапе выполнения Подбор экспертов и извлечение знаний из экспертов

Подбор экспертов и извлечение знаний из экспертов представляет одно из "узких мест" процесса разработки ЭС, в который вовлечено достаточно много людей. Прежде всего, это разработчики инструментальных систем для создания ЭС, инженеры по знанияи, администрация, эксперты и представители заказчика. В принципе, неверно считать, что все знания сосредоточены у одного эксперта или у группы экспертов. Скорее информация разбросана по документации, технической и специальной литературе, устройствам накопления информации, а эксперт лучше других ориентируется, где именно и как эта информация может быть использована. Разработчик базы знаний обычно получает знания на основе опроса эксперта путем прямого общения. Это общение состоит из опросов и интервью и обычно продолжается несколько месяцев. Интересно заметить, что эксперты имеют тенденцию к обобщению своих рассуждений в достаточно широких терминах; чем более квалифицирован эксперт, тем менее он обращает внимание на детали, которые для неспециалиста оказываются непонятными. Очень часто эксперт не в состоянии сформулировать, как он принимает решение, поскольку оно подсказывается ему интуицией, а чаще эксперт просто не осознает, что принимаемое интуитивно решение подготовлено сложной и длинной цепью предварительных рассуждений. В действительности имеет место следующий пародоксальный факт: "чем более компетентным становится эксперт по предметной области, тем менее он в состоянии объяснить знания, которые использует при решении проблемы".

С учетом сказанного можно сделать следующие выводы:
 1) Информация, даваемая экспертом, должна тщательно анализироваться.
 2) Опрос эксперта должен строиться по предварительно продуманному плану.
Для реализации последнего пункта необходимо сначала вникнуть и ознакомиться с проблемой, узнать как можно больше о предметной области. Предварительное знакомство должно отвечать следующему принципу: "четко определите и охарактеризуйте важнейшие стороны проблемы".

Результаты собеседований с экспертом должны быть запротоколированы. Желательно иметь подробный протокол решения типовой задачи экспертом. Кроме протоколов, полезно понаблюдать за работой эксперта со стороны. Особенно важно определить, как эксперт решает наиболее трудную часть задачи. Как правило, эта часть задачи является проблемно-зависимой. Поэтому следует руководствоваться еще одним принципом: "Отделяйте проблемно-зависимые знания от универсальных".

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

На этапе выполнения ЭС следует придерживаться следующих принципов:
 1) на первых порах не беспокойтесь об эффективности ЭС в смысле быстродействия и требований памяти;
 2) подберите и разрабатывайте средства редактирования и проверки базы знаний; 
(помните, как на второй лабораторной работе я дал вам задание написать специальные предикаты для контроля заполнения базы знаний).

(для тех кто не помнит и вообще не знает - там делалась задача заполнения базы фактов

о родословной то ли Шекспира то ли какого то еще древнего чувака,

и естественно что ошибок была масса чисто наборных, неаккуратностей и прочая)
 3) не ожидайте, чтобы база знаний была "полной";
 4) предусматривайте возможность наращивания системы в будущем;
 5) ориентируйте систему на недостоверные знания.
Очевидно, что реализация этапа “выполнения” может быть существенно более эффективной при использовании инструментальных оболочковых систем.

Если сильно поискать то можно найти бесплатные высокоуровневые оболочки для создания экспертной системы. Такие универсальные оболочки содержат общие прототипы типовых рассуждений, удобный редактор базы знаний, модуль который строит выводы и разумеется интерфейс пользователя.