Рекуррентная нейронная сеть
Рекуррентная нейронная сеть (РНС, англ. 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)
- Машинный перевод: последовательно-последовательные модели (seq2seq) на основе LSTM или GRU (например, Google Neural Machine Translation, 2016).
- Генерация текста: модели, предсказывающие следующее слово (например, char-rnn Андрея Карпатого, 2015).
- Распознавание именованных сущностей (NER) и частей речи (POS-tagging).
- Анализ тональности (sentiment analysis) и классификация текстов.
Распознавание речи
РНС, особенно 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 →