Раздвижное окно приводит к переоснащению в LSTM?

15

Буду ли я переоснащать свой LSTM, если я обучу его с помощью метода скользящих окон? Почему люди не используют его для LSTM?

Для упрощенного примера предположим, что мы должны предсказать последовательность символов:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Это плохо (или лучше?), Если я продолжаю тренировать свой LSTM со следующими мини-пакетами:

A B C D E F G H I J K L M N, backprop, erase the cell

B C D E F G H I J K L M N O, backprop, erase the cell

 .... and so on, shifting by 1 every time?

Раньше я всегда тренировал это как:

A B C D E F G H I J K L M N,  backprop, erase the cell

O P Q R S T U V W X Y Z,  backprop, erase the cell

Вместо того, чтобы сдвигаться на единицу, было бы лучше сдвинуть окно на 2 записи вместо этого и т.д.? Что бы это значило (с точки зрения точности / переоснащения)?


Кроме того, если бы я использовал подход с «скользящим окном» в сети прямой связи, это привело бы к переоснащению? Я бы предположил, да, потому что сеть подвергается одним и тем же областям информации в течение очень долгого времени. Например, он подвергается воздействию в E F G H I J Kтечение длительного времени.


Редактировать:

Пожалуйста, помните, что состояние ячейки стирается между тренировочными партиями, поэтому в это время у LSTM будет "удар в голову". Невозможно вспомнить, что было до OPQRSTUVWXYZ. Это означает, что LSTM не может узнать, что «О» следует за «М».

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


Некоторая полезная информация, которую я нашел после того, как ответ был принят:

отсюда

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

Например, исследователи обнаружили, что обращение исходной последовательности (подача ее назад в кодер) дает значительно лучшие результаты, поскольку сокращает путь от декодера до соответствующих частей кодера. Точно так же, подача входной последовательности дважды также помогает сети лучше запоминать вещи. Например, если одним из примеров обучения является «Джон ушел домой», вы должны указать «Джон ушел домой, Джон ушел домой» в сеть как один вход.

Редактировать после принятия ответа:

Спустя несколько месяцев я более склонен использовать метод скользящих окон, поскольку он лучше использует данные. Но в этом случае вы, вероятно, не хотите тренировать BCDEFGHIJKLMNO сразу после ABCDEFGHIJKLMNO. Вместо этого перетасуйте свои примеры, чтобы постепенно и равномерно «зачистить» всю информацию в вашем LSTM. Дайте ему HIJKLMNOPQRSTU после ABCDEFGHIJKLMNO и т. Д. Это напрямую связано с катастрофическим забвением. Как всегда, внимательно следите за набором Валидация и Тестирование и остановитесь, как только вы увидите, что их ошибки неуклонно возрастают

Кроме того, проблема «молот к голове» может быть улучшена с помощью синтетических градиентов. Смотрите его преимущества здесь: (связанный ответ обсуждает преимущества длинных последовательностей) /datascience//a/32425/43077

Kari
источник

Ответы:

9

Хотя предыдущий ответ @Imran является правильным, я считаю необходимым добавить предостережение: есть приложения, где люди передают скользящее окно в LSTM. Например, здесь , для формирования прогнозирования как контролируемой проблемы обучения.

4(мN+N2+N)мN

Поскольку LSTM не требуют ввода фиксированного размера, они могут самостоятельно найти оптимальное число просмотра. Однако, если вы провели предыдущий авторегрессионный анализ и решили, что, например, текущий временной шаг больше всего коррелирует с 10-м предыдущим временным шагом, а не с 11-м или другими временными шагами в прошлом, то вы могли бы возможно, сэкономьте немного времени на обучение, питаясь в последовательностях фиксированной длины. Однако такого рода поражение цели LSTM.

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

РЕДАКТИРОВАТЬ (отвечая на комментарий):

Перекрывающиеся последовательности используются в качестве входных данных, особенно когда последовательность очень длинная (хотя, конечно, «длинный» является относительным). Хотя LSTM лучше, чем ванильный RNN для длинных последовательностей, у них все еще могут быть проблемы с запоминанием временных шагов с начала последовательности, если последовательность очень длинная. Это привело к таким вещам, как двунаправленный LSTM, который считывает последовательность вперед и назад, улучшая доступность сети к началу и концу каждой входной последовательности. Принцип совпадает с перекрывающимися последовательностями, хотя я бы сказал, что перекрывающиеся последовательности более интуитивно понятны.

StatsSorceress
источник
Спасибо, я до сих пор не понимаю, следует ли / не следует обучать LSTM неперекрывающимся партиям. Пост, который вам понравился, является ценным, но в нем рассматриваются только сети Feed-Forward и не рассматриваются преимущества / опасности в перекрывающихся мини-пакетах LSTM во время обучения. @Imran также не обсуждал «антирецепт» против перекрывающихся мини-пакетов - мой первый комментарий к его сообщению.
Кари
Я отредактировал свой вопрос, чтобы включить комментарий
Кари
Много отличной информации!
Имран
@ Кари Я изменил свой ответ. Это помогает?
StatsSorceress
5

LSTM не требуют скользящего окна ввода. Они могут помнить то, что видели в прошлом, и если вы будете подавать обучающие примеры по одному, они сами выберут окно нужного размера для запоминания.

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

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

Будет или нет FNN соответствовать, зависит от его архитектуры и ваших данных, но все стандартные методы регуляризации будут применяться, если это так. Например, вы можете попробовать выбрать меньшую сеть, регуляризацию L2, Dropout и т. Д.

Имран
источник
Благодарность! Я бы сказал, что состояние ячейки между тренировочными партиями стирается, поэтому в это время у LSTM будет "удар в голову". Невозможно вспомнить, что было до OPQRSTUVWXYZ. Это означает, что LSTM не может понять, что «О» следует за «М». Поэтому я подумал, почему бы не дать ему промежуточную (перекрывающуюся) партию между ... и в таком случае, почему бы не использовать несколько перекрывающихся мини-пакетов - для меня это обеспечило бы более плавное обучение?
Кари
В конечном итоге это означало бы, что для LSTM будет скользящее окно
Кари
Нет необходимости стирать состояние ячейки между тренировочными партиями, хотя обратное распространение дальше назад, конечно, невозможно.
Ян ван дер Вегт
Я попробовал это, и - даже при нулевой скорости обучения ошибка прыгала вверх и вниз на крошечную величину, потому что неправильные состояния ячеек повторно использовались как «наследие» во время обучения. При таком подходе я не мог сложить более 6 слоев - он стал слишком хаотичным и не сходился. Тем не менее, сброс состояния ячейки в ноль после каждого Backprop позволил мне сложить 150 слоев с 64 нейронами в каждом слое и обучить его с 0,001 скоростью обучения и импульсом 0,9 (я использую LayerNormalization, поэтому скорость обучения в моем случае такая большая)
Кари
1
Это означает, что с «устаревшими состояниями ячеек» LSTM становится нестабильным и ненадежным - он начинает работать над новым мини-пакетом, основываясь на своих решениях на последнем состоянии ячейки (предыдущего мини-пакета), которое не было исправлено в полной мере. Таким образом, стирание клеточного состояния устраняет этот фундаментальный недостаток, но заставляет LSTM испытать амнезию
Кари