Одно замечание по поводу программы-оболочки



 

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

 

Цели с отрицанием

 

Использование знака отрицания в левых частях правил, а следовательно, и в вопросах, обрабатываемых процедурой рассмотреть, представляется естественным и его следует разрешить. В качестве первой попытки можно предложить следующий способ работы с отрицанием целей:

рассмотреть( не Цель, Трасса, Ответ) :- !,

рассмотреть( Цель, Трасса, Ответ1),

обратить( Ответ1, Ответ).

% Получить обратное истинностное значение

 

обратить( Цель это правда было Найдено,

( не Цель) это ложь было Найдено).

обратить( Цель это ложь было Найдено,

( не Цель) это правда было Найдено).

 

% Процедура-драйвер верхнего уровня

эксперт :-

принять_вопрос( Вопрос),

% Ввести вопрос пользователя

( ответ_да( Вопрос);

% Попытка найти положительный ответ

ответ_нет( Вопрос) ).

% Если нет положительного ответа, то найти отрицательный

 

ответ_да( Вопрос) :-

% Искать положительный ответ на Вопрос

статус( отрицательный),

% Пока еще нет положительного ответа

рассмотреть( Вопрос, [], Ответ), % Трасса пуста

положительный( Ответ), % Искать положительный ответ

статус( положительный),

% Найден положительный ответ

выдать( Ответ), nl,

write( 'Нужны еще решения?' ),

принять( Ответ1), % Прочесть ответ пользователя

Ответ1 = нет.

% В противном случае возврат к "рассмотреть"

 

ответ_нет( Вопрос):-

% Искать отрицательный ответ на Вопрос

retract( пока_нет_положительного_решения), !,

% Не было положительного решения?

рассмотреть( Вопрос, [], Ответ),

отрицательный( Ответ),

выдать( Ответ), nl,

write( 'Нужны еще решения?' ),

принять( Ответ1),

Ответ1 = нет.

% В противном случае - возврат к "рассмотреть"

 

статус( отрицательный) :-

assert( пока_нет_положительного_решения).

статус( положительный) :-

retract( пока_нет_положительного_решения), !; true.

 

принять_вопрос( Вопрос) :-

nl, write( 'Пожалуйста, спрашивайте:'), nl,

read( Вопрос).

Рис. 14.13. Оболочка экспертной системы: драйвер. Обращение к оболочке из Пролога при помощи процедуры эксперт.

 

Если Цель конкретизирована, то все в порядке, если же нет, то возникают трудности. Рассмотрим, например, такой диалог:

?- эксперт.

 

Пожалуйста, спрашивайте:

Не ( X ест мясо).

 

Есть (еще) решения для : Животное

Да.

Животное = тигр .

В этот момент система даст ответ:

не ( тигр ест мясо) это ложь

Такой ответ нас не может удовлетворить. Источник затруднения следует искать в том, какой смысл мы вкладываем в вопросы типа

не ( X ест мясо)

В действительности мы хотим спросить: "Существует ли такой X, что X не ест мяса?" Однако процедура рассмотреть (так как мы ее определили) проинтерпретирует этот вопрос следующим образом:

(1) Существует ли такой X, что X ест мясо?

(2) Да, тигр ест мясо.

Итак,

(3) не (тигр ест мясо) это ложь.

Короче говоря, интерпретация такова — "Правда ли, что никакой X не ест мясо?" Положительный ответ мы получим, только если никто не ест мяса. Можно также сказать, что процедура рассмотреть отвечает на вопрос так, как будто X находится под знаком квантора всеобщности :

для всех X: не (X ест мясо)?

а не квантора существования, в чем и состояло наше намерение:

для некоторого X: не (X ест мясо)?

Если рассматриваемый вопрос конкретизирован, то проблемы исчезают. В противном случае правильный способ работы с отрицаниями становится более сложным. Например, вот некоторые из возможных правил:

Для того, чтобы рассмотреть (не Цель) , рассмотрите Цель , а затем:

• если Цель это ложь, то (не Цель) это правда;

• если Цель' — это некоторое решение для Цель , и Цель' — утверждение той же степени общности, что и Цель , то (не Цель) это ложь;

• если Цель' — это некоторое решение для Цель , и Цель' — более конкретное утверждение, чем Цель , то об утверждении (не Цель) нельзя сказать ничего определенного.

Можно избежать всех этих осложнений, если потребовать, чтобы отрицания стояли только перед конкретизированными целями. Если правила базы знаний формулировать должным образом, то часто удается удовлетворить этому условию. Нам это удалось в "правиле поломки" (рис. 14.7):

