Nel contesto attuale dell’intelligenza artificiale, la distinzione tra machine learning e deep learning non è semplicemente terminologica: rappresenta un passaggio fondamentale nell’evoluzione delle capacità computazionali e predittive delle macchine. Il deep learning non è altro che una sotto-categoria del machine learning, ma dotata di una struttura più sofisticata, simile a una classe derivata nel linguaggio C++. Come una classe derivata accede a tutte le proprietà della classe base, arricchendole con funzionalità proprie, così il deep learning eredita i fondamenti del machine learning ma li estende, rendendoli più potenti ed efficienti.

Il machine learning si fonda sull’utilizzo di dati strutturati e etichettati. Per addestrare un modello, è necessario che l’uomo intervenga direttamente nell’organizzazione dei dati e nella selezione delle caratteristiche rilevanti. Ogni variabile deve essere identificata, estratta e codificata, e solo allora il modello può iniziare a fare previsioni. Questo approccio implica una dipendenza significativa dagli esperti del dominio, che devono sapere cosa cercare e come rappresentarlo nei dati.

Il deep learning, invece, automatizza gran parte di questo processo. È in grado di ingerire dati non strutturati come immagini, testi o segnali audio, e di apprendere automaticamente le caratteristiche salienti attraverso le sue molteplici layer neurali. Prendiamo l’esempio del riconoscimento delle immagini di animali: mentre nel machine learning un esperto dovrebbe indicare esplicitamente al modello che tipo di orecchie o muso differenziano un gatto da un cane, il deep learning è capace di inferire autonomamente quali elementi visivi sono più discriminanti, costruendo una gerarchia di caratteristiche apprese direttamente dai dati grezzi.

Questo processo di apprendimento avviene attraverso metodi di ottimizzazione come la discesa del gradiente e la retropropagazione dell’errore, che permettono al modello di adattarsi progressivamente per aumentare la precisione delle sue previsioni. Il risultato è un sistema capace di migliorare con l’esperienza, riducendo la necessità di intervento umano e adattandosi a contesti complessi dove le regole non sono facilmente formalizzabili.

Entrambe le tecnologie possono operare in tre modalità principali: apprendimento supervisionato, non supervisionato e per rinforzo. L’apprendimento supervisionato si basa su set di dati etichettati, e rimane il più diffuso. Quello non supervisionato, al contrario, cerca pattern nei dati senza etichette, mentre l’apprendimento per rinforzo si concentra sull’interazione tra modello e ambiente, premiando comportamenti che massimizzano una certa funzione di ricompensa. In tutti questi contesti, il deep learning mostra una flessibilità superiore grazie alla sua capacità di modellare dinamiche non lineari e di lavorare con dati non strutturati.

All’interno dell’ambiente MATLAB, l’adozione del deep learning viene facilitata da strumenti specifici. Il Deep Learning Toolbox offre sia applicazioni grafiche che strumenti per la codifica diretta, permettendo agli utenti di progettare reti neurali profonde con approcci differenti. Le App forniscono interfacce intuitive per chi inizia o per chi ha bisogno di prototipi rapidi, ma mascherano molte delle complessità tecniche. Per questo motivo, il passaggio a una programmazione più dettagliata, tramite funzioni specifiche, diventa inevitabile per chi voglia sviluppare competenze reali nel campo.

MATLAB distingue due macro-categorie di App per il deep learning: ANN, per le reti neurali superficiali, e DND, per quelle profonde. Queste App permettono di progettare reti, importare modelli pre-addestrati e interagire con altri framework come TensorFlow, PyTorch o ONNX. Questa interoperabilità è essenziale in un panorama tecnologico dove le soluzioni sono spesso ibride e dove la portabilità dei modelli gioca un ruolo chiave nel ciclo di sviluppo.

Accedere a questi strumenti in MATLAB è semplice. Basta cliccare sull’icona APPS o digitare comandi specifici come nnstart o nftool. Tra le applicazioni disponibili troviamo strumenti per il fitting, la classificazione di pattern, le serie temporali e il clustering: ognuno rappresenta una finestra su un diverso tipo di problema che può essere affrontato con le reti neurali.

La capacità di MATLAB di gestire l'intero ciclo di vita del modello – dalla progettazione, all’addestramento, alla simulazione e infine al deployment – fa sì che la piattaforma sia adatta non solo alla ricerca, ma anche allo sviluppo industriale di soluzioni basate su deep learning.

È fondamentale comprendere che l’efficacia del deep learning dipende in larga misura dalla qualità e dalla quantità dei dati disponibili, dalla scelta dell’architettura e dalla corretta parametrizzazione. Inoltre, la sua applicazione non è priva di costi: richiede elevate risorse computazionali, lunghi tempi di addestramento e una consapevolezza delle implicazioni etiche e sociali, specialmente in contesti come la medicina, la sicurezza o la finanza.

