Рекуррентная нейронная сеть
Материал из MachineLearning.
| | Статья написана с использованием LLM Gemini и проверена участником Kirill Bazhutov 21:26, 4 июля 2026 (MSD) |
Рекуррентная нейронная сеть (Recurrent neural network, RNN) — класс искусственных нейронных сетей, предназначенный для обработки данных, имеющих последовательную или временную структуру. В отличие от сетей прямого распространения (MLP), рекуррентные сети обладают внутренним скрытым состоянием (памятью), которое позволяет сохранять и агрегировать информацию о предшествующих элементах последовательности.
Фундаментальным архитектурным принципом RNN является совместное использование параметров во времени (weight sharing): одни и те же матрицы весов применяются к каждому элементу входной последовательности, что позволяет обрабатывать последовательности переменной длины и существенно сокращает общее количество обучаемых параметров.
Содержание |
Историческая справка
Среди ранних архитектур, ориентированных на обработку последовательностей, выделяют сеть Джордана (Jordan network, 1986) и сеть Элмана (Elman network, 1990), заложившие основы простых рекуррентных сетей (Simple RNN). Одним из основных методов обучения таких сетей стал алгоритм обратного распространения ошибки сквозь время (BPTT), подробно описанный Полом Вербосом (Paul Werbos) в 1990 году.
В 1994 году Йошуа Бенджио с соавторами (Bengio et al.) проанализировали проблему обучения долгосрочным зависимостям, связанную с затуханием градиентов. Для решения этой проблемы в 1997 году Сепп Хохрайтер и Юрген Шмидхубер предложили архитектуру LSTM (Long Short-Term Memory). Позднее, в 2014 году, Кюнхён Чо (Kyunghyun Cho) с соавторами представили более легковесную модификацию с вентилями — GRU (Gated Recurrent Unit).
Формальное описание динамики
Пусть задана входная последовательность векторов , где
— наблюдение в момент времени
. Рекуррентная сеть поддерживает вектор скрытого состояния
, который обновляется на каждом шаге на основе текущего входа
и предыдущего состояния
.
В классической (базовой) RNN рекуррентное отношение (переход состояний) имеет вид:
Выход сети в момент времени (если он требуется спецификой задачи) вычисляется как:
где:
-
— матрица весов скрытого состояния (рекуррентные связи).
-
— матрица весов входного преобразования.
-
— матрица весов выходного слоя.
-
— векторы смещений.
-
— нелинейная Функция активации (обычно гиперболический тангенс
или логистическая функция).
-
— активация выходного слоя (например Softmax для задач классификации).
Начальное состояние обычно инициализируется нулевым вектором или рассматривается как дополнительный обучаемый параметр.
Обучение и алгоритм BPTT
Обучение RNN осуществляется путём минимизации совокупной функции потерь с использованием алгоритма градиентного спуска. Вычисление градиентов выполняется с помощью алгоритма Обратного распространения ошибки сквозь время (Backpropagation Through Time, BPTT).
BPTT концептуально эквивалентен стандартному обратному распространению, применённому к вычислительному графу сети, «развёрнутому» (unrolled) вдоль временной оси на шагов.
Проблема исчезающих и взрывающихся градиентов
Глубокое развёртывание графа во времени приводит к серьёзным сложностям при оптимизации. Градиент функции потерь по отношению к скрытому состоянию на раннем шаге
требует вычисления произведения матриц Якоби:
Обозначив , для базовой RNN якобиан прямого перехода равен:
Поведение градиента определяется нормами якобианов перехода и, в частности, спектральными свойствами рекуррентной матрицы с учётом производных функции активации:
- Если нормы этих множителей в среднем меньше 1, градиент экспоненциально затухает (Vanishing gradient problem). Сеть теряет способность улавливать долгосрочные зависимости (long-term dependencies).
- Если они в среднем больше 1, градиент может экспоненциально расти (Exploding gradient problem), что приводит к численной нестабильности (NaN) процесса обучения. Эта проблема частично смягчается эвристикой обрезки градиентов (Gradient clipping).
Типы входов и выходов
Рекуррентные сети могут использоваться в нескольких схемах:
- many-to-one — последовательность отображается в один выход, например классификация текста.
- one-to-many — один вход используется для генерации последовательности.
- many-to-many — входная последовательность преобразуется в выходную последовательность, например при разметке текста или машинном переводе.
Вентильные архитектуры: LSTM и GRU
Для смягчения проблемы исчезающих градиентов были разработаны архитектуры с механизмами управления потоком информации (gating mechanisms).
- LSTM (Long Short-Term Memory, Долгая краткосрочная память): Вводит дополнительный вектор состояния ячейки (cell state)
и три вентиля (гейта): забывания (forget gate), ввода (input gate) и вывода (output gate). Механизм обновления
основан на аддитивных операциях, что позволяет существенно лучше обучать зависимости на длинных временных интервалах по сравнению с базовой RNN (в ряде задач — на сотни и тысячи шагов).
- GRU (Gated Recurrent Unit): Облегчённая модификация LSTM. Объединяет состояния ячейки и скрытое состояние в единый вектор
, используя только два гейта: сброса (reset gate) и обновления (update gate). Вычислительно менее затратна и часто показывает качество, сопоставимое с LSTM, при меньшем числе параметров, хотя результат зависит от задачи и данных.
Вычислительный аспект и параллелизация
Существенным ограничением классических RNN является их строгая последовательная природа. Вычисление состояния невозможно начать до завершения вычисления
. Это делает невозможной параллелизацию вычислений вдоль временной оси внутри одной последовательности, что ограничивает эффективность использования современных графических ускорителей (GPU и TPU) на длинных последовательностях.
По этой причине в современных задачах обработки естественного языка (NLP) классические рекуррентные архитектуры в значительной степени вытеснены архитектурой трансформер, которая полностью отказывается от рекуррентности в пользу механизма самовнимания (self-attention), позволяющего вычислять представления всех элементов последовательности параллельно.
Практические области применения
Несмотря на широкое распространение трансформеров в NLP, рекуррентные сети и их вариации продолжают активно применяться в следующих областях:
- Моделирование и прогнозирование временных рядов (финансовая аналитика, метеорология, сенсорные данные).
- Обработка и распознавание речи (Speech-to-Text), где данные имеют строгую временную структуру.
- Анализ медицинских сигналов (ЭКГ, ЭЭГ) и потоковых логов.
См. также
- Глубокое обучение
- Алгоритм обратного распространения ошибки сквозь время (BPTT)
- LSTM (Long Short-Term Memory)
- GRU (Gated Recurrent Unit)
- Проблема исчезающего градиента
- Механизм внимания
Литература
- Jordan M. I. Serial order: A parallel distributed processing approach // Technical Report, Institute for Cognitive Science, University of California, San Diego. — 1986.
- Elman J. L. Finding structure in time // Cognitive Science. — 1990. — Т. 14. — № 2. — С. 179–211.
- Werbos P. J. Backpropagation through time: what it does and how to do it // Proceedings of the IEEE. — 1990. — Т. 78. — № 10. — С. 1550–1560.
- Bengio Y., Simard P., Frasconi P. Learning long-term dependencies with gradient descent is difficult // IEEE Transactions on Neural Networks. — 1994. — Т. 5. — № 2. — С. 157–166.
- Hochreiter S., Schmidhuber J. Long Short-Term Memory // Neural Computation. — 1997. — Т. 9. — № 8. — С. 1735–1780.
- Cho K., van Merrienboer B., Gulcehre C., Bahdanau D., Bougares F., Schwenk H., Bengio Y. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation // EMNLP. — 2014.
- Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016.
- Vaswani A. et al. Attention Is All You Need // Advances in Neural Information Processing Systems. — 2017.
- Pascanu R., Mikolov T., Bengio Y. On the difficulty of training recurrent neural networks // ICML. — 2013. — С. 1310–1318.