правило_поломки:

если

вкл( Прибор) и

прибор( Прибор) и % Конкретизация

не работает( Прибор) и

соед( Прибор, Предохр) и

доказано( цел( Предохр) )

то

доказано( неиспр( Прибор) ).

Здесь условие

прибор( Прибор)

"защищает" следующее за ним условие

не работает( Прибор)

от неконкретизированной переменной.

 

Упражнение

 

14.3. База знаний может, в принципе, содержать циклы. Например:

прав1: если бутылка_пуста то джон_пьян.

прав2: если джон_пьян то бутылка_пуста.

Работая с подобной базой знаний, наша процедура рассмотреть может зациклиться на обработке одних и тех же целей. Внесите в процедуру рассмотреть изменения, предотвращающие зацикливание. Используйте для этого объект Трасса. Однако соблюдайте осторожность: если текущая цель сопоставима с одной из предыдущих целей, то такую ситуацию следует рассматривать как цикл только в том случае, когда текущая цель имеет большую, степень общности, чем предыдущая.

 

 

Работа с неопределенностью

 

Степень достоверности

 

Наша оболочка экспертной системы, описанная в предыдущем разделе, может работать только с такими вопросами (утверждениями), которые либо истинны, либо ложны. Предметные области, в которых на любой вопрос можно ответить "правда" или "ложь", называются категорическими . Наши правила базы знания (также, как и данные) были категорическими, это были "категорические импликации". Однако многие области экспертных знаний не являются категорическими. Как правило, в заключениях эксперта много догадок (впрочем, высказанных с большой уверенностью), которые обычно верны, но могут быть и исключения. Как данные, относящиеся к конкретной задаче, так и импликации, содержащиеся в правилах, могут быть не вполне определенными. Неопределенность можно промоделировать, приписывая утверждениям некоторые характеристики, отличные от "истина " и "ложь ". Характеристики могут иметь свое внешнее выражение в форме дескрипторов, таких, как, например, верно , весьма вероятно , вероятно , маловероятно , невозможно . Другой способ: степень уверенности может выражаться в форме действительного числа, заключенного в некотором интервале, например между 0 и 1 или между -5 и +5. Такую числовую характеристику называют по-разному — "коэффициент определенности", "степень доверия" или "субъективная уверенность". Более естественным было бы использовать вероятности (в математическом смысле слова), но попытки применить их на практике приводят к трудностям. Происходит это по следующим причинам:

• Экспертам, по-видимому, неудобно мыслить в терминах вероятностей. Их оценки правдоподобия не вполне соответствуют математическому определению вероятностей.

• Работа с вероятностями, корректная с точки зрения математики, потребовала бы или какой-нибудь недоступной информации, или каких-либо упрощающих допущений, не вполне оправданных с точки зрения практического приложения.

Поэтому, даже если выбранная мера правдоподобия лежит в интервале 0 и 1, более правильным будет называть ее из осторожности "субъективной уверенностью", подчеркивая этим, что имеется в виду оценка, данная экспертом. Оценки эксперта не удовлетворяют всем требованиям теории вероятностей. Кроме того, вычисления над такими оценками могут отличаться от исчисления вероятностей. Но, несмотря на это, они могут служить вполне адекватной моделью того, как человек оценивает достоверность своих выводов.

Для работы в условиях неопределенности было придумано множество различных механизмов. Мы будем рассматривать здесь механизм, используемый в системах Prospector и AL/X для минералогической разведки и локализации неисправностей соответственно. Следует заметить, что модель, применяемая в системе Prospector, несовершенна как с теоретической, так и с практической точек зрения. Однако она использовалась на практике, она проста и может служить хорошей иллюстрацией при изложении основных принципов, а потому вполне подойдет нам, по крайней мере для первого знакомства с этой областью. С другой стороны, известно, что даже в значительно более сложных моделях не обходится без трудностей.

 

Модель Prospector'а

 

Достоверность событий моделируется с помощью действительных чисел, заключенных в интервале между 0 и 1. Для простоты изложения мы будем называть их "вероятностями", хотя более точный термин "субъективная уверенность". Отношения между событиями можно представить графически в форме "сети вывода". На рис. 14.14 показан пример сети вывода. События изображаются прямоугольниками, а отношения между ними — стрелками. Овалами изображены комбинации событий (И, ИЛИ, НЕ).

