Как подготовить прогноз последовательности для усеченного BPTT в Keras

Как подготовить прогноз последовательности для усеченного BPTT в Keras

Рекуррентные нейронные сети могут изучать временную зависимость на нескольких временных шагах в задачах прогнозирования последовательности.

Современные рекуррентные нейронные сети, такие как сеть Long-Short-Term Memory или LSTM, обучаются с помощью варианта алгоритма обратного распространения, называемого обратным распространением во времени. Этот алгоритм был дополнительно модифицирован для повышения эффективности при решении задач прогнозирования последовательностей с очень длинными последовательностями и получил название «Усеченное обратное распространение во времени».

Важным параметром конфигурации при обучении повторяющихся нейронных сетей, таких как LSTM, с использованием усеченного обратного распространения во времени, является решение, сколько временных шагов использовать в качестве входных данных. То есть, как именно разбить очень длинные входные последовательности на подпоследовательности, чтобы добиться максимальной производительности.

В этом посте вы откроете для себя 6 различных способов разделения очень длинных входных последовательностей для эффективного обучения рекуррентных нейронных сетей с помощью усеченного обратного распространения во времени в Python с Keras.

Прочитав этот пост, вы узнаете:

  • Что такое усеченное обратное распространение во времени и как оно реализовано в библиотеке глубокого обучения Python Keras.
  • Как именно выбор количества входных временных шагов влияет на обучение в повторяющихся нейронных сетях.
  • 6 различных методов, которые вы можете использовать для разделения задач прогнозирования очень длинной последовательности, чтобы наилучшим образом использовать алгоритм обучения усеченного обратного распространения во времени.

Начните свой проект с моей новой книгой Long-Term Memory Networks With Python, включая пошаговые инструкции и Исходный код Python файлы для всех примеров.

Давайте начнем.

Как подготовить предсказание последовательности для усеченного обратного распространения во времени в Keras

Как подготовить предсказание последовательности для усеченного обратного распространения во времени в Keras
Фото Giò, некоторые права защищены.

Усеченное обратное распространение во времени

Обратное распространение - это алгоритм обучения, используемый для обновления весов в нейронной сети, чтобы минимизировать ошибку между ожидаемым выходом и предсказанным выходом для заданного входа.

Для задач прогнозирования последовательности, где существует зависимость порядка между наблюдениями, рекуррентные нейронные сети используются вместо классических нейронных сетей с прямой связью. Рекуррентные нейронные сети обучаются с использованием разновидности алгоритма обратного распространения, называемого обратным распространением во времени или сокращенно BPTT.

Фактически, BPTT разворачивает рекуррентную нейронную сеть и распространяет ошибку назад по всей входной последовательности, один временной шаг за раз. Затем веса обновляются с учетом накопленных градиентов.

BPTT может медленно обучать рекуррентные нейронные сети решать проблемы с очень длинными входными последовательностями. Помимо скорости, накопление градиентов за такое количество временных шагов может привести к уменьшению значений до нуля или увеличению значений, которые в конечном итоге переполняются или взрываются.

Модификация BPTT состоит в том, чтобы ограничить количество временных шагов, используемых при обратном проходе, и фактически оценить градиент, используемый для обновления весов, а не рассчитать его полностью.

Этот вариант называется усеченным обратным распространением во времени или TBPTT.

Алгоритм обучения TBPTT имеет два параметра:

  • k1: Определяет количество временных шагов, отображаемых в сети при прямом проходе.
  • k2: Определяет количество временных шагов, на которые следует обратить внимание при оценке градиента при обратном проходе.

Таким образом, мы можем использовать обозначение TBPTT (k1, k2) при рассмотрении того, как настроить алгоритм обучения, где k1 = k2 = n, где n - длина входной последовательности для классического необрезанного BPTT.

Влияние конфигурации TBPTT на модель последовательности RNN

Современные рекуррентные нейронные сети, такие как LSTM, могут использовать свое внутреннее состояние для запоминания очень длинных входных последовательностей. Например, более тысячи временных шагов.

Это означает, что конфигурация TBPTT не обязательно определяет память сети, которую вы оптимизируете, с выбором количества временных шагов. Вы можете выбрать, когда внутреннее состояние сети сбрасывается отдельно от режима, используемого для обновления весов сети.

Вместо этого выбор параметров TBPTT влияет на то, как сеть оценивает градиент ошибок, используемый для обновления весов. В более общем плане конфигурация определяет количество временных шагов, начиная с которых сеть может рассматриваться для моделирования вашей проблемы с последовательностью.

Формально это можно сформулировать примерно так: