Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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, точность прогноза с использованием линейной НС можно считать хорошей.
|