Урок по треку Глубокое обучение 6 мин

RNN, LSTM и GRU за 6 минут

Рекуррентные сети, обратное распространение во времени, затухание, LSTM и GRU, почему их вытеснили трансформеры.

Рекуррентные сети почти ушли из NLP, но вопросы о них остались: они объясняют, зачем появились гейты, attention и трансформеры. Плюс RNN живут в потоковых задачах и на устройствах.

Простая RNN

hₜ = tanh(W_x·xₜ + W_h·hₜ₋₁ + b)

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

Обучение и затухание

Обратное распространение во времени (BPTT) разворачивает сеть по шагам. Градиент от шага t к шагу t - k содержит произведение k якобианов: при множителях меньше 1 он затухает, больше 1 взрывается. Поэтому простая RNN плохо помнит дальше нескольких десятков шагов.

  • Взрыв лечат gradient clipping.
  • Затухание лечат архитектурой: LSTM и GRU.
  • На длинных последовательностях используют truncated BPTT.

LSTM

fₜ, iₜ, oₜ = σ(...)          гейты забывания, входа, выхода
c̃ₜ = tanh(...)               кандидат
cₜ = fₜ⊙cₜ₋₁ + iₜ⊙c̃ₜ         ячейка памяти
hₜ = oₜ⊙tanh(cₜ)

Ключ в аддитивном обновлении ячейки: ∂cₜ/∂cₜ₋₁ = fₜ, и при forget gate около 1 информация и градиент проходят почти без потерь. Смещение forget gate часто инициализируют положительным.

Параметры слоя LSTM: 4·(H·D + H·H + H) с одним смещением на гейт. Для D = 10, H = 20 это 2 480 (в PyTorch два смещения, 2 560).

GRU

Два гейта (update и reset) и одно состояние. Меньше параметров, качество часто сопоставимо с LSTM.

Варианты

  • Двунаправленная RNN видит левый и правый контекст. Нельзя использовать для генерации и онлайн-прогноза: правый контекст это будущее.
  • Seq2seq: кодировщик читает вход, декодер генерирует выход. Attention появился здесь: декодер на каждом шаге смотрит на все состояния кодировщика, а не на один сжатый вектор.
  • Teacher forcing: на обучении декодеру подают истинный предыдущий токен. На генерации он видит свои ошибки (exposure bias).

Почему трансформеры победили

  • RNN последовательна: на обучении нельзя распараллелить по времени.
  • Вся история сжимается в вектор фиксированного размера.
  • Attention связывает любые позиции за один слой и обучается параллельно.

Цена трансформера: квадратичная сложность по длине. Поэтому идеи рекуррентности вернулись в моделях пространства состояний (Mamba) и линейном attention.

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

Перед LSTM постройте бейзлайны: сезонную наивную модель и бустинг на лагах. Нейросети оправданы при множестве связанных рядов и больших данных. Валидация строго по времени.

Частые ошибки

  • Двунаправленная RNN в задаче прогноза.
  • Нет клиппинга в RNN.
  • Говорить, что LSTM решает затухание полностью: она смягчает его, но очень длинные зависимости всё равно трудны.

Что спросят на собесе

  • Как устроена RNN и почему градиенты затухают.
  • Как LSTM решает проблему, какие у неё гейты.
  • GRU против LSTM, число параметров.
  • Почему трансформеры вытеснили RNN.
  • Что такое teacher forcing.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.