Рекуррентная сеть
Обработка последовательностей
Входные данные часто представляются в виде последовательности , например:
-
динамика цен на акции,
-
динамика действий посетителя веб-сайта,
-
изменение погоды,
-
текст как последовательность слов,
-
речь как последовательность звуков,
-
видео как последовательность кадров.
Далее для определённости будем рассматривать текст как последовательность слов, подаваемых на вход нейросети в виде эмбеддингов, хотя те же рассуждения применимы и для обработки последовательностей других типов.
Независимая обработка
Мы могли бы обрабатывать каждый элемент последовательности независимо, используя многослойный персептрон :

Но такой подход не учитывает зависимости выхода от других элементов последовательности. Например, будущие действия посетителя веб-сайта зависят от его старых действий, динамика будущих цен зависит от их исторических изменений, новые слова текста зависят от старых и т.д.
Проиллюстрируем это примером. Пусть решается задача разметки частей речи для текста (part-of-speech tagging, POS), в которой каждому слову нужно автоматически сопоставить часть речи. Пусть мы обрабатываем фразу "I like to watch movies":

При независимой обработке слов модель будет часто ошибаться, поскольку не учитывает контекст соседних слов, влияющих на роль каждого слова в предложении.
-
[watch] может быть как глаголом, так и существительным, например, во фразе "this is a very expensive watch".
-
[like] также может выступать как существительное, например, во фразе "he gave this post a like".
Если бы модель учитывала предыдущие слова (перед [like] стоит [I], перед [watch] стоит [to]), подобной неоднозначности для неё бы не возникало.