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

Опубликовано: 9 Июля, 2021

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

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

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

Работу RNN можно понять с помощью следующего примера:

Пример:

Предположим, есть более глубокая сеть с одним входным слоем, тремя скрытыми слоями и одним выходным слоем. Тогда, как и другие нейронные сети, каждый скрытый слой будет иметь свой собственный набор весов и смещений, скажем, для скрытого слоя 1 веса и смещения равны (w1, b1), (w2, b2) для второго скрытого слоя и (w3, b3) для третьего скрытого слоя. Это означает, что каждый из этих слоев не зависит друг от друга, т.е. они не запоминают предыдущие результаты.

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

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

  • Формула для расчета текущего состояния:


    где:

    h t -> текущее состояние
    h t-1 -> предыдущее состояние
    x t -> состояние ввода
    
  • Формула для применения функции активации (tanh):


    где:

    w hh -> вес на повторяющемся нейроне
    w xh -> вес на входном нейроне
    
  • Формула для расчета выхода:

    Y t -> выход
    W hy -> вес на выходном слое
    

Обучение через RNN

  1. В сеть предоставляется единичный временной шаг входа.
  2. Затем вычислите его текущее состояние, используя набор текущего ввода и предыдущего состояния.
  3. Текущее значение ht становится ht-1 для следующего временного шага.
  4. Можно пройти столько шагов по времени в зависимости от задачи и объединить информацию из всех предыдущих состояний.
  5. После того, как все временные шаги завершены, конечное текущее состояние используется для расчета выхода.
  6. Затем выходные данные сравниваются с фактическими выходными данными, т. Е. С целевыми выходными данными, и генерируется ошибка.
  7. Затем ошибка возвращается в сеть для обновления весов, и, следовательно, сеть (RNN) обучается.

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

  1. RNN запоминает каждую информацию во времени. Это полезно при прогнозировании временных рядов только из-за функции запоминания предыдущих входных данных. Это называется долговременной кратковременной памятью.
  2. Рекуррентные нейронные сети используются даже со сверточными слоями для расширения эффективного окружения пикселей.

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

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