Fitting dei dati di serie temporali con l’app Neural Net Time Series
Questo esempio mostra come addestrare una rete neurale superficiale per eseguire il data fitting di serie temporali con l’app Neural Net Time Series.
Apri l’app Neural Net Time Series tramite ntstool.
ntstool
Selezione della rete
È possibile utilizzare l’app Neural Net Time Series per risolvere tre tipi di problemi con le serie temporali.
Nel primo tipo di problema con le serie temporali, vogliamo prevedere i valori futuri di una serie temporale a partire da valori pregressi di quella serie temporali e da valori pregressi di una seconda serie temporale . Questa forma di previsione è detta rete autoregressiva non lineare con input esogeno (esterno), o NARX.
Nel secondo tipo di problema con le serie temporali, c’è una sola serie coinvolta. I valori futuri di una serie temporale vengono previsti solo sulla base di valori pregressi della stessa serie. Questa forma di previsione è detta autoregressiva non lineare, o NAR.
Il terzo problema con le serie temporali è simile al primo tipo in quanto sono coinvolte due serie, una serie di input (predittori) ) e una serie di output (risposte) . In questo caso vogliamo prevedere i valori di sulla base dei valori pregressi di ma senza conoscere i valori pregressi di .
Per questo esempio, utilizza una rete NARX. Fai clic su Select Network > NARX Network (Selezionare rete > Rete NARX).

Selezione dei dati
L’app Neural Net Time Series contiene dei dati esemplificativi che ti aiuteranno ad iniziare ad addestrare una rete neurale.
Per importare i dati esemplificativi per il processo di neutralizzazione del pH, seleziona Import > More Example Data Sets > Import pH Neutralization Data Set (Importare > Altri set di dati esemplificativi > Importare dati di neutralizzazione pH). È possibile utilizzare questo set di dati per addestrare una rete neurale a prevedere il pH di una soluzione utilizzando il flusso di soluzione acida e basica. Se si importano dati propri da un file o da workspace, occorre specificare i predittori e le risposte.
Le informazioni sui dati importati compaiono nel Model Summary (Riepilogo modello). Questo set di dati contiene 2001 fasi temporali. I previsori hanno due feature (flusso di soluzione acida e basica) e le risposte hanno una sola feature (pH della soluzione).

Suddividi i dati in set di addestramento, convalida e prova. Mantieni le impostazioni predefinite. I dati si suddividono in:
70% per l’addestramento.
15% per convalidare che la rete stia generalizzando e per interrompere l’addestramento prima di un overfitting.
15% per testare in maniera indipendente la generalizzazione della rete.
Per ulteriori informazioni sulla suddivisione dei dati, vedere Divide Data for Optimal Neural Network Training.
Creazione della rete
La rete NARX standard è una rete feed-forward a due livelli con funzione di trasferimento sigmoidale nel livello nascosto e una funzione di trasferimento lineare nel livello di output. Questa rete sfrutta anche delle tapped delay line per archiviare i valori pregressi delle sequenze e . Nota che l’output della rete NARX, , viene retroalimentato all’input della rete (attraverso dei ritardi), dato che è una funzione di . Tuttavia, per un addestramento efficiente è necessario che questo loop di feedback sia aperto.
Dato che l’output vero è disponibile durante l’addestramento della rete, è possibile utilizzare l’architettura Open-loop illustrata di seguito, in cui l’output vero è utilizzato in sostituzione del feedback all’output stimato. Questo presenta due vantaggi. Il primo è che l’input della rete feed-forward è più accurato. Il secondo è che la rete che si ottiene ha un’architettura puramente feed-forward, e pertanto è possibile utilizzare un algoritmo più efficiente per l’addestramento. Questa rete è trattata più dettagliatamente in Design Time Series NARX Feedback Neural Networks.
Il valore delle Layer size (Dimensioni del livello) definisce il numero di neuroni nascosti. Mantieni le dimensioni di livello predefinite, 10. Modifica il valore del Time delay (Ritardo temporale) in 4. È opportuno regolare questi numeri se la performance dell’addestramento della rete è insoddisfacente.
È possibile vedere l’architettura di rete nel pannello Network.

Addestramento della rete
Per addestrare la rete, seleziona Train > Train with Levenberg-Marquardt (Addestrare > Addestrare con Levenberg-Marquardt). Questo è l’algoritmo di addestramento predefinito ed equivale alla pressione del tasto Train (Addestrare).

