Открыть сервис

Рекуррентная нейронная сеть

Рекуррентная нейронная сеть (РНС, англ. Recurrent Neural Network, RNN) — это класс искусственных нейронных сетей, в котором связи между нейронами образуют направленную последовательность, позволяющую обрабатывать данные с переменной длиной и учитывать временную или логическую последовательность входных сигналов. В отличие от сетей прямого распространения (feedforward), РНС обладают внутренней памятью, что делает их пригодными для задач, где важен контекст предыдущих элементов: обработка текста, речи, временных рядов, музыки и видео.

История

Концепция рекуррентных нейронных сетей восходит к работам 1980-х годов. В 1982 году американский нейробиолог Джон Хопфилд предложил модель сети Хопфилда — рекуррентную ассоциативную память, которая могла восстанавливать образы по частичным данным. В 1986 году Дэвид Румельхарт, Джеффри Хинтон и Рональд Уильямс опубликовали алгоритм обратного распространения ошибки, адаптированный для РНС (Backpropagation Through Time, BPTT). Однако практическое применение РНС долгое время сдерживалось проблемой исчезающих градиентов (vanishing gradient), когда веса в дальних слоях переставали обновляться.

В 1997 году немецкие исследователи Зепп Хохрайтер и Юрген Шмидхубер разработали долгую краткосрочную память (LSTM) — специализированную архитектуру РНС, способную запоминать информацию на длительные промежутки времени. В 2014 году была предложена управляемая рекуррентная единица (GRU), упрощённая версия LSTM. С 2010-х годов РНС стали основой для систем машинного перевода, распознавания речи и генерации текста, пока не были вытеснены трансформерами (2017) в большинстве NLP-задач.

Архитектура и принцип работы

Базовая структура

Рекуррентная нейронная сеть состоит из последовательности ячеек (или слоёв), каждая из которых принимает два входа:

  • текущий элемент входной последовательности \(x_t\);
  • скрытое состояние предыдущей ячейки \(h_{t-1}\).

Выход ячейки — новое скрытое состояние \(h_t\) и, опционально, выходной вектор \(y_t\). Формула для простой РНС (Elman RNN): \[ h_t = \tanh(W_{xh} x_t + W_{hh} h_{t-1} + b_h) \] \[ y_t = W_{hy} h_t + b_y \] где \(W\) — матрицы весов, \(b\) — смещения, \(\tanh\) — гиперболический тангенс (функция активации).

Развёртывание во времени

Для обучения РНС применяется метод обратного распространения ошибки во времени (BPTT). Сеть «разворачивается» в эквивалентную сеть прямого распространения с числом слоёв, равным длине последовательности. Градиенты ошибки передаются от последнего шага к первому, что при больших длинах ведёт к их затуханию или взрыву.

Проблемы обучения

  • Исчезающий градиент: при длинных последовательностях градиенты становятся близкими к нулю, и сеть перестаёт учиться.
  • Взрывающий градиент: градиенты могут экспоненциально расти, что приводит к нестабильности обучения (решается обрезанием градиентов — gradient clipping).
  • Долгосрочные зависимости: простая РНС плохо запоминает информацию, отстоящую на десятки шагов.

Виды и архитектуры

Простая рекуррентная сеть (Elman RNN)

Базовая модель с одним скрытым слоем и функцией активации \(\tanh\) или ReLU. Используется в учебных целях, но редко применяется на практике из-за проблем с обучением.

Долгая краткосрочная память (LSTM)

LSTM (Long Short-Term Memory) вводит вентили (gates) для управления потоком информации:

  • входной вентиль (input gate) — решает, какую новую информацию добавить в состояние ячейки;
  • вентиль забывания (forget gate) — решает, какую информацию удалить из состояния;
  • выходной вентиль (output gate) — решает, какую часть состояния выдать на выход.

Состояние ячейки \(C_t\) может сохраняться неизменным на протяжении многих шагов, что решает проблему исчезающих градиентов. LSTM эффективна для задач с длинными последовательностями (например, машинный перевод, распознавание речи).

Управляемая рекуррентная единица (GRU)

GRU (Gated Recurrent Unit) — упрощённая версия LSTM, объединяющая вентили забывания и входа в один вентиль обновления (update gate). Имеет меньше параметров, что ускоряет обучение, но может быть менее точной на некоторых задачах.

Двунаправленная РНС (BiRNN)

Обрабатывает последовательность в прямом и обратном направлениях, объединяя скрытые состояния. Позволяет учитывать контекст как слева, так и справа от текущего элемента. Часто используется в задачах классификации текста и распознавания сущностей.

Многослойная РНС (Deep RNN)

Сеть с несколькими рекуррентными слоями, расположенными друг над другом. Каждый слой передаёт своё скрытое состояние следующему слою. Увеличивает ёмкость модели, но требует больше вычислительных ресурсов.

Применение

Обработка естественного языка (NLP)

Распознавание речи

РНС, особенно LSTM, используются в акустических моделях для преобразования звукового сигнала в фонемы или слова. Примеры: DeepSpeech (Mozilla), Google Voice Search.

Временные ряды

Видео и мультимедиа

  • Анализ видеопоследовательностей (распознавание действий, описание видео).
  • Генерация музыки (например, модель BachBot, основанная на LSTM).

Робототехника

Управление движениями роботов на основе последовательностей сенсорных данных.

Ограничения и развитие

Недостатки

  • Параллелизация: РНС обрабатывают последовательность шаг за шагом, что затрудняет распараллеливание вычислений.
  • Долгосрочная память: даже LSTM и GRU имеют ограничения на длину контекста (обычно до нескольких сотен шагов).
  • Забывание: при очень длинных последовательностях (например, целые книги) информация может теряться.

Сравнение с трансформерами

С 2017 года архитектура трансформер (Transformer) на основе механизма внимания (attention) вытеснила РНС в большинстве NLP-задач. Трансформеры обрабатывают всю последовательность параллельно, лучше улавливают долгосрочные зависимости и легче масштабируются. Однако РНС остаются актуальными для:

  • задач с очень длинными последовательностями, где память трансформера становится ограничением;
  • встраиваемых систем с низким энергопотреблением (например, в мобильных устройствах);
  • обучения с подкреплением (RL), где требуется обработка непрерывных потоков данных.

Интересные факты

  • Первая коммерческая система распознавания речи на основе РНС была выпущена компанией Nuance в 2014 году.
  • В 2015 году Google перевёл свою систему машинного перевода на LSTM, что улучшило качество на 60% по сравнению с предыдущей моделью.
  • Архитектура LSTM используется в автозаполнении текста на смартфонах (например, Gboard).

Источники

  • Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780.
  • Cho, K., et al. (2014). Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. arXiv:1406.1078.
  • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. Глава 10.
  • Olah, C. (2015). Understanding LSTM Networks. Colah's Blog.
  • Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →