Алгоритм обучения однослойного персептрона
Персептрон должен решать задачу классификации по бинарным входным сигналам. Набор входных сигналов будем обозначать
-мерным вектором . Все элементы вектора являются булевыми переменными (переменными, принимающими значения "Истина" или "Ложь"). Однако иногда полезно оперировать числовыми значениями. Будем считать, что значению "ложь" соответствует числовое значение 0, а значению "Истина" соответствует 1.Персептроном будем называть устройство, вычисляющее следующую систему функций:
(1) |
где
— веса персептрона, — порог, — значения входных сигналов, скобки означают переход от булевых (логических) значений к числовым значениям по правилам, изложенным выше.Обучение персептрона состоит в подстройке весовых коэффициентов. Пусть имеется набор пар векторов
, , называемый обучающей выборкой. Будем называть нейронную сеть обученной на данной обучающей выборке, если при подаче на входы сети каждого вектора на выходах всякий раз получается соответствующий вектор .Предложенный Ф.Розенблаттом метод обучения состоит в итерационной подстройке матрицы весов, последовательно уменьшающей ошибку в выходных векторах. Алгоритм включает несколько шагов:
Шаг 0 | Начальные значения весов всех нейронов полагаются случайными |
Шаг 1 | Сети предъявляется входной образ , в результате формируется выходной образ . |
Шаг 2 | Вычисляется вектор ошибки , делаемой сетью на выходе. Дальнейшая идея состоит в том, что изменение вектора весовых коэффициентов в области малых ошибок должно быть пропорционально ошибке на выходе и равно нулю, если ошибка равна нулю. |
Шаг 3 | Вектор весов модифицируется по следующей формуле: . Здесь — темп обучения. |
Шаг 4 | Шаги 1—3 повторяются для всех обучающих векторов. Один цикл последовательного предъявления всей выборки называется эпохой. Обучение завершается по истечении нескольких эпох: а) когда итерации сойдутся, т.е. вектор весов перестает изменяться, или б) когда полная, просуммированная по всем векторам абсолютная ошибка станет меньше некоторого малого значения. |
Объясним данный алгоритм более подробно. Подаем на вход персептрона такой вектор , для которого уже известен правильный ответ. Если выходной сигнал персептрона совпадает с правильным ответом, то никаких действий предпринимать не надо. В случае ошибки, необходимо обучить персептрон правильно решать данный пример. Ошибки могут быть двух типов. Рассмотрим каждый из них.
Первый тип ошибки: на выходе персептрона — 0, а правильный ответ — 1. Для того чтобы персептрон выдавал правильный ответ, необходимо, чтобы сумма в правой части (1) стала больше. Поскольку переменные принимают значения 0 или 1, увеличение суммы может быть достигнуто за счет увеличения весов . Однако нет смысла увеличивать веса при переменных , которые равны нулю. Таким образом, следует увеличить веса при тех переменных xi, которые равны 1.
Первое правило. Если на выходе персептрона получен 0, а правильный ответ равен 1, то необходимо увеличить веса связей между одновременно активными нейронами. При этом выходной персептрон считается активным. Второй тип ошибки: на выходе персептрона — 1, а правильный ответ равен нулю. Для обучения правильному решению данного примера следует уменьшить сумму в правой части (1). Следовательно, необходимо уменьшить веса связей при тех переменных, которые равны 1 (поскольку нет смысла уменьшать веса связей при равных нулю переменных ). Необходимо также провести эту процедуру для всех активных нейронов предыдущих слоев. В результате получаем второе правило.
Второе правило. Если на выходе персептрона получена единица, а правильный ответ равен нулю, то необходимо уменьшить веса связей между одновременно активными нейронами.
Таким образом, процедура обучения сводится к последовательному перебору всех примеров обучающего множества с применением правил обучения для ошибочно решенных примеров. Если после очередного цикла предъявления всех примеров окажется, что все они решены правильно, то процедура обучения завершается.
Нерассмотренными остались два вопроса. Первый — о сходимости процедуры обучения.