Введение в рекуррентную нейронную сеть

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

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

  1. Отметки времени не имеют ничего общего с прошлым, настоящим и будущим. Здесь отметка времени представляет собой слово или элемент в длинной последовательности.
    Пример. Рассмотрим последовательность [«я», «я», «а», «мальчик»]. Отметка времени для «I» - это x (0), «am» - это x (1), «a» - это x (2), а «boy» - это x (3).
    Если t = 1,
    x (t) = «am» → «Событие на текущей отметке времени»
    x (t-1) = «I» → «Событие на предыдущая отметка времени »
  2. Не путайте с развернутой сетевой версией. В большинстве библиотек (например, Tensorflow, Theano) сети RNN не реализованы в виде развернутой версии. Они внутренне используют цикл while для вычисления значений.
  3. Сеть RNN разделяет веса во времени. W и U в уравнении RNN остаются одинаковыми для всех входов при t и скрытых состояний из t-1.

Что такое рекуррентная нейронная сеть ( RNN )?

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

RNN запоминает то, что ему известно из предыдущего ввода, с помощью простого цикла. Этот цикл берет информацию из предыдущей отметки времени и добавляет ее к вводу текущей отметки времени.

На приведенном выше рисунке показана базовая структура RNN. X_t - это вход в сеть, а h_t - это выход сети в момент времени «t». A - это ячейка RNN. Клетки RNN содержат нейронные сети точно так же, как сеть с прямой связью или перцептрон. Скрытые состояния сети с прямой связью снова используются вместе с вводом на следующем шаге.

На изображении выше показано, как скрытое состояние из предыдущей отметки времени снова используется вместе с вводом текущей отметки времени в Vanilla Recurrent Neural Network.

RNN последовательно принимает входные данные и последовательно производит выходные данные. RNN может вводить одно слово за раз и производить другое слово из словаря (например, задачи языкового моделирования) или может читать все предложение и создавать другое предложение, используя слова из словаря (например, суммирование текста, языковой перевод и т. Д.).

Как работает RNN?

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

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

Чтобы правильно понять, как работает RNN и как она передает информацию, нам нужно взглянуть на ее математические уравнения.

h_t: Скрытое состояние на отметке времени t
h_t-1: Скрытое состояние на отметке времени t-1
W: Матрица веса для ввода в скрытый слой на отметке времени t
U: весовая матрица для скрытого слоя в t-1 до скрытого слоя в t
∅: функция активации, сигмоид или Tanh
h_t-1: скрытое состояние на отметке времени t-1
x_t: ввод с отметкой времени t

Входные данные x_t в момент времени t изменяются матрицей весовых коэффициентов со скрытыми входами W, а затем добавлен к скрытому состоянию h_t-1 предыдущей отметки времени, измененной матрицей весовых коэффициентов "скрыто-скрыто" U. Сеть RNN изучает эти веса, т. е. U и W, посредством обучения с использованием метода обратного распространения ошибки. Эти веса определяют важность скрытого состояния предыдущей отметки времени и важность текущего ввода. Изменяя значения предыдущего скрытого состояния и текущего ввода, он решает, сколько значений каждого из них следует использовать для генерации текущего вывода.

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

Распространение скрытых состояний от одной отметки времени к другой отметке времени может быть показано на диаграмме ниже.

Следующие шаги в RNN:

После того, как вы успешно поняли архитектуру RNN, выполните следующие действия:

  1. Обучение RNN с использованием обратного распространения во времени.
  2. Изучение и решение проблем исчезающих и увеличивающихся градиентов в RNN и LSTM.

Не стесняйтесь оставлять ценные отзывы и комментарии.