Изучить возможности многослойного персептрона как аппроксиматора и классификатора.
Назначение алгоритма обратного распространения ошибки – настройка всех слоев многослойной структуры. Рассмотрим работу алгоритма на примере сети с одним скрытым слоем и одним выходом (рис. 5). Преобразования входных сигналов, задаваемые нейронной сетью, определяются следующими формулами:
Общая функция ошибки зависит от весов всех слоев, в нашем случае от вектора W2 и от матрицы W1:
где Y – выход, который задан в обучающей выборке.
Ошибка! Ошибка связи.
Рис. 5. Многослойный персептрон
Теперь необходимо определить приращение каждого веса с помощью частных производных:
Для многослойной архитектуры частные производные ошибки по матрице весов каждого слоя определяются по формуле сложной производной. В случае униполярной сигмоиды правило изменения весов будет следующим:
Таким образом, метод обратного распространения ошибки позволяет изменять веса промежуточных слоев, хотя желаемые значения на промежуточных слоях не заданы.
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.
Пример 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) |
» |
» |
|
1 Каким алгоритмом обучают многослойные НС?
2 Из каких основных этапов состоит алгоритм обратного распространения ошибки?
3 Почему алгоритм обратного распространения ошибки относится к классу алгоритмов градиентного спуска?
4 Как влияет функция принадлежности на правило изменения весов в обратном алгоритме распространения ошибки?
5 Какая функция в среде MATLAB создает НС прямого распространения?
6 Какие функции активации могут быть назначены для нейронов НС прямого распространения?
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.