Come funziona la distribuzione gaussiana multivariata e il clustering con GMM in MATLAB?

La definizione di una matrice simmetrica positiva definita è fondamentale per comprendere la distribuzione gaussiana multivariata (GMM). Una matrice simmetrica 𝑀 è detta positiva definita se per ogni vettore non nullo 𝑥 il prodotto 𝑥ᵀ𝑀𝑥 è sempre positivo. Questo requisito garantisce che la matrice di covarianza in una distribuzione multivariata sia valida e interpretabile come una misura di dispersione che non porta a valori negativi.

In MATLAB, la toolbox di Statistics and Machine Learning offre diverse funzioni per lavorare con la distribuzione normale multivariata. Una delle più importanti è mvnpdf(), che calcola la funzione di densità di probabilità (PDF) per valori specifici di dati. Per esempio, considerando due variabili con media zero e una matrice di covarianza definita come:

Σ=[0.30.350.350.98]\Sigma = \begin{bmatrix} 0.3 & 0.35 \\ 0.35 & 0.98
\end{bmatrix}

possiamo generare una griglia di valori per entrambe le variabili nell’intervallo da -4 a 4 con passo 0.2, creare una matrice con tutte le combinazioni di questi valori e calcolare la PDF corrispondente per ogni punto. La funzione meshgrid() crea le coordinate della griglia, mentre mvnpdf() restituisce i valori della densità, successivamente riorganizzati con reshape() per essere visualizzati in forma simmetrica.

Il codice MATLAB segue una logica precisa: inizializza i parametri della distribuzione (media e covarianza), genera una griglia di dati, calcola la probabilità associata ad ogni punto e infine traccia una superficie 3D per rappresentare la densità di probabilità. Questa visualizzazione permette di comprendere la forma della distribuzione e la correlazione tra le due variabili considerate.

Passando all’uso del modello di Gaussian Mixture Model (GMM) in MATLAB, esso si concretizza nella creazione di un oggetto gmdistribution che rappresenta una combinazione di più distribuzioni gaussiane multivariate. Ogni componente della mistura è definita da una media e una matrice di covarianza e ha associata una proporzione di mescolanza che indica la frazione del dataset descritta da quella componente.

Il clustering con GMM può essere eseguito con approccio “hard” o “soft”. Nel clustering hard, ogni punto dati viene assegnato a un cluster specifico, basandosi ad esempio sulla massima probabilità a posteriori calcolata tramite le funzioni di MATLAB, come cluster() o posterior(). Si può scegliere tra diverse strutture di covarianza — diagonale o completa — e definire se tutte le componenti condividano la stessa matrice di covarianza o ne abbiano di differenti. Inoltre, è possibile impostare condizioni iniziali per la stima, come valori di partenza o assegnazioni iniziali dei cluster, oppure lasciare che MATLAB le scelga casualmente.

Nel clustering soft, invece, a ogni punto dati viene assegnato un punteggio di appartenenza, che rappresenta quanto quel punto è vicino al “centro” del cluster (la media della componente gaussiana). Questo consente una classificazione più sfumata, dove un punto può appartenere a più cluster con gradi differenti. Tale modalità richiede un’attenta valutazione delle soglie di appartenenza per decidere se un dato punto debba essere considerato membro di uno o più cluster.

Un esempio pratico di applicazione del GMM in MATLAB si ha nel clustering di un dataset reale, come il file “Diabetes.csv”. Qui si sceglie il numero di componenti (cluster) e si definiscono le caratteristiche della covarianza per modellare la forma delle ellissoidi di confidenza attorno ai cluster. Si selezionano alcune colonne significative (ad esempio GLUCOSE e BMI) e si esegue il fitting del modello. Le scelte relative al numero di cluster e alla matrice di covarianza influenzano profondamente la complessità e l’accuratezza del modello.

È importante comprendere che la complessità del modello cresce con l’aumento del numero di componenti e che una matrice di covarianza completa permette di modellare forme più flessibili ma richiede un numero maggiore di parametri da stimare. Il bilanciamento tra complessità del modello e capacità descrittiva è una parte essenziale dell’analisi.

La rappresentazione geometrica della covarianza come ellissoidi in uno spazio multidimensionale aiuta a visualizzare come il modello percepisce la distribuzione dei dati all’interno di ciascun cluster. Questo aspetto è cruciale per interpretare i risultati e comprendere le relazioni tra le variabili.

