п-ю слоя нейронов х". Нейроны этого слоя вычисляют соответствующие линейные
Разберем этот ключевой для нейрокомпьютинга метод несколько подробнее. Обозначим входы
П-Ю слоя HI
комбинации:
Розенблатт трагически погиб, не перенеся тяжелую депрессию, вызванную прекращением финансирования и охлаждением научного собщества к персептронам после выхода в свет книги Минского и Пейперта.
Когда функционал ошибки задан, и задача сводится к его минимизации, можно предложить, например, следующую итерационную процедуру подбора весов: w" = w - т? - или, что
то же самое: w," = Wy - rj .
Здесь rj« w - темп обучения на шаге т. Можно показать, что постепенно уменьшая темп
обучения, например по закону г/ ос описанная выше процедура приводит к нахождению локального минимума ошибки.
Исторически наибольшую трудность на пути к эффективному правилу обучения многослойных персептронов вызвала процедура эффективного расчета градиента функции ошибки Ж/<.
Дело в том, что ошибка сети определяется по ее выходам, т.е. непосредственно связаня лишь с выходным слоем весов. Вопрос состоял в том, как определить ошибку для нейронов на скрытых слоях, чтобы найти производные по соответствующим весам. Нужна была процедура передачи ошибки с выходного слоя к предшествующим слоям сети, в направлении обратном обработке входной информации. Поэтому такой метод, когда он был найден, получил название метода обратного распространения ошибки.
Метод обратного распространения ошибки
Ключ к обучению многослойных персептронов оказался настолько простым и очевидным, что, как оказалось, неоднократно переоткрывался.
& Так, например, базовый алгоритм был изложен в диссертации Пола Вербоса (Paul Werbos) 1974 года, но тогда не привлек к себе должного внимания. Рождение алгоритма back-propagation (обратного распространения ошибки) для широкой публики связано с работой группы PDP (Parallel Distributed Processing), освещенной в двухтомном труде 1986г. Именно там в статье Румельхарта, Хинтона и Уильямса была изложена теория обучения многослойного персептрона.
Между тем, в случае дифференцируемых функций активации рецепт нахождения производных по любому весу сети дается т.н. цепным правилом дифференцирования, известным любому первокурснику. Суть метода back-propagation - в эффективном воплощении этого правила.
& Фрэнк Розенблаттом использовал в своем персептроне недифференцируемую ступенчатую функцию активации. Возможно, именно это помешало ему найти эфективный алгоритм обучения, хотя сам термин Back Propagation восходит к его похгыткам обобщить свое правило обучения одного нейрона на многослойную сеть. Как знать, используй Розенблатт вместо ступенчатой функции активации - сигмоидную, может быть его судьба сложилась бы по-другому.
=/к).
Для построения алгоритма обучения нам надо знать производную ошибки по каждому из весов сети:
Таким образом, вклад в общую ошибку каждого веса вычисляется локально, простым умножением невязки нейрона S}" на значение соответствующего входа. (Из-за этого, в случае
когда веса изменяют по направлению скорейшего спуска Aw ос -Idw = -SXj, такое правило обучения называют дельта-правилом.)
Входы каждого слоя вычисляются последовательно от первого слоя к последнему во время прямого распространения сигнала:
хГ=/(Е,<хг),
а невязки каждого слоя вычисляются во время обратного распространения ошибки от последнего слоя (где они определяются по выходам сети) к первому:
Последняя формула получена применением цепного правила к производной
и означает, что чем сильнее учитывается активация данного нейрона на следующем слое, тем больше его ответственность за общую ошибку.
Эффективность алгоритма back-propagation
Важность изложенного выше алгоритма back-propagation в том, что он дает чрезвычайно эффективный способ нахождения градиента функции ошибки Ж/* . Если обозначить общее число весов в сети как W, то необходимое для вычисления градиента число операций растет пропорционально W, т.е. этот алгоритм имеет сложность OiyV). Напротив, прямое вычисление градиента по формуле
И передают их на следующий слой, пропуская через нелинейную функцию активации (для простоты - одну и ту же, хотя это совсем необязательно):
потребовала бы W прямых прогонов через сеть, требующих 0{W) операций каждый. Таким образом "наивный" алгоритм имеет сложность o{w) , что существенно хуже, чем у алгоритма back-propagation.
Использование алгоритма back-propagation
При оценке значения алгоритма back-propagation важно различать нахождение градиента ошибки сЕ/с и его использование для обучения. Иногда под этим именем понимают именно
конкретный тип итерационного обучения, предложенный в статье Румельхарта с соавторами. Этот простейший тип обучения (метод скорейшего спуска) обладает рядом недостатков. Существуют много гораздо более хороших алгоритмов обучения, использующих градиент ошибки более эффективно. Ниже мы перечислим некоторые из них, наиболее часто используемые на практике. Подчеркнем, однако, что все они так или иначе используют изложенный выше метод back-propagation для нахождения градиента ошибки.
Итак, простейший способ использования градиента при обучении - изменение весов пропорционально градиенту - т.н метод наискорейшего спуска:
Aw = -rj
Этот метод оказывается, однако, чрезвычайно неэффективен в случае, когда производные по различным весам сильно отличаются, т.е. рельеф функции ошибки напоминает не яму, а длинный овраг. (Это соответствует ситуации, когда активация некоторых из сигмоидных нейронов близка по модулю к 1 или, что то же самое - когда модуль некоторых весов много больше 1). В этом случае для плавного уменьшения ошибки необходимо выбирать очень маленький темп обучения, диктуемый максимальной производной (шириной оврага), тогда как расстояние до минимума по порядку величины определяется минимальной производной (длиной оврага). В итоге обучение становится неприемлемо медленным. Кроме того, на самом дне оврага неизбежно возникают осцилляции, и обучение теряет привлекательное свойство монотонности убывания ошибки.

Рисунок 5. Неэффективность метода скорейшего спуска: градиент направлен не в сторону минимума
Простейшим усовершенствованием метода скорейшего спуска является введение момента / , когда влияние градиента на изменение весов накапливается со временем: