Обратное распространение во времени ( BPTT ) — это градиентный метод обучения определенных типов рекуррентных нейронных сетей , таких как сети Элмана . Алгоритм был независимо выведен многочисленными исследователями. [1] [2] [3]
Обучающие данные для рекуррентной нейронной сети представляют собой упорядоченную последовательность пар вход-выход, . Для скрытого состояния должно быть указано начальное значение , обычно выбираемое как нулевой вектор .
BPTT начинается с развертывания рекуррентной нейронной сети во времени. Развернутая сеть содержит входы и выходы, но каждая копия сети имеет одни и те же параметры. Затем алгоритм обратного распространения используется для нахождения градиента функции потерь относительно всех параметров сети.
Рассмотрим пример нейронной сети, содержащей рекуррентный слой и слой прямой связи . Существуют разные способы определения стоимости обучения, но агрегированная стоимость всегда является средним значением стоимости каждого из временных шагов. Стоимость каждого временного шага может быть вычислена отдельно. На рисунке выше показано, как можно вычислить стоимость во времени, развернув рекуррентный слой для трех временных шагов и добавив слой прямой связи . Каждый экземпляр в развернутой сети имеет одни и те же параметры. Таким образом, обновления веса в каждом экземпляре ( ) суммируются.
Ниже представлен псевдокод для усеченной версии BPTT, где обучающие данные содержат пары вход-выход, а сеть развернута для временных шагов:
Back_Propagation_Through_Time(a, y) // a[t] — вход в момент времени t. y[t] — выход Разверните сеть так, чтобы она содержала k экземпляров f , пока не будет выполнен критерий остановки: x := вектор нулевой величины // x — текущий контекст для t от 0 до n − k do // t — время. n — длина обучающей последовательности Установите входы сети на x, a[t], a[t+1], ..., a[t+k−1] p := распространяем входные данные по всей развернутой сети e := y[t+k] − p; // ошибка = цель − прогноз Обратное распространение ошибки e по всей развернутой сети. Сложите изменения веса в k экземплярах f. Обновите все веса в f и g. x := f(x, a[t]); // вычисляем контекст для следующего временного шага
BPTT, как правило, значительно быстрее подходит для обучения рекуррентных нейронных сетей, чем методы оптимизации общего назначения, такие как эволюционная оптимизация . [4]
BPTT испытывает трудности с локальными оптимумами. В случае с рекуррентными нейронными сетями локальные оптимумы представляют собой гораздо более существенную проблему, чем в случае с нейронными сетями прямого распространения. [5] Рекуррентная обратная связь в таких сетях имеет тенденцию создавать хаотические ответы на поверхности ошибок, что приводит к частому появлению локальных оптимумов и в плохих местах на поверхности ошибок.
{{cite book}}
: |website=
проигнорировано ( помощь )