Главная страница
Навигация по странице:

  • 8. Домашние задания и лабораторные работы 8.1. Домашнее задание №1. Изучение работы Prolog программы

  • 8.2. Домашнее задание №2. Изучение алгоритмов поиска

  • 8.3. Домашнее задание №4. Расчет сети Байеса

  • 8.4. Лабораторная работа №1. Прогнозирование с помощью нейронной сети

  • 8.5. Лабораторная работа № 2. «Создание информационной системы на базе семантической сети»

  • Литература 1.

  • Приложение 1. Описание программы SWI-Prolog Исполняемый файл программы SWI-Prolog размещается в ..\bin\plwin.exe

  • “Debug / Graphical debugger”

  • Bindings

  • Приложение 2. Описание программы NGO (NeuroGenetic Optimizer)

  • Министерство образования и науки российской федерации федеральное агентство по образованию санктпетербургский государственный университет


    Скачать 1.41 Mb.
    НазваниеМинистерство образования и науки российской федерации федеральное агентство по образованию санктпетербургский государственный университет
    Дата02.03.2023
    Размер1.41 Mb.
    Формат файлаpdf
    Имя файла658.pdf
    ТипУчебное пособие
    #963925
    страница9 из 11
    1   2   3   4   5   6   7   8   9   10   11






    Данный формат не предназначен для чтения человеком. Редакторы семантических документов, например, наиболее распространенный редактор онтологий Protégé (
    http://protege.stanford.edu/
    ), дают возможность вводить и редактировать факты в экранных формах (фреймах), как показано ниже.
    В настоящее время создание RDF/OWL документов ведется отдельными энтузиастами. Количество документов в Интернете невелико, и их можно найти

    87
    с помощью специального поискового сервера, например, SWOOGLE
    (
    http://swoogle.umbc.edu/
    ). Развитие проекта сдерживается по многим причинам.
    В основном это отсутствие быстрой и прямой выгоды от создания семантических ресурсов, сложность формализации знаний и отсутствие универсальных агентов для извлечения знаний. Представленные в Интернете реализации интеллектуальных агентов ограничиваются студенческими разработками вроде путеводителя по пивным города Саутхемптон
    (
    http://www.twine.com/item/11by40gxk-p1/southampton-pub-guide-in-rdf
    ) и винного агента, советующего, какое вино лучше употребить с каждым из блюд
    (
    http://ksl.stanford.edu/people/dlm/webont/wineAgent/
    ).

    88
    8. Домашние задания и лабораторные работы
    8.1. Домашнее задание №1. Изучение работы Prolog программы
    Цель домашнего задания: изучение работы Prolog программы на примере решения задачи сортировки двумя методами: сортировка методом вставки и так называемая «быстрая» сортировка. Текст обоих программ приведен ниже.
    /************** Сортировка методом вставки **************/ insrtsort([],[]). insrtsort([Head|Tail], ListSorted) :- insrtsort(Tail,TailSorted), insrt(Head,TailSorted,ListSorted). insrt(X, [Y | ListSorted], [Y | ListSorted1]) :-
    X > Y, !, insrt(X, ListSorted, ListSorted1). insrt(X,ListSorted, [X | ListSorted]).
    /************** Быстрая сортировка *****************/ fastsort([],[]). fastsort([Head | Tail], ListSorted) :- split(Head, Tail, TailLess, TailGreater), fastsort(TailLess,TailLessSorted), fastsort(TailGreater,TailGreaterSorted), append(TailLessSorted, [Head | TailGreaterSorted], ListSorted). split(_, [], [], []). split(X, [H | T], [H | TL], TG) :- H < X, !, split(X, T, TL, TG). split(X, [H | T], TL, [H | TG]) :- split(X, T, TL, TG).
    В качестве исходных данных использовать собственную дату рождения в следующем виде: [D,D,M,M,Y,Y,Y,Y], например, дата рождения 20.09.1984.
    Сортируемый список будет [2,0,0,9,1,9,8,4].
    Требуется:
    1) запустить каждую из программ на выполнение в режиме трассировки;
    2) записать структурированную трассу программы, отражающую рекурсивную вложенность предикатов;
    3) описать логику предикатов в каждой из программ;
    4) выбрать критерии и сравнить два метода сортировки.
    Содержание отчета:
    1) исходный текст программы с комментариями;
    2) структурированная трасса хода выполнения каждой из двух программы;
    3) описание логики каждого из методов сортировки;
    4) сравнение рассмотренных методов сортировки.

    89
    8.2. Домашнее задание №2. Изучение алгоритмов поиска
    Цель задания: Исследование алгоритмов решения задач методом поиска.
    Описание предметной области. Имеется транспортная сеть, связывающая города СНГ. Сеть представлена в виде таблицы связей между городами. Связи являются двусторонними, т.е. допускают движение в обоих направлениях.
    Необходимо проложить маршрут из одной заданной точки в другую.
    Этап 1. Неинформированный поиск. На этом этапе известна только топология связей между городами. Выполнить:
    1) поиск в ширину;
    2) поиск глубину;
    3) поиск с ограничением глубины;
    4) поиск с итеративным углублением;
    5) двунаправленный поиск.
    Отобразить движение по дереву на его графе с указанием сложности каждого вида поиска. Сделать выводы.
    Этап 2. Информированный поиск. Воспользовавшись информацией о протяженности связей от текущего узла, выполнить:
    1) жадный поиск по первому наилучшему соответствию;
    2) затем, использую информацию о расстоянии до цели по прямой от каждого узла, выполнить поиск методом минимизации суммарной оценки
    А*.
    Отобразить на графе выбранный маршрут и сравнить его сложность с неинформированным поиском. Сделать выводы.
    Таблица связей между городами
    Город 1
    Город 2
    Расстояние, км
    Вильнюс
    Брест 531
    Витебск
    Брест 638
    Витебск
    Вильюс 360
    Воронеж
    Витебск 869
    Воронеж
    Волгоград 581
    Волгоград
    Витебск 1455
    Витебск
    Ниж.Новгород 911
    Вильнюс
    Даугавпилс 211
    Калининград
    Брест 699
    Калиниград
    Вильнюс 333
    Каунас
    Вильнюс 102
    Киев
    Вильнюс 734
    Киев
    Житомир 131
    Житомир
    Донецк 863

    90
    Житомир
    Волгоград 1493
    Кишинев
    Киев 467
    Кишинев
    Донецк 812
    С.Петербург
    Витебск 602
    С.Петербург
    Калининград 739
    С.Петербург
    Рига 641
    Москва
    Казань 815
    Москва
    Ниж.Новгород 411
    Москва
    Минск 690
    Москва
    Донецк 1084
    Москва
    С.Петербург 664
    Мурманск
    С.Петербург 1412
    Мурманск
    Минск 2238
    Орел
    Витебск 522
    Орел
    Донецк 709
    Орел
    Москва 368
    Одесса
    Киев 487
    Рига
    Каунас 267
    Таллинн
    Рига 308
    Харьков
    Киев 471
    Харьков
    Симферополь 639
    Ярославль
    Воронеж 739
    Ярославль
    Минск 940
    Уфа
    Казань 525
    Уфа
    Самара 461
    Варианты заданий:
    Номер варианта
    Исходный пункт
    Пункт назначения
    1
    Мурманск
    Одесса
    2
    С.Петербург
    Житомир
    3
    Самара
    Ярославль
    4
    Рига
    Уфа
    5
    Казань
    Таллин
    6
    Симферополь
    Мурманск
    7
    Рига
    Одесса
    8
    Вильнюс
    Одесса
    9
    Брест
    Казань
    10
    Харьков
    Ниж.Новгород

    91
    Расстояние до цели по прямой взять из подходящей географической карты.
    Правило выбора варианта задания. Дату рождения подвергнуть следующей свертке: (ДД + ММ) mod 10 + 1 = номер варианта.
    8.3. Домашнее задание №4. Расчет сети Байеса
    Цель: Расчет полных и условных вероятностей для различных событий.
    Предметная область: характеристики студентов Вашего потока.
    Исходные данные. Выбрать 4 атрибута, характеризующих студентов, и заполнить таблицу следующего вида:
    Ф.И.О.
    Получает стипендию
    Живет в общежитии
    Подрабатывает Занимается спортом
    Иванов
    Нет
    Да
    Нет
    Нет
    … … …


    Вместо приведенных в качестве примера атрибутов (получает стипендию, живет в общежитии,…) подставить атрибуты, выбранные самостоятельно.
    Объем таблицы – не менее 25 строк. Заполнение таблицы строго индивидуально. У каждого должен быть свой вариант заполнения.
    Провести расчеты с использованием сети Байеса.
    1. Выбрать зависимые и независимые переменные. Составить сеть Байеса для данного набора переменных. Вычислить все априорные, условные и полные вероятности.
    2. Вычислить информативность каждого атрибута по формуле Шеннона.
    Построить дерево решений, как в разд. 5.3, руководствуюсь данными об информативности атрибутов. Сравнить полученное дерево с выбранным в п.1. разбиением на зависимые и независимые переменные.
    3. Добавить в таблицу 5 строк. Пересчитать. Сделать выводы о достаточности (недостаточности) данных.
    Содержание отчета:
    1. Исходная таблица.
    2. Граф сети Байеса со всеми вероятностями.
    3. Показатели информативности по Шеннону
    4. Дерево решений с вероятностями.
    5. Выводы.

    92
    8.4. Лабораторная работа №1. Прогнозирование с помощью
    нейронной сети
    Цель работы: Исследование программы NeuroGenetic Optimizer (NGO).
    Задание: Загрузить в программу NGO котировки акций в соответствии с вариантом:
    Номер варианта
    Код
    Наименование
    1 GAZP
    АО Газпром
    2
    ГМКНорНик
    Норильский никель
    3
    ЛУКОЙЛ
    НК Лукойл
    4
    МТС-ао
    Компания МТС – обыкн. акции
    5
    Роснефть
    Роснефть
    6
    Ростел-ао
    Ростелеком – обыкн.акции
    7
    Сбербанк
    Сбербанк – обыкн.акции
    8
    Сургнфгс
    Сургутнефтегаз
    9
    УРалСвИ-ао
    Уралсвязинформ – обыкн.акции
    10
    Уралкалий-ао
    АО Уралкалий – обыкн.акции
    Номер варианта выбирается так же, как в домашнем задании №2.
    Для получения исходных данных войти на сайт http://www.finam.ru/analysis/export/default.asp
    Выбрать контракт (эмитента акций) в соответствии с вариантом, период не менее полугода, имя файла – на свое усмотрение. Остальные параметры задать, как указано на следующем снимке экрана.

    93
    Экспортированный файл будет иметь следующий вид (на примере
    Газпрома).
    ,
    ,,

    94
    Экспортированный файл за полгода должен иметь около 1000 строк (8 часов * 5 дней * 25 недель). Для целей прогнозирования использовать только последнее
    поле (цена закрытия).
    Выполнить обучение нейронной сети для прогнозирования котировок на следующий час. Использовать временной лаг для порождения массива котировок таким образом, чтобы входными переменными для нейронной сети были значения котировок С
    i
    , C
    i-1
    , C
    i-2
    , …, а прогнозироваться должно значение
    С
    i+1
    . В приведенной ниже таблице показан фрагмент массива данных для обучения, полученный из файла котировок акций Газпрома.
    Входные переменные
    Выход
    C
    i-4
    C
    i-3
    C
    i-2
    C
    i-1
    С
    i
    С
    i+1 277.80 278.20 275.89 274.44 273.90 272.05 278.20 275.89 274.44 273.90 272.05 275.50 275.89 274.44 273.90 272.05 275.50 273.22 274.44 273.90 272.05 275.50 273.22 269.70
    Таким образом, прогноз на следующий час строится на основе последовательности котировок за предыдущие пять часов.
    Содержание отчета:
    1. Описание проблемы.
    2. График изменения котировок.
    3. Выбор способа деления массива данных на наборы для обучения и для тестирования.
    3. Скриншоты работы программы NGO в процессе обучения.
    4. Описание построенной нейронной сети (число нейронов, количество слоев, типы функций активации).
    5.Анализ точности построения и валидация (оценка практической применимости) полученной нейросетевой модели.
    8.5. Лабораторная работа № 2. «Создание информационной
    системы на базе семантической сети»
    Цель работы: изучение семантической сети как инструмента создания информационных и обучающих систем? А также исследование методов логического вывода на основе правил.
    Содержание работы:
    Выбрать предметную область.

    95 1. Выбрать способ представления знаний в семантической сети – реляционный граф или граф с центром в глаголе, а также язык представления знаний, русский или иной. Возможно многоязычное представление знаний.
    2. Записать факты, составляющие предметную область в нотации программы “Semantic”. Рекомендуемый объем базы знаний – не менее 50 фактов.
    3. Снабдить базу знаний онтологиями, в т.ч. правилами (не менее 20), позволяющими извлекать новые факты, а также словарями для поддержки диалога на упрощенном естественном языке.
    4. Провести тестирование базы знаний, т.е. убедиться в том, что все правила корректно создают новые факты.
    Содержание отчета:
    Цель и назначение разработанной информационной системы. Описание предметной области и словарей. Распечатки файлов базы знаний. Снимки экранов одного из вариантов развития диалога.

    96
    Литература
    1. Стюарт Рассел, Питер Норвиг. Искусственный интеллект:Современный подход. 2-е изд.: пер. с англ. – М.: Изд.дом «Вильямс», 2006. – 1408с.: ил.
    Парал.тит.англ.
    2.
    www.swi-prolog.org
    . Официальный сайт разработчиков транслятора SWI-
    Prolog.
    3.
    www.pdc.dk
    . Официальный сайт компании Prolog Development Center.
    4.
    http://ru.wikipedia.org/wiki/Семантическая_сеть
    5.
    http://compzed.narod.ru/semseti.htm
    6. McDermott, Drew. “Artificial Intelligence Meets Natural Stupidity”, SIGART
    Newsletter, No.57 (April, 1976), pp. 4-9.
    7. T. Berners-Lee, J. Hendler, and O. Lassila, “The Semantic Web,” Scientific
    American, May, 2001, pp. 34–43.

    97
    Приложение 1. Описание программы SWI-Prolog
    Исполняемый файл программы SWI-Prolog размещается в ..\bin\plwin.exe.
    После запуска появляется окно следующего вида:
    Для загрузки программы следует вызвать пункт меню “File / Consult…” и выбрать файл с текстом программы, который может быть создан в текстовом редакторе Notepad. Расширение файла по умолчанию .PL. Файл можно создавать и в оболочке программы SWI-Prolog пунктом меню “File / New…”.
    По умолчанию вызывается редактор Notepad (Блокнот). В составе пакета SWI-
    Prolog имеется более продвинутый редактор (PCE_EMAX), анализирующий синтаксис Пролог-программы, позволяющий устанавливать точки прерываний и т.п. Чтобы включить редактор PCE_EMAX, необходимо в файле pl.ini удалить комментарии в строке
    :- set_prolog_flag(editor, pce_emacs).
    Сделать это можно любым текстовым редактором, либо вызвав пункт меню “Settings / User init file…”.
    После загрузки в командной строке можно вводить цели. Рассмотрим работу оболочки SWI-Prolog на примере программы вычисления факториала: fact(0,1). fact(N,F) :- N1 is N-1, fact(N1,F1),
    F is N*F1.
    Введем в основном окне программы цель: fact(4,F). Программа выдаст ответ: А = 24. В случае ошибок на этапе трансляции либо выполнения Пролог в этом же окне выдает диагностические сообщения. Пользоваться таким

    98
    режимом неудобно. Лучше воспользоваться отладчиком. Для этого необходимо включить опцию графического отладчика “Debug / Graphical debugger”, затем с помощью пункта меню “Debug / Edit spy points…” включить точку перехвата на интересующий нас предикат, например, в нашем случае на предикат fact, и нажать кнопку с изображением шпиона.
    После этого нужно в окне Пролога задать цель, и появится окно отладки, которое выглядит следующим образом:
    Панель Bindings отображает текущие значения переменных, Call Stack – состояние стека, т.е. глубину вложенности рекурсий, наконец, нижняя панель – текст программы, где зеленым цветом выделяется выполняемый предикат. Для пошагового выполнения программы нужно нажимать на кнопку со стрелкой вправо. После максимального углублению в рекурсию стек выглядит следующим образом:

    99
    После этого Пролог начинает выполнять собирать факториал из запомненных в стеке значений 1!, 2! и 3!.
    Таким образом, мы можем отслеживать логику работы предикатов и выявлять ошибки.

    100
    Приложение 2. Описание программы NGO (NeuroGenetic
    Optimizer)
    Программа NGO предназначена для нейросетевого моделирования на основе обучения. На вход может подаваться до 500 переменных (в зависимости от лицензии). Бесплатный вариант программы поддерживает до пяти входных переменных. Программа состоит из двух компонентов: программы обучения
    NGO32260.EXE и программы прогнозирования PRE32150.EXE. Для начала работы с программой обучения необходимо загрузить данные. Рассмотрим порядок подготовки работы NGO на примере ее обучения на вычисление функции синуса. Для этого мы должны подготовить файл, содержащий данные в таком виде (разделители – табуляция):
    X Sin(X)
    0,01 0,01 0,02 0,019999 0,03 0,029996 0,04 0,039989
    Пусть такой файл содержит 500 строк и охватывает значения Х от 0 до 5.
    Чтобы его загрузить, необходимо выбрать пункты меню File / Open / Data /
    Train/Test… и местоположение текстового файла. Появится окно следующего вида:

    101
    Необходимо указать, что разделителями являются символы табуляции
    (Delimiters), а также указать назначение переменных (Input, Output). Если переменные не используются, например, их необходимо игнорировать (Ignore).
    Если в таблице в нижней части окна первые строки данных пустые, значит,
    NGO не понимает данный формат. Нужно проверить исходный файл.
    Важное замечание. Входные данные не подвергаются полному контролю.
    В частности, NGO не допускает наличия пустых строк в исходном файле, но не диагностирует эту ситуацию. В этом случае программа аварийно завершается на этапе обучения.
    После ввода исходных данных необходимо настроить программу. Для этого нужно вызвать пункт меню Option / Data…
    Здесь следует определить, как исходные данные будут делиться на набор для обучения и набор для тестирования. На снимке экрана показано, что для тестирования будет использоваться каждая вторая строка данных. Тестовый набор данных позволяет убедиться в том, что обученная нейронная сеть функционирует правильно, поскольку данные тестового набора в обучении не использовались. В условиях недостаточного количества наблюдений выбор объема тестового набора является критичным: слишком много данных для тестирования (как в данном случае 50 на 50) слишком уменьшает набор для обучения. Если мы сделаем упор на обучение, например, 10 к 1, то результаты тестирования будут ненадежными. Можно для тестирования брать не прореженный набор, а определенное число последних записей. Все зависит от

    102
    характера исходных данных.
    Далее, необходимо настроить параметры нейронной сети и генетического алгоритма (Option / NeuroGenetic…):
    Слева вверху нам предлагается выбрать типы нейронных сетей, которые
    NGO будет пытаться применить к данной задаче. Лучше всего не ограничивать программу в выборе, исключив только два типа сетей для обучения без учителя
    (SOM и TSOM – самоорганизующиеся карты Кохонена). Следующий важный параметр – число нейронов в скрытых слоях. Значение 8 установлено по умолчанию. Чем больше нейронов, тем выше возможная точность моделирования, но дольше время обучения. Сложность сети должна быть согласована с числом входных векторов данных: Если у нас 50 строк на входе, то бесполезно задавать 256 нейронов.
    Справа внизу есть три свойства сети, которые мы можем выбрать как предпочтительные: построить маленькую сеть, использовать как можно меньше входных переменных, использовать все переменные, но оптимизировать структуру сети. Второй пункт следует выбирать, когда число входных переменных очень велико, что будет вызывать проблемы с использованием обученной сети.
    Теперь необходимо установить параметры обучения (Option / System):

    103
    Слева вверху нам предлагается выбрать, как измерять точность. Можно установить абсолютную погрешность, среднеквадратичную ошибку и т.д.
    Наиболее понятной является относительная точность в процентах (как показано на снимке). Следующая группа параметров определяет, как оценивать точность обученной сети. Точность оценивается параметром Fitness, который учитывает в показанном примере 20% погрешности, полученной на данных обучения и
    80% - точность, показанную на этапе тестирования. Иными словами, погрешность на тестировании в 5 раз важнее погрешности обучения.
    Следующая группа параметров – критерии завершения обучения. По умолчанию устанавливается завершение после 10 поколений «генетически модифицированных» сетей. Если не устанавливать критерий, то процесс обучения будет бесконечным, и остановить его нужно будет с помощью пункта меню Run / Halt.
    Теперь можно запускать обучение сети (Run / Start). Процесс обучения можно контролировать (View / Status) или с помощью кнопки S на панели инструментов. Появится окно следующего вида, в котором отображаются характеристики текущей конфигурации сети (верхняя панель) и характеристики лучшей сети их всех, сгенерированных на данный момент.

    104
    Можно также наблюдать на графике процесс подгонки модели (View /
    Predicted vs. Desired - предсказанные и желаемые значения),

    105
    а также процесс изменения ошибок (View / Accuracy/Error Trend)
    Процесс обучения можно завершить, когда точность модели будет удовлетворительной. Теперь можно приступить к предсказанию. Для этого надо выбрать View / Best Networks или нажать кнопку B на панели инструментов. Появится следующее окно:

    106
    Нужно выбрать одну из сетей и нажать кнопку “Make Predictions with selected network…”. Запускается программа Predictor, которая предлагает посмотреть график с результатами обучения, сделать быстрый прогноз путем ввода входных данных с клавиатуры, либо сделать прогноз на основе файла с данными.
    Если мы выберем быстрый прогноз, то в появившуюся пустую таблицу нужно ввести входной вектор и нажать кнопку Predict:
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта