Мы только что разобрались, как свёрточные сети видят мир через маленькое окошко и собирают картинку из простых деталей. Но у текста другая природа - это не застывшее изображение, а поток, последовательность, где важен каждый предыдущий шаг. Чтобы работать с такими данными, нужна архитектура с памятью. Знакомьтесь: рекуррентные нейросети - главные звезды обработки текстов до эры трансформеров.
Представьте, что вы читаете книгу, но у вас очень плохая память - вы помните только последние пару предложений, а начало главы уже стерлось. Примерно так работают рекуррентные сети. Давайте разберемся, почему они устроены именно так и в чем их главные проблемы.
RNN обрабатывает последовательности шаг за шагом, передавая скрытое состояние. Она плохо параллелизуется и страдает от затухания градиента. Практически вытеснена трансформерами.
Вся суть RNN крутится вокруг одной простой идеи: у сети есть внутренняя память - скрытое состояние, которое обновляется с каждым новым словом. Это как блокнотик, куда модель записывает свои мысли по ходу чтения.
1. Скрытое состояние (Память в голове)
Что это
У RNN есть внутренняя переменная - вектор скрытого состояния (hidden state). Это как блокнотик, в котором нейросеть записывает свои мысли по ходу чтения.
Технически
Это просто набор чисел, которые меняются после каждого прочитанного слова.
2. Обработка шаг за шагом (Последовательность)
RNN не смотрит на весь текст сразу. Она читает его строго по порядку, слово за словом.
Как это выглядит на примере фразы
«Кот съел мышь»:
Шаг 1 (Кот):
Смотрит на слово «Кот» + чистый блокнот (пустая память). Записывает в блокнот: «Вижу кота».
Шаг 2 (съел):
Смотрит на слово «съел» + читает блокнот (там про кота). Понимает: «Кот что-то делает». Обновляет блокнот: «Кот сейчас ест».
Шаг 3 (мышь):
Смотрит на слово «мышь» + читает блокнот (там про кота, который ест). Понимает: «Кот съел мышь. Логично».
Формула одной фразой
Новое состояние = Функция (Текущее слово, Старое состояние)
3. Проблема 1: Плохая параллелизация (Медленность)
Пока вы не прочитаете слово «съел», вы не можете понять слово «мышь», потому что память еще не обновилась.
Для процессора это ад: Нельзя обработать все слова одновременно (распараллелить), как в трансформере. Приходится ждать окончания первого шага, чтобы начать второй. На длинных текстах это очень медленно.
Более того, даже если у вас есть суперкомпьютер с тысячами ядер, RNN заставит их простаивать - каждое следующее слово требует результатов предыдущего, и распараллелить этот процесс принципиально невозможно. Это фундаментальное ограничение последовательной архитектуры.
4. Проблема 2: Затухание градиента (Забывчивость)
Это главная техническая боль RNN. Представьте предложение: «В далеком 1991 году, когда шел сильный дождь, а на часах было уже поздно, я ... вышел из дома».
Чтобы понять, что «вышел» относится к «я», нейросети нужно помнить информацию из самого начала предложения.
В RNN информация при каждом шаге умножается на весовые матрицы и проходит через нелинейные функции активации. При обратном распространении ошибки градиенты, соответствующие дальним шагам, многократно умножаются на эти матрицы и экспоненциально затухают (или взрываются). К тому моменту, как мы дошли до конца, вклад слова «я» в градиент становится практически нулевым - модель не может обучиться учитывать далёкие зависимости.
Итог
RNN хорошо помнит последние 5-10 слов, но забывает, что было в начале абзаца. Она страдает от кратковременной памяти.
Инженеры пытались бороться с этим, тщательно подбирая начальные значения весов и используя специальные техники вроде отсечения градиентов (gradient clipping). Но это были лишь костыли - проблема оставалась в архитектуре, и для действительно длинных последовательностей RNN оставались бессильны.
Почему их вытеснили Трансформеры?

RNN
это последовательный процессор, который читает текст по порядку и ведет конспект в блокноте. Но блокнот маленький, и к концу главы он забывает, что было на первой странице. Трансформеры решили эту проблему, отказавшись от последовательного чтения в пользу полного обзора всего текста сразу.
Но инженеры не сдавались так легко. Они придумали, как улучшить память RNN, добавив специальные вентили, которые решают, что забывать, а что помнить. Так появились LSTM - долгая краткосрочная память. О них - в следующем разделе.