Знакомство с рекуррентными нейронными сетями (RNN)

Рекуррентная нейронная сеть является одним из типов искусственной нейронной сети (ANN) и используется в областях применения обработки естественного языка (NLP) и распознавания речи. Модель RNN предназначена для распознавания последовательных характеристик данных и последующего использования шаблонов для прогнозирования наступающего сценария.

Работа рекуррентных нейронных сетей

Когда мы говорим о традиционных нейронных сетях, все выходы и входы независимы друг от друга, как показано на диаграмме ниже:

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

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

Иллюстрация типичной модели RNN приведена ниже:

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

Теперь давайте попробуем понять рекуррентную нейронную сеть с помощью примера.

Допустим, у нас есть нейронная сеть с 1 входным слоем, 3 скрытыми слоями и 1 выходным слоем.

Когда мы говорим о других или традиционных нейронных сетях, они будут иметь свои собственные наборы смещений и весов в своих скрытых слоях, таких как (w1, b1) для скрытого слоя 1, (w2, b2) для скрытого слоя 2 и (w3, b3). ) для третьего скрытого слоя, где: w1, w2 и w3 - веса, а b1, b2 и b3 - смещения.

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

Теперь, что RNN будет делать следующее:

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

Теперь пришло время разобраться с некоторыми уравнениями для модели RNN.

  • Для расчета текущего состояния,

h t= f (h t-1, x t ),

Где:

x t - состояние ввода
h t-1 - предыдущее состояние,
h t - текущее состояние.

  • Для расчета функции активации

h t= tanh (W hh h t-1 +W xh x t ),

Где:
W xh - вес на входе нейрона,

W hh - вес рекуррентного нейрона.

  • Для расчета выхода:

Y t =W hy h t.

Где,
Y t - выход, и
W hy - вес на выходном слое.

Шаги для обучения рекуррентной нейронной сети

  1. На входных слоях отправляется начальный ввод, причем все имеют одинаковый вес и функцию активации.
  2. Используя текущий вход и выход предыдущего состояния, рассчитывается текущее состояние.
  3. Теперь текущее состояние h t станет h t-1 для второго временного шага.
  4. Это повторяется для всех этапов и для решения любой конкретной проблемы может продолжаться столько раз, чтобы объединить информацию из всех предыдущих этапов.
  5. Последний шаг затем рассчитывается по текущему состоянию конечного состояния и всем остальным предыдущим шагам.
  6. Теперь генерируется ошибка путем вычисления разницы между фактическим выходом и выходом, генерируемым нашей моделью RNN.
  7. Последний шаг - это когда происходит обратное распространение, в котором ошибка распространяется с обратным распространением для обновления весовых коэффициентов.

Преимущества рекуррентных нейронных сетей

  1. RNN может обрабатывать ввод любой длины.
  2. Модель RNN моделируется для запоминания каждой информации в течение времени, что очень полезно для любого предиктора временных рядов.
  3. Даже если входной размер больше, размер модели не увеличивается.
  4. Веса могут быть распределены по временным шагам.
  5. RNN может использовать свою внутреннюю память для обработки произвольных серий входных данных, что не относится к нейронным сетям с прямой связью.

Недостатки рекуррентных нейронных сетей

  1. Из-за его повторяющейся природы, вычисления медленные.
  2. Обучение моделей RNN может быть сложным.
  3. Если мы используем relu или tanh в качестве функций активации, становится очень трудно обрабатывать очень длинные последовательности.
  4. Склонен к таким проблемам, как взрыв и исчезновение градиента.

Вывод

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

Рекомендуемые статьи

Это руководство по рекуррентным нейронным сетям. Здесь мы обсуждаем введение, как это работает, шаги, преимущества и недостатки RNN и т. Д. Вы также можете просмотреть другие наши предлагаемые статьи, чтобы узнать больше -
  1. Что такое нейронные сети?
  2. Механизм машинного обучения
  3. Введение в искусственный интеллект
  4. Введение в аналитику больших данных
  5. Внедрение нейронных сетей