Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Long Short-Term Memory (LSTM)

LSTM — это рекуррентная сеть, состояние ячеек с управляющими вентилями которой переносит информацию через длинные последовательности. Разбираем вентили, уравнения, сравнение с GRU и код.

Долгосрочная краткосрочная память (LSTM) — это архитектура рекуррентной нейронной сети (RNN), которая добавляет ячейку памяти с управляющими вентилями наряду со скрытым состоянием простой RNN. Благодаря этому сеть может переносить информацию через сотни и тысячи временных шагов. Сепп Хохрайтер и Юрген Шмидхубер представили её в 1997 году, чтобы решить проблему затухающего градиента, из-за которой простые RNN не могут обучаться на долгосрочных зависимостях. В статье авторы сообщили, что им удалось преодолеть временные интервалы длиной более 1000 шагов. В 2010-х LSTM применялись для распознавания речи, машинного перевода и распознавания рукописного текста, пока трансформеры не заняли ведущую роль в большинстве языковых задач. LSTM по-прежнему часто используют для анализа временных рядов, потоков данных с датчиков и моделей на устройстве, где важны постоянный размер состояния и неизменные затраты на каждый шаг.

Как работает ячейка LSTM#

На каждом временном шаге t LSTM получает вход xₜ и предыдущее скрытое состояние hₜ₋₁ и вычисляет три вентиля и кандидата, каждый со своими весами. Для вентилей используется функция сигмоида, поэтому каждый элемент находится между 0 и 1; для кандидата применяется tanh, поэтому его значения лежат между −1 и 1:

  • Вентиль забывания: fₜ = σ(W_f xₜ + U_f hₜ₋₁ + b_f) определяет, какую часть каждого элемента старого состояния ячейки нужно сохранить.
  • Входной вентиль: iₜ = σ(W_i xₜ + U_i hₜ₋₁ + b_i) определяет, какую часть кандидата нужно записать.
  • Кандидат: gₜ = tanh(W_g xₜ + U_g hₜ₋₁ + b_g) предлагает новое содержимое.
  • Выходной вентиль: oₜ = σ(W_o xₜ + U_o hₜ₋₁ + b_o) определяет, какую часть содержимого ячейки нужно передать на выход.

Затем оба состояния обновляются по формулам cₜ = fₜ ⊙ cₜ₋₁ + iₜ ⊙ gₜ и hₜ = oₜ ⊙ tanh(cₜ), где ⊙ — поэлементное умножение. Состояние ячейки служит долгосрочной памятью, а скрытое состояние — краткосрочным выходом, который передаётся следующему слою и следующему шагу.

Состояние ячейки обновляется аддитивно. Градиент cₜ по cₜ₋₁ равен fₜ для каждого элемента, поэтому, когда вентиль забывания близок к 1, сигнал ошибки проходит назад через множество шагов почти без изменений. Этот путь в исходной статье назвали «каруселью постоянной ошибки». В LSTM 1997 года вентиля забывания не было, поэтому ячейки могли только накапливать данные. В 2000 году Феликс Герс, Шмидхубер и Фред Каммингс добавили вентиль забывания, чтобы ячейки можно было сбрасывать; сегодня он есть в каждой стандартной LSTM. Инициализация смещения вентиля забывания единицей, рекомендованная Рафалом Юзефовичем и его коллегами в 2015 году, оставляет вентиль открытым в начале обучения, чтобы сеть изначально запоминала информацию.

LSTM в PyTorch#

Модуль nn.LSTM в PyTorch обрабатывает всю последовательность и возвращает скрытое состояние на каждом шаге, а также финальные скрытое состояние и состояние ячейки. Приведённый ниже фрагмент классифицирует короткие видеоклипы по векторам признаков для каждого кадра, например извлечённым из каждого кадра свёрточной нейронной сетью (CNN):

import torch
from torch import nn

