Решение задач с использованием нейронных сетей в Matlab
Технологии решения задач с использованием нейронных сетей в пакетах расширения Neural Networks Toolbox и Simulink. Создание этого вида сети, анализ сценария формирования и степени достоверности результатов вычислений на тестовом массиве входных векторов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 20.05.2013 |
Размер файла | 352,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство образование и науки РФ
ГОУ ВПО «Ивановский государственный химико-технологический университет»
Кафедра Информатики и вычислительной техники
Лабораторная работа № 7
Тема
Решение задач с использованием нейронных сетей в Matlab
Выполнили:
Романычева, Стрельников
Цель работы
Освоение технологии решения задач с использованием нейронных сетей в пакетах расширения Neural Networks Toolbox и Simulink.
Задание №1
Создать нейронную сеть, реализующую функциональную зависимость
Y =
между входом (x) и выходом (Y). Значения коэффициентов в этом случае заданы. Последовательность решения должна включать все 5 этапов, приведённые в примере.
1-этап: «Подготовка данных для обучения сети»:
В первую очередь необходимо определиться с размерностью входного массива. Выберем количество значений функции равным N = 21, т.е. в качестве входных векторов массива используем значения функции y в точках х = 0;0.05; …1.0. Для обучения сети необходимо сформировать массив входных векторов для различных наборов параметров c, a и s. Каждый набор этих параметров является вектором-эталоном для соответствующего входного вектора.
Для подготовки входного и эталонного массивов воспользуемся следующим алгоритмом. Выбираем случайным образом значения компонент вектора - эталона С, A, B и вычисляем компоненты соответствующего входного вектора. Повторяем эту процедуру М раз и получаем массив входных векторов в виде матрицы размерностью N x M и массив векторов - эталонов в виде матрицы размерностью в нашем случае 3 х М. Полученные массивы мы можем использовать для обучения сети. Прежде чем приступать к формированию обучающих массивов, необходимо определиться с некоторыми свойствами массивов. Диапазон изменения параметров С, A, B. Выберем диапазоны изменения параметров C, A, B равными (0.1, 1). Значения, близкие к 0 и сам 0 исключим в связи с тем, что функция не определена при C = 0. Второе ограничение связано с тем, что при использовании типичных передаточных функций желательно, чтобы компоненты входных и выходных векторов не выходили за пределы диапазона (-1,1). В противном случае можно использовать методы нормировки, которые позволяют обойти это ограничение. Количество входных и эталонных векторов выберем равным М = 100.
Этого достаточно для обучения, а процесс обучения не займет много времени.
Сценарий формирования массива
% формирование массивов (входной массив P и эталоны T)
P=zeros(100,21);
T=zeros(3,100);
x=0:5.e-2:1;
for i=1:100
c=0.9*rand+0.1;
a=0.9*rand+0.1;
b=0.9*rand+0.1;
x=0.9*rand+0.1;
T(1,i)=c;
T(2,i)=a;
T(3,i)=b;
T(4,i)=x;
P(i,:)=a./(b+x.^c);
end;
P=P';
2 этап - Создание сети
Создадим следующую нейроную сеть:
net=newff(minmax(P),[10,15,3],{'logsig','logsig','purelin'},'trainlm');
Где 25-это кол-во нейронов в 1-ом слое, 35-во втором, 40-в 3-ем, а 3 соответствует кол-во выходных параметров, мы применяем 1 функцию - logsig(экспонинцеальная), 2 - pureline (линейная), и 1- tansig.
Первый аргумент - матрица 21 2 минимальных и максимальных значений сигнала на каждом из входов - вычисляется с помощью процедуры minmax. Результатом выполнения процедуры newff является объект - нейронная сеть net заданной конфигурации. В данном случае мы выбираем обучение по методу: связанных градиентов Пауэлла-Била.
3 этап - Обучение сети.
Следующий шаг - обучение созданной сети. Перед обучением необходимо задать параметры обучения. Задаем функцию оценки функционирования sse.
net.performFcn='sse';
В этом случае в качестве оценки вычисляется сумма квадратичных отклонений выходов сети от эталонов. Задаем критерий окончания обучения - значение отклонения, при котором обучение будет считаться законченным:
net.trainParam.goal=0.01;
Задаем максимальное количество циклов обучения. После того, как будет выполнено это количество циклов, обучение будет завершено:
net.trainParam.epochs=1000;
Теперь можно начинать обучение:
[net,tr]=train(net,P,T);
Процесс обучения иллюстрируется графиком зависимости оценки функционирования от номера цикла обучения (номера эпохи).
Таким образом, обучение сети окончено. Теперь эту сеть можно сохранить в файле nn1.mat:
save nn1 net;
В последующих сеансах работы сохранённую сеть можно загрузить, используя функцию
load(`nn1').
4 этап - Тестирование сети
Перед тем, как воспользоваться нейронной сетью, необходимо исследовать степень достоверности результатов вычислений сети на тестовом массиве входных векторов. В качестве тестового массива необходимо использовать массив, компоненты которого отличаются от компонентов массива, использованного для обучения. В нашем случае для получения тестового массива достаточно воспользоваться еще раз программой mas1.
Для оценки достоверности результатов работы сети можно воспользоваться результатами регрессионного анализа, полученными при сравнении эталонных значений со значениями, полученными на выходе сети, когда на вход поданы входные векторы тестового массива. В среде MATLAB для этого можно воспользоваться функцией postreg. Следующий набор команд иллюстрирует описанную процедуру:
>> mas1 - создание тестового массива P
>> y=sim(net,P); - обработка тестового массива обученной сетью, y - выходы сети.
>> [m,b,r]=postreg(y(1,:),T(1,:));
При выполнении последней команды выводится график в координатах: по оси ординат A - значения, полученные на первом выходе сети (расчетные значения коэффициента С), по оси абсцисс T - эталонные значения коэффициента с. Совершенно очевидно, что если все точки группируются вблизи прямой
A = T, (1)
то сеть на тестовом массиве работает правильно. Над графиком выводится уравнение прямой, найденное по полученным данным в виде:
A = m·T + b. (2)
Зависимость (2) тем точнее представляет (1), чем значение m ближе к 1, а значение b к 0.
Кроме того, выводится коэффициент корреляции R (в параметрах команды обозначен r).
Рисунок 1 -[m,b,r]=postreg(y(1,:),T(1,:)) - достоверность результатов работы сети для С коэффициента.
Рисунок 2 - [m,b,r]=postreg(y(2,:),T(2,:));- достоверность результатов работы сети для А коэффициента.
Рисунок 3 - [m,b,r]=postreg(y(3,:),T(3,:));- достоверность результатов работы сети для S коэффициента.
Графики показывают, что сеть хорошо решает поставленную задачу для всех трех выходных параметров и можно перейти к её использованию.
Сохраним обученную сеть net на диске в файл nn1.mat
save nn1 net
5 - этап: Моделирование сети.
Можно самим задать любые значения коэффициентов, рассчитать значения входного вектора, определить коэффициенты на выходе сети и сравнить их с заданными.
Например, пусть
P(i,:)=a/(b+x^c)
P=P'
То есть a=0.1; b=0.1;с=0.1
Подставив этот входной вектор в качестве аргумента функции sim:
p=0.1./(0.1+x.^0.1);
p=p'
Y=sim(net,p)
Y =
0.0910(A)
-0.0821(B)
0.1150(C)
Близость полученных значений к правильному результату (0.1; 0.1; 0.1) свидетельствует о применимости сети. Если же результаты сильно отличаются, необходимо изменить архитектуру сети, точность или метод поиска.
Задание №2
Сформируйте модель НС, рассмотренную в Задании №1 в Simulink, используя функцию gensim. Обратите внимание на структуру НС в S -модели.
Решение
Сначало создадим нейронную сеть из задания 1:
net=newff(minmax(P),[10,15,3],{'logsig','logsig','purelin'},'trainlm');
Затем мы создадим структуру нейроной сети введя в командную строку команду: gensim(net,st), появится следующая структура нейроной сети:
Задание №3
Выполнить генерацию исходных данных в виде точек на плоскости, разделённой прямой линией X2 = 0.4+1.5·X1. Точки, попавшие по одну сторону линии, будут относиться к классу 1, по другую - к классу 2. Создать нейронную сеть, способную отнести любую новую точку к соответствующему классу.
Чтобы опознать к какому классу относится линия нужно создать персептрон:
clear, net = newp([-300 300;-300 300],1);
net.IW{1,1}= [0.4 -1];
net.b{1} = [1.5];
Где значение в IV - это кооэфициенты при X1 и X2, а при b - коофициент b , а значения в под скобкой в newp означает интервал X1 и X2. В данном случае 1 класс - обозначен 0, а 2 класс - 1
Для проверки правильности распознования сформируем масив из точек:
X1 |
X2 |
|
1 |
2 |
|
5 |
10 |
|
15 |
20 |
|
25 |
35 |
|
45 |
65 |
Сценарий формирования массива:
p1 = [[1; 2] [5;10] [15;20] [25;35] [45;65]];
a1 = sim(net,p1)
a1 =
Все классы распознаны верно.
Задание №4
Рассмотрим пример прогнозирования с помощью простейшей линейной НС процесса, поведение которого зависит от времени. В этом примере надо особое внимание уделить способу формирования входов и выходов НС.
Предположим, что имеется сигнал (функция времени), описываемый соотношением
,
который подвергается дискретизации с интервалом 0.025 с.
Построим линейную НС, позволяющую прогнозировать будущее значение по 5 предыдущим. newlind - конструирование линейного слоя;
Решение
Сценарий:
t=0:0.025:5; % Задание диапазона времени от 0 до 5 секунд
x=sin(t*4*pi); % предсказываемый сигнал
Q=length(x); %число столбцов в матрице входов
% Создание входных векторов
P=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); % расчёт прогнозируемых значений
% Создание графиков исходного сигнала и прогноза
plot(t,x,t,y,'*')
xlabel('Vremja')
ylabel('Прогноз - сигнал *');
title('Выход сети - прогноз');
%Ошибка прогноза
e=y-x;
% последние 5 значений, рассчитанные по функции и по нейронной сети
znach=x(Q-5:Q)
prognoz=y(Q-5:Q)
Запустим сценарий, получим спрогнозируеммый сигнал:
нейронный сеть тестовый массив
Размещено на Allbest.ru
Подобные документы
Способы применения нейронных сетей для решения различных математических и логических задач. Принципы архитектуры их построения и цели работы программных комплексов. Основные достоинства и недостатки каждой из них. Пример рекуррентной сети Элмана.
курсовая работа [377,4 K], добавлен 26.02.2015Особенности нейронных сетей как параллельных вычислительных структур, ассоциируемых с работой человеческого мозга. История искусственных нейронных сетей как универсального инструмента для решения широкого класса задач. Программное обеспечение их работы.
презентация [582,1 K], добавлен 25.06.2013Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Понятие о нейронных сетях и параллели из биологии. Базовая искусственная модель, свойства и применение сетей. Классификация, структура и принципы работы, сбор данных для сети. Использование пакета ST Neural Networks для распознавания значимых переменных.
реферат [435,1 K], добавлен 16.02.2015Нейронные сети как средство анализа процесса продаж мобильных телефонов. Автоматизированные решения на основе технологии нейронных сетей. Разработка программы прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей.
дипломная работа [4,6 M], добавлен 22.09.2011Модели оценки кредитоспособности физических лиц в российских банках. Нейронные сети как метод решения задачи классификации. Описание возможностей программы STATISTICA 8 Neural Networks. Общая характеристика основных этапов нейросетевого моделирования.
дипломная работа [1,4 M], добавлен 21.10.2013Рост активности в области теории и технической реализации искусственных нейронных сетей. Основные архитектуры нейронных сетей, их общие и функциональные свойства и наиболее распространенные алгоритмы обучения. Решение проблемы мертвых нейронов.
реферат [347,6 K], добавлен 17.12.2011Способы применения технологий нейронных сетей в системах обнаружения вторжений. Экспертные системы обнаружения сетевых атак. Искусственные сети, генетические алгоритмы. Преимущества и недостатки систем обнаружения вторжений на основе нейронных сетей.
контрольная работа [135,5 K], добавлен 30.11.2015Исследование эффективности применения нейронных сетей в рамках отношений между людьми. Принцип работы с нейросимулятором. Составление обучающей выборки и проектирование персептронов. Анализ выбора супружеской пары с использованием нейросетевых технологий.
презентация [150,8 K], добавлен 19.08.2013Анализ применения нейронных сетей для прогнозирования ситуации и принятия решений на фондовом рынке с помощью программного пакета моделирования нейронных сетей Trajan 3.0. Преобразование первичных данных, таблиц. Эргономическая оценка программы.
дипломная работа [3,8 M], добавлен 27.06.2011