Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Давайте сначала расширим правила языка, с тем чтобы получить возможность работать с неопределенностью. К каждому, правилу мы можем добавить "силовой модификатор", определяемый двумя неотрицательными действительными числами S и N. Вот соответствующий формат:
Имя Правила: если
Условие
то
Заключение
с
Сила(N, S).
Примеры правил рис. 14.14 можно изобразить в этой форме так:
прав1: если
не давлоткр и
открклап
то
открклрано
с
сила(0.001, 2000).
прав2: если
сепзапвд
то
давлоткр
с
сила(0.05, 400).
Для того, чтобы произвести соответствующее расширение оболочки экспертной системы (разд. 14.5), нам понадобится внести изменения в большинство процедур. Давайте сосредоточимся только на одной из них, а именно на процедуре
рассмотреть(Цель, Трасса, Ответ)
Мы предположим, что утверждение Цель не содержит переменных (как это сделано в Prospector'e и в AL/X). Это сильно упростит дело (особенно в процедуре ответпольз). Таким образом, Цель будет логической комбинацией элементарных утверждений. Например:
не давлоткр и открклап
Цепочку целей-предков и правил Трасса можно представить таким же способом, как это сделано в разд. 14.5. Однако форму представления объекта Ответ придется модифицировать для того, чтобы включить в нее вероятности. Цель и ее вероятность можно соединить в один терм следующим образом:
Цель: Вероятность
Получим такой пример объекта Ответ:
индоткр: 1 было сказано
Смысл ответа: пользователь сообщил системе, что событие индоткр произошло, и что это абсолютно достоверно.
Представление объекта Ответ требует еще одной модификации, в связи с тем, что в одно и то же событие могут вести несколько независимых связей, которые все окажут влияние на вероятность этого события — его шанс будет помножен (рис. 14.15) на все множители. В этом случае Ответ будет содержать список всех ветвей вывода заключения. Приведем пример ответа такого рода для сети рис. 14.14 (для наглядности расположенный на нескольких строках):
давлоткр: 1 было 'выведено по'
[ прав2 из сепзапвд: 1 было сказано,
прав5 из диагсеп: 1 было сказано ]
Процедура рассмотреть, выдающая ответы в такой форме, показана на рис. 14.16. Она обращается к предикату
импликация(Р0, P, Сила, Вер0, Вер)
соответствующему отношению "мягкой импликации" (см. рис. 14.15). Р0 — априорная вероятность события E, а P — его апостериорная вероятность. Сила — сила импликации, представленная как
сила(N, S)
Вер0 и Вер — соответственно априорная и апостериорная вероятности гипотезы H.
Следует заметить, что наша реализация очень проста, она обеспечивает только изменение вероятностей при распространении информации по сети вывода и иногда ведет себя недостаточно разумно. Никакого внимания не уделяется отбору для анализа наиболее важной в данный момент информации. В более сложной версии следовало бы направлять процесс поиска ответа в сторону наиболее существенных фактов. Кроме того, необходимо стремиться к тому, чтобы пользователю задавалось как можно меньше вопросов.
Наконец, несколько замечаний относительно новой версии процедуры ответпольз. Она будет проще, чем процедура рис. 14.11, так как в запросах, передаваемых пользователю, уже не будет переменных. На этот раз пользователь в качестве ответа введет некоторую вероятность (вместо "да" или "нет"). Если пользователю ничего неизвестно о событии, содержащемся в вопросе, то вероятность этого события не изменится. Пользователь может также задать вопрос "почему" и получить изображение объекта Трасса в качестве объяснения. Кроме того, следует разрешить пользователю задавать вопрос: "Какова текущая вероятность моей гипотезы?" Тогда, если он устал вводить новую информацию (или у него мало времени), он может прекратить консультационный сеанс, довольствуясь ответом системы, полученным на основании неполной информации.
% Процедура
% рассмотреть(Цель, Трасса, Ответ)
%
% находит степень правдоподобия утверждения "цель это правда".
% Оценка правдоподобия содержится в объекте Ответ. Трасса - это
% цепочка целей-предшественников и правил, которую можно
% использовать в объяснении типа "почему"
рассмотреть(Цель, Трасса, (Цель: Вер) было
'выведено по' ПравОтв):-
bagof(Прав: если Условие то Цель с Сила, Правила),
% Все правила, относящиеся к цели
априори(Цель, Вер0),
% Априорная вероятность цели
модиф(Вер0, Правила, Трасса, Вер, ПравОтв).
% Модифицировать априорные вероятности
рассмотреть(Цель1 и Цель2, Трасса,
(Цель1 и Цель2: Вер было 'выведено из'
(Ответ1 и Ответ2)):-
!,
рассмотреть(Цель1, Трасса, Ответ1),
рассмотреть(Цель2, Трасса, Ответ2),
вероятность(Ответ1, В1),
вероятность(Ответ2, В2),
мин(В1, В2, Вер).
рассмотреть(Цель1 или Цель2, Трасса,
(Цель или Цель2:Вер) было 'выведено из'
(Ответ1 и Ответ2)):-
!,
рассмотреть(Цель1, Трасса, Ответ1),
рассмотреть(Цель2, Трасса, Ответ2),
вероятность(Ответ1, В1),
вероятность(Ответ2, В2),
макс(В1, В2, Вер).
рассмотреть(не Цель, Трасса,
(не Цель:Вер) было 'выведено из' Ответ):-
!,
рассмотреть(Цель, Трасса, Ответ),
вероятность(Ответ, В),
обратить(В, Вер).
рассмотреть(Цель, Трасса, (Цель: Вер) было сказано):-
ответпольз(Цель, Трасса, Вер).
% Ответ, выведенный пользователем
% Отношение
%
% модиф(Вер0, Правила, Трасса, Вер, ПравОтв)
%
% Существует Цель с априорной вероятностью Вер0. Правила имеют
% отношение к утверждению Цель; суммарное влияние этих правил
% (точнее, их условных частей) на Вер0 приводит к тому,
% что Вер0 заменяется на апостериорную вероятность Вер;
% Трасса - список целей-предков и правил, использовавшихся
% при выводе утверждения Цель;
% ПравОтв - результаты анализа условных частей
% правил из списка Правила.
модиф(Вер0, [], Трасса, Вер0, []).
% Нет правил - нет модификации
модиф(Вер0,
[ Прав: если Усл то Цель с Сила | Правила],
Трасса, Вер, [Прав из Ответ | ПравОтв]):-
рассмотреть(Усл, [Цель по Прав | Трасса], Ответ),
% Условие из первого правила
априори(Усл, В0),
вероятность(Ответ, В),
импликация(В0, В, Сила, Вер0, Вер1),
% "Мягкая" импликация
модиф(Вер1, Правила, Трасса, Вер, ПравОтв).
Рис. 14.16. Определение степени правдоподобия гипотезы при помощи распространения информации об оценке уверенности по сети вывода.
Дата публикования: 2015-10-09; Прочитано: 234 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!