Введение в машинное обучение - страница 13



(x>(i)) > 0.5, то объект принадлежит к искомому классу. Однако чаще, в том числе с целью унификации, используется метод голосования («победитель забирает все»), когда сеть имеет в выходном слое 2 нейрона для двух классов объектов (рисунок 1.6), три для трех и т.д.


Рисунок 2.9. Схема многослойной сети с двумя выходами


Для обучения, то есть минимизации функции ошибки многослойной ИНС, используют алгоритм обратного распространения ошибки (Backpropagation of errors – BPE) [[55]] и его модификации, направленные на ускорение процесса обучения.

2.6.3. Алгоритм обратного распространения ошибки

Суть алгоритма BPE заключается в следующем. Для тренировочного набора примеров



устанавливаем выход первого слоя нейронов:



Шаг 1. Выполняем этап прямого распространения сигнала по слоям сети, то есть вычисляем сигнал на выходе сети, выполняя расчет для каждого нейрона в каждом слое, как показано в выражениях 1.4, 1.5. Результаты в виде выходных значений нейронов сети a>[0],a>[1],…,a>[L] сохраняем в промежуточном хранилище (кэш).

Шаг 2. Используя полученный результат на выходе сети a>[L] = h>w>(>i>) (x), и необходимое для данного примера выходное значение y>(i), рассчитываем ошибку выходного слоя:



где L – номер выходного слоя нейронной сети.

Шаг 3. «Возвращаем» ошибку, распространяя ее обратно по сети с учетом значения производной:



где знак * – символ поэлементного умножения; g' – производная.


Производная сигмоидальной активационной функции:



Для любого скрытого слоя сети:



В случае сигмоидальной активационной функции:



Рассчитанное значение градиентов ошибки dz>[1], dz>[2], … , dz>[L] также сохраняем в кэше.

Шаг 4. Модифицируем веса сети с учетом значения ошибки для всех слоев I ∈ L:



где i – номер слоя сети; ρ – параметр обучения (learning rate) (0 < ρ < 1); Θ>(i) – матрица весов слоя i; dz>[i] – рассчитанное значение ошибки i-го слоя (точнее говоря, градиент ошибки).


Получив измененные значения весов, повторяем шаги 1–4 до достижения некоторого минимального значения ошибки либо заданное количество раз.

Процесс обучения искусственной нейронной сети можно представить в виде следующей схемы (рисунок 2.10):


Рисунок 2.10. Итеративный процесс обучения искусственной нейронной сети


Рассмотрим пошаговый пример расчета прямого распространения сигнала, обратного распространения ошибки и коррекции весов.


Пошаговый пример расчета алгоритма обратного распространения ошибки


В этом примере (рисунок 2.11) веса нейронной сети будем обозначать символом w, смещения b. Номер слоя, как и ранее, указываем верхним индексом в квадратных скобках для того, чтобы не путать с индексом обучающего примера, номер нейрона в слое – нижним индексом. Выход нейрона по-прежнему обозначаем символом а.


Рисунок 2.11. Пример нейронной сети с одним скрытым слоем


Входной слой с его входами x для единообразия последующих матричных операций обозначаем как нулевой слой – a>[0]. В нашем примере x1 = 0, x2 = 1, тогда a>1>[0] = x1 = 0 и a>2>[0] = x2 = 1. Смещение (bias) во всех слоях a>1>[l] = 1.


На вход сети, таким образом, подается вектор [1,0,1], а на выходе сети необходимо получить y=1.

Шаг 1. Прямое прохождение сигнала.

Рассмотрим прямое прохождение сигнала от входа к выходу:



Выход нейронной сети:



Шаг 2. Расчет ошибки выходного слоя.

Сеть должна давать значение y>(1) = 1, однако получена величина 0.78139. Ошибка, c которой сеть «предсказывает» наш единственный пример, равна разнице между ожидаемым значением и полученным результатом.