Рассматриваемый в этой главе командный интерпретатор экспертной системы может быть во многом усовершенствован. В связи с этим следует сделать несколько критических замечаний и предложений по его доработке.
Рассматриваемая программа представляет собой прямолинейную реализацию основных идей, и в ней не уделено достаточно внимания вопросам эффективности. Для более эффективной реализации потребовались бы более сложные структуры данных, индексированная или иерархическая организация правил и т.д.
Применяемая процедура explore восприимчива к образованию циклов, возникающих, если в правилах базы знаний одна и та же цель упоминается "циклически" (и как условие, и как заключение). Этот недостаток можно легко исправить, введя проверку на циклы в процедуре explore; для этого достаточно проверить, не является ли текущая цель экземпляром другой цели, которая уже входит в состав трассировки Trace.
В качестве объяснения последовательности рассуждений отображается все дерево доказательства. Б случае большого дерева доказательства было бы лучше отобразить только верхнюю часть дерева, а затем дать возможность пользователю "переходить" по остальной части дерева в соответствии с его пожеланиями. Тогда пользователь сможет выборочно изучать дерево доказательства с помощью примерно таких команд: "Перейти вниз на один уровень", "Перейти вниз на два уровня",.,., "Подняться вверх", "Достаточно".
В этом командном интерпретаторе при формировании объяснений последовательности рассуждений (в ответ на вопрос "как") и назначения затребованной информации (а ответ на вопрос "для чего") правила упоминаются только под их именами, а сами правила не отображаются явно. Во время сеанса получения экспертной консультации пользователю должна быть предоставлена возможность применять режим явного вывода правил.
Практика показала, что задача формулировки таких запросов к пользователю, чтобы диалог выглядел естественным, является довольно сложной. Применяемые в данной главе решения до определенной степени оправданы, но в некоторых обстоятельствах могут обнаруживаться другие проблемы, например, как показано ниже.
Is it true: susan flies? 1 сьтавн может летать?
.no.
Is it true: susan isa good flyer? % Сьюзен хорошо летает?
Часть II. Применение языка Prolog в области искусственного интеллекта
Ответ на последний вопрос заведомо должен быть отрицательным, поскольку Сьюзен вообще не может летать! Еще один подобный пример приведен ниже. Any (more) solution to; Somebody flies?
Somebody = bird.
Is it true: albatross flies? % Это можно выяснить с помощью логического вывода
Чтобы устранить подобные недостатки, необходимо ввести дополнительные отношения между понятиями, с которыми оперирует экспертная система. Как правило, эти новые отношения задают иерархические связи между объектами и показывают, как происходит наследование свойств. Это можно осуществить с использованием представлений в виде семантических сетей или фреймов (см. главу 15).
Еще одно усовершенствование процедуры получения ответов на запросы к пользователю может предусматривать применение оптимальной стратегии выдачи запросов. Задача оптимизации может состоять в максимальном уменьшении количества запросов, на которые должен ответить пользователь, прежде чем будет сформулировано заключение. Безусловно, возможно наличие альтернативных стратегий, и то, какая из них в конечном итоге окажется оптимальной, зависит от ответов пользователя. Решение о том, какой альтернативной стратегии следует придерживаться, может быть основано на некоторых априорных вероятностях, позволяющих дать вероятностную оценку "стоимости" каждой альтернативы. Кроме того, может потребоваться обновлять эти оценки после каждого ответа пользователя.
Иногда рассматривается еще один критерий оптимизации: длина вывода некоторого заключения. Дело в том, что чем короче вывод, тем проще объяснение последовательности рассуждений. Кроме того, сложность объяснений можно уменьшить, выборочно подходя к обработке отдельных тривиальных правил, не представляющих интереса для пользователя. Такие правила не нужно помещать в трассировки Trace и ответы Answer, формируемые процедурой explore. Б этом случае может потребоваться, чтобы в базе знаний было указано, какие правила "подлежат трассировке" и поэтому должны появляться в объяснениях, а какие — нет.
Управление интеллектуальной экспертной системой должно быть организовано с учетом законов теории вероятностей, чтобы эта система могла выбирать наиболее вероятные в данный момент гипотезы среди многих конкурентов. Экспертная система должна запрашивать у пользователя такую информацию, которая позволяет легче проводить различия среди наиболее вероятных гипотез.
Экспертные системы, рассматриваемые в данной главе, относятся к классификационному или "аналитическому" типу. Антиподом этих систем являются системы "синтетического" типа, перед которыми стоит задача создать что-то новое. В последнем случае результатом становится формирование плана действий по выполнению некоторого задания, например, составление плана действий робота, разработка конфигурации компьютера, которая полностью соответствует заданной спецификации, или поиск форсированной комбинации в шахматах. Приведенный в этой главе пример системной диагностики неисправностей может быть дополнен естественным образом, чтобы он охватывал и некоторые действия. Например, если диагностику неисправностей нельзя провести из-за того, что некоторые приборы выключены, то система может предложить "Включите светильник 3 и сообщите о результатах". Эта задача может быть связана с проблемой оптимального планирований, т.е. максимально возможного уменьшения количества действий, необходимых для формирования некоторого заключения.
Проект
Изучите критические замечания и возможные дополнения к рассматриваемому командному интерпретатору экспертной системы, приведенные выше, затем спроектируйте и реализуйте соответствующие усовершенствования.
Глава 16. Командный интерпретатор экспертной системы
Резюме
Командный интерпретатор, разработанный и запрограммированный в этой главе, обладает следующими характеристиками.
• Интерпретирует правила вывода.
• Предоставляет объяснения последовательности рассуждений (в ответ на вопрос "как") и назначения затребованной информации (в ответ на вопрос "для чего").
• Выводит запросы к пользователю для получения необходимой информации.