Построение экспертной системы
Построение ЭС с помощью GURU заключается в написании набора правил, содержащего знания эксперта для аргументированного решения конкретного типа задачи.
Приступая к разработке прикладной ЭС (приложения), инженер знаний должен определить алгоритмически формализуемые и слабоформализуемые части концептуальной модели проблемной области. Первые реализуются процедурно, вторые – в виде набора правил. Так, для проблемной области выбора поставщика часть дерева целей концептуальной модели, относящая к определению возможности контракта (см. рис. 3.1, дужкой помечена вершина типа «И», а отсутствием дужки – «ИЛИ»), может быть реализована как информационно-поисковая задача на интегрированной БД (см. приложение 1, листинги 1, 2). Для изделий производственной программы в цикле производится подбор спецификаций, причем фактор уверенности соответствия спецификаций задается как поле этого файла. Для каждой спецификаций выполняется проверка ограничений на сроки, фонды, объемы, которые задаются как условия отбора записей о поставщиках из соответствующего файла. Далее осуществляется обращение к соответствующему набору правил, оценивающему надежность выбранного поставщика, фактор уверенности которого затем умножается по правилу произведения на фактор уверенности целесообразности выбора поставщика, и результирующий фактор оценивается на заданный предел. Поскольку оценка результата выполняется вне набора правил, она программируется инженером знаний непосредственно.
Набор правил (собственно БЗ) – как совокупность независимых правил, описывающий оценку надежности, относится к слабоформализуемому знанию из-за нечеткости сведений о показателях объекта и нечеткости самих правил. Кроме того, для определения надежности поставщика заранее неизвестно, какие будут использоваться правила, и совсем не обязательно, чтобы были проверены все ветви дерева целей.
Рис. 3.1. Дерево целей
Для создания и изменения набора правил существует специальный модуль – администратор наборов правил. Синтаксически описание набора правил характеризуется множеством предложений, относящихся к правилам, а также содержит разделы начальных определений (целевой переменной, кодов доступа и т.д.), кроме того, правило можно прокомментировать и объяснить.
Описание правил представляет собой определение посылки (часть IF) как достаточно сложного логического выражения и заключения (часть THEN).
Посылка правила в GURU может по желанию пользователя быть простой или расширенной. Посылка может включать в себя поля БД, ячейки электронных таблиц, статистические переменные, элементы массива и обычные переменные. Над посылкой можно выполнять произвольные сложные числовые вычисления и все встроенные функции системы.
Заключением правила в GURU может быть любая последовательность любых команд GURU, которые поддерживаются любым из компонентов системы. Кроме посылки и заключения правилу можно назначить приоритет и стоимость.
Для аргументов посылки правила и заключения могут устанавливаться факторы уверенности, измеряемые в процентах от 0 до 100.
В правиле (RULE) могут быть определены параметры, настраивающие его использование, описаны предварительные действия (часть READY) для подготовки значений аргументов посылки и дан текст объяснения работы правил (часть REASON), который выдается пользователю при объяснении цепочки вывода.
В описании переменных (VAR) указываются параметры, определяющие режимы манипулирования, задается текст (часть LABEL), объясняющий смысл используемых элементов данных, который выдается при необходимости пользователю, также могут быть определены действия или процедуры по формированию значений переменных (часть FIND).
В разделе инициализации (INITIAL), как правило, формализуется начальный диалог с пользователем по вводу необходимых данных, осуществляется предварительный поиск по базе данных и первичная обработка информации, устанавливаются все необходимые режимы консультирования (значения системных переменных).
В разделе завершения (DO) организуется тестирование полученных данных и вывод их пользователю. Для тестирования сформированных значений переменных могут применяться процедуры обращения к другим экспертным системам.
В рассмотренном примере оценки надежности поставщика в разделе инициализации набора правил осуществляется выборка записей из файла «поставщики» по значению кода, которое определено во внешней процедуре. В случае автономного от внешней процедуры запуска набора правил необходимо предусмотреть ввод значения кода поставщика пользователем. Далее организуется формирование рабочих переменных из полей базы данных, что связано с необходимостью приписывания к значениям переменных факторов уверенности, которые определены в качестве полей БД.
Ввод данных со стороны пользователя можно организовать различными способами. Так, если правило использует уникальные переменные, имеет смысл вводить данные в части READY правила. Описание ввода данных в разделе переменных (часть FIND) позволяет опрашивать значения данных по мере необходимости, что делает диалог гибким. Задание всех исходных данных в разделе инициализации целесообразно в режиме прямого вывода.
В разделе инициализации набора правил задаются значения системных переменных (параметров), настраивающих механизм вывода на особенности предметной области. Так, в случае применения нечеткой логики может быть задан в процентах предел точности (порог), выше которого значение целевой или любой другой промежуточной переменной становится известным для вывода пользователю. Для этого используется системная переменная E.UNKN (по умолчанию E.UNKN=20). Далее устанавливается режим проверки конфликтующих правил для достижения результата с заданной степенью точности E.RIGR:
М – минимальное число правил;
С– все возможные правила (полный перебор);
А– все правила, дающие минимально допустимый фактор уверенности плюс правила, увеличивающие достоверность результата (используется для нечетких переменных).
В случае режимов М и А необходимо установить критерии, по которым устанавливается очередность проверки правил, связанных дизъюнктивно на «И/ИЛИ» графе целей концептуальной модели. Эти критерии задаются системной переменной E.SORD со значениями:
Р – по приоритету (по степени важности);
С– по стоимости (относительный показатель в процентах, оценивающий степень трудоемкости);
Н – по наибольшей достоверности результата;
U – по наименьшему числу неизвестных переменных в посылке правила;
R – произвольный порядок;
F – последовательный порядок.
Можно использовать сочетание режимов, например E.SORD = «PHU». Критерий проверки наибольшей достоверности получаемого результата предполагает оценку фактора уверенности посылки правила и объединение с фактором уверенности применения самого правила. Выбор формулы объединения факторов уверенности (алгебры) определяется системными переменными E.CFJO для конъюнктивных зависимостей аргументов, E.CFCO – для дизъюнктивных зависимостей аргументов и E.CFVA – для объединения фактора уверенности левой и правой частей правил (см. табл. 3.2).
Для ввода факторов уверенности исходных данных и для оценки посылки правила необходимо задать значение системной переменной E.ICF = true. В дальнейшем пользователю в процессе диалога будет выдаваться подсказка на ввод факторов уверенности. Факторы уверенности правил должны быть установлены инженером знаний априорно. Для того чтобы спроектировать априорные значения факторов уверенности применения правил, необходимо предположить, что аргументы посылок правил принимают истинные значения с максимально допустимой уверенностью. Тогда факторы уверенности заключений с учетом их объединения по нескольким правилам должны превысить установленный E.UNKN предел. На рис. 3.3 приведены коэффициенты уверенности правил для оценки надежности поставщика.
Таблица 3.2
E.CFVA=XX | |
CFJO = для AND Объединение факторов уверенности для левой и правой частей правила | CFJO = для OR Объединение факторов уверенности, полученных по нескольким правилам для одной переменной |
M: Min(a, b) | M: Max(a, b) |
P: (a * b) / 100 | P: a + b – (a * b) / 100 |
A: (<M> + <P>) / 2 | A: (<M> + <P>) / 2 |
B: Max(a, b) + Min(a, b) | B: (1 - a / 100) * (1 – b / 100) |
Из примера, представленного в приложении 1 (листинг 1), видно, что:
· системная переменная E.CFVA = «pp», т.е. объединение факторов уверенности левой и правой частей правил производится по формуле (а * b) / 100, а объединение факторов уверенности результатов для целевой переменной «Надежность» – по формуле а + b – (a * b) / 100 (см.
табл. 3.2);
· финансовое состояние оценено как хорошее (фактор уверенности 60%) (cf = 60);
· при таком «Финансовом состоянии» можно сделать вывод, что «Надежность» = TRUE с фактором уверенности 90%; так как этот вывод сделан на основе показателя «Финансовое состояние», то общий фактор уверенности для этой ветви дерева целей (см. рис. 3.2) будет выглядеть: (60 * 90) / 100 = 54;
· аналогично оценивается «Надежность» по «Рекламациям» (отсутствуют) и «Статусу предприятия» («кооператив»);
· так как удаленность поставщика менее 1000 км, то переменной «Надежность» на этом этапе оценки будет присвоено значение TRUE с фактором уверенности 70.
Таким образом, фактор уверенности для целевой переменной «Надежность» вычисляется следующим образом:
cf true =(60 * 90) / 100 + /* Левая ветвь дерева знаний. Наивысший приоритет правил (см. приложение 1, листинг 1) */
+ (60 * 80) / 100 – /* Вторая ветвь дерева. Следующий по важности приоритет. */
- (54 * 48) / 100 + /* Объединение факторов уверенности двух ветвей дерева (результатов для одной переменной). Далее аналогично. */
+ 50 – (76 * 50) / 100 +
+ 70 – (88 * 70) / 100 = 96
Таким образом, надежность поставщика оценивается как положительная с фактором уверенности 96%.
Рис. 3.2. Применение коэффициентов уверенности
Факторы уверенности применения правил косвенно отражают степень важности или приоритет правила в процессе вывода.
GURU позволяет создавать для переменной несколько возможных значений, каждое из которых характеризуется своим фактором уверенности. Такая переменная называется нечеткой (переменная набора). Ее применение оправдано в том случае, когда пользователь затрудняется точно определить одно конкретное значение переменной и вместо этого определяет несколько значений с различными факторами уверенности. Точно также и в заключениях правил могут фигурировать нечеткие переменные, когда вывод из посылки правила неоднозначен. Использование нечетких переменных в правилах приводит к многовариантности вывода с возможными противоречиями получаемых результатов, но, как правило, с различными при этом факторами уверенности. Все переменные, выводимые на основе нечеткой переменной, сами становятся нечеткими. Множества значений вводятся пользователем в переменную в соответствии с числом, установленной системной переменной Е.IFUZ = <число>. Факторы уверенности при объединении нескольких значений переменных вычисляются по формуле, определяемой системной переменной E.CFCO, а при удалении значения – по формуле, соответствующей E.CFJO. Рассмотрим в качестве примера правила, прогнозирующие изменение цен в зависимости от соотношения объемов производства и спроса, которые представляют собой нечеткие переменные ожидаемых в текущем году значений. Значения нечетких переменных вместе с факторами уверенности перечисляются в фигурных скобках:
Пусть «Объем производства» = {200 cf 90, 100 cf 30}, а «Объем спроса» = {150 cf 80, 50 cf 20}.
R1: IF ОБ.ПРОИЗВ. > ОБ.СПРОСА THEN ЦЕНЫ = «падают»
R2: IF ОБ.ПРОИЗВ. < ОБ.СПРОСА THEN ЦЕНЫ = «растут»
R3: IF ОБ.ПРОИЗВ. = ОБ.СПРОСА THEN ЦЕНЫ = «не изменяются»
Тогда фактор уверенности для выражения (ОБ.ПРОИЗВ. > ОБ.СПРОСА) = TRUE вычисляется следующим образом:
200 > 150 ® min (90, 80) = 80
200 > 50 ® min (90, 20) = 20
100 > 50 ® min (30, 20) = 20
Коэффициент уверенности = 80 + 20 – 16 + 20 – 17 = 87, а для выражения (ОБ.ПРОИЗВ. < ОБ.СПРОСА) = TRUE: 100 < 150 ® min (30, 80) = 30.
Следовательно, с уверенностью 87% можно сделать предположение, что цены в текущем году будут падать, и с уверенностью 30% – что цены возрастут. Со статистической точки зрения такой разнобой в оценках может показаться неприемлемым, но с практической точки зрения прогноз в пользу падения цен вполне оправдан. Далее на основе полученных вариантов может быть продолжено решение задачи, в частности, прогнозирование прибыли. Пример применения описанного набора правил приведен в приложении 1 (листинг 3).
Значение факторов уверенности нечеткой переменной могут изменяться под воздействием различных правил. Так, если в нечеткую переменную добавляются значения, которые уже есть в наборе, то их факторы объединяются, например, по правилу суммы, а если значения удаляются, то факторы уверенности объединяются по правилу произведения. Пусть имеется база знаний, описывающая виды денежных вкладов в зависимости от возраста, статуса и рода деятельности человека:
Al: IF ВОЗРАСТ < 20
THEN ВКЛАД += {«Образование» cf 40, «жилье» cf 10, «сбережения» cf 5}
А2: IF ВОЗРАСТ >= 20 AND ВОЗРАСТ < 30
THEN ВКЛАД += {«жилье» cf 20, «Образование» cf 20, «сбережения» cf 10}
Bl: IF СТАТУС = «одинокий»
THEN ВКЛАД += {«Образование» cf 30, «сбережения» cf 20,»жилье» cf 10}
B2: IF СТАТУС = «женат»
THEN ВКЛАД += {«жилье» cf 40, «сбережения» cf 20, «образование» cf 10}
Cl: IF РОД ДЕЯТ = «рабочий»
THEN ВКЛАД += {«сбережения» cf 20); ВКЛАД -= («образование» cf 60}
Определим виды вкладов при условии, что консультирующийся человек имеет возраст меньше 20 лет, женат и является рабочим. Табл. 3.3 поясняет определение суммарных значений коэффициентов уверенности.
Таблица 3.3.
A1 | B2 | Сумма | + C1 – | Сумма | ||
Образование | ||||||
Жилье | ||||||
Сбережения |
Заметим, что при удалении значения из нечеткой переменной факторы уверенности предшествующего значения перемножаются на отрицание фактора уверенности удаляемого значения (т. е. на фактор уверенности, что это значение остается).
Далее, пользуясь полученными значениями факторов уверенности вкладов, можно перейти к процентному распределению сумм вкладов, например, интерполировав исходные значения на 100% (получим соответственно 17.6%, 44.6%, 37.8%) или применив другие правила. Для манипулирования отдельными значениями нечеткой переменной и их факторами уверенности GURU предлагает специальные функции, такие как выборка отдельных значений переменной – VALN (переменная, номер), их факторов уверенности – CFN (переменная, номер), средневзвешенное значение переменной – WAVR (переменная) и т.д.
В процессе вывода значений нечеткой переменной можно ограничивать их число посредством его задания в системной переменной E.BEST.
Факторы уверенности переменных, получаемые в результате применения правил, косвенно отражают степень важности или приоритет правила в процессе вывода. Однако при их использовании в качестве основного критерия выбора из конфликтного набора придется вычислять коэффициенты уверенности по всему множеству конфликтующих правил. Проще задать и использовать в качестве критерия приоритет от 0 до 100 для группы родственных правил, соответствующих одной альтернативной ветке графа «И/ИЛИ», и внутри группы родственных правил пользоваться критериями оценки достоверности результата. Для примера с оценкой надежности поставщика принимаются приоритеты правил, связанных с финансовым состоянием – 100, с рекламациями – 90, статусом – 80, удаленностью – 70. Тогда первым будет оцениваться правило надежности поставщика в зависимости от финансового состояния и так далее по мере уменьшения приоритета. В группе правил, соответствующих статусу поставщика, можно их просматривать в порядке убывания фактора уверенности правила.
Другим важным критерием выбора правила для выполнения служит критерий трудоемкости, использование которого связано со стремлением достичь требуемого результата с минимальными усилиями. Трудоемкость вывода определяется глубиной цепочки аргументации (числом неизвестных промежуточных переменных), шириной посылки правила (числом аргументов), понятностью вывода для пользователя (используемых понятий, зависимостей), легкостью получения исходных данных.
Критерий выбора правил посредством системной переменной E.SORD = «U» (задает минимальное число неизвестных переменных посылки правил) определяет глубину цепочки только на один уровень, поэтому может служить критерием трудоемкости только в ограниченных рамках. Так, правило с тремя неизвестными переменными в посылке может быть менее трудоемким, чем правило с одной неизвестной переменной, если для последней применяется длинная цепочка вывода с большим числом неизвестных переменных на следующих уровнях иерархии. Поэтому для такого правила следует установить критерий стоимости E.SORD = «C» (от 0 до 100), меньший, чем для правила с одной неизвестной переменной.
Реальное влияние неизвестных переменных на оценку посылки правила можно уменьшить, используя различные режимы оценки, задаваемые системной переменной E.TRYP:
· S– проверка неизвестных переменных, пока значение какой-либо из них не будет получено;
· Е– проверка неизвестных переменных заканчивается, как только посылка правила принимает истинное значение;
· Р – проверка всех неизвестных переменных независимо от результата оценки посылки.
Первый режим S имеет смысл применять для конъюнктивных условий; как только один из аргументов приобретает ложное значение (фактор уверенности меньше заданного в E.UNKN предела), процесс проверки посылки правила прекращается. Поэтому в конъюнкции аргументов, как правило, на первое место ставятся легко проверяемые условия.
Для того чтобы избежать отрицательных последствий неизвестных значений конъюнкции условий, которые приводят, в конечном счете, к недостижению цели (результат остается неизвестным), необходимо предусмотреть правило с отрицанием в посылке позитивных значений. Например:
R1: IF рентабельность = ДА & незадолженность = ДА
THEN финансовое состояние = TRUE
R2: IF рентабельность = НЕТ
THEN финансовое состояние = FALSE
R3: IF незадолженность = НЕТ
THEN финансовое состояние = FALSE
При этом правила R2 и R3 должны приобрести меньшее значение относительного показателя стоимости, чем R1, поскольку вследствие их краткости они должны быть проверены в первую очередь.
Режимы оценки посылки правила Е и Р применяются только для дизъюнктивных условий правил. Причем, режим Е подразумевает получение минимально допустимого значения фактора уверенности посылки, а режим Р – максимального значения фактора уверенности (первый режим менее трудоемкий по сравнению со вторым).
Дизъюнктивно связанные аргументы следует соединять в посылку одного правила в том случае, когда они одинаково воздействуют на получение какого-либо заключения. В приведенном ранее примере это недопустимо, поскольку влияние финансового состояния, рекламаций, статуса и удаленности на надежность поставщика оценивается с разными факторами уверенности.
Для дизъюнктивных посылок правил, так же как и для конъюнктивных, в случае негативного результата оценки посылки необходимо предусмотреть альтернативные правила с отрицанием значений аргументов.
Если в процессе вывода значения каких-либо переменных окажутся неизвестными, а без них невозможен последующий вывод, то можно предусмотреть непосредственный ввод необходимых значений данных. Для этого в GURU предусмотрена системная переменная E.WHN со значениями параметров:
·F – ввод данных осуществляется перед оценкой посылки правила;
·N – ввод данных со стороны пользователя не предусматривается;
·L – после неудачного вывода запрещается ввод данных от пользователя.
Если пользователь не знает соответствующее значение, тогда система сама пытается осуществить вывод.
GURU обеспечивает гибкость задания различных режимов механизма вывода. Так, общая настройка системы на особенности предметной области осуществляется на основе использования значений системных переменных в разделе инициализации, специфические же режимы можно задавать при описании отдельных переменных:
· выбор алгебры объединения факторов уверенности – CFTYPE (соответствие E.CFVA);
· степени оценки точности результата – RIGOR (соответствие E.RICR);
· ввод необходимых данных – WHEN (соответствие E.WHN);
· число значений нечеткой переменной – LIMIT (соответствие E.NUMV);
· оценка посылки правил – TEST (соответствие E.TRYP) может быть задана непосредственно в правиле.
Дата добавления: 2015-10-13; просмотров: 887;