LSTM учится. LSTM помнит. Будьте как LSTM.

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

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

Эта проблема в RNN решается с помощью Long Short-Term Memory (LSTM), которая представляет собой особый тип RNN, который использует шлюзы и увеличенное количество взаимодействий, чтобы избежать этой проблемы. LSTM также увеличивает способность сети изучать более длинные последовательности. Если мне нужно сформулировать более простыми словами, он запоминает только релевантную информацию и забывает ненужную информацию в каждом состоянии, тем самым расширяя свой банк знаний с минимальным использованием памяти. Мы увидим это дальше, когда перейдем к структуре ячеек LSTM.

Горизонтальная линия, идущая сверху, - это Состояние ячейки, ее можно рассматривать как «память» сети. Вся соответствующая информация перемещается через состояние ячейки, на каждом временном шаге информация добавляется к ней или удаляется из нее через шлюзы, которые регулируют поток информации в ячейках LSTM. Этими воротами являются Забудьте ворота, Входные ворота, Выходные ворота.

Забудьте о воротах: эти ворота решают, какая информация является релевантной. Он берет информацию из предыдущего состояния и из текущего временного шага и передает ее через сигмовидную функцию. Диапазон вывода составляет от 0 до 1, если он ближе к нулю, он забывается, иначе сохраняется.

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

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

Выходной шлюз: Выходной шлюз также работает в два этапа: первый шаг такой же, как и шаг забывания (такой же, как шаг 1 для входного шлюза), а на втором шаге информация из недавно обновленного Состояние ячейки (обсуждается в разделе «Входной шлюз») берется и передается через функцию tanh.

Затем эти два выхода умножаются для получения нового скрытого состояния и переносятся в следующую ячейку. Таким образом, LSTM переносит информацию из одной ячейки в другую.

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

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