Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

сии Задание №1

.pdf
Скачиваний:
13
Добавлен:
20.04.2015
Размер:
783.34 Кб
Скачать

Задание №1

Моделирование нейронных сетей в графической среде NNTool MatLab

Цель работы: Ознакомиться с особенностями построения и обучения нейронных сетей. Получить навыки работы с графической средой пакета NNTool MatLab.

Задание: В графической среде пакета NNTool MatLab реализовать нейронную сеть прямого распространения с N нейронами в скрытом слое с сигмоидальной передаточной функцией (logsig) и одним нейроном в выходном слое с линейной передаточной функцией (purelin). Обучить созданную нейронную сеть по заданному алгоритму обучения. Выполнить аппроксимацию заданных функции обученной нейронной сетью. Провести сравнение качества аппроксимации для синусоидальной и полиномиальной функций. Для синусоидальной функции выполнить сравнение качества аппроксимации для различного количества нейронов в скрытом слое N.

 

m

 

Сравнение выполнить по формуле: k

( y(xi ) u(xi ))2

, где y(x) – заданная

 

i 1

 

функция, u(x) – аппроксимированная функция, m – количество точек функции; k – оценка качества аппроксимации.

Варианты заданий:

Вариант

Алгоритм обучения

 

 

 

 

 

 

Функции

 

 

 

 

 

 

0

TRAINBFG

y

sin( x) 1.5

; y x 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin( x)

 

 

 

 

 

 

 

 

 

 

 

3

1

TRAINBR

y

 

 

 

 

 

 

; y x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin( x)

 

 

 

 

 

2

2

TRAINCGB

y

2

 

 

 

 

 

;

y 2x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

TRAINCGF

 

 

sin x

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

3

;

y 3x

3

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin( x)

 

 

 

 

 

2

 

 

 

4

TRAINCGP

y

 

 

 

 

 

 

 

 

 

; y x

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

2

 

 

 

 

 

 

 

 

 

 

sin( x )

 

 

 

3

 

 

 

5

TRAINGD

y

 

 

 

 

 

 

 

 

 

 

 

 

;

y x

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin(2x)

 

 

 

2

 

 

 

6

TRAINGDM

y 1

 

 

 

 

; y x

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант

Алгоритм обучения

 

 

 

 

 

 

 

 

 

Функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

