Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 4
Аппроксимация функции одной переменной
Научиться работать с сетью прямой передачи сигнала, функция newff [1]. Разобраться с алгоритмом обратного распространения ошибки.
В лабораторной работе рассматривается нейронная сеть с прямой передачей сигнала (с прямой связью) [2], то есть сеть, в которой сигналы передаются только в направлении от входного слоя к выходному, и элементы одного слоя связаны со всеми элементами следующего слоя. Важнейшим для реализации нейронных сетей является определение алгоритма обучения сети.
В настоящее время одним из самых эффективных и обоснованных методов облучения нейронных сетей является алгоритм обратного распространения ошибки, который применим к однонаправленным многослойным сетям. В многослойных нейронных сетях имеется множество скрытых нейронов, входы и выходы которых не являются входами и выходами нейронной сети, а соединяют нейроны внутри сети, то есть скрытые нейроны. Занумеруем выходы нейронной сети индексом , а обучающие примеры индексом . Тогда в качестве целевой функции можно выбрать функцию ошибки как сумму квадратов расстояний между реальными выходными состояниями нейронной сети, выдаваемых сетью на входных данных примеров, и правильными значениями функции , соответствующими этим примерам. Пусть столбец входных значений, где i=1,2,..,n. Тогда выходные значения, где j=1,2,…,m. В общем случае n≠m. Рассмотрим разность , где точное (правильное) значение из примера. Эта разность должна быть минимальна. Введем расстояния согласно евклидовой метрике, определив норму
. (1)
Пусть целевая функция имеет вид
. (2)
Коэффициент ½ выбран из соображений более короткой записи последующих формул. Задача обучения нейронной сети состоит в том, чтобы найти такие коэффициенты , при которых достигается минимум (Е0).
На рис. 1 показана архитектура нейронной сети с прямой передачей сигнала.
Рис. 1. Схема архитектуры нейронной сети с прямой передачей сигнала |
Здесь приняты обозначения, используемые в [1], а именно, вектор входа, , матрицы весов входа и выхода, смещение, выход слоя, выход сети, tansig (гиперболическая тангенциальная), purelin (линейная) соответствующие функции активации.
Веса и смещения определяются с помощью алгоритма обратного распространения ошибок [3].
Обучение сети обратного распространения требует выполнения следующих операций:
1. Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети.
2. Вычислить выход сети.
3. Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).
4. Скорректировать веса сети так, чтобы минимизировать ошибку.
5. Повторять шаги с 1 по 4 для каждого вектора обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемого уровня.
Выполнение лабораторной работы состоит из следующих этапов: прежде всего, необходимо оцифровать график функции y=f(x), то есть получить ряд соответствующих значений по горизонтальной и вертикальной осям.
Рис. 2. Пример зависимости для функции одной переменной |
В примере, показанном на рис. 2 были получены два массива, каждый из которых состоит из 15 значений. По горизонтальной оси [0.10 0.31 0.51 0.72 0.93 1.14 1.34 1.55 1.76 1.96 2.17 2.38 2.59 2.79 3.00].По вертикальной оси [0.1010 0.3365 0.6551 1.1159 1.7632 2.5847 3.4686 4.2115 4.6152 4.6095 4.2887 3.8349 3.4160 3.1388 3.0603].
Ниже приводится программа создания, обучения нейронной сети и вывода результатов.
x=[0.10 0.31 0.51 0.72 0.93 1.14 ...
1.34 1.55 1.76 1.96 2.17 2.38 ...
2.59 2.79 3.00];
y=[0.1010 0.3365 0.6551 1.1159 1.7632 2.5847 ...
3.4686 4.2115 4.6152 4.6095 4.2887 3.8349 ...
3.4160 3.1388 3.0603];
net=newff([0 3],[5,1],{'tansig','purelin'},'trainbfg');
net.trainParam.epochs=300;
net.trainParam.show=50;
net.trainParam.goal=1.37e-2;
[net,tr]=train(net,x,y);
an=sim(net,x);
plot(x,y,'+r',x,an,'-g'); hold on;
xx=[0.61 2.61];
v=sim(net,xx)
plot(xx,v,'ob','MarkerSize',5,'LineWidth',2)
В результате выполнения программы получаются следующие результаты, отражённые на рис. 3 и 4:
Рис. 3. Характеристика точности обучения в зависимости от числа эпох обучения |
Рис. 4. Результаты моделирования сети: + - исходные данные; сплошная линия и символ «о» результаты моделирования всей зависимости и в контрольных точках |
В массиве v содержатся приближённые значения для двух контрольных точек, указанных на графике (рис. 2) xx=[0.61 2.61]. При данных параметрах сети получены значения: v = [1.05 3.35]. Сравнив эти приближённые значения с точными значениями [0.85 3.37], можно сделать вывод о корректности построения нейронной сети.
Отчёт о выполнении лабораторной работы №1 должен быть выполнен на листах формата А4 и содержать следующие результаты:
Контрольные задания для лабораторной работы № 4