Формирование объяснений

Для формирования объяснений в системах на основе правил предусмотрены неко­торые стандартные способы. Два широко применяемых типа объяснений получили название объяснения последовательности рассуждений и объяснения предпосылок, при которых система отвечает на вопросы "как" ("How?") и "для чего" ("Why?"). Вначале рассмотрим объяснение последовательности рассуждений. После того как система вырабатывает некоторый ответ, пользователь может задать вопрос о том, как был получен этот ответ. Типичное объяснение заключается в том, что пользователю предоставляется трассировка процесса формирования данного ответа. Предположим, что система только что обнаружила, что утечка в кухне и пользователь задает вопрос "How?". Объяснение может формироваться в соответствии с приведенным ниже при­мером.

Поскольку:

1) неисправность находится в кухне, а вывод об этом сделан на основании того, что в гостиной есть водаг а в ванной сухо; и

2) вода не поступает снаружи, и это следует из того факта, что окно закрыто.

Такое объяснение по сути представляет собой дерево доказательства того, что окончательный вывод следует из правил и фактов в базе знаний. Допустим, что знак "<=" определен как инфиксный оператор. В таком случае можно представить дерево доказательства высказывания Р в одной из описанных ниже форм, в зависимости от конкретной ситуации.

1. Если Р — факт, то дерево доказательства — Р.

2. Если факт Р получен с использованием правила

if Cond then P

то дерево доказательства является следующим:

Р <= ProofCond

где ProofCond — дерево доказательства условия Cond.

3. Допустим, что Р1 и Р2 — высказывания, деревьями доказательства которых
являются Proofl и Proof2. Если истинно выражение ? is Fl and P2, то де­
рево доказательства представляет собой конъюнкцию деревьев доказательства
Proofl и Proof2. Если истинно выражение Р is ?1 or P2, то дерево доказа­
тельства является дизъюнкцией деревьев доказательства Proof 1 и Proof2.

Задача формирования деревьев доказательства в программе на языке Prolog реша­ется просто и может быть осуществлена путем модификации предиката i st rue (см. листинг 15.4), в соответствии с тремя описанными выше ситуациями. Такой мо­дифицированный предикат istrue приведен в листинге 15.6. Обратите внимание на то, что деревья доказательства такого рода по существу аналогичны деревьям реше­ния для задач, представленных с помощью графов AND/OR. Процедуру представле­ния деревьев доказательства в некотором удобном для пользователя формате можно реализовать в программе по аналогии с процедурой отображения деревьев решения AND/OR. А процедура, предусматривающая более сложное форматирование вывода деревьев доказательства, входит в состав программы командного интерпретатора, приведенной в главе 16.

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



Часть II. Применение языка Prolog в области искусственного интеллекта


теля информацию в тот момент, когда ей потребуется данная информация. Получив соответствующий запрос, пользователь может спросить "Why?", активизировав тем самым подготовку объяснения, для чего нужно данное конкретное действие. Такой характер взаимодействия и способ формирования объяснений в ответ на вопросы "для чего" реализованы в программе, которая входит состав командного интерпрета­тора, описанного s главе 16.