Лабораторная работа № 2. ИЗУЧЕНИЕ МНОГОСЛОЙНОГО НЕЛИНЕЙНОГО ПЕРСЕПТРОНА И АЛГОРИТМА ОБРАТНОГО РАСПРОСТРАНЕНИЯ ОШИБКИ
1 ЦЕЛЬ РАБОТЫ
Изучить возможности многослойного персептрона как аппроксиматора и классификатора.
2 СВЕДЕНИЯ ИЗ ТЕОРИИ
2.1 Алгоритм обратного распространения ошибки
Пусть определена трехслойная нейронная сеть с п входами, m выходами и l скрытыми между ними элементами, тогда необходимо рассмотреть и построить два слоя весов: от входов к скрытым элементам и к выходу, т. е. (W1, W2).
Назначение алгоритма обратного распространения ошибки – настройка всех слоев многослойной структуры. Рассмотрим работу алгоритма на примере сети с одним скрытым слоем и одним выходом (рис. 5). Преобразования входных сигналов, задаваемые нейронной сетью, определяются следующими формулами:
Общая функция ошибки зависит от весов всех слоев, в нашем случае от вектора W2 и от матрицы W1:
где Y – выход, который задан в обучающей выборке.
Рис. 5. Многослойный персептрон
Теперь необходимо определить приращение каждого веса с помощью частных производных:
Для многослойной архитектуры частные производные ошибки по матрице весов каждого слоя определяются по формуле сложной производной. В случае униполярной сигмоиды правило изменения весов будет следующим:
Таким образом, метод обратного распространения ошибки позволяет изменять веса промежуточных слоев, хотя желаемые значения на промежуточных слоях не заданы.
2.2 Описание основных функций
Функция newff создает нейронную сеть прямого распространения сигнала, обучаемую с помощью алгоритма обратного распространения ошибки:
net = newff(PR, [S1 S2 SNl], {TF1 TF2 TFNl), BTF, BLF, PF).
Рассмотрим параметры функции newff: PR – матрица интервалов значений для R входных элементов, задаваемых минимальным и максимальным значениями; Si – размер i-го слоя, для N слоев; TFi – функция активации i-го слоя, по умолчанию используется функция tansig – гиперболический тангенс; BTF – функция обучения сети методом обратного распространения ошибки, по умолчанию используется функция traingdx; BLF – функция изменения весов при обучении, по умолчанию используется learngdm; PF – функция измерения ошибки, по умолчанию тsе. Функция newff возвращает многослойную нейронную сеть прямого и обратного распространения сигнала и ошибки соответственно. Функции активации могут быть выбраны из следующего перечня: гиперболический тангенс tansig, логистическая сигмоида logsig или линейная функция purelin.
3 ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
ПРИМЕР 1 Создание и обучение нейронной сети с помощью алгоритма обратного распространения ошибки
Зададим с помощью графика исходную функцию:
% входы НС
P = [0 1 2 3 4 5 6 7 8];
% желаемые реакции НС
T = [0 0.44 0.88 0.11 -0.66 -0.95 -0.45 0.18 0.92];
% изображение аппроксимируемой функции
plot(P, T, 'o');
Используем функцию newff, чтобы создать двухслойную сеть прямого распространения. Пусть сеть имеет входы с интервалом значений от 0 до 8, первый слой с 10 нелинейными сигмоидальными, второй – с одним линейным нейронами. Используем для обучения алгоритм обратного распространения ошибки (backpropagation) Левенберга – Марквардта (рис. 6).
% создание двухслойной НС прямого распространения с интервалом
% значений входов от 0 до 8, причем первый слой содержит
% 10 нелинейных сигмоид, а второй — один линейный нейрон.
% Для обучения используется алгоритм обратного распространения
% ошибки (backpropagation).
net = newff([0 8], [10 1], {'tansig' 'purelin'},'trainlm');
% имитация работы необученной НС
yl = sim (net, P);
% изображение результатов работы необученной НС
plot(P, T, 'o', P, yl, 'x') ;
% Обучим сеть на 100 эпохах с целевой ошибкой 0.01:
% установка количества проходов
net.trainParam.epochs = 50;
% установка целевого значения ошибки
net.trainParam.goal = 0.01;
% обучение НС (рис. 6)
net = train(net, P, T) ;
% имитация работы обученной НС
y2 = sim(net, P);
% изображение результатов работы НС (рис. 7)
plot(P, T, 'o', P, yl, 'x', P, y2, '+');
Рис. 6. График обучения двухслойного персептрона
Для исследования работы алгоритма обратного распространения ошибки воспользуемся примером, встроенным в Matlab toolbox, набрав команду demo.
В появившемся диалоговом окне необходимо последовательно выбирать пункты меню: Toolboxes->Neural Network->Other Demos->Other Neural Network Design textbook demos->Table of Contents->10-13->Backpropagation Calculation.
Рис. 7. Результат аппроксимации векторов двухслойным персептроном
В примере используется двухслойный персептрон с двумя нелинейными нейронами в первом слое и одним во втором. Действие алгоритма обратного распространения ошибки разбито на следующие шаги: назначение входа и желаемого выхода, прямой проход входного сигнала до выхода, обратное распространение ошибки, изменение весов. Переменные, позволяющие проследить работу алгоритма обратного распространения ошибки, обозначены следующим образом:
Р – входной сигнал;
W1(i) – вектор весов первого слоя, W1(1) – вес связи, передающий входной сигнал на первый нейрон, a W1(2) – на второй;
W2(i) – вектор весов второго слоя, W2(1) – вес связи, передающий входной сигнал с первого нейрона во второй слой, a W2(2) – со второго;
B1(i) – вектор пороговых значений (bias) нейронов первого слоя, i = 1, 2;
В2 – пороговое значение (bias) нейрона второго слоя;
N1(i) – вектор выходов первого слоя, i = 1, 2;
N2 – выход второго слоя;
A1(i) – вектор выходных сигналов первого слоя после выполнения функции активации (сигмоиды), i = 1, 2;
А2 – выход второго слоя после выполнения функции активации (линейной);
lr – коэффициент обучаемости.
Пусть
входной сигнал Р = 1,0, а желаемый выход .
Результаты выполнения этапов алгоритма представлены в табл. 1.
Таблица 1
Результаты поэтапного выполнения алгоритма обратного распространения ошибки
Этап |
Прямое распространение входного сигнала |
Обратное распространение ошибки |
Изменение весов |
A1(1), A1(2) |
Logsig(W1P+B1) = = [0,321, 0,368] |
Не выполняется |
Не выполняется |
А2 |
purelin(W1P+В1) = = 0,446 |
То же |
То же |
е |
t - A2 = 1,261 |
» |
» |
N1(1), N1(2) |
Не выполняется |
|
» |
N2 |
То же |
|
» |
W1(1) W1(2) |
» |
Не выполняется |
|
B1(1), B1(2) |
» |
То же |
|
B2 |
» |
» |
|
W2(2) |
» |
» |
|
4 КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Каким алгоритмом обучают многослойные НС?
2. Из каких основных этапов состоит алгоритм обратного распространения ошибки?
3. Почему алгоритм обратного распространения ошибки относится к классу алгоритмов градиентного спуска?
4. Как влияет функция принадлежности на правило изменения весов в обратном алгоритме распространения ошибки?
5. Какая функция в среде MATLAB создает НС прямого распространения?
6. Какие функции активации могут быть назначены для нейронов НС прямого распространения?
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.