Введение в машинное обучение - страница 13
Рисунок 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 которой сеть «предсказывает» наш единственный пример, равна разнице между ожидаемым значением и полученным результатом.