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

  • ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ им. проф. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ) Ф.В. Филиппов НЕЙРОСЕТЕВЫЕ ТЕХНОЛОГИИ

  • Филиппов, Ф.В.

  • ЛАБОРАТОРНЫЕ РАБОТЫ 1. ПЕРСЕПТРОНЫ

  • Аппроксимация функций

  • Лабораторная работа № 1 Работа состоит из двух заданий, необходимо выполнить оба задания. Задание

  • Задание

  • Прогнозирование временных рядов

  • Лаба. 2021 Лабораторный практикум по НТ. Технологии


    Скачать 6.22 Mb.
    НазваниеТехнологии
    Дата24.04.2023
    Размер6.22 Mb.
    Формат файлаpdf
    Имя файла2021 Лабораторный практикум по НТ.pdf
    ТипПрактикум
    #1084536
    страница1 из 4
      1   2   3   4


    ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ
    БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
    «САНКТ-ПЕТЕРБУРГСКИЙ
    ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ
    им. проф. М. А. БОНЧ-БРУЕВИЧА»
    (СПбГУТ)
    Ф.В. Филиппов
    НЕЙРОСЕТЕВЫЕ
    ТЕХНОЛОГИИ
    ЛАБОРАТОРНЫЙ
    ПРАКТИКУМ
    САНКТ-ПЕТЕРБУРГ
    2021

    2
    УДК 004.31(004.42)
    ББК 32.973-018.2я73
    Рецензент кандидат технических наук, доцент кафедры конструирования и производства радиоэлектронных средств
    Т.В. Матюхина
    Утверждено редакционно-издательским советом СПбГУТ
    в качестве лабораторного практикума
    Филиппов, Ф.В.
    Нейросетевые технологии: лабораторный практикум / Ф. В. Филиппов;
    СПбГУТ, – СПб., 2021. – 48 с.
    Приведены методические материалы для выполнения лабораторных работ. Сформулированы задания к лабораторным работам и практиче- ским занятиям. Изложение материала ведется с примерами, реализован- ными в среде RStudio с использованием широкого круга библиотек.
    Пособие предназначено для бакалавров направления 09.03.02 Инфор- мационные системы и технологии и будет полезно при изучении дисци- плин «Нейросетевые технологии» и «Технологии обработки информа- ции».
    ©
    Филиппов Ф.В., 2021
    ©Федеральное государственное образовательное бюджетное учреждение высшего образования
    «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича»,
    2021

    3
    СОДЕРЖАНИЕ
    ВВЕДЕНИЕ ............................................................................................................................... 4
    ЛАБОРАТОРНЫЕ РАБОТЫ .................................................................................................. 5 1.
    ПЕРСЕПТРОНЫ .............................................................................................................. 5
    Аппроксимация функций .................................................................................................... 6
    Лабораторная работа № 1 ................................................................................................ 9
    Прогнозирование временных рядов ................................................................................. 10
    Лабораторная работа № 2 .............................................................................................. 14
    Классификация объектов ................................................................................................... 14
    Лабораторная работа № 3 .............................................................................................. 17
    Построение автокодировщиков ........................................................................................ 18
    Лабораторная работа № 4 .............................................................................................. 20 2.
    ОГРАНИЧЕННЫЕ МАШИНЫ БОЛЬЦМАНА .......................................................... 21
    Лабораторная работа № 5 .............................................................................................. 25 3.
    СЕТИ КОХОНЕНА ........................................................................................................ 26
    Лабораторная работа № 6 .............................................................................................. 27 4.
    СВЕРТОЧНЫЕ СЕТИ .................................................................................................... 28
    Лабораторная работа № 7 .............................................................................................. 31 5.
    ВАРИАЦИОННЫЕ АВТОКОДИРОВЩИКИ ............................................................. 32
    Лабораторная работа № 8 .............................................................................................. 35 6.
    РЕКУРРЕНТНЫЕ СЕТИ НА БАЗЕ LSTM .................................................................. 36
    Лабораторная работа № 9 .............................................................................................. 39
    ЗАДАНИЯ ДЛЯ ПРАКТИКИ ............................................................................................... 40
    Задание № 1: Моделирование логической функции ....................................................... 40
    Задание № 2: Классификация входных данных .............................................................. 40
    Задание № 3: Построение карты Кохонена ..................................................................... 41
    Задание № 4: Распознавание и классификация объектов ............................................... 42
    Задание № 5: Сжатие данных ............................................................................................ 43
    Задание № 6: Составление прогноза ................................................................................ 43
    Задание № 7: Классификация объектов ........................................................................... 44
    Задание № 8: Распознавание изображений ...................................................................... 45
    Задание № 9: Классификация изображений .................................................................... 46
    Задание № 10: Прогнозирование аварий сетевого оборудования ................................. 47
    ЗАКЛЮЧЕНИЕ ...................................................................................................................... 47
    СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ............................................................. 48

    4
    ВВЕДЕНИЕ
    Для решения широкого круга задач, когда не удается найти алгорит- мического решения используются нейронные сети. Способность нейронных сетей обучаться позволяет переложить сложности поиска решения на их плечи. Успех качественного обучения нейронных сетей зависит от многих факторов, но главными из них являются два – формирование хорошей обу- чающей выборки и выбор модели сети адекватной для конкретной задачи.
    Если подбор и подготовка данных для обучения является общей процеду- рой, зависящей от целей обучения, то выбор надлежащей архитектуры сети, во многом зависит от характера решаемой задачи.
    За период от начала практического использования нейронных сетей до настоящего времени сложились обоснованные предпочтения выбора конкретной архитектуры для задач определенного класса. Тем не менее про- цесс создания и апробирования новых моделей продолжается. Создано большое число библиотек, позволяющих легко экспериментировать и нахо- дить наилучшие решения.
    Лабораторный практикум предназначен для получения навыков ра- боты с моделями нейронных сетей при решении широкого класса задач. Его со- держимое будет предельно понятно, если предварительно ознакомиться с одноименным учебным пособием [1]. Практикум содержит лабораторные работы и задания для самостоятельной практики.
    Изучение относительно простых архитектур нейронных сетей осно- вано на использовании классических моделей персептронов, ограниченных машин Больцмана и сетей Кохонена. Все эти модели реализованы в виде функций, которые позволяют варьировать большое число параметров, не- обходимых для их адаптации к решаемой задачи и получения адекватных результатов.
    Для построения более сложных архитектур с различным числом и назначением слоев, а также с введением специфических модулей, типа
    LSTM, здесь используется библиотека keras.
    При выполнении лабораторных работ рекомендуется детально изу- чить листинги, предваряющие задание, и выполнить их в среде RStudio. За- дания для самостоятельной практики взяты из веб-ресурсов, с которыми возможно следует познакомиться. Выполнение этих заданий носит характер небольшого исследования.
    Поскольку предлагаемые здесь примеры и задания используют язык программирования R, полезно также получить некоторые навыки его ис- пользования, например, изучив базовые структуры и функции из [2]. Для тех, кто знаком с языком Python, предлагается выполнять представленные здесь задания в среде Colab [3].

    5
    ЛАБОРАТОРНЫЕ РАБОТЫ
    1. ПЕРСЕПТРОНЫ
    Главной особенностью моделей нейронных сетей, объединенных под названием персептрон, являются полносвязные слои. В них нейрон преды- дущего слоя связан со всеми нейронами следующего слоя. В среде RStudio используется три модели персептрона, реализованные в виде функций
    nnet(), neuralnet() и mlp() [4]. Каждая из этих функций имеет много парамет- ров, большинству из которых присвоены значения по умолчанию: nnet(x, y, weights, size, Wts, mask, linout = FALSE, entropy = FALSE, softmax = FALSE, censored = FALSE, skip = FALSE, rang = 0.7, decay = 0, maxit = 100, Hess = FALSE, trace = TRUE, MaxNWts = 1000, abstol = 1.0e-4, reltol = 1.0e-8) neuralnet(formula, data, hidden = 1, threshold = 0.01, stepmax = 1e+05, rep = 1, startweights = NULL, learningrate.limit = NULL, learningrate=NULL, learningrate.factor = list(minus = 0.5, plus = 1.2), lifesign = «none», lifesign.step = 1000, algorithm = «rprop+», err.fct = «sse», act.fct = «logistic», linear.output = TRUE, exclude = NULL, constant.weights = NULL, likelihood = FALSE) mlp(x, y, size = c(5), maxit = 100, initFunc = «Randomize_Weights», initFuncParams = c(-0.3, 0.3), learnFunc = «Std_Backpropagation», learnFuncParams = c(0.2, 0), updateFunc = «Topological_Order», updateFuncParams = c(0), hiddenActFunc = «Act_Logistic», shufflePatterns = T, linOut = FALSE, inputsTest = NULL, targetsTest = NULL, pruneFunc = NULL, pruneFuncParams = NULL)
    Обилие параметров предоставляет широкие возможности по настройке или, как часто говорят, по подгонке выбранной модели для опти- мального решения задачи.
    Известно, что персептроны удобно применять в решении практиче- ских задач, связанных с классификацией и аппроксимацией (или регрес- сией):
    • сеть с одним скрытым слоем, содержащим N нейронов со ступенчатой функцией активации, способна осуществить произвольную классифи- кацию Nd точек d-мерного пространства (то есть классифицировать
    Nd примеров);
    • одного скрытого слоя нейронов с сигмоидной функцией активации достаточно для аппроксимации любой функции со сколь угодно вы- сокой точностью.
    Рассмотрим примеры использования различных моделей персептро- нов для решения различных задач.

    6
    Аппроксимация функций
    Рассмотрим простой пример аппроксимации функции y = 2cos x + 8 на отрезке [0, 8]. В листинге 1 приведен код для решения этой задачи с исполь- зованием модели neuralnet().
    Сначала формируется фрейм данных learn для обучения сети (строка
    6). Затем загружается библиотека neuralnet и формируется сеть netcos.
    В функции neuralnet() мы определяем минимальное число парамет- ров: задаем формулу y

    x, определяем число нейронов в скрытом слое hid-
    den = 4 и указываем имя фрейма learn с набором данных для обучения.
    Остальные параметры заданы по умолчанию (строка 10). Запуск функции на исполнение осуществляет обучение сети netcos.
    Листинг 1. Аппроксимация функции y = 2cos x + 8

    7
    Для проверки работы обученной сети создаем фрейм test (строка 16) с тестовыми данными. Функция predict() вычисляет реакцию обученной сети
    netcos в переменной yp. На рис. 1 приведен график моделируемой функции
    y, представленной 50 зелеными точками, и функции yp, сформированной се- тью и представленной на графике 5000 черных точек. График демонстри- рует полное совпадение функций.
    Рис. 1. Моделируемая и результирующая функция
    С помощью функции plot(netcos) получаем архитектуру полученной сети (рис. 2). Полную информацию о построенной сети можно получить с помощью функции print(netcos).
    Рис. 2. Архитектура сети netcos

    8
    Интересно посмотреть аналитическое представление функции реали- зованной сетью netcos для исходной моделируемой функции. Для этого представим функции, реализуемые нейронами скрытого слоя (строка 24 –
    27, листинг 1) и построим их графики (рис.3).
    Рис. 3. Функции, реализуемые нейронами скрытого слоя
    Функцию y, реализованную сетью netcos, получаем из этих функций следующим образом (округляем значения весов до сотых долей):
    𝑦 =
    −0.17 1 + 𝑒
    !"#.%&'!"(.)&
    +
    5.82 1 + 𝑒
    !*.(('+,.",
    +
    5.43 1 + 𝑒
    *.-.'!**.(-
    +
    5.07 1 + 𝑒
    *.,#'!#.%%
    − 0.04
    Постройте график y (строка 39, листинг 1) и убедитесь в том, что на отрезке [0, 8] эта функция практически тождественна исходной функции y
    = 2cos x + 8.
    Обратите внимание на использование в листинге функций set.seed(), которые задают начальную фазу генератора случайных чисел. Их необхо- димо использовать для повторной воспроизводимости полученных резуль- татов.
    Из многочисленного числа параметров для решения задач приведен- ного ниже задания достаточно будет правильно сформировать обучающие и проверочные данные, подобрать структуру сети и число повторений
    (эпох) обучения.
    Данные для обучения и тестирования должны быть сформированы в виде фреймов.
    Для правильного подбора структуры необходимо подобрать число скрытых слоев и число нейронов каждого скрытого слоя. В ряде заданий будет достаточно одного скрытого слоя, как в примере листинга 1. При необходимости использования двух слоев параметр hidden нужно опреде- лять как двухкомпонентный вектор, например, hidden = c(6,2) определяет два скрытых слоя с 6 нейронами в первом и 2 нейронами во втором слое.

    9
    Число эпох обучения задается параметром rep, который по умолча- нию имеет значение 1. Обычно, когда сеть не может достигнуть заданной точности за одну эпоху, выдается предупреждение «Algorithm did not
    converge in 1 of 1 repetition(s) within the stepmax».
    Задание'>Лабораторная работа № 1
    Работа состоит из двух заданий, необходимо выполнить оба задания.
    Задание 1. Смоделировать заданную функцию на отрезке [0, 8] с ис- пользованием библиотеки neuralnet. Отчет должен содержать подготовку данных для обучения сети. Обоснование выбранной архитектуры. Струк- турную схему обученной сети с указанием весов. Графики моделируемой и смоделированной функций. Варианты заданий приведены в табл.1 (номер варианта определяется последней цифрой номера зачетки).
    Таблица 1
    Варианты задания
    Вариант
    Моделируемая функция
    0
    y = cos x / (sin 2x + 2)
    1
    y = sin x(arctg 0.5x) + cos x
    2
    y = 0.5 sin x + cos 2x + √𝑥
    3
    y = cos x + x – sin 2x
    4
    y = 4 arctg x + sin x
    5
    y = sin x / (cos 2x + 2)
    6
    y = sin x + x – cos 2x
    7
    y = 0.4 cos x + sin 3x + √𝑥
    8
    y = 0.5 cos x + 1.5 arctg 0.2x + √𝑥
    9
    y = sin 0.3x
    2
    + √𝑥
    Задание 2. Подобрать структуру hidden и порог функции ошибки
    threshold для точной аппроксимации заданных последовательностей им- пульсов. Отчет по работе должен содержать структурную схему обученной сети без указания весов. Графики аппроксимируемой и полученной после- довательности для нескольких приближений параметров hidden и threshold.
    Варианты заданий приведены в табл.2.
    Таблица 2
    Варианты задания
    Вариант
    Последовательность импульсов
    Четная цифра
    x = seq(from = -9.5, to = 10, by = 0.5)
    y = rep(c(1,1,1,1,1,0,0,0,0,0), 4)
    Нечетная цифра
    x = seq(from = 0, to = 3.15, by = 0.05)
    y = rep(c(1,1,1,1,0,0,0,0), 8)

    10
    Графики должны быть в виде наложения полученной последователь- ности на аппроксимируемую. Пример построения графиков приведен на рис. 4. Для получения нескольких графиков в одном окне используйте ко- манду типа par(mfrow = c(3, 2)), которая указывает, что окно делится на 3 части по горизонтали и на две по вертикали, где будет размещено 6 графи- ков.
    Рис. 4. Пример построения графиков
    Для изображения нескольких кривых на одном графике используется две функции plot() и lines(). Функция plot() для первого графика, а функции
    lines() для последующих. Например, на рис. 4 для построения желтых кри- вых использован plot(x, y, type = ‘l’, col = “yellow”, lwd = 9), а для наложения черных lines(x, y1).
    Прогнозирование временных рядов
    В большинстве случаев основой для прогнозирования служат ретро- спективные данные в виде временных рядов. В Data Mining существует спе- циальное понятие временного ряда (Time-Series). Анализ временных рядов от анализа случайных выборок отличается предположением о равных про- межутках времени между наблюдениями и наличием хронологического по- рядка. Привязка наблюдений ко времени играет здесь ключевую роль, тогда как при анализе случайной выборки она не имеет никакого значения.
    Рис. 5. Временной ряд а10

    11
    Возьмем в качестве примера временного ряда данные a10 из библио- теки fpp2 [8]. Файл a10 включает данные о количестве выписанных ежеме- сячных рецептов на фармацевтические продукты, подпадающие под код
    A10, согласно данным Австралийской комиссии по страхованию здоровья.
    Данные представлены за период с июля 1991 по июнь 2008 год. Характер изменения значений этого временного ряда представлен на рис. 5.
    Задача состоит в том, чтобы путем анализа временного ряда опреде- лить тенденции динамики его изменения на основе ретроспективных значе- ний. Обучающая выборка строится на основе разбиения данных на равные периоды, для каждого из которых правильным значением на выходе уста- навливается первое следующее за ним значение. На практике строится мат- рица наблюдений с числом столбцов, равным длине периода наблюдения плюс единица.
    На рис. 6 представлено подобное разбиение для временного ряда а10.
    Периодом наблюдения является 12 месяцев, поэтому входной вектор X обу- чающей выборки имеет размерность 12, а выходной вектор Y является од- норазмерным. На рис. 6 показано построение первых пяти обучающих набо- ров.
    Первый набор представляет из себя 13 первых элементов ряда а10, где
    12 элементов образуют входной вектор, а 13-ый элемент выходной вектор.
    Второй набор образован из тринадцати элементов ряда а10, начиная со вто- рого элемента и также разбит на 12+1 и так далее. Например, пятый набор сформирован из 13 элементов ряда а10, начиная с пятого элемента и разбит на 12+1.
    Рис. 6. Заполнение матрицы наблюдений
    Решение задачи прогнозирования представлено в листинге 2. Рассмот- рим его особенности.
    Сначала загружаются необходимые библиотеки fpp2 и nnet, данные
    а10 считываются в переменную scripts и подсчитывается их число n.
    Далее готовится матрица наблюдений LearnSeq с числом столбцов 13 и строк n – 12. Матрица заполняется данными в соответствии с рассмотрен- ным выше способом (строка 12, листинг 2).
    В качестве модели персептрона будем использовать функцию nnet().
    Следует отметить, что эта функция допускает наличие только одного скры- того слоя, поэтому параметр size может задавать число нейронов только в одном слое. Перед заданием параметров и запуском на обучение сети не

    12 забываем зафиксировать начальную фазу генератора случайных чисел
    set.seed(55).
    Выбираем число нейронов size = 60, разрешаем в качестве функции активации выходного нейрона линейную функцию linout = TRUE. Для пер- воначальных случайных весов выбираем значение rang = 0.1 и задаем мак- симальное число итераций maxit = 300. Интересно, как правильно осуществ- лять выбор параметров нейронной сети, значения которых, заданные по умолчанию, явно не подойдут. Прежде всего следует понимать какие пара- метры могут повлиять на работу сети для конкретной задачи. В данном слу- чае решается задача прогнозирования временного ряда, поэтому параметр
    decay = 0 можно оставить без внимания, так как шумы отсутствуют. Глав- ными в этом случае являются size, rang и maxit. Два первых проще всего находить подбором, а число итераций чем больше, тем лучше. При обуче- нии сети, когда по умолчанию включен параметр trace = TRUE, можно уви- деть реальное число необходимых эпох.
      1   2   3   4


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