Passa ai contenuti principali

Backpropagation


In questo post viene letteralmente visualizzata un'affascinante tecnica che consente alle macchine di apprendere dai propri errori: la backpropagation.
Sebbene già nota in ristretti ambiti scientifici, è diventata famosa nel 1986 grazie ai lavori di Rumelhart, Hinton e Williams.
Ma come avviene questa misteriosa forma di apprendimento? 
Pensate a come si impara a suonare il pianoforte: all'inizio si sbaglia la posizione delle dita, il ritmo è incerto, il tocco è troppo forte o troppo debole. Ma con il tempo, attraverso piccoli aggiustamenti, il nostro cervello affina il controllo e la musica prende forma. 
La backpropagation segue lo stesso principio: confronta il risultato prodotto dalla rete neurale con quello desiderato, calcola l’errore e poi lo propaga a ritroso, correggendo passo dopo passo ogni parametro (aggiornamento dei pesi).
Ciò che rende questo meccanismo oggi così efficace è l’incredibile progresso tecnologico. Processori dedicati al calcolo tensoriale e la disponibilità di enormi quantità di dati hanno trasformato quella che un tempo era solo un’idea promettente in una vera e propria rivoluzione.
Grazie alla backpropagation, oggi abbiamo sistemi in grado di tenere conversazioni simili a quelle umane, riconoscere volti, tradurre lingue e persino guidare veicoli autonomamente. 
Nella GIF animata si può osservare, come in una sorta di danza numerica, quello che avviene, nel corso di venti epoche, all'interno di una semplicissima rete neurale composta da soli 3 neuroni e 4 parametri.
Ancora una volta, la scienza ci sorprende con la sua combinazione di logica ed eleganza.

Struttura della rete neurale utilizzata per questo esperimento:
  • Un input: un singolo valore.
  • Un hidden layer: costituito da due neuroni (H1 e H2).
  • Un output: un singolo neurone che fornisce il risultato finale.
Al confronto, altre reti neurali utilizzate negli esperimenti illustrati in altri post di questo blog arrivano fino a 60 milioni di parametri.
Come si evince dall'animazione, l'addestramento porta a una progressiva e significativa riduzione dell'errore.
Le fasi descritte sono:
  1. Il forward pass
Calcolo dei neuroni del layer nascosto
Per ciascun neurone nascosto:
    • H1: h1 = σ(z₁) = σ(w₁·x)
    • H2: h2 = σ(z₂) = σ(w₂·x)
dove:
- x è il valore di input (nel codice 0.5),
- w₁ e w₂ sono i pesi associati alle connessioni dall'input a H1 e H2,
- σ(u) = 1/(1 + e−u) è la funzione di attivazione sigmoide.
  1. Calcolo del neurone di output
L'output finale viene calcolato combinando le uscite dei neuroni nascosti:
o = σ(zₒ) = σ(w₃·h₁ + w₄·h₂)
dove w₃ e w₄ sono i pesi che collegano H1 e H2 al neurone di output.

  1.  Calcolo dell'errore

Una volta ottenuto l'output o, il passo successivo è confrontarlo con il target (valore desiderato, nel mio script 0.8). L'errore viene calcolato usando la funzione di errore quadratico:
E = ½·(target-o)²
Questo valore misura quanto l'output della rete si discosta dal valore atteso.
  1. La backpropagation
La vera potenza della backpropagation sta nel modo in cui l'errore viene retropropagato attraverso la rete neurale per aggiornare i pesi. 
Questo avviene tramite il calcolo dei gradienti, che indicano la direzione e l'intensità delle variazioni necessarie per ridurre l'errore.

a. Calcolo del delta per il neurone di output
Il primo passo è calcolare il delta dell'output:
δₒ = (o - target)·σ'(zₒ)
Essendo la derivata della funzione sigmoide:
σ'(zₒ) = o·(1 - o)
otteniamo:
δₒ = (o - target)·o·(1 - o)

b. Aggiornamento dei pesi nel layer di output
I gradienti per i pesi che connettono i neuroni nascosti al neurone di output sono:
    • ∂E/∂w₃ = δₒ·h₁
    • ∂E/∂w₄ = δₒ·h₂
Questi gradienti vengono poi utilizzati per aggiornare i pesi:
wnew = wold - η·(∂E/∂w)
dove η è il learning rate (nel nostro caso 0.1).

c. Propagazione dell'errore all'hidden layer
Per ciascun neurone nascosto, l'errore viene propagato indietro. 
Ad esempio, per il neurone H1:
δh1 = δₒ·w₃·h₁·(1 - h₁)
Analogamente, per H2:
δh2 = δₒ·w₄·h₂·(1 - h₂)

d. Aggiornamento dei pesi dell'hidden layer
I gradienti per i pesi che collegano l'input ai neuroni nascosti sono dati da:
    • ∂E/∂w₁ = δh1·x
    • ∂E/∂w₂ = δh2·x
Anche in questo caso, i pesi vengono aggiornati usando la formula:
wnew = wold - η·(∂E/∂w)






 

Post popolari in questo blog

Salmoni, scarpette, cetrioli e altro

Tutto il testo contenuto in questa pagina è stato pensato e scritto dall'autore del blog.   1. Come il salmone 2. Ooops! 3. Le scarpette hi-tech 4. Equivoci contemporanei 5. I saccenti 6. Medaglie di legno 7. La festività del Nulla 8. Gli aggiornamenti elettronici del Libro dell'Apocalisse 9. Dubbi ne ho 10. La maieutica del vulcaniano 11. Un piacevole vasetto di miele 12. Povere sfere 13. Caos comune mezzo gaudio 14. La fontana senza volti 15. Il piromane super beffardo 16. Boom di serpenti 17. Sistemi in via di degradazione 18. Il gatto nero 19. Alain Delon è ancora vivo? 20. Per sempre con i cani 21. Eventi imprevedibili 22. I robot sottomessi 23. Lady Gaga e Bruno Mars incantano 24. Definizioni mancate 25. Il mio nemico drone 26. Errore di valutazione 27. Ringraziamenti 28. Cari cetrioli, vi scrivo 29. Boom di detective 30. Gli UFO trascurati 31. Il grande salto delle rane 32. La malattia artificiale 33. Homo consumens 34. Lacune informatiche 35. Sei troppo! 36. ...

Welcome reader!

Siamo equi: ci sono sciocchezze che fanno meditare   (da Improvvisi per macchina da scrivere di Giorgio Manganelli)   Le repliche sismiche stabilizzano la faglia dopo una sua frattura; analogamente i pensieri d'assestamento riordinano la mente dopo un periodo turbolento o di trasformazione interiore. Nel blog, questi pensieri vengono organizzati, tra il serio e il faceto, in 60 mie riflessioni che mi sono servite a comprendere meglio e, a volte, a metabolizzare alcune esperienze cognitive, emotive e sociali. Riflessioni che, per varie ragioni, non hanno alimentato il confronto dialogico usuale, spesso condizionato dai frame che semplificano, spesso eccessivamente, i nostri ruoli “pubblici”, specie negli ambienti lavorativi. Per questo, “Pensieri d’assestamento” va inteso come la rottura di un frame atteso; come un comportamento fuori contesto che però non può essere rinegoziato, vista la natura asimmetrica della comunicazione; come un “angolo degli oratori”, in cui...

Interpretazioni

Esistono diversi modelli di intelligenza artificiale generativa, i cosiddetti LLM (Large Language Models), e ognuno di essi può valutare in modo diverso i testi “human written”, attribuendo un diverso valore semantico alle parole e alle frasi, come se per una stessa opera esistessero più piani di lettura. Tuttavia, se questa multidimensionalità esegetica non è stata concepita dall’autore, allora le diverse interpretazioni riflettono semplicemente la complessità delle reti neurali, complessità che appare molto simile, almeno nei risultati, alla sensibilità del lettore. Per sensibilità del lettore intendo la capacità di cogliere le sfumature, i dettagli stilistici, le connessioni logiche-argomentative di un testo, andando oltre la semplice comprensione letterale. Il bagaglio di esperienze, conoscenze e prospettive personali può influenzare profondamente la decodifica di un testo. Per questo motivo, una stessa opera può evocare emozioni, riflessioni e pensieri diversi a seconda delle p...