Алгоритм обучения по дельта-правилу — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Алгоритм обучения по дельта-правилу

2019-11-28 670
Алгоритм обучения по дельта-правилу 0.00 из 5.00 0 оценок
Заказать работу

Обучение НС происходит на некоторой обучающей выборке, для каждого образца которой определяются и сравниваются с желаемыми значениями все текущие выходы. Если разница недопустима, то веса изменяются. Окончанием обучения считается ситуация, когда общая ошибка на всех образцах допустима.

Все алгоритмы обучения нейросетей являются разновиднос­тями алгоритма обучения по методу коррекции ошибки, ко­торая осуществляется по-разному. Идея изменения весов НС сводится к нахождению общей меры качества сети, в качестве которой обычно выбирают функцию ошибки сети. Тогда, чтобы подобрать нужные веса, необходимо минимизировать функцию ошибки. Самым распространенным методом поиска минимума является метод градиентного спуска. Для случая функции с одной переменной веса изменяются в направлении, противоположном производной, т. е. справедлива формула

 

 

где h – некоторый уровень обучения, шаг изменения;

F ' (W) – производная функции качества НС для одной переменной.

Для функции F от n переменных и единичного вектора е в пространстве Rn || е || = 1, , дифференциал вы­ражается формулой

 

.

 

Для случая е = (0, 0...1...0) определим частный дифферен­циал

 

.

 

Таким образом, антиградиент – это набор следующих дифференциалов:

 

 

Для определения обобщенной функции ошибки рассмот­рим обучающую выборку {(х k, yk)}, где k = 1,..., К. Накопленная по всем эпохам ошибка

 

 

Формула модификации весов НС

 

 

уточняется для различных видов функции активации. Для линейной функции F (t) = t, НС формирует каждый выход как скалярное произведение весов на вектор входов:  и градиент будет равен:

 

 

где Yi – желаемый выход; Oi – полученный выход; X – вектор выхода.

    Таким образом, получаем формулу изменения весов

 

 

    Если значением  назвать разницу (Yi – О i), то получим формулу

 

 

что является алгоритмом обучения по -правилу.

   

Описание основных функций

Для работы с нейронными сетями необходимо инсталли­ровать MATLAB и обладать первоначальными знаниями относи­тельно языка системы. Поскольку MATLAB представляет собой интерпретатор, то обучение инструментарию нейронных сетей заключается в основном в изучении функций и их параметров. Узнать возможности нейрона как классификатора простых линейно сепарабельных задач можно путем проведения экс­периментов с моделью одного линейного нейрона.

Функция newp. Для того чтобы создать нейрон, используют функцию newp, имеющую следующий синтаксис:

где PR – матрица минимальных и максимальных R входных эле­ментов; S – количество нейронов (при создании одного нейрона S =1); TF – функция активации (transfer function); LF – имя функции обучения нейрона.

В случае если параметры функции newp не заданы, их зна­чения определяются посредством ввода значений в диалого­вые окна. Построенный нейрон характеризуется функциями весов (weight function), входов сети (net input function) и оп­ределенной функцией активации. Функция весов – это ум­ножение весов на входной сигнал, функция входов сети – их сумма. Веса задаются как для входов нейрона, так и для фик­сированного входа, задающего порог срабатывания (bias). Вектор весов инициализируется нулями. Для обучения ис­пользуются функции, рассмотренные ниже.

Функция learnp настраивает веса нейрона. Синтаксис функции обучения довольно сложен:

 

 

Функция lea rn p (W, P, Z, N, A, T, E, gW, gA, D, LP, LS) имеет несколько входов, где вектор W – вектор весов; Р – вектор входов; Z – вектор взвешенных входов; N – вектор сети; А – вектор выхода; Т – вектор желаемых выходов; Е – вектор ошибок; gW – вектор изменения весов; gA – изменения вы­ходов. Функция возвращает значения: dW – изменения мат­рицы весов; LS – новый уровень обученности.

Функция learnp может быть использована с параметрами по умолчанию:

 

 

Использование пустого списка [ ] означает параметр по умолчанию.

Функция learnp вычисляет изменение весов dW для задан­ного нейрона в соответствии с правилом обучения персептрона:

 

 

т. е. .

Функция learnpn настраивает нормализованные веса:

 

 