# 8 video clips, 16 frames each, 512 features per frame: (batch, time, features)
clips = torch.randn(8, 16, 512)

# One LSTM layer with a 128-dim hidden state, and a classifier over 5 actions
lstm = nn.LSTM(input_size=512, hidden_size=128, batch_first=True)
classifier = nn.Linear(128, 5)

# output holds h at every step; h_n and c_n are the final hidden and cell states
output, (h_n, c_n) = lstm(clips)
logits = classifier(h_n[-1])
print(f"output {tuple(output.shape)}, h_n {tuple(h_n.shape)}, c_n {tuple(c_n.shape)}, logits {tuple(logits.shape)}")

# Each weight matrix stacks four blocks of 128 rows: input gate, forget gate, candidate, output gate
print(f"Input weights {tuple(lstm.weight_ih_l0.shape)}, recurrent weights {tuple(lstm.weight_hh_l0.shape)}")

Вывод: output (8, 16, 128), h_n (1, 8, 128), c_n (1, 8, 128), logits (8, 5) и Input weights (512, 512), recurrent weights (512, 128). Финальное скрытое состояние обобщает каждый клип из 16 кадров для пятиклассового классификатора, а каждая матрица весов содержит 4 × 128 = 512 строк, поскольку PyTorch хранит блоки для четырёх вентилей в одной матрице.

  • Простая RNN: На каждом шаге полностью перезаписывает своё состояние с помощью одного слоя tanh, поэтому градиенты геометрически уменьшаются или увеличиваются с ростом длины последовательности, а обучаться на долгосрочных зависимостях трудно.
  • GRU: Объединяет состояния ячейки и скрытое состояние и использует два вентиля вместо трёх. При той же ширине модель имеет три блока весов вместо четырёх и три четверти числа параметров LSTM. Ни одна из архитектур не превосходит другую во всех задачах.
  • Трансформер: Обрабатывает все позиции параллельно с помощью самовнимания, поэтому на GPU обучается намного быстрее и напрямую учитывает отдалённый контекст. Именно поэтому трансформеры заменили LSTM в языковом моделировании и машинном переводе. Затраты на механизм внимания растут вместе с длиной контекста, а LSTM тратит одинаковый объём вычислений и памяти на каждый новый шаг.
  • xLSTM: Модель xLSTM, представленная группой Хохрайтера в 2024 году, добавляет экспоненциальное управление вентилями и матричную память, позволяющую обучать модель параллельно. Языковую модель xLSTM 7B с 7 миллиардами параметров представили на ICML 2025; её производительность сопоставима с трансформерами похожего размера, а инференс быстрее.

Применение#

  • Распознавание речи: В 2015 году Google перевела голосовой поиск на акустические модели LSTM, обученные с помощью коннекционистской временной классификации (CTC); во встроенных распознавателях речи долгое время широко применялись каскады LSTM.
  • Машинный перевод: Запущенная в 2016 году Google Neural Machine Translation использовала по восемь слоёв LSTM в кодировщике и декодировщике.
  • Прогнозирование паводков: Описанная в статье Nature за 2024 год система Google прогнозирования паводков использует сети LSTM, чтобы предсказывать сток рек по данным о погоде и заблаговременно, вплоть до пяти дней, прогнозировать экстремальные паводки в водосборных бассейнах без гидрологических постов.
  • Распознавание действий: CNN кодирует каждый кадр видео, а LSTM обрабатывает последовательность признаков кадров, чтобы классифицировать клип; именно такая структура используется во фрагменте кода выше.
  • Прогнозирование траекторий: Модель Social LSTM запускает отдельную LSTM для каждого пешехода и объединяет скрытые состояния близко расположенных людей, чтобы прогнозировать траектории в толпе. Режим track модели YOLO26 присваивает каждому человеку постоянный идентификатор в разных кадрах видео, превращая покадровые обнаружения в историю координат, которую использует такая модель прогнозирования.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения