Лабораторная работа. ЛАБОРАТОРНАЯ РАБОТА 2(1). Аппроксимацияфункцииодной
Скачать 333.68 Kb.
|
Лабораторная работа № 2Аппроксимацияфункцииоднойпеременной Цель работыnewff Научиться работать с сетью прямой передачи сигнала, функция [1]. Разобраться с алгоритмом обратного распространения ошибки. Краткие теоретические сведенияВ лабораторной работе рассматривается нейронная сеть с прямой передачей сигнала (с прямой связью) [2], то есть сеть, в которой сигналы передаются только в направлении от входного слоя к выходному, и элементы одного слоя связаны со всеми элементами следующего слоя. Важнейшим для реализации нейронных сетей является определение алгоритма обучения сети. В настоящее время одним из самых эффективных и обоснованных методов облучения нейронных сетей является алгоритмобратногораспространенияошибки, который применим к однонаправленныммногослойным сетям. В многослойных нейронных сетях имеется множество скрытых нейронов, входы и выходы которых не являются входами и выходами нейронной сети, а соединяют нейроны внутри сети, то есть скрытыенейроны. Занумеруем выходы нейронной сети индексом j 1,2,…, n, а обучающие примеры индексом M 1,2,…, M0 . Тогда в качестве целевой функции можно выбрать функцию ошибки как сумму квадратов расстояний между реальными выходными состояниями yjM нейронной сети, выдаваемых сетью на входных данных примеров, и правильными значениями функции djM, соответствующими этим примерам. Пусть x xi– столбец входных значений, где i=1,2,..,n. Тогда y {yj} – выходные значения, где j=1,2,…,m. В общем случае n≠m. Рассмотрим разность yjM djM, где dji– точное (правильное) значение из примера. Эта разность должна быть минимальна. Введем расстояния согласно евклидовой метрике, определив норму y d . (1) Пусть целевая функция имеет вид E 1 ( y2 j,M j,M dj,M )2 . (2) Коэффициент ½ выбран из соображений более короткой записи последующих формул. Задача обучения нейронной сети состоит в том, чтобы На рис. 1 показана архитектура нейронной сети с прямой передачей сигнала. Рис. 1. Схема архитектуры нейронной сети с прямой передачей сигнала Здесь приняты обозначения, используемые в [1], а именно, p1 - вектор входа, IWi, j, LWi, j матрицы весов входа и выхода, bi смещение, ai- выход слоя, y- выход сети, tansig(гиперболическая тангенциальная), purelin (линейная) - соответствующие функции активации. Веса и смещения определяются с помощью алгоритма обратного распространения ошибок [3]. Обучение сети обратного распространения требует выполнения следующих операций: Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети. Вычислить выход сети. Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары). Скорректировать веса сети так, чтобы минимизировать ошибку. Повторять шаги с 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.28873.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');%Архитектура нейронной сети: двухслойная сеть с прямой передачей сигнала; скрытый слой - 5 нейронов с функцией активации tansig; выходной слой - 1 нейрон с функцией активации purelin, диапазон изменения входа [0 3];net.trainParam.epochs=300; % количество циклов обученияnet.trainParam.show=50; % количество эпох между показами net.trainParam.goal=1.37e-2; % целевое значение ошибки [net,tr]=train(net,x,y); % обучение сети net an=sim(net,x); % запуск сети 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) Функция trainbfg является функцией квазиньютоновского алгоритма BP BFGS. В дополнение к сети BP эта функция может также обучать любую форму нейронной сети, требуя, чтобы ее функция возбуждения имела производные по весам и входам. BP (обратное распространение) - это многослойная нейронная сеть с прямой связью В результате выполнения программы получаются следующие результаты, отражённые на рис. 3 и 4: Рис. 3. Характеристика точности обучения в зависимости от числа эпох обучения Рис. 4. Результаты моделирования сети: + - исходные данные; сплошная линия и символ «о» – результаты моделирования всей зависимости и в контрольных точках В массиве v содержатся приближённые значения для двух контрольных точек, указанных на графике (рис. 2) xx=[0.61 2.61]. При данных параметрах сети получены значения: v = [1.05 3.35]. Сравнив эти приближённые значения с точными значениями [0.85 3.37], можно сделать вывод о корректности построения нейронной сети. Отчёт о выполнении работыОтчёт о выполнении лабораторной работы №1 должен быть выполнен на листах формата А4 и содержать следующие результаты: Исходные данные (рис. 2); Текст программы с подробными комментариями; Характеристику точности обучения (рис. 3); Результаты моделирования (рис. 4); Сопоставление результатов в контрольных точках; Краткие выводы о результатах работы. Контрольные задания для лабораторной работы № 1 |