Скачиваний:
51
Добавлен:
01.05.2014
Размер:
257.54 Кб
Скачать

20.4. Дополнительные сведения

Программа «Выдающийся ум» с небольшими отличиями впервые появилась в журнале SIGART Newsletter (Shapiro, 1983d)в ответ на публикацию программы этой игры на Паскале, Статья в SIGARTпривлекла внимание: появились как теоретические усовершенствования алгоритма игры, так и практические улучшения программы. Наиболее интересные анализ и обсуждения (Powers, 1984)касались оптимизации Пролог - программы (игра «Выдающийся ум» использовалась как иллюстративный пример), которая в конечном счете привела к ускорению выполнения программы в 50раз.

Доказательство корректности алгоритма для игры в Ним можно найти в любом учебнике, в котором обсуждаются игры на графах, например (Berge, 1962),

Игра в калах давно используется для изучения игровых программ в исследованиях по искусственному интеллекту (Slagleи Dixon, 1969).

Глава 21

Экспертная система для кредитных операций

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

Вся наша книга имеет прямое отношение к программированию экспертных систем. Содержащиеся в ней примеры являются типичными Пролог - программами. Например, программа для решения уравнений, представленная в следующей главе, может и должна рассматриваться как некоторая экспертная система.

Знания в экспертной системе обычно выражаются в форме некоторых правил. Таким образом. Пролог, основными предложениями которого являются правила, представляет собой естественный язык для реализации экспертных систем. В «Дополнительных сведениях» к гл. 19кратко обсуждалась связь правил Пролога с классическими системами, например такой, как система MYCIN.

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

Мы дадим вымышленный отчет о развитии простой экспертной системы для оценки просьб клиентов о кредите в некотором банке. Описание составлено с точки зрения специалистов по Прологу или инженеров знаний, которым банк поручил создать экспертную систему. Разработке предшествовал наиболее трудоемкий и длительный этап-выделение экспертных знаний. Набравшись мудрости, программисты обратились за консультацией к единственному эксперту по банковому делу-Чесу Манхэттену. И Чес поведал о трех факторах, предельно важных при рассмотрении просьбы клиента о кредите.

Самым важным фактором является обеспечение, которое может предложить клиент в случае свертывания предприятия. Различные типы обеспечения делятся по категориям. К обеспечению первого классаотносятся местные или внешние депозиты. Наличные товары - пример обеспечениявторого класса,в то время как обеспечение закладными и т.д. относится к категориинеликвидов.

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

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

Рассказывая об этих трех факторах, Чес использовал качественные оценки: «Клиент имеет превосходную оценку финансового положения или хорошую форму обеспечения. Его предприятие может обеспечивать умеренный доход и т.п.» Как видно, даже те понятия, которые могли бы определяться количественно, обсуждаются на уровне качественных представлений. Финансовый мир слишком сложен, чтобы определяться лишь постоянно вычисляемыми количественными оценками. При высказываниях своих мнений эксперты в области финансов стремятся размышлять в качественных терминах, что позволяет им чувствовать себя более спокойно. Для отражения выводов эксперта и поддержки дальнейшего взаимодействия с Чесом качественные рассуждения должны моделироваться.

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

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

Искушённый читатель, конечно, догадался о родословной персонажа "Chas Manhattan Bank"и не будет шокирован последующей «фамильярностью» авторов.Прим. Ред.

доход_банка.Первоначальная оценка клиента выполняется предикатомподходящий_профиль(Клиент).Затем предикатоценить(Профиль.Ответ)обеспечивает получение ответаОтветна основании оценки профиляПрофиль,выполненной указанными выше тремя модулями.

С гордостью, как инженеры знаний, отметим свойства описания верхнего уровня в предикате кредит/2.Здесь очевидна модульность системы. Каждый из модулей может разрабатываться независимо от остальной части системы. Кроме того, любые частные структуры данных определяются независимо от других, т.е. используется абстракция данных. Например, структурапрофиль(С,F,Y)представляет срез оценки обеспечения С, финансового положения Fи доходаYнекоторого клиента. При этом выбор такой структуры не затрагивает главных модулей и позволяет легко вводить изменения. Рассмотрим некоторые модули системы более подробно.