Мы будем считать, что отношения между событиями (стрелки) являются своего рода "мягкими импликациями". Пусть имеются два события E и H , и пусть информация о том, что имело место событие E , оказывает влияние на нашу уверенность в том, что произошло событие H . Если это влияние является "категорической импликацией", то можно просто написать

если E то H

В случае же "мягкой импликации" это отношение может быть менее определенным, так что ему можно приписать некоторую "силу", с которой оно действует:

если E то H с силой S

Та сила, с которой достоверность E влияет на уверенность в H , моделируется в системе Prospector при помощи двух параметров:

N = "коэффициент необходимости"

S = "коэффициент достаточности"

 

Рис. 14.14. Сеть вывода системы AL/X (заимствовано из Reiter (1980)). Числа, приписанные прямоугольникам, — априорные вероятности событий; числами на стрелках задается "сила" отношений между событиями.

В сети вывода это изображается так:

E ------------> H

(N, S)

Два события, участвующие в отношении, часто называют "фактом" и "гипотезой" соответственно. Допустим, что мы проверяем гипотезу H . Тогда мы будем искать такой факт E , который мог бы подтвердить либо опровергнуть эту гипотезу. S говорит нам, в какой степени достаточно факта E для подтверждения гипотезы H ; N — насколько необходим факт E для подтверждения гипотезы H . Если факт E имел место, то чем больше S , тем больше уверенности в H . С другой стороны, если не верно, что имел место факт E , то чем больше N , тем менее вероятно, что гипотеза H верна. В случае, когда степень достоверности E находится где-то между полной достоверностью и невозможностью, степень достоверности H определяется при помощи интерполяции между двумя крайними случаями. Крайние случаи таковы:

(1) известно, что факта E не было

(2) известно, что факт E имел место

(3) ничего не известно относительно E

Для каждого события H сети вывода существует априорная вероятность рo (H ) (безусловная) вероятность события H в состоянии, когда неизвестно ни одного положительного или отрицательного факта. Если становится известным какой-нибудь факт E , то вероятность H меняет свое значение с рo (H ) на p (H|E ). Величина изменения зависит от "силы" стрелки, ведущей из E в H . Итак, мы начинаем проверку гипотез, принимая их априорные вероятности. В дальнейшем происходит накопление информации о фактах, что находит свое отражение в изменении вероятностей событий сети. Эти изменения распространяются по сети от события к событию в соответствии со связями между событиями. Например, рассмотрим рис. 14.14 и предположим, что получена информация о срабатывании индикатора открытия выпускного клапана. Эта информация повлияет на нашу уверенность в том, что выпускной клапан открылся, что, в свою очередь, повлияет на уверенность в том, что сместилась установка порогового давления.

 

Рис. 14.15. Правила распространения вероятностей по сети, принятые в системах Prospector и AL/X: (а) "мягкая импликация" с силой (N , S ); (b) логические комбинации отношений.

На рис. 14.15 показан один из способов реализации этого эффекта распространения информации по сети. Часть вычислений производится не над вероятностями, а над шансами . Это удобно, хотя в принципе и не обязательно. Между шансами и вероятностями имеет место простое соотношение:

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

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

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

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

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

 

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

 

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

!,

рассмотреть( Цель1, Трасса, Ответ1),

рассмотреть( Цель2, Трасса, Ответ2),

вероятность( Ответ1, В1),

вероятность( Ответ2, В2),

мин( В1, В2, Вер).

рассмотреть( Цель1 или Цель2, Трасса,

( Цель или Цель2:Вер) было 'выведено из'

( Ответ1 и Ответ2) ) :-

!,

рассмотреть( Цель1, Трасса, Ответ1),

рассмотреть( Цель2, Трасса, Ответ2),

вероятность( Ответ1, В1),

вероятность( Ответ2, В2),

макс( В1, В2, Вер).

рассмотреть( не Цель, Трасса,

( не Цель:Вер) было 'выведено из' Ответ) :-

!,

рассмотреть( Цель, Трасса, Ответ),

вероятность( Ответ, В),

обратить( В, Вер).

рассмотреть( Цель, Трасса, ( Цель: Вер) было сказано) :-

ответпольз( Цель, Трасса, Вер).

 

% Ответ, выведенный пользователем

% Отношение

%

% модиф( Вер0, Правила, Трасса, Вер, ПравОтв)

%

% Существует Цель с априорной вероятностью Вер0. Правила имеют

% отношение к утверждению Цель; суммарное влияние этих правил

% (точнее, их условных частей) на Вер0 приводит к тому,

% что Вер0 заменяется на апостериорную вероятность Вер;

