Введение в рекуррентную нейронную сеть
Рекуррентная нейронная сеть (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
- В сеть предоставляется единичный временной шаг входа.
- Затем вычислите его текущее состояние, используя набор текущего ввода и предыдущего состояния.
- Текущее значение ht становится ht-1 для следующего временного шага.
- Можно пройти столько шагов по времени в зависимости от задачи и объединить информацию из всех предыдущих состояний.
- После того, как все временные шаги завершены, конечное текущее состояние используется для расчета выхода.
- Затем выходные данные сравниваются с фактическими выходными данными, т. Е. С целевыми выходными данными, и генерируется ошибка.
- Затем ошибка возвращается в сеть для обновления весов, и, следовательно, сеть (RNN) обучается.
Преимущества рекуррентной нейронной сети
- RNN запоминает каждую информацию во времени. Это полезно при прогнозировании временных рядов только из-за функции запоминания предыдущих входных данных. Это называется долговременной кратковременной памятью.
- Рекуррентные нейронные сети используются даже со сверточными слоями для расширения эффективного окружения пикселей.
Недостатки рекуррентной нейронной сети
- Проблемы исчезновения и взрыва градиента.
- Обучение RNN - очень сложная задача.
- Он не может обрабатывать очень длинные последовательности, если в качестве функции активации используется tanh или relu.