Ключ к обучению многослойных персептронов оказался настолько простым и очевидным, что, как оказалось, неоднократно переоткрывался.
Так, например, базовый алгоритм был изложен в диссертации Пола Вербоса (Paul Werbos) 1974 года, но тогда не привлек к себе должного внимания. Рождение алгоритма back-propagation (обратного распространения ошибки) для широкой публики связано с работой группы PDP (Parallel Distributed Processing), освещенной в двухтомном труде 1986г. Именно там в статье Румельхарта, Хинтона и Уильямса была изложена теория обучения многослойного персептрона.
Между тем, в случае дифференцируемых функций активации рецепт нахождения производных по любому весу сети дается т.н. цепным правилом дифференцирования, известным любому первокурснику. Суть метода back-propagation - в эффективном воплощении этого правила.
Фрэнк Розенблаттом использовал в своем персептроне недифференцируемую ступенчатую функцию активации. Возможно, именно это помешало ему найти эфективный алгоритм обучения, хотя сам термин Back Propagation восходит к его попыткам обобщить свое правило обучения одного нейрона на многослойную сеть. Как знать, используй Розенблатт вместо ступенчатой функции активации - сигмоидную, может быть его судьба сложилась бы по-другому.1)
Разберем этот ключевой для нейрокомпьютинга метод несколько подробнее. Обозначим входы n-го слоя нейронов
Для построения алгоритма обучения нам надо знать производную ошибки по каждому из весов сети:
Таким образом, вклад в общую ошибку каждого веса вычисляется локально, простым умножением невязки нейрона
Входы каждого слоя вычисляются последовательно от первого слоя к последнему во время прямого распространения сигнала:
Последняя формула получена применением цепного правила к производной
и означает, что чем сильнее учитывается активация данного нейрона на следующем слое, тем больше его ответственность за общую ошибку.