Main Content

narxnet

Rete neurale autoregressiva non lineare con input esterno

Descrizione

esempio

narxnet(inputDelays,feedbackDelays,hiddenSizes,feedbackMode,trainFcn) considera questi argomenti:

  • Vettore di riga dei ritardi crescenti di input 0 o positivi, inputDelays

  • Vettore di riga dei ritardi crescenti di feedback 0 o positivi, feedbackDelays

  • Vettore di riga di una o più dimensioni del livello nascosto, hiddenSizes

  • Tipo di feedback, feedbackMode

  • Funzione di addestramento in retropropagazione trainFcn

e restituisce una rete neurale NARX.

Le reti NARX (autoregressive non lineari con input esterno) possono apprendere come prevedere una serie temporale dati i valori passati della stessa serie temporale, l'input di feedback e un'altra serie temporale chiamata serie temporale esterna (o esogena).

Esempi

comprimi tutto

Addestrare una rete neurale autoregressiva non lineare con input esterno (NARX) ed eseguire previsioni su nuovi dati di serie temporali. La previsione di una sequenza di valori in una serie temporale è nota anche come previsione multifase. Le reti a loop chiuso possono eseguire previsioni multifase. Quando manca il feedback esterno, le reti a loop chiuso possono continuare a eseguire la previsione utilizzando il feedback interno. Nella previsione NARX, i valori futuri di una serie temporale sono previsti a partire dai valori passati della serie, dall'input di feedback e da una serie temporale esterna.

Caricare i dati di previsione di una serie temporale semplice.

[X,T] = simpleseries_dataset;

Suddividere i dati in dati di addestramento XTrain e TTrain e in dati di previsione XPredict. Utilizzare XPredict per eseguire la previsione dopo aver creato la rete a loop chiuso.

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

Creare una rete NARX. Definire i ritardi di input, i ritardi di feedback e la dimensione dei livelli nascosti.

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

Preparare i dati della serie temporale utilizzando preparets. Questa funzione sposta automaticamente le serie temporali di input e di target del numero di fasi necessarie per riempire gli stati iniziali di input e di ritardo del livello.

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

Una pratica consigliata è quella di creare completamente la rete a loop aperto per poi trasformarla in una rete a loop chiuso per la previsione multifase in avanti. Quindi, la rete a loop chiuso può prevedere tutti i valori futuri che si desidera. Se si simula la rete neurale solo nella modalità a loop chiuso, la rete può eseguire un numero di previsioni pari al numero di fasi temporali della serie di input.

Addestrare la rete NARX. La funzione train addestra la rete in un loop aperto (architettura in serie parallela), comprese le fasi di convalida e di test.

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

Visualizzare la rete addestrata.

view(net)

Calcolare l'output di rete Y, gli stati finali di input Xf e gli stati finali del livello Af della rete a loop aperto dall'input di rete Xs, dagli stati iniziali di input Xi e dagli stati iniziali del livello Ai.

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

Calcolare le prestazioni della rete.

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

Per prevedere l'output per le successive 20 fasi temporali, simulare prima la rete nella modalità a loop chiuso. Gli stati finali di input Xf e gli stati del livello Af della rete a loop aperto diventano gli stati iniziali di input Xic e gli stati del livello Aic della rete a loop chiuso netc.

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

Visualizzare la rete a loop chiuso.

view(netc)

Eseguire la previsione per 20 fasi temporali in avanti nella modalità a loop chiuso.

Yc = netc(XPredict,Xic,Aic)
Yc=1×20 cell array
    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

Argomenti di input

comprimi tutto

Ritardi di input nulli o positivi, specificati come un vettore di riga crescente.

Ritardi di feedback zero o positivi, specificati come vettore di riga crescente.

Dimensioni dei livelli nascosti, specificate come un vettore di riga di uno più elementi.

Tipo di feedback, specificato come 'open', 'closed' o 'none'.

Nome della funzione di addestramento, specificato come uno dei seguenti.

Funzione di addestramentoAlgoritmo
'trainlm'

Levenberg-Marquardt

'trainbr'

Regolarizzazione bayesiana

'trainbfg'

Quasi-Newton BFGS

'trainrp'

Retropropagazione resiliente

'trainscg'

Gradiente coniugato scalato

'traincgb'

Gradiente coniugato con ripartenze Powell/Beale

'traincgf'

Gradiente coniugato di Fletcher-Powell

'traincgp'

Gradiente coniugato di Polak-Ribiére

'trainoss'

Secante a un passaggio

'traingdx'

Velocità di apprendimento variabile a discesa del gradiente

'traingdm'

Discesa del gradiente con momento

'traingd'

Discesa del gradiente

Esempio Ad esempio, è possibile specificare l'algoritmo di discesa del gradiente della velocità di apprendimento variabile come algoritmo di addestramento, come segue: 'traingdx'

Per ulteriori informazioni sulle funzioni di addestramento, vedere Train and Apply Multilayer Shallow Neural Networks e Choose a Multilayer Neural Network Training Function.

Tipi di dati: char

Cronologia versioni

Introdotto in R2010b