Функция learnpn вычисляет изменение весов dW для дан­ного нейрона и его входа Р и ошибки Е в соответствии с нор­мализованным правилом обучения персептрона:

 

 

т. е. .

 

Линейный нейрон имеет одно существенное ограничение. Входные векторы должны быть линейно разделимы. Если векторы невозможно отделить прямой или гиперплоскостью, то персептрон не способен решить задачу классификации.

Функция adapt адаптирует НС к условиям задачи:

 

 

Параметры функции adapt: net – имя сети; Р – входы сети; T – желаемый выход; Р i – исходные условия задержки; A i – ис­ходные условия задержки для слоя. Функция возвращает па­раметры адаптированной сети net.adaptParam: net – изменен­ная сеть; Y – выход сети; Е – ошибки сети; Pf – условия за­держки входов; Af – условия задержки слоя. Параметры Р i и Pf необязательные и необходимы только для сетей, имеющих задержки на входах и слое.

Функция train также обучает НС и использует следующий синтаксис:

 

 

Функция train имеет следующие парамет­ры: net – сеть; Р – входы сети; Т – желаемый выход; Р i – исходные условия задержки входа; A i – исходные условия за­держки слоя.

Функция sim имитирует нейронную сеть:

 

 

где net – сеть; Р – входы сети; P i — исходные условия задержки входов сети; A i – исходные условия задержки слоя. Функция возвращает Y – выходы сети; Pf – окончательные условия задержки входов; Af – окончательные условия задержки слоя.

Функции активации. Ниже представлены назначения этих функций.

 

Функция Назначение
hardlim Возвращает 1, если на входе положительное число и 0 в противном случае.
tansig Вычисляет гиперболический тангенс от входа.
purelin Вычисляет выход слоя от сетевого входа.

 

Функции графического интерфейса и вспомогательные функции. Назначение этих функций представлено ниже.

 

