Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Языки программирования интеллектуальных систем

Покупка
Артикул: 752982.01.99
Доступ онлайн
2 000 ₽
В корзину
В учебнике рассматриваются вопросы проектирования интеллектуальных систем с использованием языков искусственного интеллекта и инструментальных средств поддержки их разработки. Описаны особенности жизненного цикла программного обеспечения интеллектуальных систем, модели представления знаний в интеллектуальных системах, языки программирования систем искусственного интеллекта, такие как языки Prolog, LISP и CLIPS. Предназначен для студентов, обучающихся в бакалавриате и магистратуре по направлениям подготовки 09.03.01 и 09.04.01 «Информатика и вычислительная техника».
Карпович, Е. Е. Языки программирования интеллектуальных систем : учебник / Е. Е. Карпович. - Москва : Изд. Дом НИТУ «МИСиС», 2018. - 172 с. - ISBN 978-5-906953-51-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1232242 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Москва 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). 

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

Рис. 1.1. Схема взаимодействия между пользователями и ЭС

Необходимо выяснить, каким объемом экспертных знаний в данной области и какими навыками должен обладать специалист, чтобы 
быть квалифицированным в качестве эксперта?
Обычно человеческая экспертиза включает многогранное интеллектуальное поведение, которое вовлекает в процесс следующие 
виды деятельности:
 – выявление и формулировка проблемы и задачи;
 – решение задачи быстро и надлежащим образом;
 – объяснение решения;
 – обучение из опыта;
 – реструктуризация знаний;
 – устранение при необходимости от устоявшихся правил и шаблонов;
 – определение уместности и соответствия;
 –  осознание ограничений.
Для имитации эксперта-человека необходимо создать компьютерную систему, проявляющую все эти характеристики. Однако в современных ЭС прежде всего исследованы и разработаны вторая и третья 
из этих видов деятельности (решение задач и объяснение решений).
Целью ЭС является проведение экспертизы путем аккумуляции 
знаний от экспертов и предоставлению их другим людям (не экспертам). В этот процесс вовлечены четыре вида деятельности: извлечение знаний (из экспертов или других источников), представление знаний (в компьютере), вывод знаний и передача знаний пользователю. 
Знания хранятся в компьютере в БЗ.
Уникальной чертой ЭС является их способность рассуждать («думать»). Имеется в виду, что необходимые знания для экспертизы 
хранятся в БЗ, программа может иметь доступ к соответствующим 
данным в БД, а ЭС может делать логический вывод, получая нужное 
знание, зачастую не хранящееся в явном виде в БЗ. Процесс вывода 
осуществляется составляющей системы, которая называется машиной вывода.
Другой особенностью ЭС является ее способность объяснять свои 
советы или рекомендации. Объяснение и обоснование производятся 
подсистемой объяснений. Она дает возможность системе проверять 
свои рассуждения и объяснять их действия.

Доступ онлайн
2 000 ₽
В корзину