Какова допустимая длина последовательности для RNN для моделирования?


15

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

Я хотел бы использовать относительно простую версию LSTM без каких-либо сложных для реализации современных подходов. Каждое наблюдение в моих временных сериях, вероятно, будет иметь 4 числовые переменные, и число наблюдений будет составлять от 100 000 до 1 000 000.

Ответы:


8

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

Кроме того, вы не выполняете обратное прохождение по всей серии, а обычно (200-300) последних шагов. Чтобы найти оптимальное значение, вы можете выполнить перекрестную проверку, используя поиск по сетке или байесовскую оптимизацию. Кроме того, вы можете посмотреть параметры здесь: https://github.com/wojzaremba/lstm/blob/master/main.lua .

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


Скажите, что мне нужно провести анализ настроений, который является подходом «многие к одному» (см. Karpathy.github.io/2015/05/21/rnn-effectiveness ). Каждое из этих выражений очень длинное (> 200 слов). Если бы я использовал только 35 шагов назад, не было ли это проблемой? Так как это контролируемое обучение, я предполагаю, что оно может распространяться назад только тогда, когда оно «достигает» цели двоичной классификации y. Таким образом, как RNN будет когда-либо корректировать веса на основе чего-либо до 35 шагов, выбранных для BPTT?
пира

1
Ну, это не будет проблемой, так как те же веса повторно используются на следующем этапе обучения. Кроме того, если вы видите исходный код на шаге 36 (скажем, вектор инициализации - это не нули, а состояния шага 35). Таким образом, выполняя небольшие шаги, вы оптимизируете свою функцию стоимости с помощью BPTT.
Яннис Ассаэль

1
Просто чтобы уточнить: выполняется ли BPTT один или несколько раз для одного предложения? Если он запускается один раз, то шаблоны, затрагивающие только первые пару слов в предложении, будут влиять только на скрытое состояние, верно? Я имею в виду ... градиенты никогда не будут вычисляться в отношении этой части ввода.
пира

1
Я спросил , как это отдельный вопрос , который я надеюсь , что вы будете смотреть на :) stats.stackexchange.com/questions/167482/...
пир

2
«учитывая, что у вас большой объем данных, двухслойный LSTM может моделировать практически любые временные ряды». где доказательство?
nbro
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.