Остановимся на существенных свойствах модуля оценки обеспечения. Предикат оценка_обеспечения/2дает оценку обеспечения определенного клиента. Первый шаг состоит в определении соответствующего профиля клиента. Он выполняется предикатомпрофиль_обеспечения,который классифицирует обеспечение клиента как обеспечениепервого_класса, второго_классаилинеликвидноеи дает процент покрытия по каждому классу суммы кредита, запрашиваемого клиентом. Это отношение использует факты базы данных, касающиеся как банка, так и клиента. На практике базы данных для банка и для клиента могут быть разделены. Примеры фактов, представленные в программе 21.l,показывают, в частности, что местный денежный депозит является обеспечением первого класса.

Вычисленный профиль используется для получения оценки с помощью предиката оценка_обеспечения.Здесь для оценки обеспечения(превосходное, хорошееи т.п.) используются эмпирические правила. Первое правило предложенияоценка обеспечения,например, читается так: «Обеспечение оценивается как превосходное, если покрытие суммы запрашиваемого кредита обеспечением первого класса составляет не менее 100%»-

Две особенности программы заслуживают комментария. Первая состоит в том, что используемая в программе терминология -это терминология Чеса. Это сделало программу почти самодокументируемой и понятной экспертам по банковскому делу, которые могут модифицировать ее при незначительной помощи инженеров знаний. Использование понятий конкретной предметной области облегчает отладку программы и помогает в использовании независимых от предметной области «средств объяснения», обсуждаемых в разд. 19.2.Вторая особенность программы в том, что кажущаяся безыскусность правил оценивания обманчива. Существует немало знаний и эмпирических фактов, скрытых за этими простыми соотношениями. Выбор неудачных значений для этих параметров может привести к тяжелым потерям.

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

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

Программирование модулей оценки обеспечения и финансового положения клиента не вызывает -затруднений. Знания, полученные oтэксперта. почти нeпocредственно транслируются в текст программы. Однако модуль полной оценки клиента более сложен.

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

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

Наша система, очевидно, связана с решением одной общей задачи: отыскать результат на некоторой порядковой шкале, основываясь на качественных результатах нескольких порядковых шкал. Таким образом, правила решения задачи должны обеспечивать получение вывода на основе определенных факторов. Мы вновь «прижали» Чеса и были вознаграждены несколькими правилами. Вот одно из них: «Если клиент имеет превосходную (или еще лучшую) оценку обеспечения, хорошую (или еще лучшую) оценку финансового положения и по крайней мере приемлемый доход, то кредит представляется».

Некоторое промежуточное представление этого правила может выглядеть следующим образом:

оценить(профиль(превосходный,хороший,приемлемый),дать_кредит).

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

Потенциально существует проблема, связанная с использованием порядковых шкал: она обусловлена большим числом отдельных случаев, которые следует специфицировать. Если каждый из Nмодулей имеетМвозможных результатов, то существует Nвариантов, подлежащих рассмотрению. В общем случае невозможно иметь отдельное правило для каждого варианта. При этом возникают трудности не только размещения в памяти такого большого количества правил, но и поиска корректного правила. Поэтому мы определили небольшое множество специальных правил, одновременно покрывающих много вариантов, которых должно быть достаточно для клиентов данного банка. Для этих правил была выбрана структураправило (Условия,Вывод),гдеУсловия-список условий, при выполнении которых применимо это правило, аВывод-заключение, которое делается в результате применения правила. Условие имеет формуусловие (Фактор,Отношение.Оценка), утверждающее, что фактор с именемФакторсвязан с оценкойОценкаотношением с именемОтношение.

Отношение представляется стандартными операторами отношения <, =, >г т. п. Упомянутое ранее правило можно записать теперь следующим образом:

правило([условие(обеспечсние,''.превосходное),

условие(финансы,’’.хорошее),

условие(доход,’’,приемлемый)],дать кредит ).

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

правило([условие(обеспечение,' ='.хорошее), условие(финансы,' ='.хорошее), условие(доход,' ='.приемлемый)], рекомендуется_консультация).

Факторы могут упоминаться дважды, чтобы указать, что они лежат в определенном диапазоне, или могут вообще не упоминаться. Например, правило

правило([условие(обеспечение,''.умеренное), условие(финансы,''.среднее)],

отказать_в кредите).

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

Интерпретатор для этих правил представляется недетерминированной програм­мой. Эта процедура, как определяет правило оценить,«находит правило и проверяет условия его применения». Предикатпроверить (Условия,Профиль)используется для проверки того, что отношение между соответствующими символами в правиле и символами, связанными с профилемПрофильклиента, специфицируется условиямиУсловия.Для каждого типаТипусловия, которое может встретиться, необходимо определить шкалу, которая задается порядком значений. Примерами шкал, определяемых фактами в базе данных банка, могут служить шкалы:шкала([обеспечение,превосходное,хорошее,умеренное])ишкала(финансы, [превосходное .хорошее .среднее .плохое]).Предикатвыбрать_значениедоставляет соответствующий символ фактора при проверке порядка, которая реализуется предикатомсравнить.Он является предикатом доступа и, следовательно, единственным предикатом, зависящим от выбора структуры данных для профиля.

