Passa ai contenuti principali

Discesa del Gradiente

Tutto l’apprendimento delle reti neurali moderne si fonda sulla discesa del gradiente.
Pensate che l’idea di questo algoritmo risale al 1800, ma solo negli anni ’80 è stata riscoperta grazie alla backpropagation.
C’è stata una fase buia nell’intelligenza artificiale, denominata “la seconda era glaciale” (vedi post omonimo), quando, dopo le critiche di Minsky e Papert al Perceptron, sembrava che le reti neurali si dovessero accantonare per sempre.
Poi, nel 1986, Rumelhart, Hinton e Williams hanno trovato un modo per aggiornare i pesi negli strati nascosti e hanno dato vita al cosiddetto “disgelo” delle reti neurali.
Il deep learning, così come lo conosciamo oggi – capace di interpretare immagini e testo – è esploso solo quando è stato possibile combinare hardware potente, montagne di dati e versioni migliorate della discesa del gradiente.
La cosa bella di questo algoritmo è che funziona secondo una logica semplicissima:
  1. Definisci cosa vuoi minimizzare (funzione di costo).
  1. Calcola il gradiente (la direzione della massima pendenza).
  1. Aggiorna i pesi andando nella direzione opposta.
  1. Ripeti finché non converge.
In questo esperimento si parte da un punto qualsiasi di una funzione a tre variabili e si “scende di quota”, passo dopo passo, seguendo la discesa del gradiente con un learning rate fisso, finché non diventa quasi nullo o raggiungiamo il numero massimo di tentativi (condizione di non convergenza).
Dal grafico si possono scorgere le traiettorie che l’algoritmo percorre: alcune finiscono in minimi locali (come gli alpeggi o le radure vallive), mentre solo una scende nella vallata più bassa, il minimo globale.
Semplice ma geniale: è questa semplicità che ha permesso al deep learning di conquistare il mondo
La funzione dello script Python, in realtà, è un “assemblato”.
La prima parte:

\( f(x, y) = 2[(x^2 + y - 11)^2 + (x + y^2 - 7)^2] \)

è la ben nota funzione di Himmelblau, usata spesso per testare algoritmi di ottimizzazione perché ha più minimi locali, che qui ho esteso al 3D con l’aggiunta di un termine quadratico centrato in z = 3 (il fattore 5 rende la parabola più stretta in modo da guidare la discesa):

\( f(z) = 5(z - 3)^2 \)

Il gradiente diventa:
\[ \nabla f(x, y, z) = \begin{bmatrix} 2 \left[4x(x^2 + y - 11) + 2(x + y^2 - 7)\right] \\ 2 \left[2(x^2 + y - 11) + 4y(x + y^2 - 7)\right] \\ 10(z - 3) \end{bmatrix} \]

L’applicazione dell’algoritmo di discesa del gradiente trova correttamente il punto più basso “programmato” della funzione:

  • Minimo trovato: [-2.805, 3.131, 3.0]
  • Valore della funzione: praticamente 0

Il grafico mostra in modo più marcato il minimo globale e il cammino che conduce ad esso.

Promemoria
Formula generale per l’aggiornamento dei pesi (discesa del gradiente): \[ w_{ij} := w_{ij} - \eta \cdot \frac{\partial E}{\partial w_{ij}} \] In una rete neurale semplice, la derivata può essere calcolata come:
\[ \frac{\partial E}{\partial w_{ij}} = \delta_j \cdot o_i \] Dove \[ o_i\] è l'output del neurone.
E\[\delta_j\] l'errore nel caso di un neurone con funzione di attivazione g, è:
\[ \delta_j = (t_j - y_j) \cdot g'(h_j) \]


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. ...

Generatore Markmap HD

Pagina per il download di  Memento Lite Generatore Markmap Avanzato - Specifiche per l'utente finale Scopo principale: l'applicazione “Generatore Markmap Avanzato” permette agli utenti di trasformare testo scritto in formato Markdown in mappe mentali interattive. Offre funzionalità per creare, visualizzare, salvare, modificare, gestire ed esportare queste mappe mentali in vari formati. Interfaccia utente: l'interfaccia è strutturata nelle seguenti sezioni principali: Link al blog esterno: un link “🌐 Visita il Blog: Pensieri d'assestamento” che apre il blog associato in una nuova scheda. Intestazione (Header): Titolo: “Generatore Markmap Avanzato”. Sottotitolo: “Trasforma, salva e condividi il tuo testo Markdown in mappe mentali interattive”. Area Principale dei Contenuti: divisa in due pannelli affiancati (o impilati su schermi piccoli): Pannello di Input (Editor Markdown): Titolo: “✏️ Editor Markdown”. Area di Testo: un campo multiriga dove l...

Neural Tic-Tac-Toe Lab

Questo articolo presenta l'implementazione di una rete neurale specializzata nel gioco del tris (tic-tac-toe), addestrata mediante una metodologia innovativa basata sull'enumerazione completa degli stati di gioco. L'approccio supera le limitazioni dei metodi tradizionali di campionamento casuale, garantendo una copertura totale dello spazio delle configurazioni possibili. Struttura della rete neurale La rete implementata utilizza un'architettura feed-forward compatta con 9 neuroni di input, 16 neuroni nel layer nascosto e 9 neuroni di output. I neuroni di input ricevono la rappresentazione numerica dello stato della board (-1, 0, 1 per ciascuna delle 9 caselle), mentre i neuroni di output producono valutazioni numeriche per ogni possibile mossa. Il layer nascosto utilizza 16 neuroni con funzione di attivazione relu per introdurre capacità di apprendimento non-lineare. La rete contiene complessivamente 297 parametri: 144 pesi per le connessioni input-hidden, 16 bi...