Языки программирования интеллектуальных систем
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
Издательский Дом НИТУ «МИСиС»
Автор:
Карпович Елена Евгеньевна
Год издания: 2018
Кол-во страниц: 172
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-906953-51-3
Артикул: 752982.01.99
В учебнике рассматриваются вопросы проектирования интеллектуальных систем с использованием языков искусственного интеллекта и инструментальных средств поддержки их разработки. Описаны особенности жизненного цикла программного обеспечения интеллектуальных систем, модели представления знаний в интеллектуальных системах, языки программирования систем искусственного интеллекта, такие как языки Prolog, LISP и CLIPS. Предназначен для студентов, обучающихся в бакалавриате и магистратуре по направлениям подготовки 09.03.01 и 09.04.01 «Информатика и вычислительная техника».
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Москва 2018 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС» ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ Кафедра автоматизированного проектирования и дизайна Е.Е. Карпович ЯЗЫКИ ПРОГРАММИРОВАНИЯ ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМ Учебник Рекомендовано редакционно-издательским советом университета
УДК 004.43 К26 Р е ц е н з е н т ы : канд. техн. наук, доц. И.М. Крепков (НИУ МЭИ) д-р техн. наук, проф. В.В. Куприянов Карпович Е.Е. К26 Языки программирования интеллектуальных систем : учеб. / Е.Е. Карпович. – М.: Изд. Дом НИТУ «МИСиС», 2018. – 172 с. ISBN 978-5-906953-51-3 В учебнике рассматриваются вопросы проектирования интеллектуальных систем с использованием языков искусственного интеллекта и инструментальных средств поддержки их разработки. Описаны особенности жизненного цикла программного обеспечения интеллектуальных систем, модели представления знаний в интеллектуальных системах, языки программирования систем искусственного интеллекта, такие как языки Prolog, LISP и CLIPS. Предназначен для студентов, обучающихся в бакалавриате и магистратуре по направлениям подготовки 09.03.01 и 09.04.01 «Информатика и вычислительная техника». УДК 004.43 Карпович Е.Е., 2018 ISBN 978-5-906953-51-3 НИТУ «МИСиС», 2018
Оглавление Предисловие ..............................................................................................5 1. Методология разработки интеллектуальных систем .........................6 1.1. Назначение и структура интеллектуальной системы ................... 6 1.2. Особенности проектирования интеллектуальных систем ......... 13 1.3. Классификация языков программирования интеллектуальных систем ..................................................................... 17 2. Методы представления знаний ..........................................................26 2.1. Представление знаний в интеллектуальных системах ............... 26 2.2. Продукционная модель представления знаний .......................... 27 2.3. Семантические сети ........................................................................ 28 2.4. Фреймовая модель представления знаний ................................... 31 2.5. Логическая модель представления знаний .................................. 34 3. Язык программирования Prolog ........................................................39 3.1. Синтаксис языка Prolog ................................................................. 39 3.1.1. Основные элементы языка Prolog .......................................... 39 3.1.2. Представление клауз Хорна на языке Prolog. Факты. Правила. Вопросы ................................................................ 41 3.1.3. Пример простой программы на языке Prolog ....................... 44 3.1.4. Описание работы в среде программирования SWI-Prolog .......................................................................................... 46 3.2. Семантика языка программирования Prolog ............................... 52 3.3. Вычислительная модель логической программы ....................... 54 3.3.1. Унификация термов ................................................................ 54 3.3.2. Общая схема согласования целевых утверждений .............. 56 3.3.3. Механизм поиска с возвратом ................................................ 61 3.4. Рекурсивное программирование на языке Prolog ....................... 63 3.4.1. Рекурсивные правила .............................................................. 63 3.4.2. Схема поиска решений в рекурсивных программах .......... 65 3.4.3. Списки и их представление на языке Prolog ........................ 67 3.4.4. Множества и их представление на языке Prolog. Простые программы обработки множеств ..................................... 76 3.4.5. Prolog-программы сортировки списков ................................ 81 3.5. Стандартные предикаты языка Prolog .......................................... 83 3.5.1. Арифметические предикаты ................................................... 83 3.5.2. Предикаты сравнения арифметических выражений и символьных термов ........................................................................ 84
3.5.3. Предикаты определения типов термов .................................. 86 3.5.4. Предикаты ввода/вывода термов и символов ....................... 86 3.5.5. Cтандартные предикаты управления логическим выводом ......................................................................... 88 3.5.6. Стандартные предикаты обработки списков ........................ 91 3.5.7. Стандартные предикаты для работы с базой данных .......... 92 3.6. Проектирование экспертных систем на языке Prolog ................. 93 3.6.1. Назначение и структура экспертной системы ..................... 93 3.6.2. Представление знаний с помощью предложений языка SWI-Prolog .............................................................................. 95 3.6.3. Механизм логического вывода ............................................. 97 3.6.4. Система пользовательского интерфейса ............................... 98 3.6.5. Пример экспертной системы, базирующейся на правилах ........................................................................................ 99 4. Функциональный язык программирования LISP ...........................108 4.1. Функциональный стиль программирования .............................. 108 4.2. Синтаксис языка LISP ....................................................................110 4.3. Стандартные функции языка LISP ...............................................113 4.4. Создание пользовательских функций ......................................... 125 4.5. Рекурсивные функции .................................................................. 131 4.6. Рекурсивные функции обработки списков ................................. 133 5. Среда разработки экспертных систем CLIPS .................................142 5.1. Синтаксис языка CLIPS ................................................................ 142 5.2. Стандартные функции языка CLIPS ........................................... 149 5.3. Примеры создания пользовательских процедурных и рекурсивных функций ...................................................................... 155 5.4. Продукционная база знаний в среде CLIPS ............................... 160 Библиографический список ................................................................ 170
Предисловие В учебнике рассмотрены методы и инструментальные средства разработки интеллектуальных систем. Учебник написан в соответствии с программой учебной дисциплины «Интеллектуальные подсистемы САПР» и состоит из пяти глав. В первой главе дан краткий обзор истории развития искусственного интеллекта (ИИ) как раздела информатики, описаны особенности проектирования интеллектуальных систем и их частного случая – экспертных систем. Кратко рассмотрены языки программирования для ИИ. Во второй главе описаны основные модели представления знаний, применяемые в проектировании экспертных систем. В третьей главе подробно описан синтаксис и семантика языка PROLOG на примере версии SWI PROLOG. Рассмотрен пример простой экспертной системы на языке SWI PROLOG. В четвертой главе рассмотрена функциональная парадигма программирования на примере языка LISP, который является первым языком искусственного интеллекта. Описан синтаксис версии Common Lisp Works языка LISP, приведены примеры программ. Пятая глава посвящена среде разработки экспертных систем CLIPS. В этой главе дан обзор синтаксиса языка CLIPS, рассмотрены стандартные функции системы CLIPS, описана продукционная модель представления знаний и приведен пример ее использования в среде CLIPS. Учебник составлен по материалам лекций, прочитанных автором студентам бакалавриата и магистратуры.
1. МЕТОДОЛОГИЯ РАЗРАБОТКИ ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМ 1.1. Назначение и структура интеллектуальной системы Под интеллектуальными системами понимают любые биологические, искусственные или формальные системы, проявляющие способность к целенаправленному поведению. Такое поведение включает свойства (проявления) общения, накопления знаний, принятия решений, обучения, адаптации и т.д. В настоящее время существует устойчивая тенденция интеллектуализации компьютеров и их программного обеспечения (ПО). Основные функции будущих компьютеров – решение задач в большей степени невычислительного характера, в том числе логический вывод, управление базами знаний (БЗ), обеспечение интеллектуальных интерфейсов и др. Интеллектуализация компьютеров осуществляется за счет разработки как специальной аппаратуры (например, нейрокомпьютеры), так и ПО (экспертные системы, базы знаний, решатели задач и т.д.). Рабочее определение понятия «интеллектуальная система» предложено Д.А. Поспеловым. Система считается интеллектуальной, если в ней реализованы следующие три базовые функции: 1. Функция представления и обработки знаний. Интеллектуальная система должна быть способна накапливать знания об окружающем мире, классифицировать и оценивать их с точки зрения прагматики и непротиворечивости, инициировать процессы получения новых знаний, соотносить новые знания со знаниями, хранящимися в базе знаний. 2. Функция рассуждения. Интеллектуальная система должна быть способна формировать новые знания с помощью логического вывода и механизмов выявления закономерностей в накопленных знаниях, получать обобщенные знания на основе частных знаний и логически планировать свою деятельность. 3. Функция общения. Интеллектуальная система должна быть способна общаться с человеком на языке, близком к естественному языку (ЕЯ), и получать информацию через каналы, аналогичные тем, которые использует человек при восприятии окружающего мира (прежде всего, зрительный и звуковой). Такая система должна уметь форми
ровать «для себя» или по просьбе человека объяснения собственной деятельности (т.е. отвечать на вопросы типа «Как я это сделал?»), оказывать человеку помощь за счет знаний, которые хранятся в ее памяти, и логических средств рассуждения. Другими словами, интеллектуальная система (англ. intelligent system) – это техническая или программная система, способная решать задачи, традиционно считающиеся творческими, принадлежащие конкретной предметной области, знания о которой хранятся в памяти такой системы. Структура интеллектуальной системы включает три основных блока – базу знаний, механизм вывода решений и интеллектуальный интерфейс. Интеллектуальные системы изучаются группой наук, объединяемых под названием «искусственный интеллект». База знаний (БЗ; knowledge base – KB) в информатике и исследованиях ИИ – это особого рода база данных, разработанная для оперирования знаниями (метаданными). Полноценные БЗ содержат в себе не только фактическую информацию, но и правила вывода, допускающие автоматические умозаключения о вновь вводимых фактах и, как следствие, осмысленную обработку информации. Область наук об ИИ, изучающая базы знаний и методы работы со знаниями, называется инженерией знаний. Инженерия знаний представляет собой совокупность моделей, методов и технических приемов, нацеленных на создание систем, которые предназначены для решения проблем с использованием знаний. Знания – это информация с ограниченной семантикой, однако с позиции прикладных аспектов необходимо, чтобы знания имели такую форму, которой была бы в определенной степени свойственна свобода достижения поставленной цели. В какой именно степени допустима эта свобода, или каким условиям должны отвечать знания, включая и их описательные возможности, зависит от области их приложения. В сфере технического применения и в экономике используется самая разнообразная среда представления и помимо языкового описания она включает рисунки, математические формулы и т.п. Инженерия знаний заняла свое место как технология применения знаний, когда вышла из недр ИИ и продолжала интенсивно развиваться все последние года. Существом ИИ можно считать научный анализ и автоматизацию интеллектуальных функций человека. Однако для большинства проблем общей реальностью является трудность их машинного воплощения.
Исследования по ИИ позволили утвердиться во мнении, что подлинно необходимыми для решения проблем являются знания экспертов. То есть, если создать систему, способную запоминать и использовать знания экспертов, то она найдет применение в практической деятельности. И когда исследователи по ИИ действительно разработали подобного ряда системы в конце 1960-х и начале 1970-х годов такие, как системы DENDRAL, а позднее MYCIN, созданные под руководством Э. Фейгунбаума в Стэнфордском университете США, все эти воззрения были подтверждены. Поскольку эти системы накапливают в памяти компьютера знания экспертов и используют эти знания для решения проблем, извлекая их при необходимости из памяти, то они получили название экспертных, а профессор Э. Фейгенбаум, являющийся одним из создателей экспертных систем (ЭС), выдвинул для данной области техники название «инженерия знаний». Фактически инженерия знаний – это методология ЭС, которая охватывает методы добычи, анализа и выражения в правилах знаний экспертов. Развитие ЭС создало инженерию знаний – процесс построения интеллектуальных систем. Инженерия знаний тесно связана со всем процессом разработки интеллектуальных информационных систем в целом и ЭС в частности – от возникновения замысла до его реализации и совершенствования. Главными элементами инженерии знаний являются использование операций типа обобщение, генерация гипотез для индуктивных выводов, подготовка новых программ самими компьютерными программами и т.д. Слово engineering в английском языке означает искусная обработка предметов, изобретение или создание чего-либо. Следовательно, работу по оснащению программ специальными экспертными знаниями из проблемной области, выполняемую человеком либо компьютером (программой), также можно назвать инженерией знаний. Искусственный интеллект как наука был основан тремя поколениями исследователей. В табл. 1.1 представлены ключевые события в истории ИИ и инженерии знаний, начиная с первой работы Маккалока и Питса в 1943 г. и до современных тенденций в комбинированных усилиях экспертных систем, нечеткой логики и нейронных вычислений в современных системах, основанных на знаниях, способных осуществлять вычисления с помощью слов.
Таблица 1.1 Краткий перечень главных событий в истории ИИ и инженерии знаний Период События Рождение ИИ (1943–1956) Маккалок и Питс: Логическое исчисление идей, присущих нервной деятельности, 1943. Тьюринг: Вычислительная машина и интеллект, 1950. Шеннон: Программирование компьютера для шахматной игры, 1950. Подъем ИИ (конец 1956–1960) Маккарти: LISP – язык программирования искусственного интеллекта. Куллиан: Семантические сети для представления знаний, 1966. Ньюэл и Саймон: Универсальный решатель задач (GPS), 1961. Минский: Структуры для представления знаний (фреймы), 1975. Открытие и разработка экспертных систем (начало 1970-х – середина 1980-х) Фейгенбаум, Буханан и др. (Стэндфордский университет): Экспертная система DENDRAL Фейгенбаум и Шортлиф: Экспертная система MYCIN; Стэндфордский исследовательский центр: Экспертная система PROSPECTOR. Колмероэ, Ковальски и др. (Франция): Язык логического программирования P. Возрождение искусственный нейронных сетей (1965 и далее) Хопфилд: Нейронные сети и физические с эмержентными коллективными вычислительными способностями, 1982. Кохонен: Самоорганизующиеся топологически правильные карты, 1982. Румельхарт и Макклеланд: Распределенная параллельная обработка данных, 1986. Эволюционное вычисление (начало 1970-х и далее) Рехенберг: Эволюционные стратегии – оптимизация технических систем по принципам биологической информации, 1973. Холланд: Адаптация в естественных и искусственных системах, 1975. Коза (J.R. Koza): Генетическое программирование: компьютерное программирование средствами естественного отбора, 1992. Фогель: Эволюционное вычисление – направление новой философии в машинном интеллекте, 1995. Нечеткие множества и нечеткая логика (середина 1960-х и далее) Заде: Нечеткие множества, 1965. Заде: Нечеткие алгоритмы, 1969. Мамдани: Применение нечеткой логики в приближенном рассуждении с использованием лингвистического синтеза, 1977. Вычисления с помощью слов (конец 1980-х и далее) Нейгоца: Экспертные системы и нечеткие системы, 1985. Коско: Нейронные сети и нечеткие системы, 1992. Коско: Нечеткое мышление, 1993. Ягер и Заде: нечеткие множества, нейронные сети и мягкие вычисления, 1994. Коско: Нечеткая инженерия, 1996. Заде: Вычисления при помощи слов, 1996.
Таким образом, исторически разработки в области ИИ велись в двух основных направлениях: – первое направление связано с попытками разработки интеллектуальных машин путем моделирования их биологического прототипа – человеческого мозга. Сейчас это направление возрож дается на основе развития современных аппаратных и программ ных средств (микрочипы на основе нечеткой логики, распределенные многопроцессорные системы, многоагентные системы, мягкие вычисления, генетические алгоритмы и нейронные сети и т.д.; – второе направление связано с разработками методов, приемов, специализированных устройств и программ для компью теров, обеспечивающих решение сложных математических и ло гических задач, позволяющих автоматизировать отдельные ин теллектуальные действия человека (системы, основанные на знаниях, экспертные системы, прикладные интеллектуальные системы). Наиболее распространенным классом интеллектуальных систем являются ЭС. Экспертная система – это система, которая использует человеческие знания, встраиваемые в компьютер, для решения задач, которые обычно требуют человеческой экспертизы. Хорошо разработанные системы имитируют процесс рассуждения экспертов, используя это для решения специфических задач. Такие системы могут использоваться не экспертом для улучшения их способностей и возможностей в решении задач определенного класса в конкретной предметной области. Экспертные системы могут быть также использованы для распространения источников редких знаний. В конечном счете такие системы могут функционировать лучше, чем некоторые отдельные эксперты, при выработке решения или суждения в специфической, обычно узкой области экспертизы. Эта возможность может иметь значительное влияние как на деятельность таких профессиональных консультантов, как финансовые аналитики, юристы, аудиторы и др., так и на организации и их менеджмент. Технологию построения ЭС часто называют инженерией знаний. Этот процесс требует специфической формы взаимодействия создателя ЭС, которого называют инженером знаний, и одного или нескольких экспертов в некоторой предметной области. Инженер знаний «извлекает» из экспертов процедуры, стратегии, эмпирические правила, которые они используют при решении задач и встраивает эти знания в ЭС ( рис. 1.1).