Алгоритм обратного распространения ошибки
Многослойный персептрон в состоянии решать произвольные задачи. Но долгое время его использование было затруднительно из-за отсутствия эффективного алгоритма обучения. При нескольких слоях настраиваемых весов становится непонятным, какие именно веса подстраивать в зависимости от ошибки сети на выходе. В 1986 г. Румельхарт, Хинтон и Вильяме предложили так называемый алгоритм обратного распространения ошибки (back-propagation).
Алгоритм обратного распространения определяет два потока в сети: прямой поток, от входного слоя к выходному, и обратный поток – от выходного слоя к входному. Прямой поток, также называемый функциональным потоком, продвигает входные сигналы через сеть, в результате чего в выходном слое получаются выходные значения сети. Обратный поток подобен прямому, но продвигает назад по сети значения ошибок, в результате чего определяются величины, в соответствии с которыми следует корректировать весовые коэффициенты в процессе обучения. В обратном потоке значения проходят по взвешенным связям в направлении, обратном направлению прямого потока. Наличие двойного потока в сети иллюстрирует рис. 3.2.
Рисунок 3.2 – Двойной поток в сети.
Сигнал ошибки выходного слоя вычисляется так же, как и в случае однослойного персептрона, так как для выходного слоя известны эталонные значения и энергия ошибки вычисляется непосредственно. Если нейрон расположен в скрытом слое сети, желаемый отклик для него неизвестен. Следовательно, сигнал ошибки скрытого нейрона должен рекурсивно вычисляться на основе сигналов ошибки всех нейронов, с которым он непосредственно связан.
Обозначим ошибку нейрона в некотором слое j следующим образом:
; (3.10)
где pj = Σwjizi – взвешенная сумма входов нейрона;
zi – входы нейрона и соответственно выходы предыдущего слоя нейронов.
Применяя правило дифференциорвания сложно функции, находим выражение для значения ошибки нейрона в выходном слое:
(3.11)
Для нейрона в скрытом слое выражение выводится с учётом, что нейрон посылает сигнал нейронам в следующем слое, для которых ошибка вычисляется по выражению (3.11):
(3.12)
Таким образом, ошибка на каждом слое вычисляется рекурсивно через значения ошибки на предыдущих слоях: коррекция ошибки распространяется обратно по нейронной сети.