La matematica dietro l’Intelligenza Artificiale
In un’epoca in cui l’intelligenza artificiale (A.I.) sta radicalmente cambiando svariati settori, l’importanza di comprendere le fondamenta che reggono queste innovazioni diventa sempre più cruciale. Potrebbe essere una sorpresa per molti scoprire che la matematica è il motore trainante di questa rivoluzione tecnologica. Questo articolo intende brevemente svelare la complessità e l’eleganza dei concetti matematici che rendono l’A.I. una realtà, con un focus particolare sulle reti neurali.
Matrici: I Blocchi Fondamentali di Dati e Trasformazioni
Le reti neurali rappresentano una delle più affascinanti e potenti innovazioni nel campo dell’intelligenza artificiale. Ispirate alla struttura e al funzionamento del cervello umano, queste reti consentono ai computer di apprendere direttamente dai dati, rendendo possibile il riconoscimento di pattern complessi, la traduzione linguistica e persino la generazione di contenuti artistici. Ma cosa c’è alla base?
Cos’è una Matrice?
Uno degli elementi fondamentali che permettono alle reti neurali di funzionare come fanno è la matrice. Una matrice è essenzialmente una griglia di numeri che può essere manipolata attraverso vari algoritmi. Nel contesto delle reti neurali, le matrici vengono utilizzate per organizzare e trasformare i dati attraverso i vari strati della rete. Questa manipolazione matriciale è al cuore dell’apprendimento e della previsione che si verifica all’interno della rete, fungendo da ponte tra i dati grezzi e le informazioni utili. In sostanza, senza matrici, le reti neurali non sarebbero in grado di “apprendere” o “ragionare” nel modo in cui lo fanno.
Nello specifico, una matrice è una griglia rettangolare di numeri. Ad esempio, una matrice 3x3 potrebbe apparire come:
I componenti principali di una rete neurale
Una rete neurale di base è strutturata in tre componenti principali: uno strato di input, uno o più strati nascosti e uno strato di output. Supponiamo di avere una rete con uno strato di input con n neuroni, uno strato nascosto con m neuroni e uno strato di output con p neuroni.
- Strato di Input: Questo strato riceve i dati in ingresso, che possono essere rappresentati come un vettore x di dimensione n.
- Strato Nascosto: Le informazioni dall’input vengono poi elaborate in uno o più strati nascosti utilizzando pesi W e bias b. La formula per calcolare l’output dello strato nascosto è:
h=Activation(Wx+b) - Strato di Output: Infine, lo strato di output prende le informazioni dall’ultimo strato nascosto e le trasforma in un output, che può essere calcolato come:y=W′h+b′
Qui, W′ e b′ sono i pesi e i bias associati allo strato di output, mentre y è il vettore di output della rete.
Facciamo un esempio
Immaginiamo di lavorare su una rete neurale che possa identificare se un’auto è alimentata a benzina o a diesel basandosi su due semplici misurazioni: il livello di emissioni di CO2 (in grammi al km) e il numero di giri al minuto del motore (RPM). Abbiamo raccolto dati e addestrato la nostra rete neurale.
Ora vediamo come la rete neurale fa la sua previsione su un esempio specifico.
Strato di Input: Supponiamo che l’auto in questione emetta 150 grammi di CO2 al km e abbia un motore che gira a 3000 RPM.
L’input è quindi un vettore x=[150,3000].
Get Backwell Tech’s stories in your inbox
Join Medium for free to get updates from this writer.
Strato Nascosto: Utilizziamo un singolo strato nascosto con 3 neuroni. I pesi W e bias b sono:
h=ReLU(x) rappresenta la funzione di attivazione ReLU (Rectified Linear Unit), una delle funzioni di attivazione più comunemente utilizzate nelle reti neurali. La funzione è definita come: h(x)=max(0,x)
In altre parole, la funzione ReLU restituisce x se x è maggiore o uguale a zero, altrimenti restituisce zero. Questa funzione è molto efficace nell’aggiungere non-linearità al modello senza richiedere operazioni computazionali complesse, rendendola quindi efficiente in termini di tempo e risorse.
Strato di Output: Utilizziamo un solo neurone nello strato di output con i pesi e i bias come:
Quindi, l’output della rete neurale ha determinato un valore di 3886.1
Nel nostro caso ipotetico, potremmo stabilire una soglia: se y è superiore a 2000, l’auto è molto probabilmente a diesel. Altrimenti, è a benzina. In questo esempio, la rete neurale predirebbe che l’auto è a diesel.
Come si determinano i pesi W e bias b all’interno dello strato nascosto ?
I pesi W e i bias b sono inizialmente impostati in modo casuale o secondo qualche regola di inizializzazione e successivamente aggiornati durante la fase di addestramento della rete neurale. Ecco come funziona:
Inizializzazione
- Random: I pesi e i bias possono essere inizializzati casualmente. Algoritmi come Xavier (Glorot) o He inizializzazione sono spesso utilizzati a questo scopo.
- Zeri: I bias sono spesso inizializzati a zero, ma questa strategia non è consigliabile per i pesi a causa di problemi come la “scomparsa del gradiente”.
Addestramento e Aggiornamento
- Forward Pass: Dati gli input e i parametri attuali della rete (pesi e bias), un “passaggio in avanti” viene eseguito per calcolare l’output della rete.
- Calcolo della Perdita: La differenza tra l’output ottenuto e l’output desiderato (auto diesel o benzina) è calcolata utilizzando una funzione di perdita (ad esempio, Mean Squared Error per problemi di regressione o Cross-Entropy per problemi di classificazione).
- Backpropagation: Il gradiente della funzione di perdita rispetto ai pesi e ai bias è calcolato in modo retrogrado attraverso la rete. Questo è fatto utilizzando la regola della catena per la derivazione di funzioni composte.
- Aggiornamento dei Pesi e dei Bias: Utilizzando il gradiente calcolato, i pesi e i bias vengono aggiornati per ridurre la funzione di perdita. Questo è spesso fatto utilizzando algoritmi di ottimizzazione come Gradient Descent o sue varianti (ad esempio, Adam, RMSprop).
Matematicamente, l’aggiornamento dei pesi può essere espresso come:
E l’aggiornamento dei bias come:
Dove α è il tasso di apprendimento, un parametro che determina quanto drasticamente i pesi vengono aggiornati durante l’addestramento.
Il processo di forward pass, calcolo della perdita, backpropagation e aggiornamento dei pesi è ripetuto per molteplici epoche o fino a quando la perdita non scende al di sotto di una soglia predefinita.
Cosa sono le epoche?
Nel processo di addestramento di una rete neurale, un’epoca è definita come un ciclo completo attraverso tutto il dataset di allenamento. In altre parole, durante un’epoca, ogni esempio di addestramento nel dataset viene presentato una volta alla rete neurale, permettendo alla rete di apprendere e adattarsi.
Più Epoche possono essere Utili:
- Convergenza: Per alcuni modelli, un numero maggiore di epoche può aiutare a raggiungere una convergenza ottimale, migliorando le prestazioni del modello sui dati di test.
- Apprendimento di Dettagli Sottili: In problemi complessi, più epoche possono permettere al modello di catturare relazioni più sottili nei dati.
Ma possono anche essere Dannose:
- Overfitting: Addestrare una rete per troppe epoche può causare un fenomeno noto come “overfitting”, dove il modello diventa troppo specifico per i dati di addestramento e perde la sua capacità di generalizzazione su dati nuovi o non visti.
- Tempo di Addestramento: Maggiori epoche richiedono più tempo e risorse computazionali, che potrebbero non tradursi in un miglioramento significativo delle performance.
- Diminuzione dei Guadagni: Spesso, i miglioramenti nelle performance diventano marginali dopo un certo numero di epoche, rendendo inutile proseguire l’addestramento.
Strategie di Bilanciamento per Svolgere il Training:
- Early Stopping: Consiste nell’interrompere l’addestramento quando le performance sul set di validazione iniziano a peggiorare, per evitare overfitting.
- Cross-Validation: La cross-validation è un processo in cui il set di dati viene diviso in un certo numero di sottoinsiemi, noti come “fold”. L’addestramento e la validazione del modello vengono poi eseguiti più volte, ciascuna volta utilizzando un fold diverso come set di validazione e gli altri fold combinati come set di addestramento. Le prestazioni del modello vengono quindi calcolate come media delle prestazioni ottenute su ciascun fold di validazione.
Per esempio, nella cross-validation a 5 fold, il dataset viene suddiviso in 5 sottoinsiemi. Il modello viene addestrato e validato 5 volte, ogni volta utilizzando un sottoinsieme differente come set di validazione e i restanti 4 sottoinsiemi combinati come set di addestramento. Alla fine, le cinque metriche di prestazione ottenute (come l’accuratezza, la precisione, ecc.) vengono mediate per fornire una stima più affidabile delle performance del modello.
Questo approccio consente di ottenere una valutazione più completa e robusta delle prestazioni del modello, ed è particolarmente utile per determinare il numero ottimale di epoche per evitare overfitting o underfitting.
In conclusione, il numero ottimale di epoche è specifico per ciascun problema e dovrebbe essere determinato attraverso sperimentazione e validazione.
Nel suo complesso, l’operazione di una rete neurale può essere vista come una serie di trasformazioni matriciali, applicazioni di funzioni di attivazione e somme di bias. Questa struttura semplice, ma potente, è quello che permette alle reti neurali di apprendere direttamente dai dati.
Per soluzioni basate sull’intelligenza artificiale e per informazioni dettagliate sul nostro approccio, contatta Backwell Tech. via email all’indirizzo hello@backwelltech.com o visita il nostro sito www.backwelltech.com — rispondiamo subito!








