L’ambiente MATLAB offre una gamma di strumenti e applicazioni (App) specifiche per la progettazione, l’addestramento e la sperimentazione di reti neurali, sia superficiali che profonde. Un punto di partenza comune è la finestra di comando MATLAB, dove digitando il comando nnstart si apre una serie di strumenti tra cui il Neural Net Fitting tool, una applicazione che consente la costruzione di reti neurali superficiali composte da due strati: uno nascosto e uno di uscita. Questo strumento è particolarmente adatto a coloro che desiderano importare dati propri o utilizzare dati già disponibili per modellare e testare reti di piccole dimensioni con architetture semplici.

Per esigenze più complesse, MATLAB mette a disposizione il Deep Network Designer (DND), un ambiente molto più potente e flessibile dedicato alle reti neurali profonde. Può essere avviato sia tramite l’icona APPS nella finestra MATLAB, navigando nella categoria “Machine Learning and Deep Learning”, sia tramite il comando deepNetworkDesigner nella finestra di comando. Questa applicazione fornisce un’interfaccia grafica che consente agli utenti di creare, modificare, testare e ottimizzare reti profonde tramite un sistema di drag-and-drop degli strati disponibili nella libreria a sinistra, senza la necessità di scrivere codice complesso.

Un elemento importante del Deep Network Designer è la possibilità di importare reti da workspace o da altri framework di deep learning come PyTorch e TensorFlow, ma anche di utilizzare modelli preaddestrati suddivisi in categorie quali reti per immagini, sequenze e audio. Questi modelli preaddestrati accelerano notevolmente il processo di sviluppo, consentendo agli utenti di effettuare modifiche puntuali senza dover iniziare l’addestramento da zero, il che risulta particolarmente vantaggioso per ridurre i tempi e le risorse computazionali richieste.

Nonostante la praticità e la facilità d’uso di queste applicazioni grafiche, esse presentano un limite significativo: l’utente non può visualizzare dettagliatamente cosa accade “sotto il cofano”, ossia il funzionamento preciso a livello di codice degli strati e delle connessioni. Per ovviare a questo, MATLAB consente di generare automaticamente codice MATLAB dalla rete progettata tramite l’opzione “Generate Code”. Questo passaggio è fondamentale per acquisire una comprensione più profonda del processo di addestramento e della struttura della rete, specialmente per utenti più esperti o per chi desidera una maggiore personalizzazione.

Inoltre, MATLAB dispone di una libreria di funzioni specifiche per la creazione, il training e la valutazione di reti neurali, accessibili tramite codice. Funzioni come fitnet(), fitrnet() e fitcnet() rappresentano strumenti potenti per costruire modelli di rete con diverse finalità: la prima è generalmente impiegata per reti neurali generiche, mentre le altre due sono ottimizzate rispettivamente per compiti di regressione e classificazione. Il processo di fitting, o adattamento, consiste nell’addestrare la rete su un insieme di dati di input affinché possa apprendere la relazione con gli output target, sviluppando così una generalizzazione che permette di fare previsioni anche su dati mai visti prima.

La funzione fitnet() è particolarmente adatta per reti poco profonde e consente di specificare il numero di neuroni per ciascun layer nascosto attraverso il parametro hiddenSizes. È anche possibile definire il metodo di addestramento mediante il parametro trainFcn, con trainlm() come metodo predefinito, noto per la sua efficacia nell’ottimizzazione del processo di apprendimento. Tra le funzioni di training più diffuse si annoverano diverse opzioni, ognuna con caratteristiche specifiche per bilanciare velocità, accuratezza e complessità computazionale.

L’uso integrato di strumenti visuali e funzioni di codice consente di coprire un ampio spettro di esigenze, dal semplice esperimento didattico al progetto industriale avanzato. Tuttavia, la padronanza completa delle reti neurali in MATLAB richiede una buona comprensione sia della struttura delle reti sia delle modalità di funzionamento delle funzioni sottostanti.

È essenziale comprendere che, nonostante la semplicità apparente offerta dalle App grafiche, il lavoro con reti neurali profonde comporta spesso un compromesso tra usabilità e controllo dettagliato. Gli utenti dovrebbero quindi integrare l’uso delle interfacce grafiche con lo studio del codice generato, per affinare la capacità di personalizzare modelli e interpretare i risultati. Questo approccio garantisce non solo un’efficace implementazione pratica, ma anche una solida base teorica che aiuta a comprendere i fenomeni di apprendimento automatico e a risolvere eventuali problemi legati alla progettazione e al tuning della rete.

