RNN и LSTM

Задача

Как работать со структурными последовательными данными — речью, текстом, временными рядами? Полносвязные сети не учитывают порядок элементов. Рекуррентные нейронные сети (RNN) решают эту проблему.

Как работает RNN

Идея: строим следующий элемент последовательности на основании предыдущего скрытого состояния.

В начало и конец последовательности добавляют служебные токены: \(\langle\text{STR}\rangle\), \(\langle\text{END}\rangle\), \(\langle\text{UNKNOWN}\rangle\).

Математически:

\[h_0 = \vec{0}\]

\[h_{i+1} = \sigma(\langle W_\text{hid},\, [h_i, x_i] \rangle + b)\]

\[P(x_{i+1}) = \text{softmax}(\langle W_\text{out}, h_i \rangle + b_\text{out})\]

Веса \(W_\text{hid}\) и \(W_\text{out}\) общие для всех шагов — это и есть рекуррентность.

Проблема 1 — выбор функции активации

При использовании ReLU веса от шага к шагу накапливаются и уходят в большие значения. Используют tanh вместо сигмоиды: tanh симметричен относительно нуля, что предотвращает смещение весов.

Проблема 2 — модель забывает

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

Решение — LSTM (Long Short-Term Memory): механизм ворот (gates) явно управляет потоком информации через сеть.

  • Forget gate — что забыть из предыдущего состояния.
  • Input gate — что записать из текущего входа.
  • Output gate — что передать дальше.

Проблема 3 — затухание градиентов

При обратном распространении через много шагов времени градиент перемножается на одни и те же веса — и экспоненциально затухает.

Решения:

Метод Идея Качество / скорость
LSTM Ворота управляют градиентным потоком База, хорошее качество
GRU Упрощённый LSTM с меньшим числом параметров Чуть хуже качество, быстрее
Bidirectional RNN Обновление и с начала, и с конца последовательности Лучше улавливает контекст
MultiLayer RNN Стекирование нескольких RNN друг над другом Хорошо работает на практике
RNN работает с любыми векторными представлениями, имеющими структуру последовательности, — не только с текстом, но и со звуком, временными рядами и другими данными.

Полезные ссылки

← Назад к списку тем