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. The 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'

Сопряженный градиент с перезапусками Powell/Beale

'traincgf'

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

'traincgp'

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

'trainoss'

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

'traingdx'

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

'traingdm'

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

'traingd'

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

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

Для получения дополнительной информации о функциях обучения смотрите Train и Применение Многослойных Неглубоких Нейронных Сетей и Выберите Многослойную Функцию Обучения Нейронной Сети.

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

Введенный в R2010b