L’addestramento con il metodo di Levenberg-Marquardt (trainlm) è consigliato per la maggior parte dei problemi. Per problemi piccoli o in presenza di rumore, la regolarizzazione bayesiana (trainbr) può ottenere una soluzione migliore, anche se richiede tempi maggiori. Per problemi più grandi si consiglia l’impostazione Gradiente coniugato scalato (trainscg) in quanto utilizza i calcoli dei gradienti che sono più efficienti sotto il profilo della memoria rispetto ai calcoli jacobiani utilizzati dagli altri due algoritmi.
Nel pannello Training (Addestramento) si possono vedere i progressi dell’addestramento. L’addestramento continua fino al raggiungimento di uno dei criteri di arresto. In questo esempio, l'addestramento continua finché l'errore di convalida non è maggiore o uguale all'errore di convalida precedentemente più piccolo per sei iterazioni di convalida consecutive ("Criterio di convalida soddisfatto").

Analisi dei risultati
Il Model Summary (Riepilogo modello) contiene informazioni sull’algoritmo di addestramento e i risultati dell’addestramento per ogni set di dati.

È possibile analizzare ulteriormente i risultati generando dei grafici. Per tracciare l’autocorrelazione degli errori, nella sezione Plots (Grafici), fai clic su Error Autocorrelation (Autocorrelazione errori). Il grafico dell’autocorrelazione descrive il modo in cui gli errori di previsione sono correlati nel tempo. Per un modello previsionale perfetto deve esserci un solo valore diverso da zero nella funzione di autocorrelazione e deve verificarsi sul lag zero (si tratta dell’errore quadratico medio). Questo significherebbe che gli errori di previsione non avevano alcuna correlazione tra loro (rumore bianco). Se è presente una correlazione significativa tra gli errori di previsione, dovrebbe essere possibile migliorare la previsione, forse aumentando il numero di ritardo nelle tapped delay line. In questo caso le correlazioni, tranne quella sul lag zero, rientrano approssimativamente nei limiti dell’intervallo di confidenza del 95% intorno a zero, pertanto il modello sembra essere adeguato. Nel caso in cui siano richiesti risultati ancora più accurati, si potrebbe riaddestrare la rete. Il riaddestramento comporta una modifica dei pesi e bias iniziali della rete e potrebbe produrre una rete migliorata.

Visualizza il grafico della correlazione incrociata tra input ed errori per una ulteriore verifica della performance della rete. Nella sezione Plots (Grafici), fai clic su Input-Error Correlation (Correlazione input-errori). Il grafico della correlazione incrociata tra input ed errori mostra il modo in cui gli errori sono correlati alla sequenza di input . Per un modello previsionale perfetto, tutte le correlazioni dovrebbero essere zero. Se l’input è correlato all’errore, dovrebbe essere possibile migliorare la previsione, forse aumentando il numero di ritardo nelle tapped delay line. In questo caso, la maggior parte delle correlazioni ricade entro l’intervallo di confidenza intorno a zero.

Nella sezione Plots (Grafici), fai clic su Response (Risposta). Questa sezione mostra gli output, le risposte (target) e gli errori in relazione al tempo. Inoltre, indica quali punti temporali sono stati selezionati per l’addestramento, il test e la convalida.

Se non si è soddisfatti delle prestazioni della rete, si può procedere in uno dei seguenti modi:
Addestrare nuovamente la rete.
Aumentare il numero di neuroni nascosti.
Usare un set più ampio di dati di addestramento.
Se la performance sul set di addestramento è buona ma la performance sul set di test è scarsa, questo può indicare un overfitting del modello. Ridurre le dimensioni del livello, e di conseguenza ridurre il numero di neuroni, può ridurre l’overfitting.
Si può anche valutare la performance della rete su un ulteriore set di test. Per caricare ulteriori dati di test con cui valutare la rete, nella sezione Test, fai clic su Test. Il Model Summary (Riepilogo modello) mostra i risultati dei dati di test aggiuntivi. È possibile generare anche dei grafici per analizzare i risultati dei dati di test aggiuntivi.
Generazione di codice
Seleziona Generate Code > Generate Simple Training Script (Generare codice > Generare script di addestramento semplice) per creare un codice MATLAB in grado di riprodurre le fasi precedenti dalla riga di comando. La creazione di codice MATLAB può essere utile se si desidera imparare come utilizzare la funzionalità della riga di comando del toolbox per personalizzare il processo di addestramento. In Fitting dei dati di serie temporali con le funzioni della riga di comando, potrai esaminare più dettagliatamente gli script generati.

Esportazione della rete
Una volta addestrata, la rete può essere esportata nel workspace o in Simulink®. È anche possibile distribuire la rete con gli strumenti di MATLAB Compiler™ e altri strumenti di generazione di codice MATLAB. Per esportare la rete addestrata e i risultati, seleziona Export Model > Esport to Workspace (Esportare modello > Esportare in Workspace).

Vedi anche
Neural Net Fitting | Neural Net Time Series | Neural Net Pattern Recognition | Neural Net Clustering | train | preparets | narxnet | closeloop | perform | removedelay