![]() |
![]() |
||
![]() |
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/ 'Библиотека по информатике' |