sin( x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

7

TRAINGDA

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

y x

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

sin( x)

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

2x 2

 

 

8

TRAINGDX

 

 

 

 

 

 

 

 

 

 

 

 

; y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

9

TRAINLM

y

sin( x) 4

;

 

y

3x 3

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

sin( x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x 2

 

 

 

10

TRAINOSS

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

y

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin(3x)

 

 

 

 

 

 

 

 

 

 

 

3x

3

 

 

 

 

 

11

TRAINR

y 2

 

 

 

 

 

 

 

 

 

 

;

 

 

y

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

sin( x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3x3

 

 

 

12

TRAINRP

y

 

 

 

 

 

 

 

 

 

 

2

 

;

y

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin(2x)

 

 

 

 

 

 

 

 

 

 

 

2x

2

 

 

 

 

 

13

TRAINSCG

y 1

 

 

 

 

 

 

 

 

 

;

 

 

y

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin( x)

 

 

 

 

 

 

 

 

 

 

x 4

 

 

 

 

 

 

 

 

 

14

TRAINGDX

y

 

 

 

 

 

 

 

 

 

;

 

 

 

y

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

TRAINBFG

 

 

sin x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

3

;

 

 

y

 

x

4

1

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y 1

sin(2x )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

16

TRAINR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

; y 3x

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

3sin( x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

17

TRAINCGP

 

 

 

 

 

 

 

 

 

; y

 

3x

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin(2x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3

1

18

TRAINBR

y

 

 

 

 

 

 

 

 

 

 

 

 

2

 

; y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

sin(2x )

 

 

 

 

 

 

 

 

 

 

 

x3

1

19

TRAINLM

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

Содержание отчёта:

1.Цель работы.

2.Задание.

3.Описание алгоритма обучения.

4.Описание каждого этапа выполнения работы.

5. Сравнение работы алгоритма для 2-х заданных функций.

2

6.Графики, иллюстрирующие качество аппроксимации синусоидальной функции для различного количества нейронов N.

7.Выводы по работе.

Краткие теоретические сведения:

Нейронные сети (НС) широко используются для решения разнообразных задач. Основы теории и технологии применения НС широко представлены в пакете MATLAB с графическим интерфейсом пользователя NNTool.

Чтобы запустить NNTool, необходимо выполнить команду в командном окне

MATLAB: >> nntool

После этого появится главное окно NNTool, именуемое «Окном управления сетями и данными» (Network/Data Manager) (рис. 1).

Рис.1. Главное окно NNTool

Окно имеет функциональные клавиши со следующими назначениями:

Помощь (Help) – краткое описание управляющих элементов данного окна;

Новые данные (New…) – вызов окна, позволяющего создавать новые наборы данных и новую сеть;

3

Импорт (Import) – импорт данных из рабочего пространства MATLAB в пространство переменных;

Экспорт (Export) – экспорт данных из пространства переменных NNTool в рабочее

пространство MATLAB;

Удалить (Delete) – удаление выбранного объекта.

Открыть (Open) – Просмотр созданной сети или наборов данных

Одним из самых замечательных свойств нейронных сетей является способность аппроксимировать и, более того, быть универсальными аппроксиматорами. Это означает, что с помощью нейронных цепей можно аппроксимировать сколь угодно точно непрерывные функции многих переменных. Рассмотрим создание нейронной сети с помощью графической среды NNTool на следующем примере.

Необходимо выполнить аппроксимацию функции следующего вида:

 

5 x

 

7 x

,

sin

 

sin

 

 

 

 

 

N

 

 

 

 

 

N

 

где x 1..N , а N - число точек функции.

Создание сети

Перед созданием сети необходимо подготовить набор обучающих и целевых данных.

Подготовка набора обучающих данных (1, 2, 3, … , 100), задается следующим выражением: [1:100].

Воспользуемся кнопкой «Новый» (New). В появившемся окне следует произвести изменения, показанные на рис. 2, и нажать кнопку «Создать» (Create).

4

Рис. 2. Задание входного вектора

После этого в окне управления появится вектор data1 в разделе Input Data.

Вектор целей задаётся схожим образом (рис. 3).

В поле «Значение» (Value) окна создания новых данных необходимо ввести выражение:

sin(5*pi*[1:100]/100+sin(7*pi*[1:100]/100)).

Эта кривая представляет собой отрезок периодического колебания с частотой 5pi/N, модулированного по фазе гармоническим колебанием с частотой 7N (рис. 10).

5

Рис. 3. Задание целевого вектора

После нажатия на кнопку «Создать» (Create) в разделе Target Data появится вектор target1.

Теперь следует приступить к созданию нейронной сети, т. е. выбрать закладку Network и заполнить форму. Указать однонаправленную сеть с обратным распространением ошибки (Feed-Forward Backprop) c тринадцатью сигмоидными (LOGSIG) нейронами скрытого слоя и одним линейным (PURELIN) нейроном выходного слоя. Обучение производить, используя алгоритм Левенберга-Маркардта (Levenberg-Marquardt), который реализует функция TRAINLM.

Функция ошибки – MSE.

Поля несут следующие смысловые нагрузки:

Имя сети (Name) – это имя объекта создаваемой сети.

6

Свойства сети (Network Properties) – определяет свойства сети и в контексте выбранного типа представляет ввод различных параметров в части окна, расположенные ниже.

Количество нейронов (Number of neurons) – число нейронов в слое.

Передаточная функция (Transfer function) – в этом пункте выбирается передаточная функция (функция активации) нейронов.

Функция обучения (Adaptation learning function) – функция, отвечающая за обновление весов и смещений сети в процессе обучения.

Спомощью кнопки «Вид» (View) можно посмотреть архитектуру создаваемой сети (рис. 4).

Рис.4. Архитектура сети для решения задачи аппроксимации

Нажав кнопку «Создать» (Create) в окне создания сети произойдет создание новой нейронной сети.

В результате проделанных операций в разделе «Сети» (Networks) главного окна NNTool появится объект с именем network1.

Обучение сети

Основная цель – построить нейронную сеть, которая выполняет аппроксимацию заданной функции. Очевидно, нельзя рассчитывать на то, что сразу после этапа создания сети последняя будет обеспечивать правильный результат (правильное соотношение «вход/выход»). Для достижения цели сеть необходимо должным образом обучить, то есть подобрать подходящие значения параметров. В MATLAB реализовано большинство известных алгоритмов обучения нейронных сетей. При создании сети, выбран TRAINLM в качестве функции, реализующей алгоритм обучения.

Главное окно NNTool. На данном этапе интерес представляет панель «Сети» (Networks). Отметив указателем мыши объект сети network1, вызовем окно управления сетью нажатием кнопки «Open». В результате возникнет окно «Network: network1»

7

содержащее, в свою очередь, еще одну панель вкладок (рис. 5). Их главное назначение

– управление процессом обучения. На вкладке «Информация обучения» (Training info) требуется указать набор обучающих данных в поле «Входы» (Inputs) и набор целевых данных в поле «Цели» (Targets). Поля «Выходы» (Outputs) и «Ошибки» (Errors) NNTool заполняет автоматически. При этом результаты обучения, к которым относятся выходы и ошибки, будут сохраняться в переменных с указанными именами.

Рис. 5. Окно параметров сети, открытое на вкладке «Обучение» (Train)

Завершить процесс обучения можно, руководствуясь разными критериями. Возможны ситуации, когда предпочтительно остановить обучение, полагая достаточным некоторый интервал времени. С другой стороны, объективным критерием является уровень ошибки.

На вкладке «Параметры обучения» (Training parameters) (рис. 6) можно установить следующие поля:

Количество эпох (epochs) – определяет число эпох (интервал времени), по прошествии которых обучение будет прекращено. Эпохой называют однократное представление всех обучающих входных данных на входы сети.

Достижение цели или попадание (goal) – здесь задаётся абсолютная величина функции ошибки, при которой цель будет считаться достигнутой.

Период обновления (show) – период обновления графика кривой обучения, выраженный числом эпох.

Время обучения (time) – по истечении указанного здесь временного интервала, выраженного в секундах, обучение прекращается.

8

Рис. 6. Вкладка параметров обучения

Чтобы начать обучение, нужно нажать кнопку «Обучить сеть» (Train Network) на вкладке «Обучение» (Train). После этого, если в текущий момент сеть не удовлетворяет ни одному из условий, указанных в разделе параметров обучения (Training Parameters), появится окно, иллюстрирующее динамику изменения целевой функции (рис. 8). Кнопкой «Остановить обучение» (Stop Training) можно прекратить этот процесс.

9

Рис. 8. Окно обучения нейронной сети

Использование сети

На вкладке «Моделировать» (Simulate) выбрать в ниспадающем списке «Входы» (Inputs) подготовленные данные. В данной задаче естественно использовать тот же набор данных, что и при обучении data1. При желании можно установить флажок «Задать цели» (Supply Targets). Тогда в результате прогона дополнительно будут рассчитаны значения ошибки. Нажатие кнопки «Моделировать сеть» (Simulate Network) запишет результаты прогона в переменную, имя которой указано в поле «Выходы» (Outputs). Теперь можно построить два графика функции в одном окне: первый график – заданная функция, второй – в качестве аргумента значение вектора из

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]