RNN - это нейронные сети с прямой связью, но с одной загвоздкой, т. Е. У них есть память.

Определение:

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

Почему РНС?

Прежде чем ответить на этот вопрос, позвольте мне интуитивно понять важность памяти при прогнозировании последовательности.

Возьмем предложение:

Усэйн Болт, восьмикратный золотой призер Олимпийских игр, родом из ___

Если я попрошу вас заполнить бланк, ваш ответ, вероятно, будет «Ямайка» или «Северная Америка». Но что заставило вас ответить на эти вопросы?
Это слово «Усэйн Болт». Этот пример иллюстрирует важность памяти при предсказании слова.

Представьте себе использование ИНС, чтобы заполнить пробел. Следующее слово будет предсказано только с помощью «от», что может быть бессмысленной тарабарщиной. Но RNN запоминают то, что видели ранее, что позволяет им дать достаточно точный ответ.

А откуда у нейронной сети память?

RNN вычисляет значение скрытого состояния на основе текущего ввода и скрытого состояния предыдущего временного шага. Проще говоря, все, что произошло на предыдущем временном шаге, влияет на текущий вывод. По сути, это запоминание чего-либо и использование этого по мере необходимости.

Представление RNN - это НЕ несколько уровней ИНС, а скорее одна ИНС с несколькими временными шагами.

Работает

Вперед -

В момент t,

Как мы видим здесь, скрытое состояние зависит от текущего ввода и скрытого состояния предыдущего временного шага

На каждом временном шаге t обновляется только скрытое состояние (h), в то время как функция (F) и веса (W) остаются прежними.

Общие функции активации «F» - Tanh, RelU, Sigmoid.

Убыток

Функция потерь для RNN определяется как сумма индивидуальных значений потерь на каждом временном шаге.

Обратное распространение во времени (BPTT) -

Обратное распространение происходит в каждый момент времени. На временном шаге T производная потерь L по весовой матрице W выражается следующим образом

В простой системе с прямой связью градиент потерь рассчитывается для каждого параметра.

То же самое происходит здесь, но это происходит для каждого временного шага, поскольку все временные шаги вместе вносят вклад в общую потерю.

И поскольку каждый временной шаг зависит от предыдущего временного шага, вычисление градиента для временного шага, скажем, t, потребует градиентов от t = 0 до t = t-1.

Если вы можете проследить до этого момента, ВЫ ДЕЛАЕТЕ УДИВИТЕЛЬНО.

Но у нас здесь 2 новых злодея. Это градиенты Взрывающиеся и Исчезающие. Во время BPTT мы должны умножить несколько градиентов. Например, расчет для t = 15 потребует умножения 15 значений градиента.

Взрывающиеся градиенты:

Бывает, когда много значений градиента ›1

Умножение больших чисел приводит к еще большему результату, что приводит к радикальным обновлениям значений.

Eg. 10 * 5 * 10 * 7= 3500

VanishingGradients:

Бывает, когда много значений градиента ‹1

Умножение малых чисел приводит к еще меньшему результату, что не оказывает существенного влияния на обновление значений.

Eg. 0.01 * 0.5 * 0.1 * 0.01 = 0.000005

Таким образом, очевидно, что RNN полезны для определения небольших последовательностей. Но он терпит неудачу, когда сталкивается с большой последовательностью. То есть у него кратковременная память.

Вот тут и пригодятся закрытые камеры.

LSTM и GRU были внедрены для решения проблемы краткосрочной памяти. Эти сети очень сложны и имеют долговременную память, что делает их очень эффективными в длинных последовательностях.

Внедрение RNN:

Я буду внедрять RNN с помощью Pytorch, так как так легче понять все, что происходит под капотом.

  1. Определите класс и конструктор

2. Создайте функцию для создания скрытого слоя для первого прохода.

3. Создайте функцию «вперед», которая определяет поток данных.

  • Создайте начальное скрытое состояние
  • Передача ввода и скрытого состояния в RNN
  • Сгладить вывод
  • Передайте вывод в плотный слой и получите прогноз

Все вместе -

Обучение (Иллюстрация без фактических данных) -

Эта модель принимает входные данные по 28 измерениям (28 уникальных слов в словаре), имеет 12 измерений в скрытом слое и выдает выходные данные по 10 измерениям. После применения softmax взятие класса с наибольшей вероятностью дает нам предсказанное слово

Я надеюсь, что эта статья смогла предоставить то, что вы искали, и помочь вам в вашем путешествии по глубокому обучению. Выкиньте свои отзывы и поделитесь этим вместе :)

Дальнейшее чтение

  1. Иллюстрированное руководство по РНС - Видео
  2. MIT 6.S191 (2020): Рекуррентные нейронные сети - Видео
  3. Неоправданная эффективность рекуррентных нейронных сетей - Блог
  4. Шпаргалка по рекуррентным нейронным сетям - Блог

Бонус :)

SketchRNN

Увидимся с другой статьей. Спасибо, что прочитали это ❤