Обрабатывают последовательность шаг за шагом, перенося скрытое состояние между позициями.
Ключевые тезисы
- Веса общие для всех шагов, длина входа не фиксирована.
- Обучаются через развёртку по времени (BPTT).
- Затухание ограничивает память несколькими десятками шагов.
Какую задачу решает
Последовательность нельзя просто подать в MLP: её длина меняется, а порядок элементов несёт смысл. решает это состоянием — , который сеть переносит с шага на шаг, обновляя его каждым новым элементом входа.
Формально это одна и та же ячейка, применяемая рекуррентно: . Модель получает возможность обрабатывать вход любой длины фиксированным числом параметров, а состояние работает как сжатая память обо всём, что было до текущего . Плата — строгая последовательность вычислений и быстро тающая память о далёком прошлом.
Задача: в последовательности из 100 символов вернуть первый символ. Для этого информация должна пройти через 100 умножений на одну и ту же . Если её старшее собственное число 0.9, сигнал ослабнет в раз; если 1.1 — вырастет в 14 000 раз и обучение разойдётся. Ровно на границе сеть работает, но такое равновесие не удерживается. Именно этот расчёт привёл к , где состояние переносится сложением, а не умножением.
Подробный разбор
- истинное значение целевой переменной
- объект: вектор признаков
Веса общие для всех моментов времени, поэтому сеть работает с последовательностью любой длины. Обучение идёт «развёрткой по времени» (BPTT): сеть разворачивается в глубокую цепочку, и по ней запускается обычный .
- Нет параллелизма: шаг нельзя посчитать раньше шага .
- Короткая память: затухает через десятки шагов.
- Узкое место: весь контекст сжимается в один фиксированного размера.
Первые два пункта решались и , третий — механизмом . Когда внимание научились использовать без рекуррентности вовсе, появились .
Где применяется
- Потоковая обработкаСостояние фиксированного размера обновляется по одному элементу — идеально для онлайн-инференса на длинном потоке.
- Небольшие последовательности на слабом железеОдна маленькая дешевле и умещается туда, где трансформер не умещается.
- Временные рядыПрогноз спроса и датчиков: остаются разумной базой рядом с классическими моделями.
- Историческая роль в NLP на был стандартом перевода до 2017 года — и именно его ограничения породили .
Плюсы, минусы и альтернативы
Плюсы
- Обрабатывает последовательности любой длины фиксированным числом параметров.
- Стоимость линейна по длине, а память постоянна — в отличие от квадратичного .
- Естественно ложится на потоковый сценарий: пришёл элемент — обновили состояние.
- Компактна: рабочая модель может весить сотни килобайт.
Минусы
- Затухающий : связи длиннее 20–30 шагов простая не выучивает.
- Обучение строго последовательно и плохо параллелится на .
- Всё прошлое сжато в один — узкое место при длинном контексте.
- Практически вытеснена почти во всех задачах NLP.
- Чувствительна к взрывающимся , обрезка обязательна.
Брать, если
- Данные приходят потоком и решение нужно на каждом шаге.
- Ресурсы жёстко ограничены, а последовательности короткие.
- Нужна для временного ряда перед более тяжёлыми моделями.
Не брать, если
- Текст и длинный контекст — берите , он и качественнее, и лучше параллелится.
- Важны зависимости на сотни шагов — простая их не увидит.
- Есть возможность обучать на большой : последовательность вычислений сведёт ускорение на нет.
Чем заменяют
Видеолекции
Записи университетских курсов, где эта тема звучит. Где у записи есть тайм-коды, ссылка открывает её с нужной секунды; где их не проставили — с начала.
Связанные темы
Последовательные модели
LSTM80%
LSTM · Глубокое обучениеРекуррентная ячейка с состоянием и тремя вентилями, решающая проблему долгосрочной памяти.
GRU80%
GRU · Глубокое обучениеУпрощённая LSTM: два вентиля вместо трёх и отсутствие отдельного cell state.
RNN/LSTM for NLP80%
RNN/LSTM в NLP · Обработка естественного языкаПервое поколение нейросетевых моделей языка: последовательная обработка токенов со скрытым состоянием.
Sequence-to-Sequence80%
Seq2Seq · Обработка естественного языкаСхема «энкодер сжимает вход — декодер порождает выход» для перевода, суммаризации и диалога.
RNN/LSTM80%
RNN/LSTM для рядов · Временные рядыНейросети, обучаемые сразу на множестве связанных рядов, улавливают общие паттерны.
Backpropagation80%
Обратное распространение ошибки · Глубокое обучениеЭффективное вычисление градиентов по всем параметрам сети за один обратный проход с помощью правила цепочки.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Скрытое состояние
фиксированной длины, в который сжата вся история последовательности до .
Разбор ниже: Рекуррентность и скрытое состояниеРекуррентная связь
Одна и та же весов применяется на каждом шаге — отсюда и работа с любой длиной, и проблемы с .
Разбор ниже: Рекуррентность и скрытое состояниеРазвёртка во времени
Для обучения сеть разворачивают в глубокую цепочку слоёв и применяют обычный (BPTT).
Разбор ниже: Рекуррентность и скрытое состояниеЗатухание градиента во времени
умножается на одну раз: через 20–30 шагов от него ничего не остаётся.
Разбор ниже: ОграниченияДвунаправленность
Два прохода — слева направо и справа налево. Даёт контекст с обеих сторон, но не годится для онлайна.
Разбор ниже: ОграниченияСпрашивают на собеседовании: Яндекс — ASR / TTS, МТС — Речь и разговорный ИИ, Лаборатория Касперского — Поведенческий анализ и исследования.
Глава «Глубокое обучение» последний раз правилась . Нашли ошибку — напишите.