Что такое LSTM (Long Short-Term Memory)?

«Что такое LSTM (Long Short-Term Memory)?» — вопрос из категории Нейронные сети и Deep Learning, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Ключевые компоненты ячейки LSTM:

  1. Forget Gate (Вентиль забывания): Решает, какую информацию из долгосрочного состояния (cell state) нужно удалить. Использует сигмоиду для вывода значения между 0 (полностью забыть) и 1 (полностью сохранить).
  2. Input Gate (Вентиль входа): Определяет, какая новая информация будет записана в долгосрочное состояние. Состоит из двух частей: сигмоидальный слой решает, какие значения обновлять, а слой tanh создает вектор новых значений-кандидатов.
  3. Cell State (Состояние ячейки): Конвейер долгосрочной памяти, который проходит через всю цепочку с минимальными линейными изменениями, что позволяет информации сохраняться на долгих промежутках.
  4. Output Gate (Вентиль выхода): Определяет, какая информация из обновленного долгосрочного состояния будет передана в качестве выходных данных и скрытого состояния для следующего шага.

Пример реализации на Keras/TensorFlow:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential()
# 64 нейрона LSTM, вход: последовательность из 10 временных шагов с 1 признаком на шаг
model.add(LSTM(64, input_shape=(10, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy')

Применение: Прогнозирование временных рядов (финансы, погода), обработка естественного языка (машинный перевод, генерация текста), распознавание речи и видео.