LSTM прокладывает через время почти линейный путь состояния. Ворота не являются маленькими разумными контролёрами: это дифференцируемые числа от нуля до единицы, которые учатся пропускать, стирать и показывать сигнал.
Пароль через длинную паузу
Последовательность начинается символом К, затем идут двести нерелевантных знаков, а в конце нужно воспроизвести первый символ. Простая RNN многократно переписывает и проводит градиент через произведение матриц. LSTM добавляет отдельное состояние памяти с аддитивным обновлением.
Для входа и предыдущего вычисляются ворота:
Затем
Forget gate сохраняет часть старого, input gate дозирует запись, output gate решает, что показать наружу. Все операции покомпонентны.
Горизонтальная синяя линия — , умножение на отмечено затвором. Зелёная ветвь добавляет , нижняя ветвь формирует . Под схемой те же операции показаны для одной координаты численно.
Почему сложение помогает градиенту
Частная производная по прямому пути
Если на промежутке ворота близки к единице,
затухает медленно. В простой RNN к этому произведению добавлялись рекуррентные матрицы и производные на каждом шаге.
«Почти» в формуле существенно: ворота зависят от , поэтому полный градиент имеет дополнительные пути. LSTM смягчает исчезновение, а не доказывает бесконечную память.
Если постоянно равен , половина сигнала остаётся после
шагов. При — всего около 7. Небольшое изменение ворот резко меняет временной масштаб.
Записать, не стерев
Ворота могут создавать разные режимы:
- : хранить;
- : заменить;
- : накопить;
- : скрыть память от выхода, не удаляя её.
Последний режим отличает внутреннее хранение от наблюдаемого состояния. Модель может помнить фазу процесса и не использовать её для текущего прогноза.
Bias forget gate часто инициализируют положительно, чтобы в начале был ближе к единице. Это полезный prior на длительную память, но слишком большой bias мешает быстро забывать смену режима.
На шаге «ключ» input gate открывается и записывает импульс. Во время паузы , . У маркера ответа output gate открывает скрытый сигнал. Вертикальные линии связывают события с изменениями ворот.
Лаборатория ворот
Задайте импульс и вручную управляйте . Проверьте формулу времени полураспада. Затем разрешите модели подобрать ворота для задачи delayed copy и сравните их с вашей ручной стратегией.
Не ищите буквальное «это нейрон памяти буквы К». Представление распределено: одна координата может участвовать в нескольких функциях, а один факт храниться в нескольких координатах.
Маска, padding и неодинаковая длина
В batch последовательности дополняют padding. Маска может сохранять состояние на фиктивных шагах:
Loss также умножают на маску. Иначе короткие примеры получают лишние нулевые события, а последнее состояние относится к padding, не к данным.
В медицинских рядах пропуск измерения несёт информацию: анализ могли назначить из-за ухудшения. Маска наблюдаемости и время с последнего измерения становятся входными признаками. Заполнить все пропуски нулём — значит смешать «значение равно нулю» с «не измерено».
GRU: меньше ворот
Gated Recurrent Unit объединяет память и скрытое состояние:
Update gate интерполирует между старым и новым. Параметров меньше, вычисление быстрее. Нельзя заранее утверждать, что LSTM «лучше помнит»: сравнение зависит от данных, размера и бюджета.
Одинаковое число скрытых координат не означает одинаковое число параметров. При честном сравнении выравнивают хотя бы размер модели или время обучения.
Электропотребление дома
Набор UCI Individual Household Electric Power Consumption содержит поминутные измерения нескольких лет. Реальная задача: по последним суткам предсказать нагрузку на следующий час или сутки. Периодичность дня и недели создаёт длинный контекст, а пропуски требуют явной обработки.
Хороший эксперимент:
- разбить время на train, validation и будущий test;
- построить seasonal naive baseline: значение неделю назад;
- использовать доступные календарные признаки;
- сравнить GRU, LSTM и 1D-convolution при близком бюджете;
- оценить MAE отдельно в пиковые часы.
Если нормировать по среднему всего датасета, test влияет на train. Статистики вычисляют только по обучающему периоду.
Верхняя панель показывает две недели нагрузки и границу прогноза. Внизу — абсолютная ошибка seasonal baseline и LSTM; красным отмечены вечерние пики. Рядом приведён профиль среднего forget gate, но он интерпретируется как диагностический сигнал, не причинное объяснение.
Что ворота не решают
LSTM всё ещё обрабатывает шаги последовательно, что ограничивает параллельность. Состояние остаётся фиксированного размера. Дальняя информация может затухнуть или быть перезаписана, а интерпретация ворот неоднозначна.
Для задач с прямыми связями между далёкими токенами attention создаст короткий путь. Для потоковой обработки на устройстве LSTM может быть дешевле. Архитектура выбирается по ограничениям, а не по хронологии моды.
Связь с остаточными соединениями трансформера содержательная: и аддитивный путь , и residual дают сигналу возможность пройти без полного нелинейного переписывания.
Мини-исследование: ворота на смене режима
Сгенерируйте ряд, где скрытый уровень постоянен 50–150 шагов, затем маркер сообщает, что уровень заново выбран. Наблюдение
LSTM должна усреднять шум внутри сегмента и быстро забывать старое после маркера. Постройте средние в окне от до вокруг переключения. Ожидается падение forget gate и рост input gate, но проверяйте одновременно ошибку: красивый профиль без улучшения прогноза ничего не доказывает.
Проведите counterfactual: удалите маркер из входа, сохранив сами значения. Время адаптации должно увеличиться. Затем вставьте ложный маркер без смены уровня. Если сеть полностью стирает память, возникнет краткий всплеск ошибки. Так выясняется, как она объединяет явное событие и статистическое свидетельство.
Сравните с change-point detection, где переключение ищется по вероятностному критерию. LSTM обучает внутренний detector вместе с прогнозом, но не выдаёт калиброванную вероятность смены.
Практическая проверка масок
Создайте batch из одной короткой и одной длинной последовательности. Один раз правильно замаскируйте padding, второй — оставьте нули как обычный вход. Убедитесь, что prediction короткого объекта зависит от количества добавленных нулей только во втором режиме. Этот unit test стоит держать рядом с кодом: ошибка padding способна тихо пережить обучение и проявиться лишь на другой длине.
При irregular sampling добавьте как признак. Два одинаковых значения, разделённые минутой и сутками, означают разную скорость процесса. Здесь LSTM встречается с работой над временными данными: индекс времени является частью наблюдения, а не подписью на графике.
Проверьте state reset. Отсортируйте объекты в batch двумя разными порядками и убедитесь, что прогноз каждого не меняется. Если hidden state случайно перетекает между объектами, результат зависит от технического порядка строк. Такой баг способен дать особенно высокий validation score, когда соседние записи относятся к одному устройству.
Для streaming inference явно задайте событие сброса: новый двигатель, длинный разрыв или смена пользователя. Сохраните этот контракт рядом с моделью, иначе offline и production будут вычислять разные состояния.
Отдельно протестируйте длинное накопление в mixed precision. Ограниченный способен скрывать рост внутреннего ; позднее открытие output gate насыщает и стирает различия.
Тестируйте state contract на отдельном наборе коротких, длинных и прерванных последовательностей.
Ворота задают временной масштаб
LSTM делает память управляемой: отдельный аддитивный канал, запись, забывание и чтение. Формула постоянного forget gate связывает значение ворот с временным масштабом. На практике качество определяется масками, разделением данных, baseline и честным бюджетом не меньше самой ячейки.