Esercizio 1: L'Arte del "Learning Rate" (Tasso di Apprendimento)
Obiettivo: Comprendere l'impatto critico del tasso di apprendimento sulla velocità e stabilità dell'addestramento. Un buon tasso di apprendimento aiuta il modello a scendere verso lo stato di errore più basso in modo efficiente.
Istruzioni:
Tasso Impetuoso: Imposta lo slider del "Learning Rate" su un valore alto (es. 0.4 or superiore). Clicca su "Start Full Training" (Avvia Addestramento Completo).
Tasso Cauto: Clicca "Reset" (Reimposta). Ora, imposta il "Learning Rate" su un valore molto basso (es. 0.005). Clicca "Start Full Training".
Il Tasso "Riccioli d'Oro": Clicca "Reset". Sperimenta per trovare un tasso di apprendimento che faccia diminuire l'errore in modo rapido e fluido, raggiungendo la massima "Test Set Accuracy" (Accuratezza sul Set di Test) possibile.
Cosa Osservare:
Con il tasso alto, osserva il Grafico della Perdita ("Loss Chart"). La linea dell'errore sarà probabilmente molto frastagliata e irregolare. La rete sta "superando" la soluzione ottimale a ogni aggiornamento e potrebbe non riuscire a convergere.
Con il tasso basso, l'errore diminuirà molto lentamente e potrebbe sembrare "bloccato" prima di raggiungere il suo minimo, non riuscendo a ottenere un'elevata accuratezza nel numero di epoche stabilito.
Domanda Sfida: Un tasso di apprendimento più basso porta sempre a un risultato finale migliore se si aspetta abbastanza a lungo? Prova ad addestrare con un tasso basso (0.01) per 1000 epoche e confronta la sua accuratezza finale con quella di un tasso più alto (0.05) addestrato per sole 300 epoche.
Esercizio 2: Capacità del Modello e "Underfitting" (Sottoadattamento)
Obiettivo: Comprendere come il numero di neuroni nascosti determini la complessità del modello e la sua capacità di apprendere i pattern dei dati.
Istruzioni:
Un Cervello Semplice (Underfitting): Imposta lo slider dei Neuroni Nascosti ("Hidden Neurons") al minimo (2). Usa un buon tasso di apprendimento (es. 0.05) e clicca "Start Full Training". Annota l'accuratezza finale.
Un Cervello Complesso: Clicca "Reset". Imposta i Neuroni Nascosti su un valore alto (es. 16 o più). Addestra di nuovo il modello.
Cosa Osservare:
Con solo 2 neuroni, il modello probabilmente faticherà a ottenere un'alta accuratezza. È troppo semplice per catturare la complessità dei confini dei dati. Questo è chiamato "underfitting".
Osserva gli istogrammi della Distribuzione dei Pesi ("Weight Distribution"). In una rete ben addestrata, i pesi dovrebbero avere una distribuzione sana e abbastanza sparsa.
Domanda Sfida: Trova il "punto di rendimenti decrescenti", ovvero il numero di neuroni oltre il quale aggiungerne altri non migliora significativamente l'accuratezza sul set di test. Perché un modello più semplice che funziona altrettanto bene è generalmente preferito a uno più complesso?
Esercizio 3: Il Ruolo della Funzione di Attivazione
Obiettivo: Confrontare le caratteristiche di diverse funzioni di attivazione e il loro effetto sull'addestramento.
Istruzioni:
Usa le tue impostazioni "migliori" per il tasso di apprendimento e i neuroni nascosti dagli esercizi precedenti.
Seleziona ReLU e clicca "Start Full Training". Annota l'accuratezza finale e la velocità con cui la perdita ("loss") diminuisce.
Clicca "Reset", seleziona Sigmoid, e addestra di nuovo. Ripeti per Tanh.
Cosa Osservare:
Confronta i Grafici della Perdita. Quale funzione tipicamente fa scendere l'errore più velocemente? (ReLU è spesso molto performante).
Ora, concentrati sulla funzione Sigmoide. Clicca "Reset" e usa ripetutamente il pulsante "Step 1 Epoch" (Esegui 1 Epoca). Osserva il grafico della Distribuzione dei Pesi. Noti che i pesi tendono a essere "schiacciati" in un intervallo ristretto intorno allo zero? Questa è una rappresentazione visiva del famigerato problema del "gradiente che svanisce" ("vanishing gradient").
Domanda Sfida: Per questo specifico set di dati, esiste una funzione di attivazione che è chiaramente la migliore? Perché la natura semplice "on/off" di ReLU (restituisce 0 per qualsiasi input negativo) potrebbe aiutarla a imparare più velocemente delle altre?
Esercizio 4: Decostruire un Errore
Obiettivo: Pensare come un data scientist eseguendo un'"analisi post-mortem" su un errore specifico del modello utilizzando gli strumenti di ispezione.
Istruzioni:
Addestra un modello finché non ottiene un risultato buono, ma non perfetto (es. 90-97% di accuratezza).
Nella scheda dei Risultati della Classificazione ("Classification Results"), guarda l'elenco dei Campioni Mal Classificati ("Misclassified Samples"). Clicca su uno dei campioni (es. uno dove il valore "Reale" era 'Versicolor' ma il modello ha "Previsto" 'Virginica').
Il Visualizzatore della Rete ("Network Visualizer") si illuminerà e apparirà il pannello dell'Ispettore dei Dati ("Data Inspector").
Cosa Osservare:
Nel Visualizzatore: Segui il "flusso" di attivazione. I neuroni con alta attivazione saranno più luminosi. Le connessioni (pesi) che portano dai neuroni nascosti attivi al neurone di output errato sono più spesse/verdi più brillanti (forti pesi positivi)?
Nell'Ispettore dei Dati: Guarda i valori di Input. I dati di questo fiore sono insoliti? Ad esempio, questo 'Versicolor' ha una lunghezza del petalo molto più grande della media, facendolo assomigliare a un 'Virginica'? Ora guarda le Probabilità di Output ("Output Probabilities"). Quanto era "sicura" la rete della sua decisione sbagliata? È stata una decisione combattuta?
Domanda Sfida: Basandoti sulla tua ispezione, formula un'ipotesi che spieghi perché la rete ha commesso questo errore. Se fossi un data scientist, quale sarebbe il tuo prossimo passo? (es. raccogliere più dati su questi "casi limite", provare feature diverse, ecc.).
Esercizio 5: Il Viaggio di un Singolo Aggiornamento
Obiettivo: Sviluppare una micro-intuizione per la retropropagazione ("backpropagation") osservando l'effetto di un singolo esempio di addestramento.
Istruzioni:
Clicca "Reset".
Nel Visualizzatore della Rete, passa il mouse sopra una linea di connessione per vedere il suo peso, o semplicemente osserva il suo spessore e colore. Scegline una da tenere d'occhio.
Clicca il pulsante "Step 1 Point" (Esegui 1 Punto). Verrà elaborato un singolo punto dati.
Osserva di nuovo la connessione scelta. Il suo peso è cambiato? È diventato più forte (più spesso) o più debole (più sottile)? È passato da negativo (rosso) a positivo (verde)?
Cosa Osservare: Il cambiamento sarà minuscolo! Questo dimostra che l'apprendimento è un processo cumulativo di piccoli aggiustamenti iterativi.
Domanda Sfida: Continua a cliccare "Step 1 Point". Riesci a trovare un punto dati che fa cambiare il peso che stai osservando nella direzione opposta a quella precedente? Questo dimostra come la rete integra informazioni contrastanti da esempi diversi per trovare una soluzione bilanciata.
Nel mondo tranquillo degli anni '30, molto prima che le parole "intelligenza artificiale" echeggiassero nei laboratori e nelle aule universitarie, un botanico di nome Edgar Anderson passava le sue giornate in un giardino, misurando pazientemente dei fiori. Non era un informatico; era un uomo di terra e di sole. Con un semplice righello, registrava meticolosamente la lunghezza e la larghezza dei petali e dei sepali di tre diverse specie di Iris: la vivace Setosa, l'elegante Versicolor e la magnifica Virginica.
Per anni, la sua raccolta di 150 misurazioni fu solo questo: una tabella ordinata in un articolo scientifico, una curiosità per i colleghi botanici. Era un'istantanea perfetta e minuscola del mondo naturale, un enigma scritto in millimetri: è possibile distinguere questi fiori usando solo questi quattro indizi?
Decenni dopo, mentre i primi computer prendevano vita, questa umile raccolta di dati sui fiori fu riscoperta. I pionieri di un nuovo campo, la scienza dei dati, cercavano una sfida. Volevano insegnare alle loro macchine a "vedere", non con gli occhi, ma con la logica. Il loro obiettivo era semplice ma profondo: poteva una macchina imparare a eseguire un compito che per un essere umano era banale, come identificare un fiore?
Avevano bisogno di un test perfetto. E il dataset Iris di Anderson lo era.
Immaginiamo una giovane programmatrice, chiamiamola Claudia, seduta davanti a uno schermo luminoso. Dà in pasto al suo nascente algoritmo le 150 "impronte digitali floreali". Le prime 120 servono per l'addestramento. "Guarda," dice alla macchina, "questo insieme di misure è una Setosa. Quest'altro è una Versicolor." Per ogni voce, la macchina riceve i quattro numeri e la risposta corretta.
All'inizio, la macchina è spaesata. I numeri sono solo un guazzabuglio senza senso. Ma mentre macina i dati più e più volte, inizia a notare degli schemi che un essere umano potrebbe non cogliere. Impara che la Setosa ha un petalo di dimensioni uniche. Scopre le sottili differenze, che in parte si sovrappongono, tra la Versicolor e la Virginica soppesando tutte e quattro le misurazioni contemporaneamente. Non stava memorizzando; stava imparando l'essenza stessa di ciò che rendeva ogni fiore unico.
Poi arrivò il test. Claudia fornì alla macchina le ultime 30 misurazioni — dati che non aveva mai visto prima — ma questa volta omise le risposte. La macchina prese la prima serie di numeri, calcolò, e stampò il suo verdetto: "Iris Versicolor". Claudia controllò l'etichetta originale. La previsione era corretta. Indovinò la successiva, e quella dopo ancora, con una precisione sorprendente.
Questo fu il momento magico. La macchina non si era semplicemente limitata a memorizzare dati; aveva costruito un modello della realtà. Aveva risolto l'enigma del giardiniere.
Il dataset Iris divenne una leggenda. Era abbastanza semplice da essere compreso, ma abbastanza complesso da rappresentare una sfida significativa. Divenne l'"Hello, World!" del machine learning — il primo programma che quasi ogni aspirante data scientist scrive per comprendere il cuore della classificazione. Innumerevoli algoritmi rivoluzionari, dai semplici alberi decisionali agli antenati delle complesse reti neurali di oggi, si sono fatti le ossa su questi 150 fiori.
Così, mentre oggi abbiamo IA in grado di diagnosticare malattie e guidare automobili, tutto è iniziato con qualcosa di molto più piccolo. È iniziato con un botanico in un giardino e un dataset senza tempo, che è stato il perfetto primo insegnante per una generazione di macchine. Il dataset Iris è più di un insieme di numeri; è la storia della prima volta che abbiamo insegnato con successo a una macchina a vedere la differenza tra i fiori, aprendo le porte a un mondo in cui avrebbe potuto imparare a vedere quasi qualsiasi cosa.