К этому этапу макетная программа должна быть протестирована. Для этого необходимы некоторые данные о реальных клиентах и ответы системы по этим клиентам, которые сопоставляются с теми ответами, которые соответствующий банк сообщает официально. Данные для клиента клиент!даны в программе 21.2. Ответом на вопроскредит( клиент 1,Х)будетдать_кредит.

Наша макетная экспертная система-это сплав стилей и методов, а не только реализация вывода «от цели к фактам». Для определения оценки обеспечения используются эвристические правила, для оценки финансового положения применен простой алгоритм, для выражения результатов в терминах значений из дискретных порядковых шкал используется язык правил с соответствующим интерпретатором. Интерпретатор правила действует в направлении от условий к заключению, а не наоборот, как в Прологе. Экспертные системы должны быть настолько сложными, чтобы использовать различные существующие в настоящее время формы знаний.

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

Наконец, была разработана программа контроля согласованности правил. Следующее метаправило демонстрирует очевидный принцип согласованности правил: «Если все факторы клиента Ане хуже факторов клиента Д, то результат клиентаАдолжен быть не хуже результата клиентаВ».

21.1. Дополнительные сведения

Более подробное описание системы кредитования можно найти в (Ben-Devidи Sterling. 1985).

кредит (Клиент, Ответ)

Ответ -ответ на просьбу клиентаКлиент окредите.

кредит (Клиент, Ответ) 

подходящий_профиль (Клиент),

оценка обеспечения (Клиент, Оценка Обеспечения),

оценка_финансового_положения (Клиент, ОценкаФинансовогоПоложения),

доход_банка (Клиент, Доход),

оценить (профиль (ОценкаОбеспечения,ОценкаФинансовогоПоложения,Доход),Ответ),

Модуль оценки обеспечения

оценка_обе течения (Клиент, Оценка)

Оценка-качественное описание, определяющее обеспечение, представляемое клиентомКлиентдля покрытия запроса кредита.

оценка_обеспечения (Клиент, Оценка) 

профиль_обеспечения (Клиент, Первый Класс, ВторойКласс, Неликвид), оценка_обеспечения(ПервыйКласс, Второй Класс, Неликвид, Оценка).

профиль_обеспечения (Клиент, ПервыйКласс, ВторойКласс, Неликвид) 

запрашиваемый_кредит (Клиент, Кредит),

процент обеспечения (первый_класс. Клиент, Кредит, ПервыйКласс),

процент_обеспечения(второй_класс, Клиент, Кредит, ВторойКласс),

процент обеспечения (Неликвид, Клиент, Кредит, Неликвид).

процент_обеспечения (Тип, Клиент, Итог, Стоимость) 

set_of(X,Обеспечение(обеспечение (Обеспечение, Тип),

сумма (Обеспечение, Клиент, X)), Xs),

sumlist(Xs,CyMMa),

Стоимость : =Сумма* 100/Итог.

Правила вычисления

вычисление_обеспечения (ПервыйКласс, ВторойКласс, Неликвид, превосходное) 

ПервыйКласс  100.

вычисление_обеспечения(ПервыйКласс, ВторойКласс, Неликвид, превосходное) 

ПервыйКласс > 70,ПервыйКласс +ВторойКласс 100.

вычисление_обеспечения (ПервыйКласс, ВторойКласс, Неликвид, хорошее) 

ПервыйКласс +ВторойКласс > 60,

ПервыйКласс +ВторойКласс < 70,

ПервыйКласс +ВторойКласс +Неликвид  100.

Данные банка: классификация обеспечения

обеспечение(местный_денежный_депозит,первый_класс). обеспечение(внешний_ленежный_депозит,первый_класс). обеспечение(документ_о_совершении_сделки,второй_класс).

обеспечение (закладная, неликвид).

Финансовая оценка

финансовая_оценка (Клиент.Оценка) 

Оценка- качественное описание, определяющее финансовую характеристику,представляемую клиентомКлиент для поддержки запроса кредита

финансовая оценка (Клиент, Оценка) 

финансовые_факторы (Факторы),

счет (Факторы, Клиент, 0,Счет),

калибровать(Счет, Оценка).

Соседние файлы в папке prolog14_end