Министерство образования и науки российской федерации федеральное агентство по образованию санктпетербургский государственный университет
Скачать 1.41 Mb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ И.А. Бессмертный ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ Учебное пособие Санкт-Петербург 2010 И.А.Бессмертный. Искусственный интеллект – СПб: СПбГУ ИТМО, 2010. – 132 с. Настоящее учебное пособие разработано в рамках дисциплины «Искусственный интеллект», преподаваемой на кафедре вычислительной техники СПбГУИТМО и включает в себя основы программирования на языке Prolog, решение задач методом поиска, вероятностные методы, основы нейронных сетей, а также принципы представления знаний с помощью семантических сетей. Каждый из разделов учебного пособия обеспечен практическими и лабораторными работами. В приложениях содержатся краткие описания среды SWI-Prolog, программы нейросетевого моделирования NeuroGenetic Optimizer и программы визуализации знаний Semantic. Для студентов специальностей 23010111, 23010104, 23010011, 23010020, 23010031, 023010032 Рекомендовано к печати ученым советом факультета КТиУ 19.01.2010, протокол №6. В 2009 году Университет стал победителем многоэтапного конкурса, в результате которого определены 12 ведущих университетов России, которым присвоена категория «Национальный исследовательский университет». Министерством образования и науки Российской Федерации была утверждена Программа развития государственного образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный университет информационных технологий, механики и оптики» на 2009–2018 годы. © Санкт-Петербургский государственный университет информационных технологий, механики и оптики, 2010 © Игорь Александрович Бессмертный 3 ОГЛАВЛЕНИЕ Введение ................................................................................................................... 5 1. Основы программирования на языке Prolog .................................................. 6 1.1. Prolog как декларативный язык ................................................................... 6 1.2. Понятие предиката ........................................................................................ 7 1.3. Как работает интерпретатор Пролога? ....................................................... 9 1.4. Факты и правила в Прологе ....................................................................... 11 1.5. Рекурсии в языке Prolog ............................................................................. 13 1.6. Рекурсии и итерации ................................................................................... 17 1.7. Отсечения в Прологе .................................................................................. 18 1.8. Красное и зеленое отсечения ..................................................................... 20 1.9. Списки в Прологе ........................................................................................ 21 1.10. Пример: Решение логической задачи о волке, козе и капусте ............. 22 1.11. Контрольные вопросы .............................................................................. 26 2. Решение проблем методом поиска ............................................................... 27 2.1. Что такое метод поиска .............................................................................. 27 2.2. Неинформированный поиск ...................................................................... 29 2.3. Информированный поиск .......................................................................... 31 2.4. Поиск в условиях противодействия .......................................................... 38 2.5. Шахматные программы .............................................................................. 41 2.6. Контрольные вопросы ................................................................................ 43 3. Поиск на основе логики ................................................................................. 44 4. Вероятностные рассуждения ......................................................................... 48 4.1. Нечеткая логика .......................................................................................... 48 4.2. Байесовские сети ......................................................................................... 49 4.3. Иллюстрация: Парадокс Монти Холл ...................................................... 53 4.4. Обучение на основе наблюдений .............................................................. 54 5. Нейронные сети .............................................................................................. 57 5.1. Принцип построения нейронных сетей .................................................... 57 5.2. Обучение нейронной сети .......................................................................... 59 5.3. Особенности использования нейронных сетей ....................................... 63 6. Экспертные системы ...................................................................................... 65 7. Семантические сети ....................................................................................... 68 7.1. Определение ................................................................................................ 68 7.2. Историческая справка ................................................................................. 68 7.3. Типы семантических сетей ........................................................................ 70 7.4. Типы отношений в семантических сетях ................................................. 72 7.5. Онтологии и правила наследования отношений ..................................... 75 7.6. Примеры ....................................................................................................... 76 7.7. Проблемы построения семантических сетей ........................................... 78 7.8. Факты и правила в семантической сети ................................................... 80 7.9. Интеллектуальный агент семантической сети ......................................... 82 7.10. Управление контекстом ........................................................................... 83 4 7.11. Семантическая сеть и Семантическая паутина ..................................... 84 7.12. Семантическая Паутина: принципы и текущее состояние ................... 85 8. Домашние задания и лабораторные работы ................................................ 88 8.1. Домашнее задание №1. Изучение работы Prolog программы ................ 88 8.2. Домашнее задание №2. Изучение алгоритмов поиска ............................ 89 8.3. Домашнее задание №4. Расчет сети Байеса ............................................. 91 8.4. Лабораторная работа №1. Прогнозирование с помощью нейронной сети .............................................................................................................................. 92 8.5. Лабораторная работа № 2. «Создание информационной системы на базе семантической сети» .......................................................................................... 94 Литература ............................................................................................................. 96 Приложение 1. Описание программы SWI-Prolog ............................................. 97 Приложение 2. Описание программы NGO (NeuroGenetic Optimizer) .......... 100 Приложение 3. Программа Semantic. Руководство пользователя .................. 110 1 Назначение и условия применения программы ........................................ 110 2 Характеристики программы ........................................................................ 110 3 Входные данные ........................................................................................... 111 3.1. Файл базы знаний ..................................................................................... 112 3.2. Файл онтологий ......................................................................................... 113 3.3. Правила в базе знаний .............................................................................. 115 3.4. Правила наследования ............................................................................ 115 3.5. Принципы идентификации объектов ...................................................... 116 4 Запуск программы ........................................................................................ 117 5 Интерфейс программы ................................................................................. 118 5.1. Граф семантической сети ......................................................................... 118 5.2. Элементы управления ............................................................................... 119 6 Управление контекстом ............................................................................... 124 7 Сообщения программы ................................................................................ 125 7.1. Сообщения в поле вывода ........................................................................ 125 7.2. Сообщения в окне Messages .................................................................... 126 5 Введение История искусственного интеллекта (ИИ) начинается задолго до нашей эры. Аристотель был первым, кто попытался определить законы «правильного мышления» или процессы неопровержимых рассуждений. Попытки создания механических счетных устройств в средние века сильно впечатляли современников. Наиболее известна машина Паскалина, построенная в 1642 г. Блезом Паскалем. Паскаль писал, что «арифметическая машина производит эффект, который кажется более близким к мышлению по сравнению с любыми действиями животных». Возможности же практической реализации ИИ появились с момента создания электронных вычислительных машин. В это время развернулась философская дискуссия на тему «Может ли машина мыслить?». Итогом этой дискуссии стал тест, предложенный Аланом Тьюрингом в 50-е гг. ХХ века [1]. Тест заключается в следующем: Имеются два телетайпа (в то время других терминальных устройств не было, сейчас бы предложили ICQ). Один из телетайпов подключен к машине, другой — к аппарату, за которым сидит человек. Несколько экспертов поочередно ведут диалог на каждом из телетайпов. Если большинство экспертов не смогут в течение пяти минут распознать в одном из собеседников машину, то тест Тьюринга считается пройденным успешно. Тест Тьюринга сыграл определенную роль в развитии искусственного интеллекта, в том числе и критика самого теста. Здесь можно провести аналогию с авиацией. Хорошими летательными аппаратами, по логике теста Тьюринга, должны считаться такие, которые неотличимы от птиц до такой степени, что даже птицы принимают их за своих. Развитие авиации началось тогда, когда конструкторы перестали копировать птиц, а занялись аэродинамикой, материаловедением и теорией прочности. Робототехника стала индустрией после того, как перестала копировать анатомию человека. Аналогично, субъекты искусственного интеллекта получили право на жизнь после того, как прекратились попытки построить системы ИИ, думающие и действующие подобно людям, а начали строить системы, действующие и думающие рационально, т.е. достигающие наилучшего результата. Последние достижения в области ИИ можно представить следующими коммерческими проектами [1]: z Автономное планирование и составление расписаний. Программа Remote Agent, разработанная в NASA, используется для комплексного управления работой космических аппаратов, удаленных далеко за пределы околоземной орбиты, в т.ч. диагностики и устранения неисправностей по мере их возникновения. 6 • Ведение игр. Программа Deep Blue компании IBM стала первой программой, которой удалось победить чемпиона мира в шахматном матче. • Автономное управление. Система компьютерного зрения Alvinn была обучена вождению автомобиля, придерживаясь полосы движения. На протяжении 2850 миль система обеспечивала управлении автомобилем в течение 98% времени. • Диагностика. Медицинские диагностические программы сумели достигнуть уровня опытного врача в нескольких областях медицины. • Планирование снабжения. Во время кризиса в Персидском заливе в 1991г. В армии США была развернута система DART (Dynamic Analysis and Re-planning), которая обеспечивала автоматизированное планирование поставок и составление графика перевозок, охватывая одновременно до 50000 автомобилей, людей и грузы. Разработчики этой системы заявили, что одно это применение окупило их 30-летние инвестиции в искусственный интеллект. 1. Основы программирования на языке Prolog 1.1. Prolog как декларативный язык Разработка языка Prolog началась в 1970 г. Аланом Кулмероэ и Филиппом Русселом. Они хотели создать язык, который мог бы делать логические заключения на основе заданного текста. Название Prolog является сокращением от "PROgramming in LOGic". Этот язык был разработан в Марселе в 1972г. Prolog – язык программирования, который основан не на алгоритме, а на логике предикатов. Если программа на алгоритмическом (процедурном) языке является последовательностью инструкций, выполняющихся в заданном порядке, то программа на Прологе содержит только описание задачи, а Пролог- машина выполняет поиск решения, руководствуясь этим описанием. Например, существует логическая задача покрытия шахматной доски ходом коня. На любом алгоритмическом языке решение этой задачи требует построения достаточно сложного алгоритма. На Прологе достаточно описать правила, по которым ходит конь, после чего Пролог самостоятельно отыщет решение. Обратной стороной такой простоты является ресурсоемкость программ. Например, в другой популярной задаче размещения на шахматной доске восьми ферзей, которые не бьют друг друга, полное дерево решений имеет 64 8 вершин. Очевидно, что нахождение решения в таком дереве займет неприемлемо много времени. Программирование на языке Пролог состоит из следующих этапов: • объявления некоторых фактов об объектах и отношениях между ними, • определения некоторых правил об объектах и отношениях между ними; • формулировки вопросов об объектах и отношениях между ними. 7 1.2. Понятие предиката Основным элементом программы на Прологе является предикат. С математической точки зрения предикат – это функция, которая возвращает бинарное значение (истина или ложь). В Прологе предикатом обозначается отношение между объектами, которое также может быть истинным. Рассмотрим понятие предиката в Прологе на примере звездной семьи Пугачевой – Киркорова, правда, теперь уже бывшей. Вначале запишем отношения типа родитель – ребенок. В синтаксисе Пролога выражение «Борис является родителем Аллы» выглядит следующим образом: parent(boris, alla). Здесьparent – это имя предиката, а boris и alla – аргументы. Аргументы boris и alla являются константами, поэтому записаны строчными буквами. С прописной буквы в Прологе начинаются переменные. Точка означает конец предиката, так же, как и конец предложения на естественном языке. Запишем также родительские отношения для других членов семьи: parent(bedros, filipp). parent(kristina, denis). parent(edmuntas, kristina). parent(vladimir, denis). parent(alla, kristina). Теперь дадим понятие «супруг» (spouse): spouse(filipp, alla). spouse(vladimir, kristina). Полученный набор предикатов образует базу знаний о звездной семье. Сравним с тем, как те же данные будут представлены в реляционной базе. Таблица Родители Parent Child Boris Alla Bedros Filipp Alla Kristina Edmuntas Kristina Kristina Deni Таблица Супруги S1 S2 Alla Filipp Kristina Vladimir Как видим, на уровне представления данных сходство налицо. Но на этом оно и кончается. Но на уровне извлечения данных имеет место большое различие. Реляционной базе данных для того, чтобы извлечь знания, требуется создать запрос на выборку данных, например, на языке SQL. Пусть, мы хотим узнать, кто родители Кристины. Мы должны написать запрос следующего вида: 8 SELECT Parent FROM Родители WHERE Child = "Kristina" В Прологе запрос на извлечение знаний описывается такими же предикатами, какими эти знания представляются. Если мы подставим Прологу такой предикат (предикат цели): parent(alla, kristina). Эта цель может быть прочитана следующим образом: Является ли Алла родителем Кристины? Сопоставив эту цель с содержимым базы знаний, Пролог установит, что данное утверждение истинно и сообщит об этом. Вышеприведенный SQL запрос (Кто является родителем Кристины?) в Прологе выглядит следующим образом: parent(X, kristina). Здесь X является переменной, которой должны быть присвоены искомые значения. Переменная в Прологе является аналогом местоимения или вопросительного слова. Из приведенной выше базы знаний Пролог извлечет два ответа: X = alla X = edmuntas Мы можем сформулировать вопрос следующим образом: Есть ли у Кристины родители? parent(_, kristina). Пролог выдаст ответ: Yes. Переменная, начинающаяся со знака подчеркивания называется анонимной переменной и может принимать любые значения (аналог местоимения некто). Для более сложных запросов в базах данных необходимо создавать представления (view) или создавать вложенные запросы в SQL. В Прологе все гораздо проще. Давайте найдем, чьей внучкой является Кристина. Запрос будет выглядеть следующим образом: parent(X, kristina), parent(Y, X). Данная запись означает: Найти Y, являющийся родителем X, который, в свою очередь, является родителем Кристины. Запятая в прологе идентична союзу "И" или конъюнкции. В ответ на такой запрос Пролог выдаст следующий ответ: X = alla Y = edmuntas Можно выдать следующий запрос: parent(alla, _). Теперь анонимная переменная использована в качестве второго аргумента. Этот запрос можно прочитать следующим образом: Есть ли у Аллы дети? Пролог выдаст ответ: Yes. Поскольку предикат – это бинарная функция, которая может возвращать истину либо ложь (высказывание, которое может также быть истинным или ложным), результат работы программы на Прологе – это определение, истинна или ложна цель. Присвоение значение переменным, вывод результатов и т.п. – 9 это всего лишь побочные результаты. |