Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






TRAINWB, Maximum epoch reached.

Программный пакет Neural Networks Toolbox Matlab 6.5.

 

Цель работы: изучение основных свойств, методики вычислений и основ работы с пакетом Neural Networks Toolbox в программной среде MatLab.

 

Теоретическая часть

1. Назначение пакета Neural Networks Toolbox

 

Пакет Neural Networks Toolbox (нейронные сети) содержит средства для проектирования, моделирования, обучения и исполь­зования множества известных парадигм аппарата искусственных нейронных сетей (ИНС), от базовых моделей персептрона до са­мых современных ассоциативных и самоорганизующихся сетей. Пакет может быть использован для решения множества разно­образных задача, таких как обработка сигналов, нелинейное упра­вление, финансовое моделирование и т. п. Для каждого типа архитектуры и обучающего алгоритма ИНС имеются функции инициализации, обучения, адаптации, создания и моделирования, демонстрации и примеры применения.

 

2. Обзор функций пакета Neural Networks Toolbox

 

В состав пакета Neural Networks входят более 150 различных функций, образуя собой своеобразный макроязык программирова­ния и позволяя пользователю создавать, обучать и использовать самые различные НС.

С помощью команды

» help nnet

можно получить перечень входящих в пакет функций. Для по­лучения справки по любой функции можно использовать команду

» help «имя функции»

 

3. Примеры создания и использования нейронных сетей

Пример 1. Нейронные сети для аппроксимации функций.

Созда­дим обобщенно-регрессионную НС с именем а для аппроксимации функции вида у = х2 на отрезке [-1, 1], используя следующие эксперимен­тальные данные:

x = [-1 - 0.8 - 0.5 - 0.2 0 0.1 0.3 0.6 0.9 1],

y = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1].

Процедура создания и использования данной НС описывается следующим образом:

» Р = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1]; % Задание входных значений

» Т= [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1]; % Задание выходных значений

» a = newgrnn(P, T, 0.01); % Создание НС с отклонением 0, 01

» Y = sim(a, [-0.9 -0.7 -0.3 0-4 0.8]) % Опрос НС

0.8200 0.6400 0.0400 0.0900 0.8100

 

Как видно, точность аппроксимации в данном случае получи­лась не очень высокой.

Можно попытаться улучшить качество аппроксимации за счет подбора величины отклонения, но в условиях примера приемле­мый результат легко достигается путем применения сети с радиаль­ными базисными элементами:

» a = newrbe(P, T);

» Y = sim(a, [-0.9 -0.7 -0.3 0.4 0.8]) % Опрос НС

0.8100 0.4900 0.0900 0.1600 0.6400,

где net = newrbe(P, T, spread ) функция создания сети с радиаль­ными базисными элементами с нулевой ошибкой на обучающей выборке.

Созданную сеть можно сохранить для последующего использо­вания набором в командной строке save(‘a’); при этом будет создан файл a.mat, т.е. файл с именем НС и расширением mat. В по­следующих сеансах работы сохраненную сеть можно загрузить, используя функцию load(‘a’).

Рассмотрим теперь аналогичную задачу, но с использованием линейной НС.

Пусть экспериментальная информация задана значениями:

x = [+1.0 +1.5 +3.0 - 1.2],

y = [+0.5 + 1.1 +3.0 - 1.0].

Процесс создания, обучения и использования линейной НС с именем b иллюстрируется приведенными функциями и рис. 1.

» Р=[+1.0 +1.5 +3.0-1.2];

» Т=[+0.5 +1.1 +3.0-1.0];

» maxlr= maxlinlr(P, ’bias’); %Определение величины коэффициента обучения

» b = newlin([-2 2], l, [0], maxlr); % Создание линейной НС с именем b

» b.trainParam.epochs = 15; % Задание количества циклов обучения

» b = train(b, P, T); % Обучение НС

TRAINWB, Epoch 0/15, MSE 2.865/0.

TRAINWB, Epoch 15/15, MSE 0.0730734/0.

TRAINWB, Maximum epoch reached.

Рис. 1. Изменение ошибки сети в процессе её обучения

 

» p=-1.2;

» y=sim(b, p) % Опрос сети

-0.8161

Использовались следующие функции:

1. net=newgrnn(P, T, spread) – функция создания обобщенно-регрессионной сети. Аргументы:

Р – R × Q матрица Q входных векторов,

Т – S × Q матрица Q целевых векторов,

Spread – отклонение (по умолчанию 1.0).

2. [Y, Pf, Af]=sim(net, P, Pi, Ai) – функция, моделирующая работу нейронной сети. Аргументы: net – имя сети, P – её входы, Pi – массив начальных условий входных задержек (по умолчанию они нулевые), Ai – массив начальных условий задержек слоя нейронов (по умолчанию они нулевые). Функция возвращает значения выходов Y и массивы конечных условий задержек.

3. net = newlin(PR, S, ID, LR) – функция создания слоя линейных нейронов. Аргументы:

РR – R × 2 матрица минимальных и максимальных значений для R входных элементов,

S – число элементов в входном векторе,

ID – вектор входной задержки (по умолчанию [0]),

LR – коэффициент обучения (по умолчанию 0.01).

 

Пример 2. Прогнозирование значений процесса.

Предположим, что имеется сигнал(функция времени), описываемый соотношением x (t) = sin(4π t), который подвергается дискретизации с интервалом 0, 025 с.

Построим линейную нейронную сеть, позволяющую прогнозировать будущее значение подобного сигнала по 5 предыдущим. Решение данной задачи иллюстрируется ниже.

» t = 0: 0.025: 5; % Задание диапазона времени от 0 до 5 секунд

» х = sin(t*4*pi); % Предсказываемый сигнал

» Q = length(x);

Рис. 2. Исходный сигнал и прогноз

 

» % Создание входных векторов

» Р = zeros (5, Q); % Создание нулевой матрицы Р

» P(1, 2: Q)=x(1, 1: (Q-1));

» P(2, 3: Q)=x(1, 1: (Q-2));

» P(3, 4: Q)=x(1, 1: (Q-3));

» P(4, 5: Q)=x(1, 1: (Q-4));

» P(5, 6: Q)=x(1, 1: (Q-5));

» s=newlind(P, x); % Создание новой НС с именем s

» y = sim(s, P); % Расчет прогнозируемых значений

Рис. 3. Ошибка прогноза

 

» % Создание графиков исходного сигнала и прогноза

» plot(t, y, t, x, ’*’);

» хlabel(‘Time’);

» ylabel(‘Prognosis - Signal +‘);

» title(‘ Leaving of net end real value’);

» % Расчет и создание графика ошибки прогноза

» е = х-у;

» plot(t, e);

» hold on

» plot([min(t) max(t)], [0 0], ’: r’)

» hold off

» хlabel(‘Time’);

» ylabel(‘Error’);

» title(‘Signal of error’);

В данном случае сеть создавалась с помощью функции newlind, при которой не требуется дополнительного обучения. Судя по гра­фикам результатов, приведенных на рис. 2 и рис. 3, точность про­гноза с использованием линейной НС можно считать хорошей.

 

<== предыдущая лекция | следующая лекция ==>
 | Введение. Государственное автономное образовательное учреждение




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.