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

Для обучения персептронов может быть применено несколько правил. Специально для обучения персептрона предложено правило обучения Ф. Розенблатта [1, 4].

Первоначально веса нейрона принимают нулевые значения или инициируются малыми случайными числами. При обучении одного нейрона без смещения возможны три ситуации.

1. Выход Алгоритм обучения персептрона - student2.ru нейрона равен целевому значению Алгоритм обучения персептрона - student2.ru (то есть тому значению, которое должно быть). Тогда ошибка равна Алгоритм обучения персептрона - student2.ru и вектор весов не должен изменяться.

2. Целевое значение Алгоритм обучения персептрона - student2.ru , а выход нейрона Алгоритм обучения персептрона - student2.ru . Ошибка равна Алгоритм обучения персептрона - student2.ru . В этом случае на выходе адаптивного сумматора формируется отрицательная величина Алгоритм обучения персептрона - student2.ru , где Алгоритм обучения персептрона - student2.ru – вектор весов нейрона, Алгоритм обучения персептрона - student2.ru – вектор входа. Выход адаптивного сумматора необходимо скорректировать. Добавим к вектору весов Алгоритм обучения персептрона - student2.ru транспонированный вектор входа Алгоритм обучения персептрона - student2.ru . Тогда выход адаптивного сумматора изменится на положительную величину Алгоритм обучения персептрона - student2.ru : Алгоритм обучения персептрона - student2.ru . После нескольких таких шагов выход адаптивного сумматора станет неотрицательным и вектор входа будет классифицироваться правильно. Значения весов при этом изменятся.

3. Целевое значение Алгоритм обучения персептрона - student2.ru , а выход нейрона Алгоритм обучения персептрона - student2.ru . Ошибка равна Алгоритм обучения персептрона - student2.ru . Выход адаптивного сумматора неотрицательный, а должен быть отрицательным. Вычтем из вектора весов транспонированный вектор входа. Тогда выход адаптивного сумматора изменится на отрицательную величину: Алгоритм обучения персептрона - student2.ru . После нескольких циклов обучения выход адаптивного сумматора станет отрицательным и вектор входа будет классифицироваться правильно.

Суммируя рассмотренные ситуации, можно сказать, что вектор весов должен корректироваться на величину

Алгоритм обучения персептрона - student2.ru ,

где Алгоритм обучения персептрона - student2.ru – ошибка выхода.

Рассматривая смещение как вес для единичного входа, получим

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

Тогда по правилу Розенблатта для i‑го нейрона вектор‑строка весов корректируется по формуле

Алгоритм обучения персептрона - student2.ru ,

где Алгоритм обучения персептрона - student2.ru – вектор‑строка весов i‑го нейрона на k‑ом цикле обучения; Алгоритм обучения персептрона - student2.ru – ошибка нейрона, равная 0, 1 или –1; Алгоритм обучения персептрона - student2.ru – транспонированный вектор входов нейрона.

Известно [3], что персептрон, обучаемый по такому алгоритму, независимо от начального состояния весов и последовательности появления примеров всегда придет к достижению решения за конечное число итераций.

В NNT системы MATLAB разделяют понятия обучения и адаптации. В процессе обучения при неизменных весах на вход сети подаются все обучающие примеры и вычисляется усредненная по всем весам ошибка сети. Величина ошибки используется для корректировки весов. Затем снова повторяется цикл обучения, пока ошибка не станет малой. Процедура предъявления сети всего набора обучающих дан­ных называется эпохой (epoch). Такой режим обучения в литературе часто называют пакетным. В процессе адаптации (последовательного режима обучения) в каждом про­ходе (passes) на вход подается один вектор, вычисляется ошибка и корректируются веса.

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

1.3. Создание персептрона[1]

Для создания персептрона используется функция net = perceptron, где net—имя сети. Эта функция создает персептрон с функцией активации hardlim и использует функцию обучения learnp, реализующую описанный в подразделе 1.2 алгоритм обучения. Можно создать персептрон с функцией активации hardlims и функцией обучения learnpn, отличающейся от learnpтем, что входной вектор нормируется делением на евклидову норму (см. систему помощи MATLAB).

Параметры персептрона можно увидеть, задав команду

>> net

В объекте netможно увидеть параметры персептрона, например, веса входов:

>>inputweights=net.inputweights{1,1}

inputweights =

Neural Network Weight

delays: 0 % задержка

initFcn: 'initzero'% начальные значения весов

initSettings: (none)

learn: true % индикатор настройки – веса настраиваются

learnFcn: 'learnp' % функция настройки

learnParam: (none) % параметры настройки отсутствуют

size: [0 0] % размер матрицы весов

weightFcn: 'dotprod'%функция взвешивания весов – скалярное

%произведение

weightParam: (none) % данные пользователя

userdata: (your custom info)

Русские комментарии добавлены для пояснения. Обратите внимание на нулевой размер матрицы весов.

Информацию о смещениях можно увидеть следующим образом:

>> biases=net.biases{1}

biases =

Neural Network Bias

initFcn: 'initzero'

learn: true

learnFcn: 'learnp'

learnParam: (none)

size: 0

userdata: (your custom info)

Графическое изображение структуры можно просмотреть с помощью функции view(net) — рис. 1.5. На рис. 1.5 показаны нулевые массивы.

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

Рис. 1.5. Структура сети

Как мы убедились, функция perceptron создает объект с нулевыми массивами. Функция обучения создаст необходимые массивы, но рекомендуется предварительно провести конфигурирование сети с помощью функции net = configure(net,P,T), где P — RxQ матрица из Q входных векторов R, T — SxQ матрица из Q целевых векторов.

Для дальнейшего моделирования работы персептрона создадим персептрон с одним нейроном с двумя входами. Зададим входной вектор

>> P=[1; 1];

Пусть для этого входного вектора целевое значение равно единице

>> T=1;

Построим сконфигурированную сеть

>> net1 = configure(net,P,T);

Просмотрим структуру сконфигурированной сети (рис. 1.6)

>> view(net1)

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

Рис. 1.6. Структура сконфигурированной сети

Теперь на структуре сети отображены реальные размеры массивов.

Наши рекомендации