Чтение онлайн

ЖАНРЫ

Программирование на языке Пролог для искусственного интеллекта

Братко Иван

Шрифт:

шанс = вер / (1 – вер)

вер = шанс / (1 + шанс)

Пусть между E и H существует отношение "мягкой импликации", тогда, в соответствии с рис. 14.15,

шанс(H|E) = M * шанс(H)

где множитель M определяется априорной и апостериорной вероятностями с учетом силы (N, S) связи между E и H.

Предполагается, что правила Prospector'a (рис. 14.15) для вычисления вероятностей логических комбинаций событий (использующие min и max) правильно моделируют поведение человека при оценке субъективной уверенности в таких составных событиях. 

14.6.3. Принципы реализации

Давайте сначала расширим правила языка, с тем чтобы получить возможность работать с неопределенностью. К каждому, правилу мы можем добавить "силовой модификатор", определяемый двумя неотрицательными действительными числами 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) ) :-

Поделиться с друзьями: