Главная > Интеллектуальные системы > Системы искусственного интеллекта
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

7.9. Конкретный пример машины вывода экспертной системы

Ограничимся случаем, когда все факты из базы фактов имеют вид

где — две константы (произвольные слова), независимые друг от друга и связанные в базе фактов отношением например “является”, “принадлежит к”, “равно”, “содержит”, “следует” и т.д ., которое определяется экспертом.

Рис. 7.16. Базовый цикл эксперной системы.

Другими словами факт соответствует обычному логическому предложению, которому можно присвоить значение “истина” или “ложь”, например “Анемона является двусемядольным цветком” или “Организм имеет грамположительный тип”.

Аналогично каждое правило из базы правил имеет вид триплета (слово, отношение, слово)

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

Основным циклом является цикл, приведенный на рис. 7.16. В данном случае возможны две стратегии:

• Движение по цепочке правил вперед. Начинают от известных фактов, данных экспертом, и выполняют каждое

правило, посылки которого удовлетворяются, добавляя полученные факты. Так продолжают до насыщения системы (отсутствия новых выводов).

• Движение по цепочке правил назад. Начинают с поиска ответа на вопрос эксперта, предполагая, что число возможных ответов ограниченно. Целью является получение первого из них.

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

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

На рис. 7.17 приведена рекурсивная функция ПРОВЕРИТЬ, вызываемая из главной программы в виде:

Результат где является искомой целью, БФ — начальная база фактов, БП — база правил.

Синтаксис правила имеет вид

Функция ПРОВЕРИТЬ отыскивает значение истинности продвижением по цепочке правил назад. Результат является булевой величиной или зависящей от истинности величины Эта функция вызывает саму себя для проверки совокупности целей.

Функции ПРОВЕРИТЬ и ДОКАЗАТЬ работают с объектам трех типов: ПРЕДЛОЖЕНИЕ, ПРЕДЛОЖЕНИЕ-МНОЖЕСТВО и ПРАВИЛО. Каждый объект типа ПРАВИЛО обладает двумя свойствами: ПОСЫЛКИ () и СЛЕДСТВИЯ (), которые принадлежат к типу ПРЕДЛОЖЕНИЕ-МНОЖЕСТВО.

Некоторые предложения отнесены к множеству ТРЕБУЕМЫЕ и могут напрямую запрашиваться экспертом. Функция

ВОПРОС (р) задает вопрос и возвращает значения “истина” или “ложь” в зависимости от ответа эксперта. Истинность предложения можно доказать тремя способами:

Рис. 7.17. (см. скан) Пример из области логики предложений.

• прямой проверкой БФ;

• рекурсивным выводом с помощью П:

• прямым вопросом для из множества ТРЕБУЕМЫЕ. Функция ПРОВЕРИТЬ представляется в виде последовательности, в которой обозначения принадлежности и примитивы высокого уровня (Meyer, 1978) имеют ясное и краткое представление.

Ниже приведен пример программы для персональной ЭВМ экспертной системы нулевого уровня со следующим набором

правил (предложение a R b здесь выражено словами “на растении имеется цветок” и сокращено до “цветок”).

Если начальной базой фактов является: (корневище, цветок, односемядольный, зерно} и цель гриб, то функция ПРОВЕРИТЬ выведет вопрос: таллофиты? (случай 3, система должна спросить то, что она не может вывести). Если эксперт дает положительный ответ, функция возвращает значение “истина”.

Если цель ландыш, функция ПРОВЕРИТЬ вызывает функцию ДОКАЗАТЬ для проверки посылок единственного правила е), которое позволяет сделать этот вывод. К функции ПРОВЕРИТЬ обращаются для проверки первой подцели — односемядольные, которую можно осуществить, только используя правило с). Снова вступает в действие функция ДОКАЗАТЬ над данными Первая цель достигается с помощью правила а), две посылки которого уже присутствуют в базе фактов (первый успех), в которую добавляется понятие явнобрачный. Затем, поскольку -семядольный” известно, добавляется также моносемядольный. Углубляя рекурсию, приходим ко второй посылке правила е), которая известна,, и система выдает окончательный ответ “истина”.

Отметим, что окончательное определение способа использования дерева возможных предложений происходит с помощью операции “принадлежит целям”. Если цель управляется как стек, действует правило “сначала в глубину” (см., например, версию для микроЭВМ, содержащую около 400 строк на Бейсике, в журнале BYTE, сентябрь 1981 или FARRENY, 1985).

Эффективность функции ПРОВЕРИТЬ можно повысить с помощью преобразования двух параметров — цели и базы фактов — в глобальные переменные с явным управлением из программы.

И наконец, для того чтобы не повторять бесполезные задания, необходимо различать недостоверные и неизвестные факты. В частности, можно проверять негативные условия в правилах, находя недостоверные факты среди известных. Кроме того, нетрудно на нулевом уровне продвигаться по цепочке правил вперед. Тогда по. мере продвижения по дереву поиска правила выполняются в зависимости от получаемых выводов до насыщения базы фактов (до невозможности получения новых выводов).

<< Предыдущий параграф Следующий параграф >>
Оглавление