Inoltre, è importante saper valutare correttamente le prestazioni delle reti mediante metriche adeguate e test su dati non utilizzati durante l’addestramento, così da evitare fenomeni di overfitting o underfitting. L’uso di modelli preaddestrati è utile ma non esclude la necessità di una buona conoscenza delle peculiarità del proprio dataset e delle caratteristiche specifiche del problema affrontato. La conoscenza approfondita degli algoritmi di ottimizzazione, delle funzioni di attivazione e delle tecniche di regolarizzazione rappresenta un ulteriore elemento fondamentale per il successo nello sviluppo di reti neurali profonde in MATLAB.

Quando e come utilizzare la centratura e la scalatura nei modelli di fitting: quali implicazioni per l'interpretazione dei coefficienti?

L’opzione di centratura e scalatura dei dati nelle procedure di fitting svolge un ruolo cruciale, ma il suo utilizzo non è sempre vantaggioso, soprattutto quando gli input sono espressi nelle stesse unità o hanno scale simili. Normalizzare i dati tramite centratura e scalatura modifica inevitabilmente i valori dei coefficienti stimati rispetto a quelli ottenuti senza questa trasformazione. Ciò può influenzare significativamente l’interpretazione dei parametri, specialmente quando tali coefficienti hanno un significato fisico o rappresentano grandezze misurabili nel sistema studiato. In questi casi, è preferibile disabilitare questa opzione per preservare l’integrità fisica dei coefficienti.

Le rappresentazioni grafiche prodotte dall’applicazione di fitting, come il Curve Fitter App, mantengono invariato l’asse delle variabili originali, indipendentemente dall’attivazione della centratura e scalatura, facilitando così il confronto diretto con i dati sperimentali. Per attivare la normalizzazione nel contesto della funzione fit in MATLAB, è necessario preparare i dati tramite la funzione fitoptions(), impostando l’opzione ‘Normalize’ su ‘on’, e successivamente passare queste opzioni alla funzione fit. Questo approccio permette di applicare la normalizzazione in modo esplicito e controllato.

Per comprendere meglio l’effetto di queste opzioni è utile confrontare diversi modelli di fitting su uno stesso dataset. Prendendo ad esempio un sistema motore, l’uso del modello esponenziale con due termini fornisce un fitting più preciso rispetto a modelli polinomiali, logaritmici o di Fourier, come evidenziato dagli indicatori di errore quali R², SSE, DFE e RMSE. È interessante osservare che il modello esponenziale, pur risultando più performante, richiede una configurazione attenta delle opzioni di fitting, inclusa la possibile scelta di metodi robusti per gestire dati rumorosi o anomalie.

Altri modelli non lineari come Gaussian e Razionale offrono alternative valide, ma presentano criticità specifiche. In particolare, il modello razionale può mostrare instabilità se aumentano i gradi del numeratore o del denominatore, con risultati di fitting variabili ad ogni esecuzione. Ciò evidenzia l’importanza di bilanciare complessità del modello e stabilità numerica durante la selezione del modello di fitting.

L’applicazione consente inoltre di salvare e esportare i risultati del fitting sia come file di sessione (.sfit) che direttamente nel workspace di MATLAB, facilitando la gestione e il riutilizzo dei modelli. È possibile esportare il fitting in forma di codice MATLAB, tramite la funzione createFit(), per una successiva applicazione senza interfaccia grafica, un vantaggio significativo per l’automazione e la riproducibilità dell’analisi.

Per valutare un modello già adattato su nuovi dati, basta definire un vettore di input e chiamare il modello esportato come funzione. Questo consente di predire risposte per nuove condizioni operative e verificare l’adeguatezza del modello rispetto a dati mai osservati durante la fase di fitting, un passaggio cruciale per validare la generalizzazione del modello.

È importante inoltre comprendere che la scelta del modello e delle sue opzioni dipende fortemente dalla natura del problema e dai dati disponibili. La complessità del modello deve essere bilanciata con la capacità di interpretare fisicamente i parametri stimati e con la stabilità numerica del fitting. Inoltre, la gestione degli errori di fitting e la valutazione della bontà dell’adattamento tramite indicatori statistici sono fondamentali per assicurare che il modello scelto rappresenti adeguatamente la realtà sottostante.

Endtext