Яка можлива довжина послідовності для моделювання 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 кроків, чи це не буде проблемою? Оскільки він керував навчанням я припускаю , що це може тільки backpropagate , коли він «хіти» двоичная цільова класифікація, y. Таким чином, як би RNN колись коригував ваги на основі чого-небудь до 35-ти кроків, вибраних для BPTT?
бенкету

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

1
Просто для уточнення: чи БПТТ виконується одноразово чи кілька разів за одне речення? Якщо це запускається одноразово, то шаблони, що впливають лише на першу пару слів у реченні, впливатимуть лише на прихований стан, правда? Я маю на увазі .. градієнти ніколи не будуть обчислені щодо тієї частини вводу.
бенкету

1
Я запитав , як це окреме питання , який я сподіваюся , що ви будете дивитися на :) stats.stackexchange.com/questions/167482 / ...
бенкет

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