Функция Назначение
axis([Xmin Xmax Ymin Ymax) Устанавливает диапазоны координатных осей.
title(‘ строка ’) Выводит в графическое окно рисунков заголовок графика.
rand(M, N) Возвращает матрицу размерности М на N сослу­чайными значениями.
xlabel (‘ строка ’) ylabel (‘ строка ’) Подписывают наименование координатных осей.
cla reset Очищает координатную сетку в окне рисунков.
hold on hold off Включают и отключают режим добавления графи­ков на координатную сетку.
text(X, Y, ‘ строка ’) Выводит строку, начиная с указанных координат в поле рисунков.
pause (n) Ожидает пользовательского ответа п секунд.
plot (X, Y, ‘цвет и символ’) Изображает на координатной сетке точки с коор­динатами, заданными векторами X, Y, с помощью указанного символа и цвета.
plotpv(P, V) Изображает точки Р указанными маркерами Т, где Р – матрица входных векторов размерностью R на Q (R должен быть 3 или меньше), Т – матрица дво­ичных векторов размерностью 5 на Q (S должен быть 3 или меньше).
plotes (WV, BV, ES, V) Изображает поверхность ошибки на отдельном входе, где WV – вектор строк значений весов W размерности N, BV – вектор строк значений поро­гов В размерности М, ES – матрица ошибки раз­мерности М на N, V – угол зрения по умолчанию [-37, 5, 30].
plotsom(POS) Изображает позицию нейрона красной точкой, связывая синей линией нейроны, находящиеся друг от друга на расстоянии 1. POS – матрица S N -размерных нейронов.
ind2vec vec2ind Позволяют представить индексы либо собственно значениями индексов, либо векторами, строки ко­торых содержат 1 в позиции индекса.
full Преобразует разреженную матрицу в полную.
maxlinlr(P) Функция возвращает максимальный уровень обученности линейного слоя без bias, который обучал­ся только на векторе Р.
trainlm Выполняет обучение многослойной НС методом Левенберга-Марквардта.
netprod Входная сетевая функция, которая вычисляет вы­ход сетевого слоя, умножая входной вектор на веса и прибавляя bias.
init Итеративно инициализирует НС.

 

Структура данных описания нейронных сетей. Структура данных net – это описание обученной НС. Обучение осу­ществляется в соответствии со следующими параметрами, значения которых либо устанавливаются пользователем, либо по умолчанию.

 

Структура данных Комментарий
net.trainParam. epochs 100 Максимальное количество эпох обучения.
net. trainParam.goal 0 Целевое значение ошибки.
net.trainParam.max_fail 5 Максимальное значение ошибки.
net.trainParam.mem reduc 1 Фактор оптимизации процесса обучения: оптимизация использования памяти или времени процессора.
net. trainParam. min_grad 1e-10 Минимальное значение градиента.
net.trainParam.show 25 Количество эпох между показами.
net.trainParam.time inf Максимальное время обучения в секундах.
TR Структура данных, содержащая значения об обученности НС в текущую эпоху.
TR. epoch Номер эпохи.
TR.perf Уровень обученности (Trainingperformance).
TR.vperf Степень качества (Validation performance).
TR.tperf Результативность обработки теста (Testper ­ formance).
TR.mu Значение адаптивности.

 

Структура данных описания адаптированной НС net. adaptfcn включает в себя следующие поля net. adapt. param: NET – адаптированная НС; Y – выходы НС; Е – ошибки НС; Pf – окончательные входные значения задержек; Af – окончательные выходные задержки; TR – результат обучения (эпохи и целевая ошибка). Проведем в среде Matlab toolbox эксперименты, используя рассмотренные функции.

Ход работы

Создание нейронов, реализующих функ­ции логического И и логического ИЛИ

Создадим нейрон с одним двухэлементным входом (интервалы первого и второго элементов [0; 1]). Определим два первых параметра функции newp, а в качестве значений третьего и четвертого параметра (типа функции активации и имени процедуры обучения) воспользуемся значениями по умолчанию.

Код нейрона выполняющего функцию логического И:

>> net = newp([0 1; -2 2], 1);

>> % создание последовательности значений входа

P1 = {[0; 0] [0; 1] [1; 0] [1; 1]};

% имитация работы нейрона net на последовательности входов Р

% желаемых выходов – Т1, которая позволит нам провести адаптацию

% нейрона (обучить его) через 20 проходов.

Y = sim (net, P1);

% создание последовательности выходов

T1 = {0, 0, 0, 1};

% установка количества проходов (циклов) адаптации

net.trainParam.passes = 20;

% адаптация нейрона net для обучающей выборки <Р1; Т1>

net = train (net, P1, T1);

% симуляция работы нейрона net на последовательности входов P1

Y = sim (net, P1);

 

Рисунок 1 – Результат обучения сети

 

Для переобучения нейрона на выполнение функции ИЛИ переопределим входы Р и выходы Т.

 

Код для логического ИЛИ:

% создание последовательности входов

P2 = [0 0 1 1; 0 1 0 1];

% создание последовательности выходов (реакций) для нейрона,

% выполняющего функцию логического ИЛИ

T2 = [0, 1, 1, 1];

% Инициализируем нейрон, обучим его на 20 проходах (эпохах)

% инициализация нейрона net

net = init (net);

% имитация работы нейрона net на последовательности входов Р2

Y = sim (net, P2);

% установка количества проходов

net.trainParam.epochs = 20;

% обучение нейрона net на обучающей выборке <Р2, Т2>

net = train(net, P2, T2);

% имитация работы нейрона net на последовательности входов Р2

Y = sim (net, P2);

 

Рисунок 2 – Результат обучения сети

 

Обучение нейрона классификации векто­ров на две категории

Начнем с классификации векторов на основе двухвходового нейрона. Будем использовать функцию newp для создания нейрона, sim для имитации его работы, adapt для адаптации (обучения) нейронной сети. Обучим двухвходовый нейрон классифицировать входные векторы на две категории.

Код:

>> % определение четырех двухэлементных входов

P = [ -0.5 -0.5 0.4 -0.2; -0.5 0.5 -0.4 1.0];

% зададим желаемые выходы нейрона для определенных векторов

T = [1 1 0 0];

% изобразим входные векторы (точки) на плоскости:

plotpv(P, T);

 

Рисунок 3 - Входные векторы (точки) на плоскости

 

Создадим один линейный нейрон с двумя входами, значения которых лежат в интервале [-1, 1].

Нейрон по умолчанию имеет функцию активации hardlim и такой нейрон разделяет входные векторы прямой линией.

Определим координаты линии классификации: веса (IW) и порог срабатывания нейрона (b).

Код:

% получение управляющей структуры linehandle для изображения

% разделяющей линии в координатах весов (IW) и порога

% срабатывания нейрона (b)

linehandle = plotpc (net.IW{1}, net.b{1});

% изображение разделяющей прямой

plotpc(net.IW{1}, net.b{1});

Если исходным весам задать нулевые значения, то любые входы дадут одинаковые выходы, и линия классификации не будет видна на плоскости. Проведем обучение:

>> % очистка координатных осей

cla;

% изображение входных векторов двух категории, категория задается

% элементами вектора Т

plotpv(P, T);

% получение управляющей структуры linehanctle

linehandle = plotpc(net.IW{1}, net.b{1});

% присвоение начального значения ошибки

E = 1;

% инициализация нейрона

net = init (net);

% получение управляющей структуры linehandle

linehandle = plotpc (net.IW{1}, net.b{1});

% организация цикла пока ошибка не равна 0

while (mse(E))',

% адаптация нейрона net на обучающей выборке <Р, Т>,

% функция возвращает адаптированный нейрон net,

% выход Y, ошибку Е

[net, Y, E] = adapt (net, P, T);

% изображение разделяющей прямой нейрона после адаптации

linehandle = plotpc(net.IW{1}, net.b{1}, linehandle);

% очистка окна графиков

drawnow;

% конец цикла while

end;

 

Рисунок 4 - Прямая, разделяющая исходные векторы на классы

Обученный нейрон можно использовать для классификации любого вектора:

% включить режим добавления графиков в графическом окне

hold on;

% изображение входных точек в соответствии с категориями Т

plotpv(Р, Т);

% изображение разделяющей поверхности

plotpc (net.IW{1}, net.b{1});

% отключение режима добавления графиков

hold off;

Нейрон классифицирует новую точку, как принадлежащую категории «0» (представлена кружком), а не категории «1» (представлена +).

Создание слоя линейных нейронов

Рассмотрим последовательность из 10 шагов (для выхода T 1, который известным образом зависит от входов Р1):

% последовательность входов

P1 = {-1 0 0 0 1 1 -1 0 -1 1};

% последовательность выходов

T1 = {-1 -1 1 0 1 2 0 -1 -1 1};

Используем функцию newlin, чтобы создать нейрон со зна­чениями входа в интервале [-1; 1], задержками входа от 0 до 1 и уровнем обучения 0,1.

% создание линейного слоя из одного нейрона со значениями входа

% в интервале [-1; 1], задержками входа от 0 до 1

% и уровнем обучения 0,1.

net = newlin ([-1 1], 1, [0 1], 0.1);

 

Адаптируем нейрон к задаче одним проходом через после­довательность входа. Измерим среднюю квадратичную ошиб­ку с помощью функции mse (e).

% адаптация нейрона к последовательности P1

[net, y, e, pf] = adapt (net, P1, T1);

% измерение ошибки

mse (e)

Получим довольно большую ошибку. Вновь адаптируем сеть на 10 шагах последовательности, используя предыдущее значение pf какновое исходное значение задержки:

P2 = {1 -1 -1 1 1 -1 0 0 0 1};

T2 = {2 0 -2 0 2 0 -1 0 0 1};

% адаптация с начальным вектором задержки pf

[net, y, e, pf] = adapt (net, P2, T2, pf);

mse (e)

Адаптируем сеть на 100-разовом прогоне последовательности:

% формирование новой последовательности входов

P3 = [P1 P2];

% формирование новой последовательности выходов

T3 = [T1 T2];

% установка количества проходов

net.adaptParam.passes = 100;

% адаптация нейрона

[net, y, e] = adapt (net, P3, T3);

Получим приемлемую ошибку, значит сеть обучена зависимости входов от выходов.

Вывод: вданной практической работы были изучены свойства линейного нейрона и линейной нейронной сети.

 

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Что представляет собой математическая модель нейрона?

2.Как выглядит формульное представление алгоритма обучения по дельта-правилу?

3.Какое ограничение имеет линейный нейрон?

4.Можно ли обучить линейный нейрон выполнять логиче­скую функцию исключающего ИЛИ?

5. Какие функции используются для настройки весов персептрона в среде MATLAB? В чем их отличие?

6. Различные типы нейронов.

7. Задачи нейронной сети. Основные свойства.

8. Моделирование нейронного мозга.


 

Практическая работа №6


Поделиться с друзьями:

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.109 с.