НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

6.5. Системы, объясняющие логику своей работы

Желательно, чтобы пользователь имел возможность узнать у системы, каким образом она приходит к найденному заключению или как она объясняет тот или иной шаг в цепочке вывода, приводящий к этому заключению. Почему важно иметь такую возможность? Во-первых, если такая возможность есть, пользователь будет получать дополнительную информацию, которую он сможет использовать для принятия собственного решения, возможно, и не согласовывая его с выводами, сделанными экспертной системой. Во-вторых, это позволит точно указать причины, приводящие к принятию системой неправильных решений. И, наконец, в-третьих, это поможет пользователям использовать протоколы работы системы для углубления своих знаний. Внесение изменений в отношение result, а также введение новых отношений в предыдущую программу (6.8) дают возможность пользователям в случае необходимости получить краткое описание процесса вывода (см. программу 6.9), реализуемого системой.

Программа 6.9

X result Y if

game and

Z points x and

у score z and

SUM (Z у X) and

SUM (x z Y) and

((PP home X Y away)) ? and

choose choose if

(either explain or X result Y) explain if

(explain result) is-told and

X points Y and

Z score x and

SUM(XZy)and

SUM(Yxz)and

((P The home side has X bonus points, the away side has Y points and I

add these points to the scoring probabilities to obtain у z)) ? X points Y if

Z isall (Z: h plus Z) and

x isall (x: a plus x) and

Z tot X and

x tot Y

Естественно, можно предусмотреть выдачу более детальной информации о процессе логического вывода. Так, в нашем примере можно в принципе проследить, как с помощью отношения plus производится начисление очков. Но автору кажется, что тратить время на объяснение слишком большого числа мелких деталей нецелесообразно. Перейдем к описанию новых отношений. Отношение points, используемое для подсчета общего числа очков, получаемого с помощью правил отношения plus, вводится, во-первых, для того, чтобы упростить отношение result, и, во-вторых, для того, чтобы обеспечить данными другое новое отношение - explain. Отношение choose осуществляет ту же функцию, что и оператор ветвления языка ассемблер или конструкция" "if ...then ... else" языка высокого уровня. По мнению автора, ветвление в этой версии Пролога реализовано достаточно просто и элегантно, по крайней мере не так, как в Бейсике, где для этой цели используются следующие операторы:

IF ... THEN GOTO ...

IF ... THEN GOSUB ...

Отношение choose позволяет пользователю выбрать один из трех вариантов: либо получить объяснение поведения системы и продолжить работу, либо, не получив объяснения, перейти к анализу очередных данных, либо, наконец, ответив на оба вопроса системы по, выйти из системы. Если продолжить проведение аналогий с языками высокого уровня, то можно сказать, что подобные действия реализуются там с помощью операторов вызова процедур. Так, в данном случае result как бы вызывает chose, которое в свою очередь либо вызывает explain и затем result, либо вызывает только result, либо просто завершает работу. Достоинство Пролога заключается в том, что приведенная выше конструкция очень близка к предложению обычного естественного языка: "выберите либо объяснение поведения, либо переход к анализу новых данных, либо выход из системы". Следующий протокол демонстрирует работу усовершенствованной системы:

all (: result x)

[определить все (: результат-прогноза х)]

home form (X) and away form (Y) ? ans (8 ∅∅ 21 4) (1 1 6 5 17)

[команда хозяев (X) и команда гостей (Y) ? ответ (8 ∅∅ 21 4)

(1 1 6 5 17)]

home 58 11 away

[хозяева 58 11 гости]

explain result ? yes

[надо ли объяснять, как получен результат ? да]

The home side has 11 bonus points, the away side has ∅ points

[команда хозяев имеет 11 премиальных очков, команда гостей - ∅]

and I add these points to the scoring probabilities 47 and 11 to

obtain (58 11)

[к ним прибавляются очки, полученные в результате учета среднего голевого баланса, умноженного на 10, в результате получаем (58 11)]

home form (X) and away form (Y) ? ans (4 1 2 14 9) (∅ 1 6 8 21)

[команда хозяев (X) и команда гостей (Y) ? ответ (4 1 2 14 9)

(∅ 1 6 8 21)]

home 54 24 away

[хозяева 54 24 гости]

explain result ? no

[надо ли объяснять, как получен результат ? нет]

home form (X) and away form (Y) ? ans (1 2 4 4 9) (1 3 3 6 11)

[команда хозяев (X) и команда гостей (Y) ? ответ (1 2 4 4 9)

(13 3 6 11)]

home 22 22 away

[хозяева 22 22 гости]

explain result ? no

[надо ли объяснять, как получен результат ? нет]

home form (X) and away form (Y) ? no

[команда хозяев (X) и команда гостей (Y) ? нет]

No (more) answers

[Ответов (больше) нет]

Отметим, что следует использовать запрос

all (: result x)

а не запрос

all (x: result x)

Упражнение 6.9

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

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь