Оболочка экспертной системы PEXPERT
В этом разделе мы рассмотрим некоторые механизмы, представляющие законченную оболочку экспертной системы – PEXPERT. Эта система содержит, в сжатом виде, черты известной экспертной системы PROSPECTOR, разработанной для консультаций в области геологии для проверки участков на наличие определенных минеральных отложений. Программа находится в файле PEXPERT.PRO в каталоге PEXPERT. Сопровождают оболочку три примера баз знаний: JOURNEY.KBS, WEATHER.KBS и ANIMALS.KBS. JOURNEY.KBS определяет экспертную систему, которая позволяет выбрать наилучший вид транспорта для путешествия: автомобиль, поезд или самолет. WEATHER.KBS прогнозирует погоду на завтра, основываясь на информации о погоде сегодня и вчера. ANIMALS.KBS выглядит как расширенная версия идентификации видов животных.
База знаний, использующая оболочку PEXPERT, должна иметь следующую структуру (рис. 1).
Рис. 1. Структура базы знаний
Это сетевая структура, использующая правила трех видов. Правила верхнего уровня – это гипотезы, которые предстоит оценить. Гипотеза описывается правилом Hypothesis rulesи включает в себя условия, которым она должна удовлетворять. Перед консультацией пользователю будет предложено выбрать гипотезу или, по крайней мере, допустить выбор по умолчанию.
Информация от пользователя поступает через Data rules(правила данных). Эти правила задают пользователю вопросы, ответы на которые поступают на более высокий уровень промежуточных правил – Intermediate rules. Эти правила могут использовать данные, полученные из других правил: данных, промежуточных и даже гипотез. Программа допускает иерархию правил Intermediate rules.
Система может оценивать гипотезы, для которых имеется неполная или недостаточная информация. При этом имеет место наличие одновременно нескольких конкурирующих гипотез. В конечном счете выделяется гипотеза, которая позволяет сделать соответствующий вывод. Это будет гипотеза, имеющая наибольший так называемый коэффициент определенности (certainty). Коэффициент определенности часто применяют вместо понятия вероятности, что позволяет облегчить расчеты вероятности по формулам, а также принять некоторые соглашения в условиях неполной или неточной информации [2]. В PEXPERT принято следующее соглашение: значению определенности, равному –5, соответствует вероятность 0; определенности, равной 0, – вероятность 0.5 и определенности +5 соответствует вероятность 1.
Рассмотрим работу оболочки на примере с базой знаний JOURNEY.KBS. Консультация с экспертной системой позволяет определить наиболее подходящий вид транспорта для деловой поездки, при этом учитывается следующая информация: расстояние (в милях); желательная средняя скорость путешествия (в милях в час); сколько вы готовы платить за милю (в центах) и желаете ли вы сами управлять транспортным средством. Выдвигаются три гипотезы: воспользоваться поездом (train), самолетом (plane) или ехать автомобилем (car); соответственно в базе данных имеются три следующих правила-гипотезы:
hypothesis train
display "Use a train"
bayes rail_factors inc 1.1 dec 1
drive_yourself inc 1.1 dec 1
rail_speed inc 1.1 dec 0.1
rail_dist inc 2 dec 1
rail_cost inc 5 dec 1
hypothesis plane
display "Use a plane"
bayes plane_factors inc 1 dec 0.001
plane_speed inc 5 dec 1
plane_cost inc 5 dec 0.5
plane_dist inc 10 dec 0.9
hypothesis car
display "Use a car"
bayes car_factors inc 1 dec 0.9
car_speed inc 5 dec 0.9
car_dist inc 2 dec 0.8
car_cost inc 3 dec 0.9
После того, как будут оценены гипотезы, заключение для тех из них, которые достигнут заданного уровня определенности, будет показано на экране, где текст сообщения представлен текстовой константой параметра display, содержащегося в теле гипотезы, например “Use a car” (“Воспользуйтесь автомобилем”).
BAYES рассматривает все вероятности, связанные с правилом, как входные, и ассоциирует новую вероятность с гипотезой car. Эта функция так названа, потому что она извлечена из байесовской теоремы элементарной теории вероятностей. Новая вероятность, определенная как BAYES, требует не только входных вероятностей правил car_speed, car_dist, car_cost, но также весовых факторов inc и dec, присоединенных к каждой входной вероятности. Например, в
car_speed inc 5 dec 0.9
inc 5 есть весовой фактор, который специфицирует, как важен вклад вероятности car_speed по отношению к увеличению вероятности правила car. С другой стороны, dec 0.9 – весовой фактор, показывающий, как важен вклад вероятности car_speed по отношению к уменьшению вероятности правила car. При применении эти весовые факторы умножаются на вероятности, на которые они воздействуют. Таким образом, нормально значение incдолжно бытьбольше или равно 1, значение decмежду 0 и 1. Заметим, что высшим значениям incсоответствуют низшие значения dec. Фактические значения incи decдолжны быть определены на практике методом проб и ошибок.
Рассмотрим одну из ветвей базы знаний, а именно, касающуюся гипотезы rail.Как видно из записи правила этой гипотезы, для ее оценки следует оценить следующие промежуточные правила: rail_factors, drive_yourself,rail_speed, rail_dist и rail_cost:
intermediate rail_factors
display "use of a train is appropriate"
and drive_yourself
rail_speed
rail_dist
rail_cost
intermediate rail_speed
display "Desired journey speed permits rail use"
map speed ( 60 1 ) ( 150 0 )
context drive_yourself – 5 0
intermediate rail_dist
display "Is the use of a train sensible"
map distance ( 50 0 ) ( 200 1 ) ( 350 0 )
context drive_yourself – 5 0
intermediate rail_cost
display "Desired cost per mile is possible using a train"
map cost ( 10 0 ) ( 20 1 )
context drive_yourself – 5 0
Промежуточное правило rail_factors свидетельствует, что при его оценке учитывается наличие конъюнкции (параметр and) четырех других правил: пожелание управлять самому транспортным средством (drive_yourself), скорость (rail_speed), расстояние (rail_dist) и удельная стоимость (rail_cost).
Первый член конъюнкции, правило drive_yourself,относится к виду data-правил. Это так называемое yesno-правило, на которое пользователь вводит ответ, выбирая его из меню:
data drive_yourself
display "Do you want to drive yourself?"
yesno
Текстовая константа, содержащаяся в этом правиле, содержит вопрос. Во время выполнения программы сообщение
Do you want to drive yourself? (Вы хотите сами водить?)
будет высвечено на экране вместе с пользовательским меню:
Yes
No
Don’t know
Выбранному здесь пункту меню Yes соответствует вероятность 1, No – вероятность 0 и Don’t know – вероятность 0,5.
Промежуточное правило rail_speed имеет параметр map, который, во-первых, запускает правило speed, и во-вторых, содержит список пар значение/вероятность: скорости 60 соответствует вероятность 1, скорости 150 – вероятность 0. Значения вероятности на промежутке от 60 до 150 изменяются линейно в пределах от 1 до 0. Кроме того, это правило (и, соответственно, гипотеза) будет оцениваться только в том случае, если фактор drive_yourself получит низкую определенность, от –5 до 0, что естественно для путешествия по железной дороге. Последнее учитывается параметром context.
Правило speed тоже является data-правилом. Оно задаст вопрос: “Какова требуемая средняя скорость путешествия?” Кроме того, правило содержит информацию, что введенное значение должно находиться в диапазоне от 1 до 1300:
data speed
display "What is the required average speed for the journey (mph)?"
value 1 1300
Другие data-правила для этой гипотезы запрашивают о расстоянии и плате за милю:
data distance
display "What is the distance of the journey in miles?"
value 0.1 30000
data cost
display "How much are you prepared to pay per mile?"
help "This system assumes the costs:
plane: 30 cents/mile
train: 25 cents/mile
car: 20 cents/mile"
value 1 50
Последнее data-правило содержит также пункт help, информация которого появляется на экране при работе этого правила.