дб. Четвертое издание джозеф Джарратано Университет Хьюстон клиэрЛэйк Гари Райли People5oft, Издательский дом "Вильямс" Москва СанктПетербург Киев 2007 ббк 32. 973. 26 018 75 Д
Скачать 3.73 Mb.
|
инициализация и удаление обработчиков сообщений Атрибут storage Модификация и дублирование экземпляров Классы и универсальные функции Функции запроса множества экземпляров Определение того, успешно ли выполнен запрос Определение экземпляров, удовлетворяющих запросу Выполнение действий над экземплярами, удовлетворяющими запросу Множественное наследование Конфликты, связанные с множественным наследованием Сохранение и восстановление значений слотов Конструкции de f clas s и de f module Загрузка и сохранение экземпляров Резюме Задачи Содержание 17 Глава 12. Примеры проектов экспертных систем Введение 12.2 Коэффициенты достоверности 12.3 Деревья решений Деревья решений с несколькими ребрами Деревья решений, позволяющие проводить обучение Программа для работы с деревом решений, основанная на правилах Пошаговая трассировка программы обучения дерева решений Обратный логический вывод Алгоритм работы программы обратного логического вывода Представление правил обратного логического вывода в языке CLIPS Машина обратного логического вывода на языке CLIPS Поэтапная трассировка работы программы обратного логического вывода 12.5 Задача текущего контроля Формулировка задачи Уточнение деталей, с которого должна начинаться разработка Определения структур представления знаний Управление работой программы Чтение бесформатных показаний датчиков Распознавание тенденций Формирование предупреждающих сообщений 12.6 Резюме Задачи Приложение А. Некоторые широко применяемые эквивалентности Приложение Б. Некоторые элементарные кванторы и их значение Приложение В. Некоторые свойства множеств Приложение Г. Информация о поддержке Приложение Д. Общие сведения о командах и функциях Приложение Е. Определение языка в нормальной форме Бэкуса — Наура Приложение Ж. Программные ресурсы Приложение Литература Предметный указатель 949 949 949 955 957 959 961 967 972 972 975 978 980 986 987 990 992 995 995 1004 1008 1011 1012 1015 1017 1019 1021 1023 1059 1069 1119 Предисловие Рекомендации по эффективному использованию КНИГИ Данное четвертое издание представляет собой результат существенного пересмотра известного во всем мире учебника по экспертным системами разработке программного обеспечения с помощью инструментария языка экспертных систем Коммерческое внедрение экспертных систем началось в х годах с тех пор непрерывно происходит их беспрецедентное развитие и распространение. В настоящее время экспертные системы широко применяются в бизнесе, науке, технике, сельском хозяйстве, на производстве, в медицине, в видеоиграх, а также практически в любом направлении человеческой деятельности. В действительности трудно представить себе такую область, в которой бы в наши дни не использовались экспертные системы. Настоящая книга позволяет усвоить значительный объем знаний в области теории и программирования экспертных систем. Теоретический материал изложен на уровне, доступном для восприятия студентов старших курсов и аспирантов, интересующихся экспертными системами, которые специализируются в области компьютерных наук, информационных управленческих систем, в программотехнике и других областях. Новые термины обозначаются полужирным шрифтом и сопровождаются пояснениями. Для поиска пояснений к используемым терминам можно воспользоваться предметным указателем. В книге приведены многочисленные примеры и ссылки, позволяющие уточнить смысл излагаемого материала и получить указания по выбору дополнительной литературы. Кроме того, в новом, м издании в приложении Ж приведены ссылки на многие новые бесплатные и испытательные версии программных инструментальных средств, которые могут служить основой для выполнения дополнительных упражнений, а также указано, где можно найти вспомогательные учебные материалы. Описание каждой новой темы, как правило, проводится в историческом контексте, что позволяет непросто пользоваться готовыми результатами, но и понять, какова была цель разработки тех или иных методов. Тем самым авторы Предисловие 19 стремились поставить в основу обучения подход, позволяющий понять, чем была вызвана необходимость в разработке новых способов решения задача не такой подход, при котором обучение напоминает преподавание на курсах, где просто показывают, как использовать то или иное приложение. Книга Экспертные системы принципы разработки и программирование включает сведения, относящиеся к двум основным направлениям, — теоретический материал излагается в главах 1 — 6, а сведения по программированию с использованием инструментария языка экспертных систем приведены в главах 7 — 12. Таким образом, впервой половине книги излагается теория экспертных систем и показано, какое место занимают экспертные системы во всем объеме компьютерных наук. Безусловно, предварительное знакомство с областью искусственного интеллекта может оказаться полезным, но настоящая книга содержит отдельное введение в тематику искусственного интеллекта, приведенное в главе 1, объем которого достаточен для изучения экспертных систем. Разумеется, водной главе невозможно изложить все чему посвящены целые книги по искусственному интеллекту. Но данная глава поможет получить общее представление и об искусственном интеллекте, и о том, для чего предназначены экспертные системы. В целом в первых шести главах книги рассматриваются логика, теория вероятностей, структуры данных, основные понятия искусственного интеллекта и другие темы, которые лежат в основе теории экспертных систем. Авторы стремились изложить теорию, на которой базируются экспертные системы, чтобы дать возможность читателю принять обоснованное решение по выбору подходящего направления использования технологии экспертных систем. Мы хотели подчеркнуть важную мысль, что экспертные системы следует рассматривать как одно из инструментальных средств в арсенале разработчика, и поэтому постараться понять, в чем состоят их преимущества и недостатки. В излагаемых теоретических сведениях дано также описание того, как экспертные системы связаны с другими методами программирования, такими как процедурное программирование. Еще одной причиной повышенного внимания к изложению теоретических сведений было стремление подготовить читателя к тому, чтобы он мог самостоятельно изучать современные научно-исследовательские статьи по экспертным системам. Но следует отметить, что экспертные системы создаются в соответствии с потребностями многих разных теоретических и практических направлений, поэтому на первых порах при чтении таких статей для достижения полного понимания придется преодолевать трудности. Вторая половина данной книги представляет собой вводное описание инструментария языка экспертных систем CLIPS. В этих главах дано практическое введение в программирование экспертных систем, позволяющее объяснить и закрепить теоретические знания, изложенные в первых главах книги. Но также, как нелишней окажется предварительная подготовка при изучении теоретических сведений 20 Предисловие изложенных в данной книге, сведения о программировании будут более доступными для читателей, имеющих некоторый опыт работы на языке высокого уровня. Процесс разработки экспертных систем, предназначенных для решения практических задач, демонстрируется с использованием языка CLIPS — современного мощного инструментального средства создания экспертных систем. Еще одним новым средством, описанным в данном издании, является язык COOL (CLIPS Object-Oriented Language — объектно-ориентированный язык CLIPS). Язык COOL позволяет разрабатывать экспертные системы исключительно с использованием объектов или осуществлять гибридный подход на основе применения и правили объектов. Преимуществом объектно-ориентированного подхода является то, что объекты позволяют более легко группировать множества структур представления знаний в крупные коллекции, чем при использовании отдельных правил. Язык COOL предоставляет все общепринятые возможности работы с объектами (в том числе множественное наследование, что позволяет легко дополнять объекты более специализированными структурами представления знаний, а не "изобретать колесо" и каждый раз разрабатывать код с нуля, как при использовании систем, основанных исключительно на правилах. Кроме того, в настоящем издании обсуждаются средства процедурного программирования языка CLIPS, включая глобальные переменные, функции, а также универсальные функции. Первая версия языка CLIPS была разработана NASA в Космическом центре Джонсона. Входе этой разработки один из авторов данной книги, Гэри Райли (Gary Riley), выполнял функции ведущего программиста по разработке компонентов системы, основанных на правилах, а другой автор, Джозеф К. Джарратано (Joseph Сработал в качестве консультанта и подготавливал официальные версии руководств пользователя языка CLIPS для NASA. В настоящее время язык используется для реализации важных проектов в сфере государственного управления, в бизнесе, промышленности и буквально повсеместно. Поиск сведений об экспертных системах, написанных на языке CLIPS, проведенный с помощью любой машины поискав Интернете, приводит к обнаружению сотен и даже тысяч ссылок. Кроме того, этот поиск позволяет обнаружить, что язык CLIPS входит в программу обучения многих университетов во всем мире. Исходный код программного обеспечения языка CLIPS является переносимым, поэтому система CLIPS может эксплуатироваться практически на любом компьютере и под управлением любой операционной системы, которая поддерживает компилятор ANSI С или С. К данной книге прилагается компакт-диск, содержащий исполняемые файлы CLIPS для Windows и MacOS, руководства Reference Manual и CLIPS Уюеп Guide, а также хорошо документированный полный исходный код С для Предисловие 21 В процессе проведения некоторых курсов по экспертным системам осуществляется разработка проектов с заданными сроками. Участие в проекте — превосходный способ приобретения навыков создания экспертных систем. Студенты обычно успевают закончить разработку небольших экспертных систем с количеством правил от 50 до 150, участвуя по своему выбору водном из проектов, рассчитанных на семестр. На основе настоящей книги созданы тысячи проектов и организованы сотни курсов по многим направлениям, включая медицинскую диагностику, диагностику неисправностей в автомобилях, планирование работы такси, планирование работы персонала, управление компьютерными сетями, прогнозирование погоды, предсказание ситуаций на фондовой бирже, консультирование покупателей потребительских товаров и многие другие направления. Проведя поиск в Интернете с использованием машины поиска, читатель сможет получить сведения о многочисленных курсах и воспользоваться такими информационными ресурсами, как слайды в формате, программы курсов лекций и учебные задания, разработанные университетами во всем мире. Ниже приведен рекомендуемый план проведения курсов продолжительностью один семестр. 1. Пройти материал главы 1 для ознакомления с кратким введением в тематику экспертных систем. В частности, дать задание студентам решить задачи 1.1, 1.2 и 1.3. 2. Пройти материал глав 7 — 10 для ознакомления с основными сведениями по программированию на языке CLIPS. Для студентов полезно было бы повторно составить программу решения задачи 1.2 из главы 1, чтобы сравнить подход, основанный на языке экспертных систем, стем подходом, который предусматривает использование языка, первоначально рассматриваемого в главе 1. Такое сравнение является очень полезным, поскольку позволяет проще понять различия между таким языком, основанном на правилах, как CLIPS (или языком искусственного интеллекта наподобие LISP или PROLOG), и языком, который первоначально использовался при решении задачи 1.2. Еще один вариант состоит в том, что после изучения материала главы 10 преподаватель может вернуться к теоретическим главам книги. Если студенты имеют хорошую подготовку в логике и языке PROLOG, то значительную часть глав 2 и 3 можно пропустить. Если требуется сделать особый упорна логику и фундаментальную теорию экспертных систем, то студентам пойдет на пользу изучение глав 2 и 3, независимо оттого, прошли они вступительный курс по искусственному интеллекту на основе языка LISP или нет. Если студенты имеют качественную подготовку в теории вероятностей и математической статистике, то материал главы вплоть до раздела 4.11 можно пропустить Предисловие 3. В главах 4 и 5 обсуждаются темы, касающиеся учета неопределенности. Это очень важно, поскольку людям постоянно приходится решать задачи, связанные с неопределенностью, и без этого экспертные системы стали бы не более значимыми по сравнению с простыми деревьями решений. К основным темам при изучению проблематики неопределенности относятся вероятностный и байесовский логический вывод, коэффициенты достоверности теория Демпстера — Шефера и теория нечетких множеств. Студенты приобретают достаточно широкие знания, относящиеся к этим методам, чтобы иметь возможность читать современные статьи в этой области и приступить к выполнению исследований, если есть такая необходимость. 4. В главе рассматриваются темы приобретения знаний и программотехники экспертных систем это означает, что для студентов открывается перспектива работы над крупными экспертными системами. С другой стороны, приступать к изучению этой главы, прежде чем студентам будет поручен проект с заданными сроками, нет необходимости. В действительности было бы лучше пройти данную главу в последнюю очередь, чтобы студенты могли сами оценить значение всех факторов, от которых зависит создание качественной экспертной системы. Дополнительные ресурсы мире. Дополнительные материалы к данной книге представлены на сопровождающем ее узле. Для того чтобы ознакомиться стем, что входит в состав этих материалов и каковы условия их получения, перейдите по адресу http: //www. course corn и проведите поиск, указав ISBN англоязычного издания настоящей книги (0534384471) в поле Find:. Кроме того, в связи с изложением многих тем в самой книге приведены многочисленные ссылки на программное обеспечение и другие ресурсы, доступ к которым можно получить через Web. Эти ресурсы были выбраны так, чтобы студенты могли лучше усвоить на практике такие темы, как логика и теория вероятностей, используя программное обеспечение для проведения экспериментов с нетривиальными задачами, а не решая задачи только на бумаге. Было также включено большое количество ресурсов, относящихся к искусственному интеллекту, логике, теории вероятностей, байесовскому логическому выводу, нечеткой логике и другим темам, чтобы студенты смогли получить более широкие знания в области искусственного интеллекта и ознакомиться с деятельностью сообщества пользователей экспертных систем во всем Предисловие 23 Участники разработки языка CLIPS Мы хотели бы поблагодарить всех тех, кто внес свой вклад в успешное завершение проекта по созданию языка CLIPS. Как ив случае с любым крупным проектом, CLIPS — результат усилий многих людей. Основными участниками разработки были Роберт Сэйвли (Robert Savely), руководитель исследовательских работ по современным программным технологиям компании который сформулировал замысел проекта и обеспечил общее руководство и поддержку Крис Калберт (Chris руководитель отделения программной технологии, который руководил проектом и написал первоначальную версию справочного руководства CLIPS Reference Manual; Гари Райли (Gary Riley), который проектировали разработал часть основанную на правилах, является одним из авторов руководств Reference Manual и CLIPS Architecture Manual, разработал интерфейс Macintosh для CLIPS, а в настоящее время сопровождает систему CLIPS и ведет официальный узел (http: //www. ghg. net/clips/CLIPS . html); Брайен Доннелл (Brian Donnell), который разработал язык COOL (CLIPS Object Oriented Language — объектно-ориентированный языки был одним из авторов руководств CLIPS Reference Manual и Architecture Manual; Биби Лай (ВеЬе Ly), который разработал интерфейс Х Window для CLIPS; Крис Ортис (Chris Ortiz), который разработал интерфейс Windows 3.1 для доктор Джозеф Джарратано (Dr. Joseph Giarratano) из Университета Хьюстон Клиэр Лэйк, который подготовил официальную версию руководства CLIPS User Guide для прилагаемую к каждому выпуску CLIPS в агентстве NASA; и особенно Фрэнк Лопес (Frank Lopez), который написал первоначальную версию прототипа CLIPS. 24 Предисловие Благодарности Вовремя написания настоящей книги авторы имели возможность руководствоваться весьма полезными комментариями многих специалистов, включая следующих Тэд Лейбфрид (Ted Leibfried), Джин Лесли (Jeanne Leslie), Мак Амфри (Мас Umphrey), Тэрри Фиджин (Terry Feagin), Деннис Мэрфи (Dennis Murphy), Дженна Джарратано (Jenna Giarratano) и Мелисса Джарратано (Melissa Giarratano). Мы хотели бы также поблагодарить рецензентов четвертого издания за сделанный ими важный вклад Чиен-Чань Чена (Chien-Chung Chan), Университет Экрон; Константина Вассилиадиса (Constantine Vassiliadis), Университет штата Огайо Дженни Скотт (Jenny Scott), Университет Конкордия, Канада и Энтони Зигмонта (Anthony Zygmont), Университет Вилланова. Мы хотели бы также выразить свою благодарность многим людям, которые вносили различные усовершенствования в систему CLIPS в течение всех двадцати лет, начиная с первого выпуска этой системы в 1985 году. Благодаря тому что полный исходный код системы CLIPS был в свое время предоставлен без ограничений во всеобщее пользование, у сообщества программистов, работающих в рамках движения за создание программного обеспечения с открытым исходным кодом, появилась возможность внести свой вклад в доработку этой системы. В результате мощь и популярность CLIPS возросли до такой степени, о которой мы не смели даже мечтать в 1985 году, впервые приступая к разработке CLIPS. В то время экспертные системы все еще представляли собой новую и непроверенную технологию, и никто не знал, выдержат ли они проверку временем. Аза последние двадцать лет система CLIPS, некогда бывшая скромным начинанием в NASA, выросла до такой степени, что ее использует всемирное сообщество специалистов, состоящее из тысяч людей, которые доказывают преимущества CLIPS практически в любой области. Мы хотим особо поблагодарить всех разработчиков, которые улучшили функциональные характеристики и расширили возможности системы CLIPS, благодаря чему некогда небольшой и рискованный проект, предназначенный лишь для элементарной проверки технологии искусственного интеллекта в превратился в мировой феномен. В числе тех людей, которые внесли особый вклад в распространение экспертных систем, |