- •Ю.И. Еременко, д.А. Полещенко
- •Содержание
- •Лабораторная работа № 1 знакомство с нейронными сетями
- •1.1 Цель работы
- •Теоретическая часть
- •Классификация нейронных сетей
- •Однослойные искусственные нейронные сети
- •Многослойные искусственные нейронные сети
- •1.3 Порядок выполнения работы
- •1.4 Контрольные вопросы и понятия
- •Выполнение
- •2.3.1 Порядок выполнения работы
- •2.4 Контрольные вопросы и понятия
- •3.3 Порядок выполнения работы
- •3.4 Контрольные вопросы и понятия
- •4.3 Порядок выполнения работы
- •4.4 Контрольные вопросы и понятия
- •Список литературы
- •Еременко Юрий Иванович Полещенко Дмитрий Александрович Нейроуправление
Выполнение
Пакет MatLab был создан компанией MathWorks более десяти лет назад. Работа сотен ученых и программистов направлена на постоянное расширение его возможностей и совершенствование заложенных алгоритмов. В настоящее время MatLab является мощным и универсальным средством решения задач, возникающих в различных областях человеческой деятельности. Спектр проблем, исследование которых может быть осуществлено при помощи MatLab, охватывает: матричный анализ, обработку сигналов и изображений, задачи математической физики, оптимизационные задачи, обработку и визуализацию данных, работу с картографическими изображениями, нейронные сети, нечеткую логику и многие другие. Специализированные средства собраны в пакеты, называемые ToolBox, и могут быть выборочно установлены вместе с MatLab по желанию пользователя. В состав многих ToolBox входят приложения с графическим интерфейсом пользователя, которые обеспечивают быстрый и наглядный доступ к основным функциям. Пакет Simulink, поставляемый вместе с MatLab, предназначен для интерактивного моделирования нелинейных динамических систем, состоящих из стандартных блоков. Данный пакет также дает возможность работы с нейронными сетями. Ниже рассмотрены функции, позволяющие синтезировать НС.
Функция NEWFF Сеть прямой передачи FF
Синтаксис:
net = newff(PR,[S1 S2...SNI],{TF1 TF2...TFNI},btf,blf,pf)
Описание:
Функция newff предназначена для создания многослойных нейронных сетей прямой передачи сигнала с заданными функциями обучения и настройки, которые используют метод обратного распространения ошибки.
Функция net = newff(PR, [SI S2 ... SN1], (TF1 TF2 ... TFN1}, btf, blf, pf) формирует многослойную нейронную сеть.
Входные аргументы:
PR - массив размера Rx2 минимальных и максимальных значений для R векторов входа;
Si - количество нейронов в слое i;
TFi - функция активации слоя i, по умолчанию tansig;
btf - обучающая функция, реализующая метод обратного распространения, по умолчанию trainlm;
blf- функция настройки, реализующая метод обратного распространения, по умолчанию learngdm;
pf- критерий качества обучения, по умолчанию mse.
Выходные аргументы:
net - объект класса network object многослойной нейронной сети.
Свойства сети:
Функциями активации могут быть любые дифференцируемые функции, например tansig, logsig или purelin.
Обучающими функциями могут быть любые функции, реализующие метод обратного распространения: trainlm, trainbfg, trainrp, traingd и др.
Функция trainlm является обучающей функцией по умолчанию, поскольку обеспечивает максимальное быстродействие, но требует значительных ресурсов памяти. Если ресурсы памяти недостаточны, воспользуйтесь следующими рекомендациями:
• установите значение свойства net.trainParam.mеm_reduc равным 2 или более, что снизит требования к памяти, но замедлит обучение;
• воспользуйтесь обучающей функцией trainbfg, которая работает медленнее, но требует меньшей памяти, чем М-функция trainlm;
• перейдите к обучающей функции trainrp, которая работает медленнее, но требует меньшей памяти, чем М-функция trainbifg.
Функциями настройки могут быть функции, реализующие метод обратного распространения: learngd, learngdm.
Критерием качества обучения может быть любая дифференцируемая функция: mse, msereg.
TRAIN Обучение нейронной сети
Синтаксис:
[net, TR] = train(net,P,T,Pi,Ai)
[net, TR] = train(net,P,T,Pi,Ai,VV,TV)
Описание:
Функция [net, TR] = train(net, P, T, Pi, Ai) является методом для объектов класса network object, который реализует режим обучения нейронной сети. Эта функция характеризуется следующими входными и выходными аргументами.
Входные аргументы:
net - имя нейронной сети;
Р - массив входов;
Т - вектор целей, по умолчанию нулевой вектор;
Pi - начальные условия на линиях задержки входов, по умолчанию нулевой вектор;
Ai - начальные условия на линиях задержки слоев, по умолчанию нулевой вектор.
Выходные аргументы:
net - структура объекта network object после обучения;
TR - характеристики процедуры обучения:
TR.timesteps - длина последней выборки;
TR.perf - значения функции качества на последнем цикле обучения.
Заметим, что входной аргумент Т используется только при наличии целевых выходов. Аргументы Pi и Pf используются только в случае динамических сетей, имеющих линии задержки на входах или в слоях.
Примеры функций активации:
logsig – сигмоидальная;
purelin – линейная;
tansig – гиперболический тангенс;
MatLab позволяет строить графики функций в линейном, логарифмическом и полулогарифмическом масштабах. Кроме этого, можно строить графики нескольких функций, даже определенных на разных отрезках.
Построение графиков функций одной переменной в линейном масштабе осуществляется при помощи функции plot.
Вывод отображения простейшей функции одной переменной y(x) определенной на отрезке [a,b] в виде графика состоит из следующих этапов:
Задание вектора значений аргумента х.
Вычисление вектора у значений функции у(х).
Вызов команды plot(x,y) для построения графика.
Например: Построить график функции на отрезке [-5; 5] с шагом 0,05.
>> x=[-5: 0.05: 5];
>> y=x.^2;
>> plot(x, y)
После выполнения команд на экране появляется окно Figure No. 1 с графиком функции. Окно содержит меню, панель инструментов и область графика.
Если нам надо построить одновременно графики двух функций f(x) и g(x), то надо набрать следующую команду:
>> plot(x, f, x, g)
Для того чтобы построенные графики были максимально удобны для восприятия, служит дополнительный аргумент. Этот аргумент заключается в апострофы и состоит из трех символов, которые определяют: цвет, тип маркера и тип линии.
|
|
| |||
y m c r g b w k |
желтый розовый голубой красный зеленый синий белый черный |
. x + * s d v ^ < > p h |
точка кружок крестик знак «плюс» звездочка квадрат ромб треугольник вершиной вниз треугольник вершиной вверх треугольник вершиной влево треугольник вершиной вправо пятиконечная звезда шестиконечная звезда |
- : -. --
|
сплошная пунктирная штрих-пунктирная штриховая |
Пример:
Создать нейронную сеть, чтобы обеспечить следующее отображение последовательности входа Р в последовательность целей Т:
Р= [0 1 2 3 4 5 6 7 8 9 10];
Т= [0 1 2 3 4 3 2 1 2 3 4];
Архитектура нейронной сети: двухслойная сеть с прямой передачей сигнала; скрытый слой - 5 нейронов с функцией активации tansig; выходной слой - 1 нейрон с функцией активации purelin; диапазон изменения входа [0 10].
net = newff([0 10],[5 1],{‘tansig’ ‘purelin’});
Обучим сеть в течение 50 циклов:
net.trainParam.epochs = 50;
net = train(net,P,T);
Выполним моделирование сети и построим графики сигналов выхода и цели.
Y = sim(net,P);
plot(P, Т, P, Y)