Работали ли вы с рекуррентными нейронными сетями
Что проверяют
Понимаете ли вы механику обработки последовательностей и трезво ли оцениваете место рекуррентных сетей сегодня. Важнее заученных определений то, сумеете ли вы объяснить, почему в одной задаче взяли LSTM, а в другой обошлись бустингом на лаговых признаках.
Как отвечать
Сначала механика. Сеть идёт по последовательности шаг за шагом и переносит скрытое состояние: выход на шаге зависит от текущего входа и от того, что накопилось раньше. Обучается это развёрткой во времени, и отсюда две беды: градиент либо затухает, либо взрывается. Взрыв лечится обрезкой нормы градиента, затухание архитектурой с гейтами. LSTM держит отдельную ячейку памяти и три гейта, GRU обходится двумя и учится быстрее при сопоставимом качестве.
Дальше практика. В PyTorch это nn.LSTM с batch_first, паддинг последовательностей разной длины и упаковка, чтобы паддинг не попадал в расчёт. Двунаправленный вариант берут только там, где вся последовательность известна заранее: для потокового прогноза он недопустим, это заглядывание в будущее.
Закончите честной рамкой: длинный текст сейчас почти всегда уходит трансформерам, а на табличных временных рядах сильный бейзлайн из градиентного бустинга бьёт рекуррентную сеть чаще, чем хочется признавать.
Где спотыкаются
Перемешивают выборку перед разбиением. На последовательных данных случайный сплит утаскивает будущее в обучение, метрика получается прекрасной, а на проде модель разваливается. Разрез только по времени, валидация скользящим окном.
Называют LSTM окончательным решением проблемы затухания. Гейты растягивают память, но не делают её бесконечной: на очень длинных зависимостях сигнал всё равно размывается, и это одна из причин появления механизма внимания.
Не строят тривиальный бейзлайн. Прогноз «завтра как сегодня» на многих рядах обыгрывает нейросеть, и без этого сравнения названная метрика не значит ничего.