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

 

Многослойный персептрон в состоянии решать произвольные задачи. Но долгое время его использование было затруднительно из-за отсутствия эффективного алгоритма обучения. При нескольких слоях настраиваемых весов становится непонятным, какие именно веса подстраивать в зависимости от ошибки сети на выходе. В 1986 г. Румельхарт, Хинтон и Вильяме предложили так называемый алгоритм обратного распространения ошибки (back-propagation).

Алгоритм обратного распространения определяет два потока в сети: прямой поток, от входного слоя к выходному, и обратный поток – от выходного слоя к входному. Прямой поток, также называемый функциональным потоком, продвигает входные сигналы через сеть, в результате чего в выходном слое получаются выходные значения сети. Обратный поток подобен прямому, но продвигает назад по сети значения ошибок, в результате чего определяются величины, в соответствии с которыми следует корректировать весовые коэффициенты в процессе обучения. В обратном потоке значения проходят по взвешенным связям в направлении, обратном направлению прямого потока. Наличие двойного потока в сети иллюстрирует рис. 3.2.

 

Рисунок 3.2 – Двойной поток в сети.

 

Сигнал ошибки выходного слоя вычисляется так же, как и в случае однослойного персептрона, так как для выходного слоя известны эталонные значения и энергия ошибки вычисляется непосредственно. Если нейрон расположен в скрытом слое сети, желаемый отклик для него неизвестен. Следовательно, сигнал ошибки скрытого нейрона должен рекурсивно вычисляться на основе сигналов ошибки всех нейронов, с которым он непосредственно связан.

Обозначим ошибку нейрона в некотором слое j следующим образом:

; (3.10)

где pj = Σwjiziвзвешенная сумма входов нейрона;

zi – входы нейрона и соответственно выходы предыдущего слоя нейронов.

Применяя правило дифференциорвания сложно функции, находим выражение для значения ошибки нейрона в выходном слое:

(3.11)

Для нейрона в скрытом слое выражение выводится с учётом, что нейрон посылает сигнал нейронам в следующем слое, для которых ошибка вычисляется по выражению (3.11):

(3.12)

Таким образом, ошибка на каждом слое вычисляется рекурсивно через значения ошибки на предыдущих слоях: коррекция ошибки распространяется обратно по нейронной сети.