Рекуррентные нейронные сети отличаются от «обычных» тем, что имеют слой «памяти». Благодаря этому слою рекуррентные 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
Затем я создал бы сеть с двумя входными и одним выходным узлом и обучил ее приведенным выше данным.
Как нужно изменить этот процесс (если вообще) в случае периодических сетей?
time-series
machine-learning
neural-networks
Борис Горелик
источник
источник
Ответы:
То, что вы описываете, на самом деле является подходом «скользящего временного окна» и отличается от рекуррентных сетей. Вы можете использовать эту технику с любым алгоритмом регрессии. У этого подхода есть огромное ограничение: события на входах могут быть соотнесены только с другими входами / выходами, которые находятся на расстоянии не более t шагов, где t - размер окна.
Например, вы можете думать о марковской цепочке порядка t. RNNs не страдают от этого в теории, однако на практике обучение затруднено.
Лучше всего проиллюстрировать RNN в отличие от сети обратной связи. Рассмотрим (очень) простую сеть с прямой связью где y - выходной сигнал, W - весовая матрица, а x - входной сигнал.y=Wx y W x
Теперь мы используем рекуррентную сеть. Теперь у нас есть последовательность входов, поэтому мы будем обозначать входы через для i -го ввода. Соответствующий i-й выход затем вычисляется через y i = W x i + W r y i - 1 .xi yi=Wxi+Wryi−1
Таким образом, у нас есть другая весовая матрица которая линейно включает выходной сигнал на предыдущем шаге в выходной ток.Wr
Это конечно простая архитектура. Наиболее распространенной является архитектура, в которой у вас есть скрытый слой, который периодически связан с самим собой. Пусть обозначает скрытый слой на временном шаге i. Формулы тогда:hi
h i = σ ( W 1 x i + W r h i - 1 ) y i = W 2 h i
Где является подходящей нелинейностью / передаточной функцией, такой как сигмоидальная. W 1 и W 2 являются весами соединения между входным и скрытым и скрытым и выходным слоями. W r представляет рекуррентные веса.σ W1 W2 Wr
Вот схема структуры:
источник
Вы можете также рассмотреть возможность использования нескольких преобразований временных рядов для входных данных. Только для одного примера, входные данные могут быть:
Таким образом, если бы вашими входами в обычную нейронную сеть были эти шесть частей преобразованных данных, обычному алгоритму обратного распространения не было бы сложной задачи выучить шаблон. Однако вам придется кодировать преобразования, которые принимают необработанные данные и превращают их в указанные выше 6 входов для вашей нейронной сети.
источник
Другой возможностью являются исторически согласованные нейронные сети (HCNN) . Эта архитектура может быть более подходящей для вышеупомянутой установки, потому что они устраняют часто произвольное различие между входными и выходными переменными и вместо этого пытаются воспроизвести полную базовую динамику всей системы посредством обучения со всеми наблюдаемыми.
Когда я работал в Siemens, я опубликовал статью об этой архитектуре в книге Springer Verlag: Zimmermann, Grothmann, Tietz, von Jouanne-Diedrich: Моделирование рынка, прогнозирование и анализ рисков с исторически согласованными нейронными сетями.
Просто чтобы дать представление о парадигме, вот краткий отрывок:
[...]
... и из заключения:
Части статьи можно посмотреть публично: здесь
источник