% Трасса - список целей-предков и правил, использовавшихся

% при выводе утверждения Цель;

% ПравОтв - результаты анализа условных частей

% правил из списка Правила.

модиф( Вер0, [], Трасса, Вер0, []).

% Нет правил - нет модификации

модиф( Вер0,

[ Прав : если Усл то Цель с Сила | Правила],

Трасса, Вер, [Прав из Ответ | ПравОтв] ):-

рассмотреть( Усл, [Цель по Прав | Трасса], Ответ),

% Условие из первого правила

априори( Усл, В0),

вероятность( Ответ, В),

импликация( В0, В, Сила, Вер0, Вер1),

% "Мягкая" импликация

модиф( Вер1, Правила, Трасса, Вер, ПравОтв).

Рис. 14.16. Определение степени правдоподобия гипотезы при помощи распространения информации об оценке уверенности по сети вывода.

 

 

Заключительные замечания

 

Нашу оболочку экспертной системы можно развивать в целом ряде направлений. В данный момент уместно сделать несколько критических замечаний и высказать предложения по усовершенствованию нашей программы.

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

Наша процедура рассмотреть подвержена зацикливанию в тех случаях, когда в правилах базы знаний "циклически" упоминается одна и та же цель. Этот недостаток легко исправить, предусмотрев в рассмотреть соответствующий контроль, т.е. проверку, не является ли текущая цель частным случаем некоторой цели, уже введенной в состав объекта Трасса.

Наше объяснение типа "как" выводит дерево доказательства целиком. В случае больших деревьев, удобнее было бы вывести только верхнюю часть дерева, а затем дать пользователю возможность "гулять" по остальной части дерева по своему желанию. Тогда пользователь смог бы просматривать дерево выборочным образом, используя команды, такие как "Вниз по ветви 1", "Вниз по ветви 2", …, "Вверх", "Достаточно".

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

Известно, что придать диалогу с пользователем естественный характер при помощи умелой постановки вопросов - сложная задача. Наш способ ее решения работает только в определенных пределах и во многих случаях приводит к самым разным проблемам, например:

Это правда: сьюзен летает?

Нет.

Это правда: сьюзен летает хорошо?

Конечно же нет, раз она совсем не летает! Другой пример:

Есть (еще) решения для: Кто-нибудь летает?

Да.

Кто-нибудь = птица .

Это правда: альбатрос летает?

Для того, чтобы справиться с подобными нежелательными эффектами, следует ввести в экспертную систему дополнительные отношения между понятиями вместе с механизмами их обработки. Обычно эти новые отношения задают иерархию объектов и их свойств.

Возможно еще одно усовершенствование процедуры взаимодействия с пользователем, предусматривающее планирование оптимальной стратегии постановки вопросов. Целью оптимизации является минимизация количества вопросов, которые необходимо задать пользователю для достижения некоторого окончательного логического заключения. Разумеется, возникнут различные варианты таких стратегий, и то, какая из них окажется оптимальной, будет зависеть от ответов пользователя. Принятие решения о выборе той или иной альтернативной стратегии можно основывать на априорных вероятностях, являющихся вероятностными оценками "стоимостей" альтернатив. Величины оценок, возможно, придется пересчитывать после каждого ответа пользователя.

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

В "разумной" экспертной системе следует предусмотреть вероятностные механизмы, заставляющие ее концентрировать свое внимание на наиболее правдоподобных гипотезах среди всех конкурирующих между собой гипотез. Такая экспертная система должна запрашивать у пользователя ту информацию, которая позволила бы распознать наилучшую среди наиболее правдоподобных гипотез.

Наша экспертная система была классификационного или "анализирующего" типа, в противоположность системам "синтезирующего" типа, в которых ставится задача построить что-либо. В последнем случае результат работы - это план действий, предпринимаемых для выполнения этой задачи, например план действий робота, компьютерная конфигурация, удовлетворяющая заданным требованиям, или форсированная комбинация в шахматах. Наш пример, относящийся к локализации неисправностей, можно естественным образом расширить, чтобы включить в рассмотрение действия. Например, если система не может прийти к определенному выводу, поскольку приборы выключены, она даст рекомендацию: "Включить лампу 3". Здесь сразу возникнет задача построения оптимального плана: минимизировать число действий, необходимых для достижения окончательного вывода.

 

Проекты

 

Завершите программирование нашей оболочки в части, касающейся неопределенной информации (процедура ответпольз и другие).

