Этот пост предполагает, что вы уже знакомы с основными идеями:
- Нейронные сети
- Обратное распространение
- Функция активации ReLU
Примечание. Хотя RNN потрясающие, их обычно считают ступенькой к пониманию более сложных вещей, таких как LSTM и Transformers.
вступление
RNN — это один из способов решения проблемы разного количества входных значений. Это нейронная сеть, которая является гибкой с точки зрения того, сколько последовательных данных мы используем для прогнозирования. Например: прогнозирование цен на акции, скажем, компания А находится на рынке 100 дней, а компания Б — 50 дней. Чтобы предсказать их цены сегодня, A будет иметь 100 входных данных, а B — 50. Существует большая разница по сравнению с другими нейронными сетями, такими как ANN и CNN, в отношении входных значений.
Как и другие нейронные сети, RNN имеют веса, смещения, слои и функции активации. Большая разница в том, что RNN также имеют петли обратной связи.
Независимо от того, сколько раз мы разворачиваем RNN, веса и смещения распределяются между всеми входными данными.
Недостатки
- Чем больше мы разворачиваем RNN, тем сложнее его тренировать. Проблема называется Проблема исчезающего/взрывающегося градиента.
Когда мы оптимизируем нейронные сети с помощью обратного распространения, мы сначала находим производные или градиенты для каждого параметра.
Затем мы подключаем эти градиенты к алгоритму градиентного спуска, чтобы найти значения параметров, которые минимизируют функцию потерь, например, сумму квадратов остатков.
На приведенном выше изображении RNN, если W₂ > 1, ввод умножается на него, что приводит к увеличению и увеличению числа каждый раз, когда мы разворачиваем. И это число найдет свой путь к некоторым градиентам, что приведет к взрывному градиенту, полученный градиент будет очень большим, что затруднит маленькие шаги, чтобы найти оптимальные веса и смещения.
Точно так же, если W₂ ‹ 1, он будет становиться все меньше и меньше каждый раз, когда мы разворачиваем, приближаясь к нулю, и это приводит к исчезновению градиента. При оптимизации параметра мы в конечном итоге делаем слишком маленькие шаги, и в результате мы достигаем максимального количества шагов, которое нам разрешено сделать, прежде чем мы найдем оптимальное значение.
Можем ли мы что-нибудь с ними сделать?
Да, сети с долговременной кратковременной памятью — LSTM.
Вся заслуга принадлежит StatQuest.