Il ruolo del GMM va oltre il semplice clustering: permette di modellare la distribuzione reale dei dati, considerare correlazioni tra variabili e fornire informazioni probabilistiche sulle appartenenze ai cluster. Questi aspetti lo rendono uno strumento potente in molteplici ambiti di machine learning e statistica.

La scelta delle funzioni e dei parametri in MATLAB deve essere fatta con attenzione, tenendo conto della natura dei dati e dello scopo dell’analisi. La validazione del modello e la verifica della stabilità delle soluzioni ottenute attraverso metodi come la valutazione della funzione di densità o l’uso di metodi di cross-validation sono elementi che completano il processo di modellazione con GMM.

Qual è la differenza tra apprendimento supervisionato e non supervisionato nel Machine Learning?

L’apprendimento automatico si suddivide in due filoni fondamentali: supervisionato e non supervisionato. Questa distinzione non è soltanto tecnica, ma concettuale. Essa riflette il modo in cui un sistema apprende dalla realtà e struttura la propria capacità predittiva o descrittiva. L’apprendimento supervisionato si fonda sull’utilizzo di dati etichettati, ovvero dati per cui si conoscono gli output corretti. Al contrario, l’apprendimento non supervisionato lavora su dati privi di etichette, cercando di inferire strutture latenti all’interno del dataset.

Nell’apprendimento supervisionato, un modello viene addestrato mediante una serie di esempi in cui ogni input ha un output corrispondente. Il modello, attraverso un processo iterativo, modifica i propri pesi interni finché l’errore tra l’output previsto e quello reale non risulti minimizzato. Questo processo di minimizzazione dell’errore è guidato da una funzione di perdita, che funge da bussola nell’ottimizzazione dell’algoritmo. La capacità del modello di apprendere viene validata attraverso la cross-validation, una tecnica che ne verifica la generalizzabilità su dati non visti.

L’apprendimento supervisionato può essere declinato in due principali categorie algoritmiche: regressione e classificazione. Entrambe operano come funzioni di mappatura tra input e output, ma si distinguono per la natura dell’output. La regressione prevede output continui, la classificazione produce output discreti. Nonostante questa distinzione concettuale, molti algoritmi sono polivalenti: la regressione logistica, il KNN, l’albero decisionale o il Naïve Bayes, per esempio, vengono impiegati tanto per la classificazione quanto, in alcune varianti, per la regressione. Support Vector Machines e Random Forest, invece, possono adattarsi a entrambi i domini a seconda della configurazione del problema.

La regressione, storicamente legata all’analisi statistica, si basa sulla relazione tra variabili indipendenti e variabili dipendenti. È una tecnica predittiva che affonda le sue radici nell’osservazione di fenomeni passati, cercando di proiettare i risultati futuri su basi matematiche. L’esempio classico è quello della previsione della gravità di incendi boschivi sulla base di dati meteorologici: un tipico problema di regressione. La regressione lineare, essenziale nella sua formulazione, e la regressione logistica, utilizzata per problemi di classificazione binaria, sono strumenti basilari, intuitivi e veloci, alla portata sia di specialisti che di professionisti con limitata formazione tecnica.

La classificazione, invece, è un processo di riconoscimento e categorizzazione. Si tratta di un meccanismo di pattern recognition: attraverso dataset precategorizzati, l’algoritmo apprende a riconoscere le stesse strutture in dati futuri. La classificazione può essere binaria o multiclass, a seconda della molteplicità degli output attesi. Riconoscere una firma come autentica o falsa è un problema di classificazione binaria; identificare un animale in una fotografia è un problema multiclass. L’algoritmo, qui, non predice valori continui, ma assegna una classe specifica a ciascun input.

Passando all’apprendimento non supervisionato, ci si confronta con un paradigma radicalmente diverso. Non esistono output noti. I dati sono grezzi, non etichettati, e il sistema deve apprendere da solo le regole implicite, individuando strutture e correlazioni interne. Il clustering è una delle principali tecniche di questo ambito. Consiste nel raggruppare oggetti in modo che quelli appartenenti allo stesso cluster siano più simili tra loro rispetto a quelli di cluster differenti. Non vi è alcuna guida esplicita su come i dati debbano essere suddivisi: il sistema apprende mediante l’individuazione di somiglianze, discontinuità, densità.

Un esempio pratico del clustering può essere trovato nell’organizzazione automatica di collezioni fotografiche, dove immagini simili vengono raggruppate assieme, anche senza conoscere a priori cosa esse rappresentino. È un apprendimento esplorativo, autonomo, spesso usato in fasi preliminari per comprendere la struttura del dataset.

L’apprendimento non supervisionato è particolarmente potente nei contesti dove l’etichettatura dei