Рассмотрите перечисленные выше критические замечания, а также возможные расширения нашей экспертной системы. Разработайте и реализуйте соответствующие усовершенствования.

 

Резюме

 

• Обычно от экспертных систем требуют выполнения следующих функций:

решение задач в заданной предметной области,

объяснение процесса решения задач,

работа с неопределенной и неполной информацией.

• Удобно считать, что экспертная система со стоит из двух модулей: оболочки и базы знаний. Оболочка в свою очередь состоит из механизма логического вывода и интерфейса с пользователем.

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

• "Если-то"-правила, или продукции являются наиболее часто применяемой формой представления знаний в экспертных системах.

• Оболочка, разработанная в данной главе, интерпретирует "если-то"-правила, обеспечивает выдачу объяснений типа "как" и "почему" и запрашивает у пользователя необходимую информацию.

• Машина логического вывода была расширена для работы с неопределенной информацией.

• В данной главе были обсуждены следующие понятия:

экспертные системы

база знаний, оболочка,

машина логического вывода

"если-то"-правила, продукции

объяснения типа "как" и "почему"

категорические знания, неопределенные знания

сеть вывода,

распространение оценок достоверности по сети

 

Литература

 

Книга Michie (1979) - это сборник статей, относящихся к различным аспектам экспертных систем и инженерии знаний. Две ранние экспертные системы, оказавшие большое влияние на развитие этой области, MYCIN и Prospector, описаны в Shortliffe (1976) и Duda et al (1979). Книга Buchanan and Shortliffe (1984) является хорошим сборником статей, посвященных результатам экспериментов с системой MYCIN. Weiss and Kulikowski (1984) описывают свой практический опыт разработки экспертных систем. Вопрос о работе в условиях неопределенности еще нельзя считать вполне решенным: в статье Quinlan (1983) сравниваются различные подходы к этой проблеме. Способ разработки нашей экспертной системы до некоторой степени аналогичен описанному в Hammond (1984). Некоторые примеры, использовавшиеся в тексте, заимствованы из Winston (1984), Shortliffe (1976), Duda et al (1979), Bratko (1982) и Reiter (1980).

 

Bratko I. (1982). Knowledge-based problem-solving in AL3. In: Machine Intelligence 10 (J.E. Hayes, D. Michie, Y.H. Pao, eds.). Ellis Horwood.

Buchanan B.G. and Shortliffe E.H. (1984, eds.). Rule-based Expert Systems: The МYСIN Experiments of the Stanford Heuristic Programming Project. Addison-Wesley.

Duda R., Gasschnig J. and Hart P. (1979). Model design in the Prospector consultant system for mineral exploration. In: Expert Systems in the Microelectronic Age (D. Michie, ed.). Edinburgh University Press.

Hammond P. (1984). vMicro-PROLOG for Expert Systems. In: Micro-PROLOG: Programming in Logic (K.L. Clark, F.G. McCabe, eds.). Prentice-Hall.

Michie D. (1979, ed.). Expert Systems in the Microelectronic Age. Edinburgh University Press.

Quinlan J.R. (1983). Inferno: a cautious approach to uncertain reasoning. The Computer Journal 26 : 255-270.

Reiter J. (1980). AL/X: An Expert System Using Plausible Inference. Oxford: Intelligent Terminals Ltd.

Shortliffe E. (1976). Computer-based Medical Consultations: MYCIN. Elsevier.

Weiss S.M. and Kulikowski CA. (1984). A Practical Guide to Designing Expert Systems. Chapman and Hall.

Winston P. H. (1984). Artificial Intelligence (second edition). Addison-Wesley. [Имеется перевод первого издания: Уинстон П. Искусственный интеллект. — М.: Мир, 1980.]

 

 

Глава 15

Игры

 

В этой главе мы рассмотрим методы программирования игр двух лиц с полной информацией (таких, как шахматы). Для игр, представляющих интерес, деревья возможных продолжений слишком велики, чтобы можно было говорить о полном переборе, поэтому необходимы какие-то другие подходы. Один из таких методов, основанный на минимаксном принципе, имеет эффективную реализацию, известную под названием "альфа-бета алгоритм". В дополнение к этому стандартному методу, мы разработаем в этой главе программу на основе Языка Советов (Advice Language), который дает возможность вносить в шахматную программу знания о типовых ситуациях. Этот довольно подробный пример может послужить еще одной иллюстрацией того, насколько хорошо Пролог приспособлен для реализации систем, основанных на знаниях.

 


Дата добавления: 2018-05-01; просмотров: 360; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!