Обратное распространение во времени - Backpropagation through time

Обратное распространение во времени (BPTT) - это метод на основе градиента для обучения определенных типов рекуррентных нейронных сетей . Его можно использовать для обучения сетей Эльмана . Алгоритм был независимо разработан многочисленными исследователями.

Алгоритм

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 имеет трудности с локальным оптимумом. Для рекуррентных нейронных сетей локальные оптимумы представляют собой гораздо более серьезную проблему, чем для нейронных сетей с прямой связью. Периодическая обратная связь в таких сетях имеет тенденцию создавать хаотические отклики на поверхности ошибки, что приводит к частому возникновению локальных оптимумов и в плохих местах на поверхности ошибки.

Смотрите также

использованная литература