Рекуррентные нейронные сети

Ранее мы уже рассмотрели многослойный перцептрон и сверточные нейронный сети. Все они работают со статичными данными в рамках марковских процессов, когда последующее состояние системы зависит только от ее текущего состояния и не зависит от состояния системы в прошлом. Да, чтобы компенсировать этот недостаток, мы подавали на вход нейронной сети не только последние ценовые данные и состояния индикаторов, но и исторические данные за несколько последних баров. Но сама сеть не запоминала обработанные данные и полученные результаты. На каждой новой итерации прямого прохода на вход нейронной сети мы заново подавали полный набор исторических данных, даже если мы их уже передавали нейронной сети ранее. По существу, каждый прямой проход нейронная сеть начинала с «чистого листа». Единственная память, которой обладает такая нейронная сеть, это матрица весов, которую она выучила в процессе обучения.

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

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

Сейчас я предлагаю посмотреть в сторону рекуррентных нейронных сетей (Recurrent Neural Network). Это особый вид нейронных сетей, призванный работать с временными последовательностями. Основной особенностью рекуррентных нейронов является передача своего состояния на вход самому себе в следующей итерации.

Нейрон, получая на вход новое состояние внешней среды, вместе с новыми данными каждый раз как бы оценивает результат своей работы в прошлом.