2

Какая архитектура (топология) нейро-сети лучше всего подходит для выполнения задачи прогнозирования временных рядов ?

UPD Сейчас я пытаюсь написать сеть, которая умеет угадывать значения от 0 до 9 в простом ряду := 0-1-2-3-4-5-6-7-8-9-0-1... и т.д. В сети есть 3 входных, 3 скрытых и 4 выходных нейрона.

введите сюда описание изображения На входы входных нейронов подаются данные о 3х прошлых значениях (i-1,i-2,i-3) на их основании сеть должна принять решение о следующем значении. Значения на выходах O1-O4 округляются и соответствуют числу в двоичной системе, например если округленные значения O1=0; O2=1; O3=0; O4=0 то ответ сети будет 4. Пока все просто, набрал модель сети в C# и получаю совсем непонятные результаты. Например, если я пытаюсь научить сеть выдавать мне 4, если на входы подаются 3,2 и 1 то график ошибок по числу испытаний выглядит так :

введите сюда описание изображения

т.е. хорошо, уже через ~100 испытаний и пересчетов весов сеть понимает, что после 1-2-3 должно идти 4. Но если я пытаюсь, как и задумывалось научить ее строить простой временной ряд то сходимости и близко нет :

введите сюда описание изображения

Может я провожу слишком мало испытаний или вообще неверную архитектуру выбрал ?

Сергей
  • 3,880

1 Answers1

2

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

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

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

Самой первой РНС была сеть Хопфилда (1982 год), потом сеть Элмана, которую признано считать эволюционной в развитии РНС (1990 год), и основой для всех текущих сетей используемых в задаче предсказания является LSTM описанный в 1997 году Хохрейтером и Шмидхубером.

LSTM, вроде как наиболее популярная сеть для предсказания временных рядов. Конечно задача предсказания временных рядов - это довольно сложный тип исследования, поэтому наряду с нейронными сетями могут использоваться уже ранее используемые математические модели создавая некоторую гибридную систему.

Безусловно у LSTM есть модификации, но стоит начать именно с этой сети, ведь для нее достаточно большое количество обучающих материалов.

Firepro
  • 9,352
  • Обновил вопрос, не могли бы вы посмотреть на графики ? – Сергей Feb 04 '18 at 12:13
  • Нужно понять - ошибка именно в архитектуре и такая сеть в принципе не способна ничего предсказать или в коде или в самом процессе обучения? – Сергей Feb 04 '18 at 15:32