exponenta event banner

narxnet

Нелинейная авторегрессионная нейронная сеть с внешним входом

Описание

пример

narxnet(inputDelays,feedbackDelays,hiddenSizes,feedbackMode,trainFcn) принимает следующие аргументы:

  • Вектор строки с увеличивающимися 0 или положительными задержками на входе, inputDelays

  • Вектор строки с увеличением 0 или положительной задержки обратной связи, feedbackDelays

  • Вектор строки одного или нескольких размеров скрытого слоя, hiddenSizes

  • Тип обратной связи, feedbackMode

  • Обучающая функция Backpropagation, trainFcn

и возвращает нейронную сеть NARX.

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

Примеры

свернуть все

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

Загрузите простые данные прогнозирования временных рядов.

[X,T] = simpleseries_dataset;

Разбиение данных на учебные данные XTrain и TTrainи данные для прогнозирования XPredict. Использовать XPredict для выполнения прогнозирования после создания замкнутой сети.

XTrain = X(1:80);
TTrain = T(1:80);
XPredict = X(81:100);

Создайте сеть NARX. Определите задержки ввода, задержки обратной связи и размер скрытых слоев.

net = narxnet(1:2,1:2,10);

Подготовка данных временных рядов с использованием preparets. Эта функция автоматически сдвигает входные и целевые временные ряды на количество шагов, необходимых для заполнения начального состояния задержки ввода и уровня.

[Xs,Xi,Ai,Ts] = preparets(net,XTrain,{},TTrain);

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

Обучение сети NARX. train функция направляет сеть в разомкнутом контуре (последовательная параллельная архитектура), включая этапы проверки и тестирования.

net = train(net,Xs,Ts,Xi,Ai);

Просмотрите обученную сеть.

view(net)

Расчет сетевого выхода Y, окончательные входные состояния Xfи окончательные состояния слоев Af сети с разомкнутым контуром от сетевого входа Xs, начальные входные состояния Xiи начальные состояния слоев Ai.

[Y,Xf,Af] = net(Xs,Xi,Ai);

Вычислите производительность сети.

perf = perform(net,Ts,Y)
perf =

    0.0153

Чтобы спрогнозировать выходные данные для следующих 20 шагов времени, сначала смоделируйте сеть в режиме замкнутого цикла. Конечные входные состояния Xf и состояния слоев Af сети с разомкнутым контуром становятся начальными входными состояниями Xic и состояния слоев Aic замкнутой сети netc.

[netc,Xic,Aic] = closeloop(net,Xf,Af);

Отображение сети с замкнутым контуром.

view(netc)

Выполните прогноз в течение 20 шагов вперед в режиме замкнутого цикла.

Yc = netc(XPredict,Xic,Aic)
Yc =

  1x20 cell array

  Columns 1 through 5

    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}

  Columns 6 through 10

    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}

  Columns 11 through 15

    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}

  Columns 16 through 20

    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

Входные аргументы

свернуть все

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

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

Размеры скрытых слоев, заданные как вектор строки одного или нескольких элементов.

Тип обратной связи, указанный как 'open', 'closed', или 'none'.

Имя обучающей функции, указанное как одно из следующих.

Функция обученияАлгоритм
'trainlm'

Левенберг-Марквардт

'trainbr'

Байесовская регуляризация

'trainbfg'

BFGS Квази-Ньютон

'trainrp'

Упругое обратное распространение

'trainscg'

Масштабированный сопряженный градиент

'traincgb'

Сопряжение градиента с перезапуском Пауэлла/Била

'traincgf'

Сопряженный градиент Флетчера-Пауэлла

'traincgp'

Сопряженный градиент Полака-Рибьера

'trainoss'

Одношаговый секант

'traingdx'

Градиентный спуск переменной скорости обучения

'traingdm'

Градиентный спуск с импульсом

'traingd'

Градиентный спуск

Пример: Например, можно задать алгоритм градиентного спуска переменной скорости обучения в качестве обучающего алгоритма следующим образом: 'traingdx'

Дополнительные сведения о функциях обучения см. в разделах Обучение и применение многоуровневых неглубоких нейронных сетей и Выбор многоуровневой функции обучения нейронной сети.

Типы данных: char

Представлен в R2010b