Правильный способ использования рекуррентной нейронной сети для анализа временных рядов


67

Рекуррентные нейронные сети отличаются от «обычных» тем, что имеют слой «памяти». Благодаря этому слою рекуррентные NN должны быть полезны при моделировании временных рядов. Тем не менее, я не уверен, что правильно понимаю, как их использовать.

Допустим, у меня есть следующие временные ряды (слева направо): [0, 1, 2, 3, 4, 5, 6, 7]моя цель состоит в том, чтобы предсказать i-й пункт, используя точки i-1и i-2в качестве входных данных (для каждого i>2). В «обычном», не повторяющемся ANN я бы обработал данные следующим образом:

 target| input
      2| 1 0
      3| 2 1
      4| 3 2
      5| 4 3
      6| 5 4
      7| 6 5 

Затем я создал бы сеть с двумя входными и одним выходным узлом и обучил ее приведенным выше данным.

Как нужно изменить этот процесс (если вообще) в случае периодических сетей?


Вы узнали, как структурировать данные для RNN (например, LSTM)? спасибо
mik1904

Ответы:


49

То, что вы описываете, на самом деле является подходом «скользящего временного окна» и отличается от рекуррентных сетей. Вы можете использовать эту технику с любым алгоритмом регрессии. У этого подхода есть огромное ограничение: события на входах могут быть соотнесены только с другими входами / выходами, которые находятся на расстоянии не более t шагов, где t - размер окна.

Например, вы можете думать о марковской цепочке порядка t. RNNs не страдают от этого в теории, однако на практике обучение затруднено.

Лучше всего проиллюстрировать RNN в отличие от сети обратной связи. Рассмотрим (очень) простую сеть с прямой связью где y - выходной сигнал, W - весовая матрица, а x - входной сигнал.y=WxyWx

Теперь мы используем рекуррентную сеть. Теперь у нас есть последовательность входов, поэтому мы будем обозначать входы через для i -го ввода. Соответствующий i-й выход затем вычисляется через y i = W x i + W r y i - 1 .xiyi=Wxi+Wryi1

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

Это конечно простая архитектура. Наиболее распространенной является архитектура, в которой у вас есть скрытый слой, который периодически связан с самим собой. Пусть обозначает скрытый слой на временном шаге i. Формулы тогда:hi

h i = σ ( W 1 x i + W r h i - 1 ) y i = W 2 h i

h0=0
hi=σ(W1xi+Wrhi1)
yi=W2hi

Где является подходящей нелинейностью / передаточной функцией, такой как сигмоидальная. W 1 и W 2 являются весами соединения между входным и скрытым и скрытым и выходным слоями. W r представляет рекуррентные веса.σW1W2Wr

Вот схема структуры:

схематический


2
Неправильно ли видеть какое-то сходство рекуррентных сетей с фильтрами Калмана? Я вижу это, потому что предыдущий вывод влияет на текущий вывод. В чем же практическая выгода от рекуррентных сетей?
Васс

10
Вы пишете в том смысле, что обе являются моделями пространства состояний. Однако есть много различий: KF полностью вероятностны в том смысле, что скрытые состояния имеют надлежащий вероятностный смысл. С другой стороны, RNN являются детерминированными, и только выходные данные могут использоваться для моделирования распределения дискриминационным способом. Кроме того, KF обычно оцениваются с помощью EM, в то время как RNN оцениваются с помощью градиентных методов. Если вам нужна более подробная информация, не стесняйтесь оставлять вопрос и присылать мне ссылку, но комментарии слишком ограничены для этого.
bayerj

1
Нет, скользящее временное окно не претендует на вывод сети, только на вход.
bayerj

2
@bayerj отличная информация, но я не думаю, что вы ответили на вопрос. Как вы структурируете входные выходные векторы не в скользящем временном окне для RNN? Можете ли вы предоставить пару образцов с набором данных ОП?
Левитикон

1
Это очень информативное описание RNN, но я не могу найти ответ на вопрос OP: Как нужно изменить [обучение] в случае рекуррентных сетей?
Wehnsdaefflae

9

Вы можете также рассмотреть возможность использования нескольких преобразований временных рядов для входных данных. Только для одного примера, входные данные могут быть:

  1. самое последнее значение интервала (7)
  2. следующее самое последнее значение интервала (6)
  3. дельта между самым последним и следующим последним (7-6 = 1)
  4. третье последнее значение интервала (5)
  5. дельта между вторым и третьим последним (6-5 = 1)
  6. среднее значение за последние три интервала ((7 + 6 + 5) / 3 = 6)

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


1
Тем не менее, вы вкладываете много знаний в предметную область. Что, если вы сами не узнаете шаблон временных рядов? Как вы тогда строите модель, которая может, особенно если она зависит от входов, которые бесконечно далеко в прошлом?
Bayerj

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

01[0.1,0.1]101

2
Я не хотел бы сказать, что вы никогда не должны использовать рекуррентные нейронные сети; наоборот. Однако, если задача (как указано в вопросе) состоит в том, чтобы предсказать i-е из (i-1) и (i-2) точек, то вы можете быстрее получить лучший результат, используя эти знания. Я не хочу утверждать, что RNN не являются хорошей идеей, но можно использовать любые знания предметной области, которые у вас есть, чтобы ускорить процесс обучения (и уменьшить вероятность того, что обучение попадет в локальный минимум и т. Д.) ,
Россдавид

4

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

Когда я работал в Siemens, я опубликовал статью об этой архитектуре в книге Springer Verlag: Zimmermann, Grothmann, Tietz, von Jouanne-Diedrich: Моделирование рынка, прогнозирование и анализ рисков с исторически согласованными нейронными сетями.

Просто чтобы дать представление о парадигме, вот краткий отрывок:

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

[...]

Yτ:=(yτ,uτ)

... и из заключения:

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

Части статьи можно посмотреть публично: здесь


Есть ли у вас доступная для загрузки и тестирования реализация?
Жюльен Л

@JulienL: К сожалению, не потому, что это было частной работой для Siemens.
vonjd

Жаль, это выглядело многообещающе.
Julien L

@JulienL: Я призываю вас связаться с Георгом, моим соавтором. Его электронная почта находится на первой странице статьи (см. Ссылку выше).
vonjd
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.