Обратное распространение во времени - Backpropagation through time
Обратное распространение во времени (BPTT) - это метод на основе градиента для обучения определенных типов рекуррентных нейронных сетей . Его можно использовать для обучения сетей Эльмана . Алгоритм был независимо разработан многочисленными исследователями.
Алгоритм
Подготовка данных для рекуррентной нейронной сети является упорядоченная последовательность пар вход-выход, . Для скрытого состояния необходимо указать начальное значение . Обычно для этой цели используется вектор из всех нулей.
BPTT начинается с развертывания повторяющейся нейронной сети во времени. Развернутая сеть содержит входы и выходы, но каждая копия сети имеет одни и те же параметры. Затем используется алгоритм обратного распространения ошибки , чтобы найти градиент стоимости по всем параметрам сети.
Рассмотрим пример нейронной сети, которая содержит повторяющийся слой и уровень прямой связи . Существуют разные способы определения стоимости обучения, но совокупная стоимость всегда является средней стоимостью каждого временного шага. Стоимость каждого временного шага можно рассчитать отдельно. На рисунке выше показано, как можно вычислить временную стоимость , развернув повторяющийся слой на три временных шага и добавив уровень с прогнозированием . Каждый экземпляр в развернутой сети имеет одни и те же параметры. Таким образом, обновления веса в каждом экземпляре ( ) суммируются.
Псевдокод
Псевдокод для усеченной версии BPTT, где обучающие данные содержат пары ввода-вывода, но сеть развернута по временным шагам:
Back_Propagation_Through_Time(a, y) // a[t] is the input at time t. y[t] is the output Unfold the network to contain k instances of f do until stopping criteria is met: x := the zero-magnitude vector // x is the current context for t from 0 to n − k do // t is time. n is the length of the training sequence Set the network inputs to x, a[t], a[t+1], ..., a[t+k−1] p := forward-propagate the inputs over the whole unfolded network e := y[t+k] − p; // error = target − prediction Back-propagate the error, e, back across the whole unfolded network Sum the weight changes in the k instances of f together. Update all the weights in f and g. x := f(x, a[t]); // compute the context for the next time-step
Преимущества
BPTT имеет тенденцию быть значительно быстрее для обучения рекуррентных нейронных сетей, чем универсальные методы оптимизации, такие как эволюционная оптимизация.
Недостатки
BPTT имеет трудности с локальным оптимумом. Для рекуррентных нейронных сетей локальные оптимумы представляют собой гораздо более серьезную проблему, чем для нейронных сетей с прямой связью. Периодическая обратная связь в таких сетях имеет тенденцию создавать хаотические отклики на поверхности ошибки, что приводит к частому возникновению локальных оптимумов и в плохих местах на поверхности ошибки.